def merge_states(self, podcast1, podcast2): """Merges the Podcast states that are associated with the two Podcasts. This should be done after two podcasts are merged """ key = lambda x: x.user states1 = sorted(all_podcast_states(podcast1), key=key) states2 = sorted(all_podcast_states(podcast2), key=key) logger.info("Merging %d podcast states of %s into %s", len(states2), podcast2, podcast1) for state, state2 in utils.iterate_together([states1, states2], key): if state == state2: continue if state is None: self.actions["move-podcast-state"] += 1 update_podcast_state_podcast(state2, podcast1.get_id(), podcast1.url) elif state2 is None: continue else: psm = PodcastStateMerger(state, state2, self.actions) psm.merge()
def add_podcast_recursive(self, podcast, docs): self.add_podcast(podcast, docs) progress(0, len(docs), podcast, stream=sys.stderr) states = all_podcast_states(podcast) for state in states: self.add_podcast_state(state, docs) progress(0, len(docs), state, stream=sys.stderr) # Episodes for episode in episodes_for_podcast(podcast.get_podcast()): self.add_episode(episode, docs) progress(0, len(docs), episode, stream=sys.stderr) states = all_episode_states(episode) for state in states: self.add_episode_state(state, docs) progress(0, len(docs), state, stream=sys.stderr)