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 = 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
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: kit = { 'search_function': Kitsu.search_anime, 'synonym_function': Kitsu.get_synonyms, 'title_function': Kitsu.get_titles, 'checked_synonyms': [], 'result': None } ani = { 'search_function': Anilist.getAnimeDetails, 'synonym_function': Anilist.getSynonyms, 'title_function': Anilist.getTitles, 'checked_synonyms': [], 'result': None } ap = {'search_function': AniP.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: kitsyn = None if 'kit' in synonym and synonym['kit']: kitsyn = synonym['kit'] anisyn = None if 'ani' in synonym and synonym['ani']: anisyn = synonym['ani'] apsyn = None if 'ap' in synonym and synonym['ap']: apsyn = synonym['ap'] kit['result'] = Kitsu.get_anime(kitsyn) if kitsyn else None ani['result'] = Anilist.getAnimeDetailsById( anisyn) if anisyn else None ap['result'] = AniP.getAnimeURLById(apsyn) if apsyn else None else: data_sources = [ani, kit] aux_sources = [ap] synonyms = set([searchText]) titles = set() for x in range(len(data_sources)): for source in data_sources: if source['result']: break else: for synonym in (titles | 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']) ]) titles.update([ title.lower() for title in source['title_function'] (source['result']) ]) for source in aux_sources: for title in titles: source['result'] = source['search_function'](synonym) if source['result']: break if not source['result']: for synonym in synonyms: source['result'] = source['search_function'](synonym) if source['result']: break if ani['result'] or kit['result']: try: titleToAdd = '' if ani['result']: if 'title_romaji' in ani['result']: titleToAdd = ani['result']['title_romaji'] elif kit['result']: if 'title_romaji' in kit['result']: titleToAdd = kit['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 if ani['result'] or kit['result']: return CommentBuilder.buildAnimeComment(isExpanded, ani['result'], ap['result'], kit['result']) else: print('No result found for ' + searchText) return None except Exception as e: traceback.print_exc() return None
def buildLightNovelReply(searchText, isExpanded, baseComment, blockTracking=False): """ Builds an LN reply from multiple sources """ try: ani = { 'search_function': Anilist.getLightNovelDetails, 'synonym_function': Anilist.getSynonyms, 'title_function': Anilist.getTitles, 'checked_synonyms': [], 'result': None } kit = { 'search_function': Kitsu.search_light_novel, 'synonym_function': Kitsu.get_synonyms, 'title_function': Kitsu.get_titles, 'checked_synonyms': [], 'result': None } nu = {'search_function': NU.getLightNovelURL, 'result': None} lndb = {'search_function': LNDB.getLightNovelURL, 'result': None} try: query = ('SELECT dbLinks' ' FROM synonyms' ' WHERE type = "LN"' ' AND lower(name) = ?') sqlCur.execute(query, [searchText.lower()]) except sqlite3.Error as e: print(e) alternateLinks = sqlCur.fetchone() if (alternateLinks): synonym = json.loads(alternateLinks[0]) if synonym: anisyn = None if 'ani' in synonym and synonym['ani']: anisyn = synonym['ani'] kitsyn = None if 'kit' in synonym and synonym['kit']: kitsyn = synonym['kit'] nusyn = None if 'nu' in synonym and synonym['nu']: nusyn = synonym['nu'] lndbsyn = None if 'lndb' in synonym and synonym['lndb']: lndbsyn = synonym['lndb'] if anisyn: ani['result'] = Anilist.getMangaDetailsById(anisyn) else: ani['result'] = None if kitsyn: kit['result'] = Kitsu.get_light_novel(kitsyn) else: kit['result'] = None nu['result'] = NU.getLightNovelById(nusyn) if nusyn else None if lndbsyn: lndb['result'] = LNDB.getLightNovelById(lndbsyn) else: lndb['result'] = None else: data_sources = [ani, kit] aux_sources = [nu, lndb] synonyms = set([searchText]) titles = set() for x in range(len(data_sources)): for source in data_sources: if source['result']: break else: for synonym in (titles | synonyms): if synonym in source['checked_synonyms']: continue search_function = source['search_function'] source['result'] = search_function(synonym) source['checked_synonyms'].append(synonym) if source['result']: break if source['result']: result = source['result'] synonym_function = source['synonym_function'] title_function = source['title_function'] synonyms.update( [s.lower() for s in synonym_function(result)]) titles.update( [t.lower() for t in title_function(result)]) for source in aux_sources: for title in titles: source['result'] = source['search_function'](synonym) if source['result']: break if not source['result']: for synonym in synonyms: source['result'] = source['search_function'](synonym) if source['result']: break if ani['result'] or kit['result']: try: titleToAdd = '' if ani['result']: try: titleToAdd = ani['result']['title_romaji'] except Exception: titleToAdd = ani['result']['title_english'] elif kit['result']: try: titleToAdd = kit['result']['title_romaji'] except Exception: titleToAdd = kit['result']['title_english'] subreddit = str(baseComment.subreddit).lower ignored_subreddits = ('nihilate', 'roboragi') if subreddit not in ignored_subreddits and not blockTracking: DatabaseHandler.addRequest( name=titleToAdd, rType='LN', requester=baseComment.author.name, subreddit=baseComment.subreddit) except Exception: traceback.print_exc() pass if ani['result'] or kit['result']: return CommentBuilder.buildLightNovelComment(isExpanded=isExpanded, ani=ani['result'], nu=nu['result'], lndb=lndb['result'], kit=kit['result']) else: print('No result found for ' + searchText) return None except Exception: 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
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): """ Builds a manga reply from multiple sources """ try: ani = { 'search_function': Anilist.getMangaDetails, 'title_function': Anilist.getTitles, 'synonym_function': Anilist.getSynonyms, 'checked_synonyms': [], 'result': None } kit = { 'search_function': Kitsu.search_manga, 'synonym_function': Kitsu.get_synonyms, 'title_function': Kitsu.get_titles, 'checked_synonyms': [], 'result': None } mu = {'search_function': MU.getMangaURL, 'result': None} ap = {'search_function': AniP.getMangaURL, 'result': None} try: query = ('SELECT dbLinks' ' FROM synonyms' ' WHERE type = "Manga"' ' AND lower(name) = ?') sqlCur.execute(query, [searchText.lower()]) except sqlite3.Error as e: print(e) alternateLinks = sqlCur.fetchone() if (alternateLinks): synonym = json.loads(alternateLinks[0]) if synonym: 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'] if anisyn: ani['result'] = Anilist.getMangaDetailsById(anisyn) else: ani['result'] = 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] aux_sources = [mu, ap] synonyms = set([searchText]) titles = set() for x in range(len(data_sources)): for source in data_sources: if source['result']: break else: for title in titles: if title in source['checked_synonyms']: break if source['result']: break source['result'] = source['search_function'](title) source['checked_synonyms'].append(title) if source['result']: break for synonym in synonyms: if synonym in source['checked_synonyms']: break if source['result']: break search_function = source['search_function'] source['result'] = search_function(synonym) source['checked_synonyms'].append(synonym) if source['result']: break if source['result']: result = source['result'] synonym_function = source['synonym_function'] title_function = source['title_function'] synonyms.update( [s.lower() for s in synonym_function(result)]) titles.update( [t.lower() for t in title_function(result)]) for source in aux_sources: for title in titles: source['result'] = source['search_function'](synonym) if source['result']: break if not source['result']: for synonym in synonyms: source['result'] = source['search_function'](synonym) if source['result']: break if ani['result'] or kit['result']: try: titleToAdd = '' if ani['result']: try: titleToAdd = ani['result']['title_romaji'] except Exception: titleToAdd = ani['result']['title_english'] elif kit['result']: try: titleToAdd = kit['result']['title_romaji'] except Exception: titleToAdd = kit['result']['title_english'] subreddit = str(baseComment.subreddit).lower ignored_subreddits = ('nihilate', 'roboragi') if subreddit not in ignored_subreddits and not blockTracking: DatabaseHandler.addRequest( name=titleToAdd, rType='Manga', requester=baseComment.author.name, subreddit=baseComment.subreddit) except Exception: traceback.print_exc() pass if ani['result'] or kit['result']: return CommentBuilder.buildMangaComment(isExpanded=isExpanded, ani=ani['result'], mu=mu['result'], ap=ap['result'], kit=kit['result']) else: print('No result found for ' + searchText) return None except Exception: traceback.print_exc() return None