Code Duplication    Length = 45-45 lines in 2 locations

Trakttv.bundle/Contents/Libraries/Shared/plugin/sync/modes/fast_pull/lists/base.py 1 location

@@ 155-199 (lines=45) @@
152
                    t_item=t_item
153
                )
154
155
    def update_full(self, data, p_playlist, p_sections_map, t_list=None, t_list_items=None):
156
        # Construct playlist mapper
157
        mapper = PlaylistMapper(self.current, p_sections_map)
158
159
        # Parse plex playlist items
160
        mapper.plex.load(p_playlist)
161
162
        # Parse trakt list items
163
        mapper.trakt.load(t_list, t_list_items)
164
165
        # Match playlist items and expand shows/seasons
166
        m_trakt, m_plex = mapper.match()
167
168
        log.debug(
169
            'Update - Mapper Result (%d items)\nt_items:\n%s\n\np_items:\n%s',
170
            len(m_trakt) + len(m_plex),
171
            '\n'.join(self.format_mapper_result(m_trakt)),
172
            '\n'.join(self.format_mapper_result(m_plex))
173
        )
174
175
        # Iterate over matched trakt items
176
        for key, index, (p_index, p_items), (t_index, t_items) in m_trakt:
177
            # Expand shows/seasons into episodes
178
            for p_item, t_item in self.expand(p_items, t_items):
179
                if not t_item:
180
                    continue
181
182
                # Get `SyncMedia` for `t_item`
183
                media = self.get_media(t_item)
184
185
                if media is None:
186
                    log.warn('Unable to identify media of "t_item" (p_item: %r, t_item: %r)', p_item, t_item)
187
                    continue
188
189
                # Execute handler
190
                self.execute_handlers(
191
                    self.mode, media, data,
192
193
                    p_sections_map=p_sections_map,
194
                    p_playlist=p_playlist,
195
196
                    key=key,
197
198
                    p_item=p_item,
199
                    t_item=t_item
200
                )
201
202
    def get_changed_lists(self, data, extra=None):

Trakttv.bundle/Contents/Libraries/Shared/plugin/sync/modes/pull/lists/base.py 1 location

@@ 37-81 (lines=45) @@
34
        # Sort list items
35
        self.process_sort(data, p_playlist, p_sections_map, t_list, t_list_items.itervalues())
36
37
    def process_update(self, data, p_playlist, p_sections_map, t_list=None, t_list_items=None):
38
        # Construct playlist mapper
39
        mapper = PlaylistMapper(self.current, p_sections_map)
40
41
        # Parse plex playlist items
42
        mapper.plex.load(p_playlist)
43
44
        # Parse trakt list items
45
        mapper.trakt.load(t_list, t_list_items)
46
47
        # Match playlist items and expand shows/seasons
48
        m_trakt, m_plex = mapper.match()
49
50
        log.debug(
51
            'Update - Mapper Result (%d items)\nt_items:\n%s\n\np_items:\n%s',
52
            len(m_trakt) + len(m_plex),
53
            '\n'.join(self.format_mapper_result(m_trakt)),
54
            '\n'.join(self.format_mapper_result(m_plex))
55
        )
56
57
        # Iterate over matched trakt items
58
        for key, index, (p_index, p_items), (t_index, t_items) in m_trakt:
59
            # Expand shows/seasons into episodes
60
            for p_item, t_item in self.expand(p_items, t_items):
61
                if not t_item:
62
                    continue
63
64
                # Get `SyncMedia` for `t_item`
65
                media = self.get_media(t_item)
66
67
                if media is None:
68
                    log.warn('Unable to identify media of "t_item" (p_item: %r, t_item: %r)', p_item, t_item)
69
                    continue
70
71
                # Execute handler
72
                self.execute_handlers(
73
                    self.mode, media, data,
74
75
                    p_sections_map=p_sections_map,
76
                    p_playlist=p_playlist,
77
78
                    key=key,
79
80
                    p_item=p_item,
81
                    t_item=t_item
82
                )
83
84
    def process_sort(self, data, p_playlist, p_sections_map, t_list, t_list_items):