def do_release(self, item): vol, chap, frag, postfix = extractVolChapterFragmentPostfix(item['releaseinfo']) ret = { 'srcname' : fix_string(item['groupinfo']), 'series' : fix_string(item['seriesname']), 'vol' : vol, 'chp' : chap, 'frag' : frag, 'published' : calendar.timegm(item['addtime'].timetuple()), 'itemurl' : item['actual_target'], 'postfix' : fix_string(postfix), 'author' : None, 'tl_type' : 'translated', 'match_author' : False, 'nu_release' : True } release = createReleasePacket(ret, beta=False) # print("Packed release:", release) self.amqp_put_item(release)
def do_release(self, row): if row.seriesname.endswith("..."): return if not row.releaseinfo: return if not row.actual_target: return self.log.info("Release for series: %s -> %s -> %s", row.seriesname, row.releaseinfo, row.actual_target) vol, chap, frag, postfix = extractVolChapterFragmentPostfix( row.releaseinfo) ret = { 'srcname': fix_string(row.groupinfo), 'series': fix_string(row.seriesname), 'vol': vol, 'chp': chap, 'frag': frag, 'published': calendar.timegm(row.first_seen.timetuple()), 'itemurl': row.actual_target, 'postfix': fix_string(postfix), 'author': None, 'tl_type': 'translated', 'match_author': False, 'nu_release': True } release = createReleasePacket(ret, beta=False) # print("Packed release:", release) self.rpc.put_feed_job(release)
def do_release(self, row): if row.seriesname.endswith("..."): self.log.warning("Series name ends with dots. Skipping (%s -> %s -> %s)", row.seriesname.strip(), row.releaseinfo.strip(), row.actual_target.strip()) return if row.groupinfo.endswith("..."): self.log.warning("Group name ends with dots. Skipping (%s -> %s -> %s -> %s)", row.groupinfo, row.seriesname.strip(), row.releaseinfo.strip(), row.actual_target.strip()) return if not row.releaseinfo: return if not row.actual_target: return # Had a typo in the name_fix_lut.json file. Fix that. Also, derp. if row.groupinfo == 'Misty Cloud Translations' and '//2slow2latemtl.icu/' in row.actual_target: row.groupinfo = "2Slow2Late MTL" self.log.error("What?") if "www.webnovel.com" in row.actual_target and "/rssbook/" in row.actual_target: return self.log.info("Release for series: %s -> %s -> %s", row.seriesname.strip(), row.releaseinfo.strip(), row.actual_target.strip()) vol, chap, frag, postfix = extractVolChapterFragmentPostfix(row.releaseinfo) ret = { 'srcname' : fix_string(row.groupinfo), 'series' : fix_string(row.seriesname), 'vol' : vol, 'chp' : chap, 'frag' : frag, 'published' : calendar.timegm(row.first_seen.timetuple()), 'itemurl' : row.actual_target, 'postfix' : fix_string(postfix), 'author' : None, 'tl_type' : 'translated', 'match_author' : False, 'nu_release' : True } release = createReleasePacket(ret, beta=False) # print("Packed release:", release) self.rpc.put_feed_job(release) return row.actual_target
def extractWIP(item): ''' ''' vol, chp, frag, postfix = extractVolChapterFragmentPostfix(item['title']) if not (chp or vol) or "preview" in item['title'].lower(): return False print(item['title']) print(item['tags']) print("'{}', '{}', '{}', '{}'".format(vol, chp, frag, postfix)) return False
def proto_process_releases(feed_releases): ret_dict = { "successful" : [], "missed" : [], "ignored" : [], } feed_releases = list(feed_releases) feed_releases.sort(key=lambda x: x.published, reverse=True) dp = RssProcessor( db_sess=g.session, loggerPath="Main.WebProto", pageUrl=None, pgContent=None, type=None, ) for item in feed_releases: proc_tmp = {} proc_tmp['feedtype'] = item.type proc_tmp['title'] = item.title proc_tmp['guid'] = item.contentid proc_tmp['linkUrl'] = item.contenturl proc_tmp['updated'] = item.updated proc_tmp['published'] = item.published proc_tmp['contents'] = item.contents proc_tmp['tags'] = item.tags proc_tmp['authors'] = item.author proc_tmp['srcname'] = item.feed_entry.feed_name proc_tmp['feed_id'] = item.feed_entry.id proc_tmp['vcfp'] = extractVolChapterFragmentPostfix(item.title) ret = dp.dispatchReleaseDbBacked(proc_tmp) # False means not caught. None means intentionally ignored. if ret: ret_dict["successful"].append((ret, proc_tmp)) elif ret is False: ret_dict["missed"].append((ret, proc_tmp)) elif ret is None: ret_dict["ignored"].append((ret, proc_tmp)) else: raise RuntimeError("Wat? Unknown ret ({}) for release: {}".format(ret, proc_tmp)) return ret_dict
def dispatchRelease(self, item): ret = False try: feed = getCreateRssSource(self.db_sess, item['srcname'], item['linkUrl']) db_func = feed.get_func() ret = db_func(item) except Exception as e: print("Failure when trying to extract item for source '%s'" % item['srcname']) raise e # NanoDesu is annoying and makes their releases basically impossible to parse. FFFUUUUUu if "(NanoDesu)" in item['srcname'] and not ret: return False if ret is None: return False vol, chp, frag, postfix = extractVolChapterFragmentPostfix( item['title']) # Only return a value if we've actually found a chapter/vol if ret and not (ret['vol'] or ret['chp'] or ret['postfix']): self.log.info( "Skipping item due to no chapter/vol/postfix: '%s', '%s', '%s', '%s', '%s', '%s', '%s'", item['srcname'], item['title'], item['tags'], vol, chp, frag, postfix) ret = False # Do not trigger if there is "preview" in the title. if 'preview' in item['title'].lower(): self.log.info( "Skipping item due to preview string: '%s', '%s', '%s', '%s', '%s', '%s', '%s'", item['srcname'], item['title'], item['tags'], vol, chp, frag, postfix) ret = False if ret: assert 'tl_type' in ret return ret
def dispatchRelease(self, item): ret = False try: feed = getCreateRssSource(self.db_sess, item['srcname'], item['linkUrl']) db_func = feed.get_func() ret = db_func(item) except Exception as e: print("Failure when trying to extract item for source '%s'" % item['srcname']) raise e if ret is None: return False vol, chp, frag, postfix = extractVolChapterFragmentPostfix(item['title']) if ret: assert 'type' in ret assert 'data' in ret if ret['type'] == 'parsed-release' or ret['type'] == 'delete-release': reldata = ret['data'] # Only return a value if we've actually found a chapter/vol if reldata and not (reldata['vol'] or reldata['chp'] or reldata['postfix']): self.log.info("Skipping item due to no chapter/vol/postfix: '%s', '%s', '%s', '%s', '%s', '%s', '%s'", item['srcname'], item['title'], item['tags'], vol, chp, frag, postfix) ret = False # Do not trigger if there is "preview" in the title. if 'preview' in item['title'].lower(): self.log.info("Skipping item due to preview string: '%s', '%s', '%s', '%s', '%s', '%s', '%s'", item['srcname'], item['title'], item['tags'], vol, chp, frag, postfix) ret = False if reldata: assert 'tl_type' in reldata return ret
def do_release(self, row): if row.seriesname.endswith("..."): return if not row.releaseinfo: return if not row.actual_target: return self.log.info("Release for series: %s -> %s -> %s", row.seriesname, row.releaseinfo, row.actual_target) vol, chap, frag, postfix = extractVolChapterFragmentPostfix(row.releaseinfo) ret = { 'srcname' : fix_string(row.groupinfo), 'series' : fix_string(row.seriesname), 'vol' : vol, 'chp' : chap, 'frag' : frag, 'published' : calendar.timegm(row.first_seen.timetuple()), 'itemurl' : row.actual_target, 'postfix' : fix_string(postfix), 'author' : None, 'tl_type' : 'translated', 'match_author' : False, 'nu_release' : True } release = createReleasePacket(ret, beta=False) # print("Packed release:", release) self.rpc.put_feed_job(release)
def process_release(dp, proc_tmp, titlestr): proc_tmp['vcfp'] = extractVolChapterFragmentPostfix(titlestr) return dp.dispatchReleaseDbBacked(proc_tmp)
def dispatchRelease(self, item): ret = False funcMap = { '1HP' : pfuncs.extract1HP, '87 Percent Translation' : pfuncs.extract87Percent, 'A fish once said this to me' : pfuncs.extractDarkFish, 'A Place Of Legends' : pfuncs.extractPlaceOfLegends, 'A0132' : pfuncs.extractA0132, 'AFlappyTeddyBird' : pfuncs.extractAFlappyTeddyBird, 'Alcsel Translations' : pfuncs.extractAlcsel, 'Alyschu & Co' : pfuncs.extractAlyschuCo, 'Anathema Serial' : pfuncs.extractAnathema, 'Andrew9495\'s MTL corner' : pfuncs.extractAndrew9495, 'Aquarilas\' Scenario' : pfuncs.extractAquarilasScenario, 'Ark Machine Translations' : pfuncs.extractArkMachineTranslations, 'AsherahBlue\'s Notebook' : pfuncs.extractAsherahBlue, 'Aten Translations' : pfuncs.extractAtenTranslations, 'Avert Translations' : pfuncs.extractAvert, 'Azure Sky Translation' : pfuncs.extractAzureSky, 'Azurro 4 Cielo' : pfuncs.extractAzurro, 'Baka Dogeza Translation' : pfuncs.extractBakaDogeza, 'Bcat00 Translation' : pfuncs.extractBcat00, 'Beehugger' : pfuncs.extractBeehugger, 'Berseker Translations' : pfuncs.extractBersekerTranslations, 'Binggo&Corp' : pfuncs.extractBinggoCorp, 'Binhjamin' : pfuncs.extractBinhjamin, 'Blue Silver Translations' : pfuncs.extractBlueSilverTranslations, 'Bu Bu Jing Xin Translation' : pfuncs.extractBuBuJingXinTrans, 'Burei Dan Works' : pfuncs.extractBureiDan, 'C.E. Light Novel Translations' : pfuncs.extractCeLn, 'Calico x Tabby' : pfuncs.extractCalicoxTabby, 'Cas Project Site' : pfuncs.extractCasProjectSite, 'Ceruleonice Translations' : pfuncs.extractCeruleonice, 'Chinese BL Translations' : pfuncs.extractChineseBLTranslations, 'Circus Translations' : pfuncs.extractCircusTranslations, 'Clicky Click Translation' : pfuncs.extractClicky, 'Clover\'s Nook' : pfuncs.extractCloversNook, 'CookiePasta' : pfuncs.extractCookiePasta, 'CrystalRainDescends' : pfuncs.extractCrystalRainDescends, 'CtrlAlcalá' : pfuncs.extractCtrlAlcala, 'Dao Seeker Blog' : pfuncs.extractDaoSeekerBlog, 'Dark Translations' : pfuncs.extractDarkTranslations, 'Dawning Howls' : pfuncs.extractDawningHowls, 'Defiring' : pfuncs.extractDefiring, 'Dewey Night Unrolls' : pfuncs.extractDeweyNightUnrolls, 'Distracted Translations' : pfuncs.extractDistractedTranslations, 'Diwasteman' : pfuncs.extractDiwasteman, 'DragomirCM' : pfuncs.extractDragomirCM, 'Dreadful Decoding' : pfuncs.extractDreadfulDecoding, 'Dreams of Jianghu' : pfuncs.extractDreamsOfJianghu, 'Dynamis Gaul Light Novel' : pfuncs.extractDynamisGaul, 'End Online Novel' : pfuncs.extractEndOnline, 'Ensj Translations' : pfuncs.extractEnsjTranslations, 'EnTruce Translations' : pfuncs.extractEnTruceTranslations, 'Epyon Translations' : pfuncs.extractEpyonTranslations, 'Ero Light Novel Translations' : pfuncs.extractEroLightNovelTranslations, 'Eros Workshop' : pfuncs.extractErosWorkshop, 'Fanatical' : pfuncs.extractFanatical, 'FeedProxy' : pfuncs.extractFeedProxy, 'Firebird\'s Nest' : pfuncs.extractFirebirdsNest, 'Five Star Specialists' : pfuncs.extractFiveStar, 'Flower Bridge Too' : pfuncs.extractFlowerBridgeToo, 'Forgetful Dreamer' : pfuncs.extractForgetfulDreamer, 'Forgotten Conqueror' : pfuncs.extractForgottenConqueror, 'Frostfire 10' : pfuncs.extractFrostfire10, 'Fudge Translations' : pfuncs.extractFudgeTranslations, 'Fung Shen' : pfuncs.extractFungShen, 'Gila Translation Monster' : pfuncs.extractGilaTranslation, 'Giraffe Corps' : pfuncs.extractGiraffe, 'Goddess! Grant Me a Girlfriend!!' : pfuncs.extractGoddessGrantMeaGirlfriend, 'Gravity Tales' : pfuncs.extractGravityTranslation, 'Grow with Me' : pfuncs.extractGrowWithMe, 'guhehe.TRANSLATIONS' : pfuncs.extractGuhehe, 'Guro Translation' : pfuncs.extractGuroTranslation, 'Hajiko translation' : pfuncs.extractHajiko, 'HaruPARTY' : pfuncs.extractHaruPARTY, 'Helidwarf' : pfuncs.extractHelidwarf, 'Henouji Translation' : pfuncs.extractHenoujiTranslation, 'Heroic Novels' : pfuncs.extractHeroicNovels, 'Hokage Translations' : pfuncs.extractHokageTrans, 'Hold \'X\' and Click' : pfuncs.extractHoldX, 'Hot Cocoa Translations' : pfuncs.extractHotCocoa, 'Imoutolicious Light Novel Translations' : pfuncs.extractImoutolicious, 'Infinite Novel Translations' : pfuncs.extractInfiniteNovelTranslations, 'Isekai Mahou Translations!' : pfuncs.extractIsekaiMahou, 'Isekai Soul-Cyborg Translations' : pfuncs.extractIsekaiTranslation, 'Iterations within a Thought-Eclipse' : pfuncs.extractIterations, 'izra709 | B Group no Shounen Translations' : pfuncs.extractIzra709, 'Japtem' : pfuncs.extractJaptem, 'JawzTranslations' : pfuncs.extractJawzTranslations, 'Joeglen\'s Translation Space' : pfuncs.extractJoeglensTranslationSpace, 'Kaezar Translations' : pfuncs.extractKaezar, 'Kahoim Translations' : pfuncs.extractKahoim, 'Kami Translation' : pfuncs.extractKamiTranslation, 'Kerambit\'s Incisions' : pfuncs.extractKerambit, 'King Jaahn\'s Subjects' : pfuncs.extractKingJaahn, 'Kiri Leaves' : pfuncs.extractKiri, 'Knokkro Translations' : pfuncs.extractKnokkroTranslations, 'KobatoChanDaiSukiScan' : pfuncs.extractKobatoChanDaiSukiScan, 'Konobuta' : pfuncs.extractKonobuta, 'Kore Yori Hachidori' : pfuncs.extractKoreYoriHachidori, 'Korean Novel Translations' : pfuncs.extractKoreanNovelTrans, 'Kuma Otou' : pfuncs.extractKumaOtou, 'Kyakka' : pfuncs.extractKyakka, 'Larvyde' : pfuncs.extractLarvyde, 'Lascivious Imouto' : pfuncs.extractLasciviousImouto, 'Lazy NEET Translations' : pfuncs.extractNEET, 'Legend of Galactic Heroes Translation Project' : pfuncs.extractLegendofGalacticHeroes, 'Lil\' Bliss Novels' : pfuncs.extractLilBlissNovels, 'Lingson\'s Translations' : pfuncs.extractLingson, 'Linked Translations' : pfuncs.extractLinkedTranslations, 'Ln Addiction' : pfuncs.extractLnAddiction, 'Loiterous' : pfuncs.extractLoiterous, 'Lonahora' : pfuncs.extractLonahora, 'Lost in Translation' : pfuncs.extractLostInTranslation, 'Luen Translations' : pfuncs.extractLuenTranslations, 'Lunaris' : pfuncs.extractLunaris, 'Lunate' : pfuncs.extractLunate, 'LygarTranslations' : pfuncs.extractLygarTranslations, 'Lylis Translations' : pfuncs.extractLylisTranslations, 'Machine Sliced Bread' : pfuncs.extractMachineSlicedBread, 'Madao Translations' : pfuncs.extractMadaoTranslations, 'MadoSpicy TL' : pfuncs.extractMadoSpicy, 'Mahou Koukoku' : pfuncs.extractMahouKoukoku, 'Mahoutsuki Translation' : pfuncs.extractMahoutsuki, 'Makina Translations' : pfuncs.extractMakinaTranslations, 'Mana Tank Magus' : pfuncs.extractManaTankMagus, 'Manga0205 Translations' : pfuncs.extractManga0205Translations, 'Mecha Mushroom Translations' : pfuncs.extractMechaMushroom, 'Mike777ac' : pfuncs.extractMike777ac, 'Monk Translation' : pfuncs.extractMonkTranslation, 'Moon Bunny Cafe' : pfuncs.extractMoonBunnyCafe, 'Morrighan Sucks' : pfuncs.extractMorrighanSucks, 'Nanjamora' : pfuncs.extractNanjamora, 'Natsu TL' : pfuncs.extractNatsuTl, 'NEET Translations' : pfuncs.extractNeetTranslations, 'Nekoyashiki' : pfuncs.extractNekoyashiki, 'Neo Translations' : pfuncs.extractNeoTranslations, 'Nightbreeze Translations' : pfuncs.extractNightbreeze, 'Nohohon Translation' : pfuncs.extractNohohon, 'Nooblate' : pfuncs.extractNooblate, 'NOT Daily Translations' : pfuncs.extractNotDailyTranslations, 'Novel Saga' : pfuncs.extractNovelSaga, 'Novels Nao' : pfuncs.extractNovelsNao, 'NoviceTranslator' : pfuncs.extractNoviceTranslator, 'Nutty is Procrastinating' : pfuncs.extractNutty, 'Ohanashimi' : pfuncs.extractOhanashimi, 'OK Translation' : pfuncs.extractOKTranslation, 'Omega Harem' : pfuncs.extractOmegaHarem, 'Omgitsaray Translations' : pfuncs.extractOmgitsaray, 'One Man Army Translations (OMA)' : pfuncs.extractOneManArmy, 'One Man Army Translations' : pfuncs.extractOneManArmy, 'One Second Spring' : pfuncs.extractOneSecondSpring, 'Origin Novels' : pfuncs.extractOriginNovels, 'otterspacetranslation' : pfuncs.extractOtterspaceTranslation, 'Outspan Foster' : pfuncs.extractOutspanFoster, 'Pea\'s Kingdom' : pfuncs.extractPeasKingdom, 'Pika Translations' : pfuncs.extractPikaTranslations, 'Pippi Site' : pfuncs.extractPippiSite, 'PlainlyBored' : pfuncs.extractPlainlyBored, 'Priddles Translations' : pfuncs.extractPriddlesTranslations, 'Prince Revolution!' : pfuncs.extractPrinceRevolution, 'putttytranslations' : pfuncs.extractPuttty, 'Radiant Translations' : pfuncs.extractRadiantTranslations, 'Rainbow Translations' : pfuncs.extractRainbowTranslations, 'Raising the Dead' : pfuncs.extractRaisingTheDead, 'RANCER' : pfuncs.extractRancer, 'Rebirth Online World' : pfuncs.extractRebirthOnlineWorld, 'Rebirth Online' : pfuncs.extractRebirthOnlineWorld, 'Red Dragon Translations' : pfuncs.extractRedDragonTranslations, 'Reddy Creations' : pfuncs.extractReddyCreations, 'Reigokai: Isekai Translations' : pfuncs.extractIsekaiTranslations, 'Require: Cookie' : pfuncs.extractRequireCookie, 'Rhinabolla' : pfuncs.extractRhinabolla, 'Rising Dragons Translation' : pfuncs.extractRisingDragons, 'Rosyfantasy - Always Dreaming' : pfuncs.extractRosyfantasy, 'Roxism HQ' : pfuncs.extractRoxism, 'Rumanshi\'s Lair' : pfuncs.extractRumanshisLair, 'Rumor\'s Block' : pfuncs.extractRumorsBlock, 'Ruze Translations' : pfuncs.extractRuzeTranslations, 'Scrya Translations' : pfuncs.extractScryaTranslations, 'Shikkaku Translations' : pfuncs.extractShikkakuTranslations, 'Shin Sekai Yori – From the New World' : pfuncs.extractShinSekaiYori, 'Shin Translations' : pfuncs.extractShinTranslations, 'Shinsori Translations' : pfuncs.extractShinsori, 'Shiroyukineko Translations' : pfuncs.extractShiroyukineko, 'Silent Tl' : pfuncs.extractSilentTl, 'Silva\'s Library' : pfuncs.extractSilvasLibrary, 'Sins of the Fathers' : pfuncs.extractSinsOfTheFathers, 'Skythewood translations' : pfuncs.extractSkythewood, 'Soaring Translations' : pfuncs.extractSoaring, 'Solitary Translation' : pfuncs.extractSolitaryTranslation, 'Soojiki\'s Project' : pfuncs.extractSoojikisProject, 'Sora Translationsblog' : pfuncs.extractSoraTranslations, 'Sousetsuka' : pfuncs.extractSousetsuka, 'Subudai11' : pfuncs.extractSubudai11, 'Supreme Origin Translations' : pfuncs.extractSotranslations, 'Suteki Da Ne' : pfuncs.extractSutekiDaNe, 'Sword and Game' : pfuncs.extractSwordAndGame, 'Sylver Translations' : pfuncs.extractSylver, 'Taint' : pfuncs.extractTaint, 'Tales of MU' : pfuncs.extractTalesOfMU, 'Tensai Translations' : pfuncs.extractTensaiTranslations, 'ThatGuyOverThere' : pfuncs.extractThatGuyOverThere, 'The Beginning After The End' : pfuncs.extractBeginningAfterTheEnd, 'The C-Novel Project' : pfuncs.extractCNovelProj, 'The Mustang Translator' : pfuncs.extractTheMustangTranslator, 'The Tales of Paul Twister' : pfuncs.extractTalesOfPaulTwister, 'The Zombie Knight' : pfuncs.extractZombieKnight, 'TheLazy9' : pfuncs.extractTheLazy9, 'Thunder Translation' : pfuncs.extractThunder, 'Thyaeria Translations' : pfuncs.extractThyaeria, 'Tomorolls' : pfuncs.extractTomorolls, 'Tony Yon Ka' : pfuncs.extractTonyYonKa, 'Totally Insane Tranlation' : pfuncs.extractTotallyInsaneTranslation, 'Totally Insane Translation' : pfuncs.extractTotallyInsaneTranslation, 'Totokk\'s Translations' : pfuncs.extractTotokk, 'Translated by a Clown' : pfuncs.extractClownTrans, 'Translating Ze Tian Ji' : pfuncs.extractTranslatingZeTianJi, 'Translation Nations' : pfuncs.extractTranslationNations, 'Translation Raven' : pfuncs.extractTranslationRaven, 'Tripp Translations' : pfuncs.extractTrippTl, 'Trungt Nguyen 123' : pfuncs.extractTrungtNguyen, 'Tsuigeki Translations' : pfuncs.extractTsuigeki, 'Tsukigomori' : pfuncs.extractTsukigomori, 'Turb0 Translation' : pfuncs.extractTurb0, 'Twisted Cogs' : pfuncs.extractTwistedCogs, 'U Donate We Translate' : pfuncs.extractUDonateWeTranslate, 'Ultimate Arcane' : pfuncs.extractUltimateArcane, 'Unchained Translation' : pfuncs.extractUnchainedTranslation, 'Universes With Meaning' : pfuncs.extractUniversesWithMeaning, 'Untuned Translation Blog' : pfuncs.extractUntunedTranslation, 'VaanCruze' : pfuncs.extractMaouTheYuusha, 'Verathragana Stories' : pfuncs.extractVerathragana, 'Void Translations' : pfuncs.extractVoidTranslations, 'Volare Translations' : pfuncs.extractVolareTranslations, 'Walk the Jiang Hu' : pfuncs.extractWalkTheJiangHu, 'Walking the Storm' : pfuncs.extractWalkingTheStorm, 'Wat Da Meow' : pfuncs.extractWatDaMeow, 'Watermelon Helmets' : pfuncs.extractWatermelonHelmets, 'WCC Translation' : pfuncs.extractWCCTranslation, 'Web Novel Japanese Translation' : pfuncs.extractWebNovelJapaneseTranslation, 'Wele Translation' : pfuncs.extractWeleTranslation, 'White Tiger Translations' : pfuncs.extractWhiteTigerTranslations, 'Witch Life Novel' : pfuncs.extractWitchLife, 'Wolfie Translation' : pfuncs.extractWolfieTranslation, 'World of Watermelons' : pfuncs.extractWatermelons, 'Wuxia Heroes' : pfuncs.extractWuxiaHeroes, 'Wuxia Translations' : pfuncs.extractWuxiaTranslations, 'WuxiaSociety' : pfuncs.extractWuxiaSociety, 'Wuxiaworld' : pfuncs.extractWuxiaworld, 'Xant & Minions' : pfuncs.extractXantAndMinions, 'Yoraikun Translation' : pfuncs.extractYoraikun, 'Youjinsite Translations' : pfuncs.extractYoujinsite, 'Youko Advent' : pfuncs.extractYoukoAdvent, 'Youshoku Translations' : pfuncs.extractYoushoku, 'Yukkuri Free Time Literature Service' : pfuncs.extractYukkuri, 'Ziru\'s Musings | Translations~' : pfuncs.extractZiruTranslations, 'ZSW' : pfuncs.extractZSW, '~Taffy Translations~' : pfuncs.extractTaffyTranslations, 'ℝeanとann@' : pfuncs.extractReantoAnna, 'お兄ちゃん、やめてぇ!' : pfuncs.extractOniichanyamete, '中翻英圖書館 Translations' : pfuncs.extractTuShuGuan, '桜翻訳! | Light novel translations' : pfuncs.extractSakurahonyaku, 'pandafuqtranslations' : pfuncs.extractPandafuqTranslations, 'Paztok' : pfuncs.extractPaztok, # KnW mess 'Blazing Translations' : pfuncs.extractKnW, 'CapsUsingShift Tl' : pfuncs.extractKnW, 'Insignia Pierce' : pfuncs.extractKnW, 'Kiriko Translations' : pfuncs.extractKnW, 'Konjiki no Wordmaster' : pfuncs.extractKnW, 'Loliquent' : pfuncs.extractKnW, 'Pummels Translations' : pfuncs.extractKnW, 'XCrossJ' : pfuncs.extractKnW, # 'Ducky\'s English Translations' : pfuncs.extractBase, # 'Bad Translation' : pfuncs.extractBase, # 'LordofScrubs' : pfuncs.extractBase, # 'Roasted Tea' : pfuncs.extractBase, # 'Undecent Translations' : pfuncs.extractBase, # '(NanoDesu) - Amagi Brilliant Park ' : pfuncs.extractBase, # '(NanoDesu) - Fate/Apocrypha' : pfuncs.extractBase, # '(NanoDesu) - Fuyuu Gakuen no Alice and Shirley' : pfuncs.extractBase, # '(NanoDesu) - Gekka no Utahime to Magi no Ou' : pfuncs.extractBase, # '(NanoDesu) - GJ-Bu' : pfuncs.extractBase, # '(NanoDesu) - Hai to Gensou no Grimgal' : pfuncs.extractBase, # '(NanoDesu) - Hentai Ouji to Warawanai Neko' : pfuncs.extractBase, # '(NanoDesu) - Kono Sekai ga Game Dato Ore Dake ga Shitteiru' : pfuncs.extractBase, # '(NanoDesu) - Kore wa Zombie Desu ka?' : pfuncs.extractBase, # '(NanoDesu) - Kurenai' : pfuncs.extractBase, # '(NanoDesu) - Love★You' : pfuncs.extractBase, # '(NanoDesu) - Maoyuu Maou Yuusha' : pfuncs.extractBase, # '(NanoDesu) - Mayo Chiki' : pfuncs.extractBase, # '(NanoDesu) - Ojamajo Doremi' : pfuncs.extractBase, # '(NanoDesu) - Oreimo' : pfuncs.extractBase, # '(NanoDesu) - Rokka no Yuusha' : pfuncs.extractBase, # '(NanoDesu) - Saenai Heroine no Sodatekata' : pfuncs.extractBase, # '(NanoDesu) - Sasami-San@Ganbaranai' : pfuncs.extractBase, # '(NanoDesu) - Seitokai no Ichizon' : pfuncs.extractBase, # '(NanoDesu) - Sky World' : pfuncs.extractBase, # '(NanoDesu) - Yahari Ore no Seishun Love Come wa Machigatteiru' : pfuncs.extractBase, # '-Sloth-' : pfuncs.extractBase, # '12 Superlatives' : pfuncs.extractBase, # '77 Novel' : pfuncs.extractBase, # '[G.O] Chronicles' : pfuncs.extractBase, # '[nakulas]' : pfuncs.extractBase, # 'A Pearly View' : pfuncs.extractBase, # 'A Translator\'s Ramblings' : pfuncs.extractBase, # 'A traveler\'s translations.' : pfuncs.extractBase, # 'Adamantine Dragon in the Crystal World' : pfuncs.extractBase, # 'alicetranslations.wordpress.com' : pfuncs.extractBase, # 'All\'s Fair In Love & War' : pfuncs.extractBase, # 'Anon Empire' : pfuncs.extractBase, # 'Aori Translations' : pfuncs.extractBase, # 'Aqua Scans' : pfuncs.extractBase, # 'Archivity' : pfuncs.extractBase, # 'Bear Bear Translations' : pfuncs.extractBase, # 'BeRsErk Translations' : pfuncs.extractBase, # 'C Novels 2 C' : pfuncs.extractBase, # 'Cat Scans' : pfuncs.extractBase, # 'cavescans.com' : pfuncs.extractBase, # 'Cheddar!' : pfuncs.extractBase, # 'Chinese Weaboo Translations' : pfuncs.extractBase, # 'Circle of Shards' : pfuncs.extractBase, # 'Cloud Manor' : pfuncs.extractBase, # 'Code-Zero\'s Blog' : pfuncs.extractBase, # 'Cosmic Translation' : pfuncs.extractBase, # 'Currently TLing [Bu ni Mi]' : pfuncs.extractBase, # 'Deadly Forgotten Legends' : pfuncs.extractBase, # 'Defan\'s Translations' : pfuncs.extractBase, # 'Descent Subs' : pfuncs.extractBase, # 'Dorayakiz' : pfuncs.extractBase, # 'Dream Avenue' : pfuncs.extractBase, # 'Duran Daru Translation' : pfuncs.extractBase, # 'Durasama' : pfuncs.extractBase, # 'EC Webnovel' : pfuncs.extractBase, # 'ELYSION Translation' : pfuncs.extractBase, # 'Emergency Exit\'s Release Blog' : pfuncs.extractBase, # 'EndKun' : pfuncs.extractBase, # 'Ente38 translations' : pfuncs.extractBase, # 'Epyon Translations' : pfuncs.extractBase, # 'eternalpath.net' : pfuncs.extractBase, # 'Etheria Translations' : pfuncs.extractBase, # 'Eugene Rain' : pfuncs.extractBase, # 'Eye of Adventure ' : pfuncs.extractBase, # 'EZ Translations' : pfuncs.extractBase, # 'Fighting Dreamers Scanlations' : pfuncs.extractBase, # 'Flicker Hero' : pfuncs.extractBase, # 'Fuzion Life' : pfuncs.extractBase, # 'Gargoyle Web Serial' : pfuncs.extractBase, # 'Hamster428' : pfuncs.extractBase, # 'Heart Crusade Scans' : pfuncs.extractBase, # 'Hello Translations' : pfuncs.extractBase, # 'Hellping' : pfuncs.extractBase, # 'Hendricksen-sama' : pfuncs.extractBase, # 'Infinite Translations' : pfuncs.extractBase, # 'Isolarium' : pfuncs.extractBase, # 'Istian\'s Workshop' : pfuncs.extractBase, # 'itranslateln' : pfuncs.extractBase, # 'Jagaimo' : pfuncs.extractBase, # 'Kedelu' : pfuncs.extractBase, # 'Kisato\'s MLTs' : pfuncs.extractBase, # 'KN Translation' : pfuncs.extractBase, # 'Krytyk\'s Translations' : pfuncs.extractBase, # 'Kurotsuki Novel' : pfuncs.extractBase, # 'Kyakka Translations' : pfuncs.extractBase, # 'L2M' : pfuncs.extractBase, # 'Lastvoice Translator' : pfuncs.extractBase, # 'Layzisheep' : pfuncs.extractBase, # 'Light Novel translations' : pfuncs.extractBase, # 'Lizard Translations' : pfuncs.extractBase, # 'LMS Machine Translations' : pfuncs.extractBase, # 'LorCromwell' : pfuncs.extractBase, # 'Maou na Anoko to murabito a' : pfuncs.extractBase, # 'Martial God Translator' : pfuncs.extractBase, # 'Midnight Translation Blog' : pfuncs.extractBase, # 'Mnemeaa' : pfuncs.extractBase, # 'mousou-haven.com' : pfuncs.extractBase, # 'Mystique Translations' : pfuncs.extractBase, # 'n00btranslations.wordpress.com' : pfuncs.extractBase, # 'NanoDesu Light Novel Translations' : pfuncs.extractBase, # 'National NEET' : pfuncs.extractBase, # 'Nowhere & Nothing' : pfuncs.extractBase, # 'omatranslations.wordpress.com' : pfuncs.extractBase, # 'Ore ga Heroine in English' : pfuncs.extractBase, # 'Otome Revolution' : pfuncs.extractBase, # 'Pact Web Serial' : pfuncs.extractBase, # 'Pea Translation' : pfuncs.extractBase, # 'Pielord Translations' : pfuncs.extractBase, # 'Polyphonic Story Translation Group' : pfuncs.extractBase, # 'Popsiclete' : pfuncs.extractBase, # 'Project Accelerator' : pfuncs.extractBase, # 'Pumpkin Translations' : pfuncs.extractBase, # 'Quality ★ Mistranslations' : pfuncs.extractBase, # 'Raising Angels & Defection' : pfuncs.extractBase, # 'Reject Hero' : pfuncs.extractBase, # 'Romantic Dreamer\'s Sanctuary' : pfuncs.extractBase, # 'Saber Translations' : pfuncs.extractBase, # 'Sauri\'s TL Blog' : pfuncs.extractBase, # 'SETSUNA86BLOG' : pfuncs.extractBase, # 'Sherma Translations' : pfuncs.extractBase, # 'Shokyuu Translations' : pfuncs.extractBase, # 'Silver Butterfly' : pfuncs.extractBase, # 'Slime Lv1' : pfuncs.extractBase, # 'Snow & Dust' : pfuncs.extractBase, # 'soaringtranslations.wordpress.com' : pfuncs.extractBase, # 'solitarytranslation.wordpress.com' : pfuncs.extractBase, # 'Stellar Transformation Con.' : pfuncs.extractBase, # 'STL Translations' : pfuncs.extractBase, # 'Stone Burners' : pfuncs.extractBase, # 'Sun Shower Fields' : pfuncs.extractBase, # 'Super Potato Translations' : pfuncs.extractBase, # 'Symbiote' : pfuncs.extractBase, # 'tap-trans » tappity tappity tap.' : pfuncs.extractBase, # 'Terminus Translation' : pfuncs.extractBase, # 'The Named' : pfuncs.extractBase, # 'The Sphere' : pfuncs.extractBase, # 'TheDefend Translations' : pfuncs.extractBase, # 'Tieshaunn' : pfuncs.extractBase, # 'Tofubyu' : pfuncs.extractBase, # 'Translation Treasure Box' : pfuncs.extractBase, # 'Translations From Outer Space' : pfuncs.extractBase, # 'Tumble Into Fantasy' : pfuncs.extractBase, # 'Tus-Trans' : pfuncs.extractBase, # 'Unlimited Story Works' : pfuncs.extractBase, # 'Useless no 4' : pfuncs.extractBase, # 'Village Translations' : pfuncs.extractBase, # 'walkthejianghu.wordpress.com' : pfuncs.extractBase, # 'Weaving stories and building castles in the clouds' : pfuncs.extractBase, # 'When The Hunting Party Came' : pfuncs.extractBase, # 'Whimsical Land' : pfuncs.extractBase, # 'Word of Craft' : pfuncs.extractBase, # 'World of Summie' : pfuncs.extractBase, # 'Worm - A Complete Web Serial' : pfuncs.extractBase, # 'Wuxiwish' : pfuncs.extractBase, # 'www.pridesfamiliarsmaidens.com' : pfuncs.extractBase, # 'www.soltarination.org' : pfuncs.extractBase, # 'xantbos.wordpress.com' : pfuncs.extractBase, 'Yet Another Translation Site' : pfuncs.extractMiaomix539, # 'Yi Yue Translation' : pfuncs.extractBase, # 'youtsubasilver\'s Blog' : pfuncs.extractBase, # 'Zen Translations' : pfuncs.extractBase, # 'ヾ(。 ̄□ ̄)ツ' : pfuncs.extractBase, # '一期一会, 万歳!' : pfuncs.extractBase, # '睡眠中毒' : pfuncs.extractBase, # '輝く世界' : pfuncs.extractBase, 'tiffybook.com' : pfuncs.extractCrazyForHENovels, 'Crazy for HE Novels' : pfuncs.extractCrazyForHENovels, # No Posts yet? # 'Novel Trans' : pfuncs.extractBase, 'The Bathrobe Knight' : pfuncs.extractBathrobeKnight, 'Dramas, Books & Tea' : pfuncs.extractDramasBooksTea, # Not parseable. 'Crack of Dawn Translations' : pfuncs.extractCrackofDawnTranslations, } if item['srcname'] in funcMap: ret = funcMap[item['srcname']](item) else: print("No filter found for '%s'?" % item['srcname']) # NanoDesu is annoying and makes their releases basically impossible to parse. FFFUUUUUu if "(NanoDesu)" in item['srcname'] and not ret: return False if (flags.RSS_DEBUG or self.dbg_print) and self.write_debug and ret == False and not "teaser" in item['title'].lower(): vol, chp, frag, postfix = extractVolChapterFragmentPostfix(item['title']) if vol or chp or frag and not flags.RSS_DEBUG: with open('rss_filter_misses-1.json', "a") as fp: write_items = { "SourceName" : item['srcname'], "Title" : item['title'], "Tags" : list(item['tags']), "Vol" : False if not vol else vol, "Chp" : False if not chp else chp, "Frag" : False if not frag else frag, "Postfix" : postfix, "Feed URL" : item['linkUrl'], "GUID" : item['guid'], "Have Func" : item['srcname'] in funcMap, } # fp.write("\n==============================\n") # fp.write("Feed URL: '%s', guid: '%s'" % (item['linkUrl'], item['guid'])) # fp.write("'%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s'\n" % (item['srcname'], item['title'], item['tags'], vol, chp, frag, postfix, item['linkUrl'])) fp.write("%s" % (json.dumps(write_items, ))) fp.write("\n") vol, chp, frag, postfix = extractVolChapterFragmentPostfix(item['title']) if self.dbg_print or flags.RSS_DEBUG: # False means not caught. None means intentionally ignored. if ret == False and (vol or chp or frag) and not "teaser" in item['title'].lower(): print("Missed: '%s', '%s', '%s', '%s', '%s', '%s', '%s'" % (item['srcname'], item['title'], item['tags'], vol, chp, frag, postfix)) elif ret: pass # print("OK! '%s', V:'%s', C:'%s', '%s', '%s', '%s'" % (ret['srcname'], ret['vol'], ret['chp'], ret['postfix'], ret['series'], item['title'])) else: pass # print("Wat: '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s'" % (item['srcname'], item['title'], item['tags'], vol, chp, frag, postfix, item['linkUrl'])) if flags.RSS_DEBUG: ret = False # Only return a value if we've actually found a chapter/vol if ret and not (ret['vol'] or ret['chp'] or ret['postfix']): self.log.info("Skipping item due to no chapter/vol/postfix: '%s', '%s', '%s', '%s', '%s', '%s', '%s'", item['srcname'], item['title'], item['tags'], vol, chp, frag, postfix) ret = False # Do not trigger if there is "preview" in the title. if 'preview' in item['title'].lower(): self.log.info("Skipping item due to preview string: '%s', '%s', '%s', '%s', '%s', '%s', '%s'", item['srcname'], item['title'], item['tags'], vol, chp, frag, postfix) ret = False if ret: assert 'tl_type' in ret if ret == None: ret = False return ret