def IMDb2TMDb(IMDbID,lan="zh-TW"): global year,subtype,reg1,reg2,reg3,save IMDbRating = IMDbInfo(IMDbID) imdb2tmdb = "https://api.themoviedb.org/3/find/%s?api_key=%s&language=%s&external_source=imdb_id" % (IMDbID ,config.TMDbAPI,lan) res = resjson(imdb2tmdb) if not "status_message" in res.keys() : if len(res["movie_results"]) != 0 or len(res["tv_results"]) != 0: #Movie+TVS IMDb =IMDbInfo(IMDbID) if not IMDb or "Error" in IMDb.keys(): return False year = IMDb['Year'][0:4] titleIMDb = IMDb['Title'] IMDbRating = IMDb['imdbRating'] if IMDb['imdbRating'] != "N/A" else "0" region = IMDb['Country'].replace(" ","").split(",")[0] subtype = IMDb['Type'] if IMDb['Type'] == "movie" else "tv" results = res['movie_results'][0] if subtype == "movie" else res['tv_results'][0] titleZH = results['title'] if subtype == "movie" else results['name'] #Movie為title、TVS為name titleEN = results['original_title'] if subtype == "movie" else results['original_name'] if titleZH == titleEN and lan != "zh-CN": return IMDb2TMDb(IMDbID,lan="zh-CN") #若TW譯名不存在,返回CN譯名 genre_ids = results['genre_ids'] genres = "|".join([MVgenres[genre_id] if subtype == "movie" else TVgenres[genre_id] for genre_id in genre_ids]) TMDbID = "TMDbMV_%s" % (results['id']) TMDbRating = results['vote_average'] reg1 = reg2 = reg3 = "None" for reg in regDicEN.keys(): #地區 if reg == region: reg1 = regDicEN[reg][0] reg2 = regDicEN[reg][1] reg3 = reg break AllTitle1 = [titleEN]+[titleIMDb] AllTitle2 = list(set(AllTitle1)) AllTitle2.sort(key=AllTitle1.index) if config.CHT_TW: #繁體、台灣譯名 titleZH = OpenCC('s2twp').convert(titleZH) genres = OpenCC('s2twp').convert(genres) reg1 = OpenCC('s2twp').convert(reg1) if config.ZH_ENG: #中英標題 titleEN = "" for tt in AllTitle2: if not checkzh(tt): if tt in AllTitle2: AllTitle2.remove(tt) titleEN = tt.replace(" : ",":").replace(": ",":") break title = (titleZH+" "+ titleEN) if titleIMDb and len(titleEN) <= config.ENGlen and titleZH != titleEN else titleZH save = "%s\t%s\t%s\t%s\t\t%s\t%s\t%s\t%s\t%s\t%s" % (IMDbID,year,reg1,IMDbRating,titleZH,titleEN,"/".join(AllTitle2),genres,IMDbID,TMDbID) name = "[%s][%s]%s(%s)(%s)(%s)" % (year,reg2,title,genres.replace("|","_"),IMDbRating,IMDbID) return [subtype,year,reg1,name,save]
def GetInfo(dblink, switch=0): global year, subtype, reg1, reg2, reg3, save res = Gen.gen_douban(dblink) if not res['success']: # Success print("*Error :", res['error']) if 'exit' in res.keys(): exit() return "" else: subtype = res['subtype'] if not subtype else subtype year = year2 = res['year'] if not year: year = res['playdate'][0][:4] if res['playdate'] else 0 '''if int(len(res['seasons_list'])) > 1 and subtype == "tv": #多季的電視劇 year = 999 #多季 year2 = "多季"''' titleZH = res['chinese_title'].replace(" ", " ") #中文標題 this_title = res['this_title'][0] #原始標題 trans_title = res['trans_title'] #List 用來取台灣譯名 aka = res['aka'] try: imdb_id = res['imdb_id'] except KeyError: imdb_id = "" db_id, db_rating = "db_" + res['sid'], res['douban_rating_average'] if not imdb_id: imdb_rating = "" else: try: imdb_rating = res['imdb_rating'][:res['imdb_rating']. find('/')] except: imdb_rating = 0 mvid, rating = (imdb_id, imdb_rating) if imdb_id and imdb_rating else ( db_id, db_rating) genre = "|".join(res['genre']) #List→str 類型 region = res['region'] if type( res['region']) == type("str") else res['region'][0] region = region.split(" ")[0] #解決中英混合的地區 reg1, reg2, reg3 = region, region, region for reg in regDic.keys(): #地區 if reg == region: if "台湾" in region or "香港" in region: reg1 = reg.replace("中国", "") elif region == "中国": reg1 = "中国大陆" else: reg1 = reg reg2 = regDic[reg][0] reg3 = regDic[reg][1] break AllTitle1 = [titleZH] + [this_title] + aka + trans_title AllTitle2 = list(set(AllTitle1)) AllTitle2.sort(key=AllTitle1.index) if config.CHT_TW: #繁體、台灣譯名 if this_title != "" and reg1 == "台湾": #原始標題為中文地區是台灣) titleZH = this_title breakcheck = False zhtwList = ["(台)", "(港/台)", "(台/港)", "(台)", "(港/台)", "(台/港)"] for trans in AllTitle2: for zhtw in zhtwList: if zhtw in trans: if trans in AllTitle2: AllTitle2.remove(trans) breakcheck = True titleZH = trans.replace(zhtw, "") break if breakcheck: break titleZH = OpenCC('s2tw').convert(titleZH) genre = OpenCC('s2tw').convert(genre) reg1 = OpenCC('s2tw').convert(reg1) for i in range(len(AllTitle2)): AllTitle2[i] = OpenCC('s2tw').convert(AllTitle2[i]) if reg2 == reg3: reg2 = OpenCC('s2tw').convert(reg2) if config.ZH_ENG: #中英標題 titleEN = "" for tt in AllTitle2: if not Get.checkzh(tt): if tt in AllTitle2: AllTitle2.remove(tt) titleEN = tt.replace(" : ", ":").replace(": ", ":").replace( "/", "/").replace("\\", "\") break for tt in [titleZH] + aka: if Get.checkzh(tt): if tt in AllTitle2: AllTitle2.remove(tt) titleZH = tt.replace(" : ", ":").replace(": ", ":").replace( "/", "/").replace("\\", "\") break title = (titleZH + " " + titleEN) if titleEN and len( titleEN ) <= config.ENGlen and titleZH != titleEN else titleZH titleOT = AllTitle2 region = reg2 if config.regSt else reg1 titleOT = [] if not titleOT else titleOT save = "%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s" % ( mvid, year, reg1, imdb_rating, db_rating, titleZH, titleEN, "/".join(titleOT), genre, imdb_id, db_id) if rating == '' or float(rating): return "[%s][%s]%s(%s)(%s)(%s)" % (year2, region, title, genre.replace( "|", "_"), rating, mvid) else: return "[%s][%s]%s(%s)(%s)" % (year2, region, title, genre.replace("|", "_"), mvid)