Ejemplo n.º 1
0
Archivo: get.py Proyecto: ai2c/AutoSort
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]
Ejemplo n.º 2
0
    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)