def main(): parser = argparse.ArgumentParser( description="download torrent files from anime feeds") parser.add_argument("-s", "--scan", action="append", help="don't download torrents already downloaded in scanned directory " "(can be specified multiple times)") parser.add_argument("-l", "--latest-version", action='store_true', help="download only latest version of an episode (v2, v3, etc)") parser.add_argument("-c", "--config", default="config.yml", help="YAML config file (default: config.yml)") parser.add_argument("torrent_dir", help="torrent files will be downloaded here") args = parser.parse_args() with open(args.config) as configfile: config = yaml.load(configfile) anime = feeds.fetch_episodes_from_feeds(config) discarded = [a for a in anime if not 'anime' in a] anime = [a for a in anime if a not in discarded] if args.latest_version: anime = feeds.filter_episode_versions(anime) if args.scan: anime = scan_directories(anime, args.scan) download.download_torrents(anime, args.torrent_dir) if len(discarded) > 0: print "the following entries could not be processed:" pprint(discarded)
def test_filter_two_anime_three_episodes_one_version(self): episodes = [ {"anime": u"Mâgì", "episode": 1}, {"anime": u"Àccel wôrld", "episode": 1, "version": 2}, {"anime": u"Àccel wôrld", "episode": 1}, ] expected = [{"anime": u"Mâgì", "episode": 1}, {"anime": u"Àccel wôrld", "episode": 1, "version": 2}] result = feeds.filter_episode_versions(episodes) self.assertEquals(sorted(result), sorted(expected))
def test_filter_two_anime(self): episodes = [{"anime": u"Mâgì", "episode": 1}, {"anime": u"Àccel wôrld", "episode": 1}] expected = list(episodes) result = feeds.filter_episode_versions(episodes) self.assertEquals(sorted(result), sorted(expected))
def test_filter_same_episode_one_version(self): episodes = [{"anime": u"Mâgì", "episode": 1}, {"anime": u"Mâgì", "episode": 1, "version": 2}] expected = [{"anime": u"Mâgì", "episode": 1, "version": 2}] result = feeds.filter_episode_versions(episodes) self.assertEquals(result, expected)
def test_filter_two_episodes_with_version(self): episodes = [{"anime": u"Mâgì", "episode": 1, "version": 2}, {"anime": u"Mâgì", "episode": 2, "version": 2}] expected = episodes result = feeds.filter_episode_versions(episodes) self.assertEquals(result, expected)
def test_filter_one_episode_no_version(self): episodes = [{"anime": u"Mâgì", "episode": 1}] expected = episodes result = feeds.filter_episode_versions(episodes) self.assertEquals(result, expected)
def test_filter_empty_list(self): episodes = [] expected = [] result = feeds.filter_episode_versions(episodes) self.assertEquals(result, expected)