def buildMangaReply(searchText, isExpanded, baseComment): try: #Basic breakdown: #If Anilist finds something, use it to find the MAL version. #If hits either MAL or Ani, use it to find the MU version. #If it hits either, add it to the request-tracking DB. ani = Anilist.getMangaDetails(searchText) mal = None mu = None if not (ani is None): mal = MAL.getMangaDetails(ani['title_romaji']) else: mal = MAL.getMangaDetails(searchText) if not (mal is None): ani = Anilist.getMangaDetails(mal['title']) if (ani is not None) or (mal is not None): try: titleToAdd = '' if mal is not None: titleToAdd = mal['title'] mu = MU.getMangaURL(mal['title']) else: titleToAdd = ani['title_english'] mu = MU.getMangaURL(ani['title_romaji']) if (str(baseComment.subreddit).lower is not 'nihilate') and (str(baseComment.subreddit).lower is not 'roboragi'): DatabaseHandler.addRequest(titleToAdd, 'Manga', baseComment.author.name, baseComment.subreddit) except: traceback.print_exc() pass if ani is not None: if ani['adult'] is True: print("NSFW ENTRY") mal = None ani = None mu = None return CommentBuilder.buildMangaComment(isExpanded, mal, ani, mu) except Exception as e: traceback.print_exc() return None
def buildMangaReplyWithAuthor(searchText, authorName, isExpanded, baseComment, blockTracking=False): try: ani = Anilist.getMangaWithAuthor(searchText, authorName) mal = None mu = None ap = None if ani: mal = MAL.getMangaCloseToDescription(searchText, ani['description']) ap = AniP.getMangaURL(ani['title_english'], authorName) else: ap = AniP.getMangaURL(searchText, authorName) mu = MU.getMangaWithAuthor(searchText, authorName) if ani: try: titleToAdd = '' if mal is not None: titleToAdd = mal['title'] else: titleToAdd = ani['title_english'] if (str(baseComment.subreddit).lower is not 'nihilate') and (str(baseComment.subreddit).lower is not 'roboragi') and not blockTracking: DatabaseHandler.addRequest(titleToAdd, 'Manga', baseComment.author.name, baseComment.subreddit) except: traceback.print_exc() pass return CommentBuilder.buildMangaComment(isExpanded, mal, ani, mu, ap) except Exception as e: traceback.print_exc() return None
def buildMangaReplyWithAuthor(searchText, authorName, message, isExpanded, blockTracking=False): try: ani = Anilist.getMangaWithAuthor(searchText, authorName) mal = None mu = None ap = None if ani: mal = MAL.getMangaCloseToDescription(searchText, ani['description']) ap = AniP.getMangaURL(ani['title_english'], authorName) else: ap = AniP.getMangaURL(searchText, authorName) mu = MU.getMangaWithAuthor(searchText, authorName) if ani: try: titleToAdd = '' if mal is not None: titleToAdd = mal['title'] else: titleToAdd = ani['title_english'] if not blockTracking: DatabaseHandler.addRequest(titleToAdd, 'Manga', message.author.id, message.server.id) except: traceback.print_exc() pass return CommentBuilder.buildMangaComment(isExpanded, mal, ani, mu, ap) except Exception as e: traceback.print_exc() return None
def buildMangaReplyWithAuthor(searchText, authorName, isExpanded, baseComment, blockTracking=False): try: ani = Anilist.getMangaWithAuthor(searchText, authorName) mal = None mu = None ap = None if ani: mal = MAL.getMangaCloseToDescription(searchText, ani['description']) ap = AniP.getMangaURL(ani['title_english'], authorName) else: ap = AniP.getMangaURL(searchText, authorName) mu = MU.getMangaWithAuthor(searchText, authorName) if ani: try: titleToAdd = '' if mal is not None: titleToAdd = mal['title'] else: titleToAdd = ani['title_english'] if (str(baseComment.subreddit).lower is not 'nihilate') and ( str(baseComment.subreddit).lower is not 'roboragi') and not blockTracking: DatabaseHandler.addRequest(titleToAdd, 'Manga', baseComment.author.name, baseComment.subreddit) except: traceback.print_exc() pass return CommentBuilder.buildMangaComment(isExpanded, mal, ani, mu, ap) except Exception as e: traceback.print_exc() return None
def buildMangaReply(searchText, isExpanded, baseComment, blockTracking=False): try: ani = { 'search_function': Anilist.getMangaDetails, 'synonym_function': Anilist.getSynonyms, 'checked_synonyms': [], 'result': None } mal = { 'search_function': MAL.getMangaDetails, 'synonym_function': MAL.getSynonyms, 'checked_synonyms': [], 'result': None } kit = { 'search_function': Kitsu.search_manga, 'synonym_function': Kitsu.get_synonyms, 'checked_synonyms': [], 'result': None } mu = {'search_function': MU.getMangaURL, 'result': None} ap = {'search_function': AniP.getMangaURL, 'result': None} try: sqlCur.execute( 'SELECT dbLinks FROM synonyms WHERE type = "Manga" and lower(name) = ?', [searchText.lower()]) except sqlite3.Error as e: print(e) alternateLinks = sqlCur.fetchone() if (alternateLinks): synonym = json.loads(alternateLinks[0]) if synonym: malsyn = None if 'mal' in synonym and synonym['mal']: malsyn = synonym['mal'] anisyn = None if 'ani' in synonym and synonym['ani']: anisyn = synonym['ani'] kitsyn = None if 'kit' in synonym and synonym['kit']: kitsyn = synonym['kit'] musyn = None if 'mu' in synonym and synonym['mu']: musyn = synonym['mu'] apsyn = None if 'ap' in synonym and synonym['ap']: apsyn = synonym['ap'] mal['result'] = MAL.getMangaDetails( malsyn[0], malsyn[1]) if malsyn else None ani['result'] = Anilist.getMangaDetailsById( anisyn) if anisyn else None kit['result'] = Kitsu.get_manga(kitsyn) if kitsyn else None mu['result'] = MU.getMangaURLById(musyn) if musyn else None ap['result'] = AniP.getMangaURLById(apsyn) if apsyn else None else: data_sources = [ani, kit, mal] aux_sources = [mu, ap] synonyms = set([searchText]) for x in range(len(data_sources)): for source in data_sources: if source['result']: break else: for synonym in synonyms: if synonym in source['checked_synonyms']: continue source['result'] = source['search_function']( synonym) source['checked_synonyms'].append(synonym) if source['result']: break if source['result']: synonyms.update([ synonym.lower() for synonym in source['synonym_function'](source['result']) ]) for source in aux_sources: for synonym in synonyms: source['result'] = source['search_function'](synonym) if source['result']: break if ani['result'] or mal['result'] or kit['result']: try: titleToAdd = '' if ani['result']: try: titleToAdd = ani['result']['title_romaji'] except: titleToAdd = ani['result']['title_english'] elif mal['result']: titleToAdd = mal['result']['title'] elif kit['result']: try: titleToAdd = kit['result']['title_romaji'] except: titleToAdd = kit['result']['title_english'] if (str(baseComment.subreddit).lower is not 'nihilate') and ( str(baseComment.subreddit).lower is not 'roboragi') and not blockTracking: DatabaseHandler.addRequest(titleToAdd, 'Manga', baseComment.author.name, baseComment.subreddit) except: traceback.print_exc() pass return CommentBuilder.buildMangaComment(isExpanded, mal['result'], ani['result'], mu['result'], ap['result'], kit['result']) except Exception as e: traceback.print_exc() return None
def buildMangaReply(searchText, isExpanded, baseComment, blockTracking=False): try: ani = None mal = None mu = None ap = None try: sqlCur.execute('SELECT dbLinks FROM synonyms WHERE type = "Manga" and lower(name) = ?', [searchText.lower()]) except sqlite3.Error as e: print(e) alternateLinks = sqlCur.fetchone() if (alternateLinks): synonym = json.loads(alternateLinks[0]) if (synonym['mal']): mal = MAL.getMangaDetails(synonym['mal']) if (synonym['ani']): ani = Anilist.getMangaDetails(synonym['ani']) if (synonym['mu']): mu = MU.getMangaURL(synonym['mu']) if (synonym['ap']): ap = AniP.getMangaURL(synonym['ap']) else: #Basic breakdown: #If Anilist finds something, use it to find the MAL version. #If hits either MAL or Ani, use it to find the MU version. #If it hits either, add it to the request-tracking DB. ani = Anilist.getMangaDetails(searchText) if not (ani is None): mal = MAL.getMangaDetails(ani['title_romaji']) else: mal = MAL.getMangaDetails(searchText) if not (mal is None): ani = Anilist.getMangaDetails(mal['title']) #----- Finally... -----# if ani or mal: try: titleToAdd = '' if mal: titleToAdd = mal['title'] else: titleToAdd = ani['title_english'] if not alternateLinks: #MU stuff if mal: mu = MU.getMangaURL(mal['title']) else: mu = MU.getMangaURL(ani['title_romaji']) #Do the anime-planet stuff if mal and not ap: if mal['title'] and not ap: ap = AniP.getMangaURL(mal['title']) if mal['english'] and not ap: ap = AniP.getMangaURL(mal['english']) if mal['synonyms'] and not ap: for synonym in mal['synonyms']: if ap: break ap = AniP.getMangaURL(synonym) if ani and not ap: if ani['title_english'] and not ap: ap = AniP.getMangaURL(ani['title_english']) if ani['title_romaji'] and not ap: ap = AniP.getMangaURL(ani['title_romaji']) if ani['synonyms'] and not ap: for synonym in ani['synonyms']: if ap: break ap = AniP.getMangaURL(synonym) if (str(baseComment.subreddit).lower is not 'nihilate') and (str(baseComment.subreddit).lower is not 'roboragi') and not blockTracking: DatabaseHandler.addRequest(titleToAdd, 'Manga', baseComment.author.name, baseComment.subreddit) except: traceback.print_exc() pass if ani is not None: if ani['adult'] is True: mal = None ani = None mu = None ap = None return CommentBuilder.buildMangaComment(isExpanded, mal, ani, mu, ap) except Exception as e: traceback.print_exc() return None
def buildAnimeReply(searchText, isExpanded, baseComment, blockTracking=False): try: mal = None hb = None ani = None ap = None try: sqlCur.execute('SELECT dbLinks FROM synonyms WHERE type = "Anime" and lower(name) = ?', [searchText.lower()]) except sqlite3.Error as e: print(e) alternateLinks = sqlCur.fetchone() if (alternateLinks): synonym = json.loads(alternateLinks[0]) if (synonym['mal']): mal = MAL.getAnimeDetails(synonym['mal']) if (synonym['hb']): hb = Hummingbird.getAnimeDetails(synonym['hb']) if (synonym['ani']): ani = Anilist.getAnimeDetails(synonym['ani']) if (synonym['ap']): ap = AniP.getAnimeURL(synonym['ap']) else: #Basic breakdown: #If Anilist finds something, use it to find the HB version. #If we can't find it, try with HB and use it to try and "refind" Anilist #If we hit HB, we don't need to look for MAL, since we can get the MAL ID from within HB. If we don't hit HB, find MAL on its own. #If, at the end, we have something from Anilist, get the full set of Anilist data #If it hits anything, add it to the request-tracking DB. ani = Anilist.getAnimeDetails(searchText) if (ani is not None): hb = Hummingbird.getAnimeDetails(ani['title_romaji']) if (hb is None): for synonym in ani['synonyms']: hb = Hummingbird.getAnimeDetails(synonym) if hb is not None: break hb = Hummingbird.getAnimeDetails(ani['title_english']) else: hb = Hummingbird.getAnimeDetails(searchText) if (hb is not None): ani = Anilist.getAnimeDetails(hb['title']) #Doing MAL stuff if not mal: if hb: mal = MAL.getAnimeDetails(hb['title']) if not mal and hb['alternate_title']: if (hb['alternate_title']): mal = MAL.getAnimeDetails(hb['alternate_title']) if ani and not mal: mal = MAL.getAnimeDetails(ani['title_romaji']) if not mal: mal = MAL.getAnimeDetails(ani['title_english']) if not mal and ani['synonyms']: for synonym in ani['synonyms']: if mal: break mal = MAL.getAnimeDetails(synonym) if not mal: mal = MAL.getAnimeDetails(searchText) if mal and not hb: hb = Hummingbird.getAnimeDetails(mal['title']) if not hb: hb = Hummingbird.getAnimeDetails(mal['english']) if mal and not ani: ani = Anilist.getAnimeDetails(mal['title']) if not ani: ani = Anilist.getAnimeDetails(mal['english']) #----- Finally... -----# try: if ani is not None: aniFull = Anilist.getFullAnimeDetails(ani['id']) if aniFull is not None: ani = aniFull except: pass if (ani is not None) or (hb is not None) or (mal is not None): try: titleToAdd = '' if mal: titleToAdd = mal['title'] if hb: titleToAdd = hb['title'] if ani: titleToAdd = ani['title_romaji'] #Do Anime-Planet stuff if mal and not ap: if mal['title'] and not ap: ap = AniP.getAnimeURL(mal['title']) if mal['english'] and not ap: ap = AniP.getAnimeURL(mal['english']) if mal['synonyms'] and not ap: for synonym in mal['synonyms']: if ap: break ap = AniP.getAnimeURL(synonym) if hb and not ap: if hb['title'] and not ap: ap = AniP.getAnimeURL(hb['title']) if hb['alternate_title'] and not ap: ap = AniP.getAnimeURL(hb['alternate_title']) if ani and not ap: if ani['title_english'] and not ap: ap = AniP.getAnimeURL(ani['title_english']) if ani['title_romaji'] and not ap: ap = AniP.getAnimeURL(ani['title_romaji']) if ani['synonyms'] and not ap: for synonym in ani['synonyms']: if ap: break ap = AniP.getAnimeURL(synonym) if (str(baseComment.subreddit).lower is not 'nihilate') and (str(baseComment.subreddit).lower is not 'roboragi') and not blockTracking: DatabaseHandler.addRequest(titleToAdd, 'Anime', baseComment.author.name, baseComment.subreddit) except: traceback.print_exc() pass if ani is not None: if ani['adult'] is True: print("NSFW ENTRY") mal = None hb = None ani = None ap = None return CommentBuilder.buildAnimeComment(isExpanded, mal, hb, ani, ap) except Exception as e: traceback.print_exc() return None
train_dataset = MALDataset([data_path + 'holl-train.256.json'], src_vocab2id, tgt_vocab2id) dev_dataset = MALDataset([data_path + 'holl-dev.256.json'], src_vocab2id, tgt_vocab2id) test_dataset = MALDataset([data_path + 'holl-test.256.json'], src_vocab2id, tgt_vocab2id) # env = Environment(128, 128, 256) encoder = Encoder(len(src_vocab2id), 128, 256) selector = Selector(128, 256, len(tgt_vocab2id)) generator = Generator(128, 256, len(tgt_vocab2id)) model = MAL(encoder, selector, generator, None, src_id2vocab, src_vocab2id, tgt_id2vocab, tgt_vocab2id, max_dec_len=50, beam_width=1) init_params(model) # env_optimizer = optim.Adam(filter(lambda x: x.requires_grad, env.parameters())) # selector_optimizer = optim.Adam(filter(lambda x: x.requires_grad, selector.parameters())) # generator_optimizer = optim.Adam(filter(lambda x: x.requires_grad, generator.parameters())) agent_optimizer = optim.Adam( filter(lambda x: x.requires_grad, list(selector.parameters()) + list(generator.parameters()))) model_optimizer = optim.Adam( filter(lambda x: x.requires_grad, model.parameters()))
def buildMangaReply(searchText, isExpanded, baseComment, blockTracking=False): try: ani = None mal = None mu = None ap = None try: sqlCur.execute( 'SELECT dbLinks FROM synonyms WHERE type = "Manga" and lower(name) = ?', [searchText.lower()]) except sqlite3.Error as e: print(e) alternateLinks = sqlCur.fetchone() if (alternateLinks): synonym = json.loads(alternateLinks[0]) if (synonym['mal']): mal = MAL.getMangaDetails(synonym['mal'][0], synonym['mal'][1]) if (synonym['ani']): ani = Anilist.getMangaDetailsById(synonym['ani']) if (synonym['mu']): mu = MU.getMangaURLById(synonym['mu']) if (synonym['ap']): ap = AniP.getMangaURLById(synonym['ap']) else: #Basic breakdown: #If Anilist finds something, use it to find the MAL version. #If hits either MAL or Ani, use it to find the MU version. #If it hits either, add it to the request-tracking DB. ani = Anilist.getMangaDetails(searchText) if ani: try: mal = MAL.getMangaDetails(ani['title_romaji']) except: pass if not mal: try: mal = MAL.getMangaDetails(ani['title_english']) except: pass if not mal: mal = MAL.getMangaDetails(searchText) else: mal = MAL.getMangaDetails(searchText) if mal: ani = Anilist.getMangaDetails(mal['title']) #----- Finally... -----# if ani or mal: try: titleToAdd = '' if mal: titleToAdd = mal['title'] else: try: titleToAdd = ani['title_english'] except: titleToAdd = ani['title_romaji'] if not alternateLinks: #MU stuff if mal: mu = MU.getMangaURL(mal['title']) else: mu = MU.getMangaURL(ani['title_romaji']) #Do the anime-planet stuff if mal and not ap: if mal['title'] and not ap: ap = AniP.getMangaURL(mal['title']) if mal['english'] and not ap: ap = AniP.getMangaURL(mal['english']) if mal['synonyms'] and not ap: for synonym in mal['synonyms']: if ap: break ap = AniP.getMangaURL(synonym) if ani and not ap: if ani['title_english'] and not ap: ap = AniP.getMangaURL(ani['title_english']) if ani['title_romaji'] and not ap: ap = AniP.getMangaURL(ani['title_romaji']) if ani['synonyms'] and not ap: for synonym in ani['synonyms']: if ap: break ap = AniP.getMangaURL(synonym) if (str(baseComment.subreddit).lower is not 'nihilate') and ( str(baseComment.subreddit).lower is not 'roboragi') and not blockTracking: DatabaseHandler.addRequest(titleToAdd, 'Manga', baseComment.author.name, baseComment.subreddit) except: traceback.print_exc() pass return CommentBuilder.buildMangaComment(isExpanded, mal, ani, mu, ap) except Exception as e: traceback.print_exc() return None
def buildLightNovelReply(searchText, isExpanded, baseComment, blockTracking=False): try: mal = { 'search_function': MAL.getLightNovelDetails, 'synonym_function': MAL.getSynonyms, 'checked_synonyms': [], 'result': None } ani = { 'search_function': Anilist.getLightNovelDetails, 'synonym_function': Anilist.getSynonyms, 'checked_synonyms': [], 'result': None } nu = {'search_function': NU.getLightNovelURL, 'result': None} lndb = {'search_function': LNDB.getLightNovelURL, 'result': None} try: sqlCur.execute( 'SELECT dbLinks FROM synonyms WHERE type = "LN" and lower(name) = ?', [searchText.lower()]) except sqlite3.Error as e: print(e) alternateLinks = sqlCur.fetchone() if (alternateLinks): synonym = json.loads(alternateLinks[0]) if synonym: malsyn = None if 'mal' in synonym and synonym['mal']: malsyn = synonym['mal'] anisyn = None if 'ani' in synonym and synonym['ani']: anisyn = synonym['ani'] nusyn = None if 'nu' in synonym and synonym['nu']: nusyn = synonym['nu'] lndbsyn = None if 'lndb' in synonym and synonym['lndb']: lndbsyn = synonym['lndb'] mal['result'] = MAL.getLightNovelDetails( malsyn[0], malsyn[1]) if malsyn else None ani['result'] = Anilist.getMangaDetailsById( anisyn) if anisyn else None nu['result'] = NU.getLightNovelById(nusyn) if nusyn else None lndb['result'] = LNDB.getLightNovelById( lndbsyn) if lndbsyn else None else: data_sources = [ani, mal] aux_sources = [nu, lndb] synonyms = set([searchText]) for x in range(len(data_sources)): for source in data_sources: if source['result']: break else: for synonym in synonyms: if synonym in source['checked_synonyms']: continue source['result'] = source['search_function']( synonym) source['checked_synonyms'].append(synonym) if source['result']: break if source['result']: synonyms.update([ synonym.lower() for synonym in source['synonym_function'](source['result']) ]) for source in aux_sources: for synonym in synonyms: source['result'] = source['search_function'](synonym) if source['result']: break if ani['result'] or mal['result']: try: titleToAdd = '' if mal['result']: titleToAdd = mal['result']['title'] if ani['result']: try: titleToAdd = ani['result']['title_romaji'] except: titleToAdd = ani['result']['title_english'] if (str(baseComment.subreddit).lower is not 'nihilate') and ( str(baseComment.subreddit).lower is not 'roboragi') and not blockTracking: DatabaseHandler.addRequest(titleToAdd, 'LN', baseComment.author.name, baseComment.subreddit) except: traceback.print_exc() pass return CommentBuilder.buildLightNovelComment(isExpanded, mal['result'], ani['result'], nu['result'], lndb['result']) except Exception as e: traceback.print_exc() return None
def buildAnimeReply(searchText, isExpanded, baseComment, blockTracking=False): try: mal = { 'search_function': MAL.getAnimeDetails, 'synonym_function': MAL.getSynonyms, 'checked_synonyms': [], 'result': None } hb = { 'search_function': Hummingbird.getAnimeDetails, 'synonym_function': Hummingbird.getSynonyms, 'checked_synonyms': [], 'result': None } ani = { 'search_function': Anilist.getAnimeDetails, 'synonym_function': Anilist.getSynonyms, 'checked_synonyms': [], 'result': None } ap = {'search_function': AniP.getAnimeURL, 'result': None} adb = {'search_function': AniDB.getAnimeURL, 'result': None} try: sqlCur.execute( 'SELECT dbLinks FROM synonyms WHERE type = "Anime" and lower(name) = ?', [searchText.lower()]) except sqlite3.Error as e: print(e) alternateLinks = sqlCur.fetchone() if (alternateLinks): synonym = json.loads(alternateLinks[0]) if synonym: malsyn = None if 'mal' in synonym and synonym['mal']: malsyn = synonym['mal'] hbsyn = None if 'hb' in synonym and synonym['hb']: hbsyn = synonym['hb'] anisyn = None if 'ani' in synonym and synonym['ani']: anisyn = synonym['ani'] apsyn = None if 'ap' in synonym and synonym['ap']: apsyn = synonym['ap'] adbsyn = None if 'adb' in synonym and synonym['adb']: adbsyn = synonym['adb'] mal['result'] = MAL.getAnimeDetails( malsyn[0], malsyn[1]) if malsyn else None hb['result'] = Hummingbird.getAnimeDetailsById( hbsyn) if hbsyn else None ani['result'] = Anilist.getAnimeDetailsById( anisyn) if anisyn else None ap['result'] = AniP.getAnimeURLById(apsyn) if apsyn else None adb['result'] = AniDB.getAnimeURLById( adbsyn) if adbsyn else None else: data_sources = [ani, hb, mal] #aux_sources = [ap, adb] aux_sources = [ap] synonyms = set([searchText]) for x in range(len(data_sources)): for source in data_sources: if source['result']: break else: for synonym in synonyms: if synonym in source['checked_synonyms']: continue source['result'] = source['search_function']( synonym) source['checked_synonyms'].append(synonym) if source['result']: break if source['result']: synonyms.update([ synonym.lower() for synonym in source['synonym_function'](source['result']) ]) for source in aux_sources: for synonym in synonyms: source['result'] = source['search_function'](synonym) if source['result']: break if ani['result'] or hb['result'] or mal['result']: try: titleToAdd = '' if mal['result']: titleToAdd = mal['result']['title'] if hb['result']: titleToAdd = hb['result']['title'] if ani['result']: titleToAdd = ani['result']['title_romaji'] if (str(baseComment.subreddit).lower is not 'nihilate') and ( str(baseComment.subreddit).lower is not 'roboragi') and not blockTracking: DatabaseHandler.addRequest(titleToAdd, 'Anime', baseComment.author.name, baseComment.subreddit) except: traceback.print_exc() pass return CommentBuilder.buildAnimeComment(isExpanded, mal['result'], hb['result'], ani['result'], ap['result'], adb['result']) except Exception as e: traceback.print_exc() return None
def buildAnimeReply(searchText, isExpanded, baseComment, blockTracking=False): try: mal = {'search_function': MAL.getAnimeDetails, 'synonym_function': MAL.getSynonyms, 'checked_synonyms': [], 'result': None} hb = {'search_function': Hummingbird.getAnimeDetails, 'synonym_function': Hummingbird.getSynonyms, 'checked_synonyms': [], 'result': None} ani = {'search_function': Anilist.getAnimeDetails, 'synonym_function': Anilist.getSynonyms, 'checked_synonyms': [], 'result': None} ap = {'search_function': AniP.getAnimeURL, 'result': None} adb = {'search_function': AniDB.getAnimeURL, 'result': None} try: sqlCur.execute('SELECT dbLinks FROM synonyms WHERE type = "Anime" and lower(name) = ?', [searchText.lower()]) except sqlite3.Error as e: print(e) alternateLinks = sqlCur.fetchone() if (alternateLinks): synonym = json.loads(alternateLinks[0]) if synonym: malsyn = None if 'mal' in synonym and synonym['mal']: malsyn = synonym['mal'] hbsyn = None if 'hb' in synonym and synonym['hb']: hbsyn = synonym['hb'] anisyn = None if 'ani' in synonym and synonym['ani']: anisyn = synonym['ani'] apsyn = None if 'ap' in synonym and synonym['ap']: apsyn = synonym['ap'] adbsyn = None if 'adb' in synonym and synonym['adb']: adbsyn = synonym['adb'] mal['result'] = MAL.getAnimeDetails(malsyn[0],malsyn[1]) if malsyn else None hb['result'] = Hummingbird.getAnimeDetailsById(hbsyn) if hbsyn else None ani['result'] = Anilist.getAnimeDetailsById(anisyn) if anisyn else None ap['result'] = AniP.getAnimeURLById(apsyn) if apsyn else None adb['result'] = AniDB.getAnimeURLById(adbsyn) if adbsyn else None else: data_sources = [ani, hb, mal] aux_sources = [ap, adb] synonyms = set([searchText]) for x in range(len(data_sources)): for source in data_sources: if source['result']: break else: for synonym in synonyms: if synonym in source['checked_synonyms']: continue source['result'] = source['search_function'](synonym) source['checked_synonyms'].append(synonym) if source['result']: break if source['result']: synonyms.update([synonym.lower() for synonym in source['synonym_function'](source['result'])]) for source in aux_sources: for synonym in synonyms: source['result'] = source['search_function'](synonym) if source['result']: break if ani['result'] or hb['result'] or mal['result']: try: titleToAdd = '' if mal['result']: titleToAdd = mal['result']['title'] if hb['result']: titleToAdd = hb['result']['title'] if ani['result']: titleToAdd = ani['result']['title_romaji'] if (str(baseComment.subreddit).lower is not 'nihilate') and (str(baseComment.subreddit).lower is not 'roboragi') and not blockTracking: DatabaseHandler.addRequest(titleToAdd, 'Anime', baseComment.author.name, baseComment.subreddit) except: traceback.print_exc() pass return CommentBuilder.buildAnimeComment(isExpanded, mal['result'], hb['result'], ani['result'], ap['result'], adb['result']) except Exception as e: traceback.print_exc() return None
def buildLightNovelReply(searchText, isExpanded, baseComment, blockTracking=False): try: mal = {'search_function': MAL.getLightNovelDetails, 'synonym_function': MAL.getSynonyms, 'checked_synonyms': [], 'result': None} ani = {'search_function': Anilist.getLightNovelDetails, 'synonym_function': Anilist.getSynonyms, 'checked_synonyms': [], 'result': None} nu = {'search_function': NU.getLightNovelURL, 'result': None} lndb = {'search_function': LNDB.getLightNovelURL, 'result': None} try: sqlCur.execute('SELECT dbLinks FROM synonyms WHERE type = "LN" and lower(name) = ?', [searchText.lower()]) except sqlite3.Error as e: print(e) alternateLinks = sqlCur.fetchone() if (alternateLinks): synonym = json.loads(alternateLinks[0]) if synonym: malsyn = None if 'mal' in synonym and synonym['mal']: malsyn = synonym['mal'] anisyn = None if 'ani' in synonym and synonym['ani']: anisyn = synonym['ani'] nusyn = None if 'nu' in synonym and synonym['nu']: nusyn = synonym['nu'] lndbsyn = None if 'lndb' in synonym and synonym['lndb']: lndbsyn = synonym['lndb'] mal['result'] = MAL.getLightNovelDetails(malsyn[0],malsyn[1]) if malsyn else None ani['result'] = Anilist.getMangaDetailsById(anisyn) if anisyn else None nu['result'] = NU.getLightNovelById(nusyn) if nusyn else None lndb['result'] = LNDB.getLightNovelById(lndbsyn) if lndbsyn else None else: data_sources = [ani, mal] aux_sources = [nu, lndb] synonyms = set([searchText]) for x in range(len(data_sources)): for source in data_sources: if source['result']: break else: for synonym in synonyms: if synonym in source['checked_synonyms']: continue source['result'] = source['search_function'](synonym) source['checked_synonyms'].append(synonym) if source['result']: break if source['result']: synonyms.update([synonym.lower() for synonym in source['synonym_function'](source['result'])]) for source in aux_sources: for synonym in synonyms: source['result'] = source['search_function'](synonym) if source['result']: break if ani['result'] or mal['result']: try: titleToAdd = '' if mal['result']: titleToAdd = mal['result']['title'] if ani['result']: try: titleToAdd = ani['result']['title_romaji'] except: titleToAdd = ani['result']['title_english'] if (str(baseComment.subreddit).lower is not 'nihilate') and (str(baseComment.subreddit).lower is not 'roboragi') and not blockTracking: DatabaseHandler.addRequest(titleToAdd, 'LN', baseComment.author.name, baseComment.subreddit) except: traceback.print_exc() pass return CommentBuilder.buildLightNovelComment(isExpanded, mal['result'], ani['result'], nu['result'], lndb['result']) except Exception as e: traceback.print_exc() return None
def buildAnimeReply(searchText, isExpanded, baseComment): try: #Basic breakdown: #If Anilist finds something, use it to find the HB version. #If we can't find it, try with HB and use it to try and "refind" Anilist #If we hit HB, we don't need to look for MAL, since we can get the MAL ID from within HB. If we don't hit HB, find MAL on its own. #If, at the end, we have something from Anilist, get the full set of Anilist data #If it hits anything, add it to the request-tracking DB. ani = Anilist.getAnimeDetails(searchText) hb = None mal = None if (ani is not None): hb = Hummingbird.getAnimeDetails(ani['title_romaji']) if (hb is None): for synonym in ani['synonyms']: hb = Hummingbird.getAnimeDetails(synonym) if hb is not None: break hb = Hummingbird.getAnimeDetails(ani['title_english']) else: hb = Hummingbird.getAnimeDetails(searchText) if (hb is not None): ani = Anilist.getAnimeDetails(hb['title']) if (hb is None): mal = MAL.getAnimeDetails(searchText) if (mal is not None): hb = Hummingbird.getAnimeDetails(mal['title']) if (hb is None): hb = Hummingbird.getAnimeDetails(mal['english']) if (ani is None): ani = Anilist.getAnimeDetails(mal['title']) if (ani is None): ani = Anilist.getAnimeDetails(mal['english']) try: if ani is not None: aniFull = Anilist.getFullAnimeDetails(ani['id']) if aniFull is not None: ani = aniFull except: pass if (ani is not None) or (hb is not None) or (mal is not None): try: titleToAdd = '' if ani is None: titleToAdd = hb['title'] elif hb is not None: titleToAdd = ani['title_romaji'] else: titleToAdd = mal['title'] if (str(baseComment.subreddit).lower is not 'nihilate') and (str(baseComment.subreddit).lower is not 'roboragi'): DatabaseHandler.addRequest(titleToAdd, 'Anime', baseComment.author.name, baseComment.subreddit) except: traceback.print_exc() pass if ani is not None: if ani['adult'] is True: print("NSFW ENTRY") mal = None hb = None ani = None return CommentBuilder.buildAnimeComment(isExpanded, mal, hb, ani) except Exception as e: traceback.print_exc() return None