Skip to content

Commit

Permalink
TMDB选片筛选
Browse files Browse the repository at this point in the history
  • Loading branch information
jxxghp committed Feb 11, 2023
1 parent 02ae954 commit fb80069
Show file tree
Hide file tree
Showing 6 changed files with 143 additions and 70 deletions.
75 changes: 39 additions & 36 deletions app/conf/moduleconf.py
Original file line number Diff line number Diff line change
Expand Up @@ -847,25 +847,26 @@ class ModuleConf(object):
"tmdb_movie": {
"with_genres": {
"name": "类型",
"type": "selectgroup",
"options": [{'value': 28, 'name': '动作'},
{'value': 12, 'name': '冒险'},
{'value': 16, 'name': '动画'},
{'value': 35, 'name': '喜剧'},
{'value': 80, 'name': '犯罪'},
{'value': 18, 'name': '剧情'},
{'value': 14, 'name': '奇幻'},
{'value': 27, 'name': '恐怖'},
{'value': 9648, 'name': '悬疑'},
{'value': 10749, 'name': '爱情'},
{'value': 878, 'name': '科幻'},
{'value': 53, 'name': '惊悚'},
{'value': 10752, 'name': '战争'}]
"type": "dropdown",
"options": [{'value': '', 'name': '全部'},
{'value': '12', 'name': '冒险'},
{'value': '16', 'name': '动画'},
{'value': '35', 'name': '喜剧'},
{'value': '80', 'name': '犯罪'},
{'value': '18', 'name': '剧情'},
{'value': '14', 'name': '奇幻'},
{'value': '27', 'name': '恐怖'},
{'value': '9648', 'name': '悬疑'},
{'value': '10749', 'name': '爱情'},
{'value': '878', 'name': '科幻'},
{'value': '53', 'name': '惊悚'},
{'value': '10752', 'name': '战争'}]
},
"with_original_language": {
"name": "语言",
"type": "selectgroup",
"options": [{'value': 'zh', 'name': '中文'},
"type": "dropdown",
"options": [{'value': '', 'name': '全部'},
{'value': 'zh', 'name': '中文'},
{'value': 'en', 'name': '英语'},
{'value': 'ja', 'name': '日语'},
{'value': 'ko', 'name': '韩语'},
Expand All @@ -878,29 +879,31 @@ class ModuleConf(object):
"tmdb_tv": {
"with_genres": {
"name": "类型",
"type": "selectgroup",
"options": [{'value': 10759, 'name': '动作冒险'},
{'value': 16, 'name': '动画'},
{'value': 35, 'name': '喜剧'},
{'value': 80, 'name': '犯罪'},
{'value': 99, 'name': '纪录'},
{'value': 18, 'name': '剧情'},
{'value': 10762, 'name': '儿童'},
{'value': 9648, 'name': '悬疑'},
{'value': 10764, 'name': '真人秀'},
{'value': 10765, 'name': '科幻'}]
"type": "dropdown",
"options": [{'value': '', 'name': '全部'},
{'value': '10759', 'name': '动作冒险'},
{'value': '16', 'name': '动画'},
{'value': '35', 'name': '喜剧'},
{'value': '80', 'name': '犯罪'},
{'value': '99', 'name': '纪录'},
{'value': '18', 'name': '剧情'},
{'value': '10762', 'name': '儿童'},
{'value': '9648', 'name': '悬疑'},
{'value': '10764', 'name': '真人秀'},
{'value': '10765', 'name': '科幻'}]
},
"with_original_language": {
"name": "语言",
"type": "selectgroup",
"options": [{'id': 'zh', 'name': '中文'},
{'id': 'en', 'name': '英语'},
{'id': 'ja', 'name': '日语'},
{'id': 'ko', 'name': '韩语'},
{'id': 'fr', 'name': '法语'},
{'id': 'de', 'name': '德语'},
{'id': 'ru', 'name': '俄语'},
{'id': 'hi', 'name': '印地语'}]
"type": "dropdown",
"options": [{'value': '', 'name': '全部'},
{'value': 'zh', 'name': '中文'},
{'value': 'en', 'name': '英语'},
{'value': 'ja', 'name': '日语'},
{'value': 'ko', 'name': '韩语'},
{'value': 'fr', 'name': '法语'},
{'value': 'de', 'name': '德语'},
{'value': 'ru', 'name': '俄语'},
{'value': 'hi', 'name': '印地语'}]
}
},
"douban_movie": {
Expand Down
4 changes: 4 additions & 0 deletions app/utils/types.py
Original file line number Diff line number Diff line change
Expand Up @@ -93,3 +93,7 @@ class SiteSchema(Enum):
TorrentLeech = "TorrentLeech"
FileList = "FileList"
TNode = "TNode"


MovieTypes = ['MOV', '电影']
TvTypes = ['TV', '电视剧']
60 changes: 33 additions & 27 deletions web/action.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@
from app.speedlimiter import SpeedLimiter
from app.utils import StringUtils, EpisodeFormat, RequestUtils, PathUtils, \
SystemUtils, ExceptionUtils, Torrent
from app.utils.types import RmtMode, OsType, SearchType, DownloaderType, SyncType, MediaType
from app.utils.types import RmtMode, OsType, SearchType, DownloaderType, SyncType, MediaType, MovieTypes, TvTypes
from config import RMT_MEDIAEXT, TMDB_IMAGE_W500_URL, RMT_SUBEXT, Config
from web.backend.search_torrents import search_medias_for_web, search_media_by_message
from web.backend.web_utils import WebUtils
Expand All @@ -49,8 +49,7 @@
class WebAction:
dbhelper = None
_actions = {}
_MovieTypes = ['MOV', '电影']
_TvTypes = ['TV', '电视剧']
TvTypes = ['TV', '电视剧']

def __init__(self):
self.dbhelper = DbHelper()
Expand Down Expand Up @@ -428,7 +427,8 @@ def __sch(data):
ThreadHelper().start_thread(commands.get(sch_item), ())
return {"retmsg": "服务已启动", "item": sch_item}

def __search(self, data):
@staticmethod
def __search(data):
"""
WEB检索资源
"""
Expand All @@ -438,7 +438,7 @@ def __search(self, data):
tmdbid = data.get("tmdbid")
media_type = data.get("media_type")
if media_type:
if media_type in self._MovieTypes:
if media_type in MovieTypes:
media_type = MediaType.MOVIE
else:
media_type = MediaType.TV
Expand Down Expand Up @@ -733,9 +733,9 @@ def __rename(self, data):
episode_details = data.get("episode_details")
episode_offset = data.get("episode_offset")
min_filesize = data.get("min_filesize")
if mtype in self._MovieTypes:
if mtype in MovieTypes:
media_type = MediaType.MOVIE
elif mtype in self._TvTypes:
elif mtype in TvTypes:
media_type = MediaType.TV
else:
media_type = MediaType.ANIME
Expand Down Expand Up @@ -780,9 +780,9 @@ def __rename_udf(self, data):
episode_details = data.get("episode_details")
episode_offset = data.get("episode_offset")
min_filesize = data.get("min_filesize")
if mtype in self._MovieTypes:
if mtype in MovieTypes:
media_type = MediaType.MOVIE
elif mtype in self._TvTypes:
elif mtype in TvTypes:
media_type = MediaType.TV
else:
media_type = MediaType.ANIME
Expand Down Expand Up @@ -1351,7 +1351,7 @@ def __remove_rss_media(self, data):
if name:
name = MetaInfo(title=name).get_name()
if mtype:
if mtype in self._MovieTypes:
if mtype in MovieTypes:
self.dbhelper.delete_rss_movie(
title=name, year=year, rssid=rssid, tmdbid=tmdbid)
else:
Expand Down Expand Up @@ -1384,7 +1384,7 @@ def __add_rss_media(self, data):
rssid = data.get("rssid")
page = data.get("page")
mtype = MediaType.MOVIE if data.get(
"type") in self._MovieTypes else MediaType.TV
"type") in MovieTypes else MediaType.TV
media_info = None
if isinstance(season, list):
code = 0
Expand Down Expand Up @@ -1515,7 +1515,7 @@ def __media_info(self, data):
release_date = ""
overview = ""
# 类型
if mtype in self._MovieTypes:
if mtype in MovieTypes:
media_type = MediaType.MOVIE
else:
media_type = MediaType.TV
Expand Down Expand Up @@ -1857,10 +1857,11 @@ def __tv_calendar_data(data):
})
return {"code": 0, "events": episode_events}

def __rss_detail(self, data):
@staticmethod
def __rss_detail(data):
rid = data.get("rssid")
mtype = data.get("rsstype")
if mtype in self._MovieTypes:
if mtype in MovieTypes:
rssdetail = Subscribe().get_subscribe_movies(rid=rid)
if not rssdetail:
return {"code": 1}
Expand Down Expand Up @@ -2409,13 +2410,13 @@ def get_recommend(self, data):
res_list = Media().get_tmdb_trending_all_week(page=CurrentPage)
elif Type == "DISCOVER":
# TMDB发现
mtype = MediaType.MOVIE if SubType in self._MovieTypes else MediaType.TV
mtype = MediaType.MOVIE if SubType in MovieTypes else MediaType.TV
# 过滤参数 with_genres with_original_language
params = data.get("filter_params")
params = data.get("params") or {}
res_list = Media().get_tmdb_discover(mtype=mtype, page=CurrentPage, params=params)
elif Type == "DOUBANTAG":
# 豆瓣发现
mtype = MediaType.MOVIE if SubType in self._MovieTypes else MediaType.TV
mtype = MediaType.MOVIE if SubType in MovieTypes else MediaType.TV
# 参数
# params = data.get("filter_params") or {}
# 排序
Expand Down Expand Up @@ -4451,14 +4452,15 @@ def __cookiecloud_sync(self, data):
return {"code": 0, "msg": f"成功更新 {success_count} 个站点的Cookie数据"}
return {"code": 0, "msg": "同步完成,但未更新任何站点的Cookie!"}

def media_detail(self, data):
@staticmethod
def media_detail(data):
"""
获取媒体详情
"""
# TMDBID 或 DB:豆瓣ID
tmdbid = data.get("tmdbid")
mtype = MediaType.MOVIE if data.get(
"type") in self._MovieTypes else MediaType.TV
"type") in MovieTypes else MediaType.TV
if not tmdbid:
return {"code": 1, "msg": "未指定媒体ID"}
media_info = WebUtils.get_mediainfo_from_id(
Expand Down Expand Up @@ -4498,14 +4500,15 @@ def media_detail(self, data):
}
}

def __media_similar(self, data):
@staticmethod
def __media_similar(data):
"""
查询TMDB相似媒体
"""
tmdbid = data.get("tmdbid")
page = data.get("page") or 1
mtype = MediaType.MOVIE if data.get(
"type") in self._MovieTypes else MediaType.TV
"type") in MovieTypes else MediaType.TV
if not tmdbid:
return {"code": 1, "msg": "未指定TMDBID"}
if mtype == MediaType.MOVIE:
Expand All @@ -4514,14 +4517,15 @@ def __media_similar(self, data):
result = Media().get_tv_similar(tmdbid=tmdbid, page=page)
return {"code": 0, "data": result}

def __media_recommendations(self, data):
@staticmethod
def __media_recommendations(data):
"""
查询TMDB同类推荐媒体
"""
tmdbid = data.get("tmdbid")
page = data.get("page") or 1
mtype = MediaType.MOVIE if data.get(
"type") in self._MovieTypes else MediaType.TV
"type") in MovieTypes else MediaType.TV
if not tmdbid:
return {"code": 1, "msg": "未指定TMDBID"}
if mtype == MediaType.MOVIE:
Expand All @@ -4530,26 +4534,28 @@ def __media_recommendations(self, data):
result = Media().get_tv_recommendations(tmdbid=tmdbid, page=page)
return {"code": 0, "data": result}

def __media_person(self, data):
@staticmethod
def __media_person(data):
"""
查询TMDB媒体所有演员
"""
tmdbid = data.get("tmdbid")
mtype = MediaType.MOVIE if data.get(
"type") in self._MovieTypes else MediaType.TV
"type") in MovieTypes else MediaType.TV
if not tmdbid:
return {"code": 1, "msg": "未指定TMDBID"}
return {"code": 0, "data": Media().get_tmdb_cats(tmdbid=tmdbid,
mtype=mtype)}

def __person_medias(self, data):
@staticmethod
def __person_medias(data):
"""
查询演员参演作品
"""
personid = data.get("personid")
page = data.get("page") or 1
mtype = MediaType.MOVIE if data.get(
"type") in self._MovieTypes else MediaType.TV
"type") in MovieTypes else MediaType.TV
if not personid:
return {"code": 1, "msg": "未指定演员ID"}
return {"code": 0, "data": Media().get_person_medias(personid=personid,
Expand Down
23 changes: 18 additions & 5 deletions web/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -402,6 +402,8 @@ def recommend():
PersonId = request.args.get("personid") or ""
Keyword = request.args.get("keyword") or ""
Source = request.args.get("source") or ""
FilterKey = request.args.get("filter") or ""
Params = json.loads(request.args.get("params")) if request.args.get("params") else {}
return render_template("discovery/recommend.html",
Type=Type,
SubType=SubType,
Expand All @@ -412,7 +414,10 @@ def recommend():
PersonId=PersonId,
SubTitle=SubTitle,
Keyword=Keyword,
Source=Source)
Source=Source,
Filter=FilterKey,
FilterConf=ModuleConf.DISCOVER_FILTER_CONF.get(FilterKey) if FilterKey else {},
Params=Params)


# 推荐页面
Expand All @@ -430,7 +435,9 @@ def douban_movie():
return render_template("discovery/recommend.html",
Type="DOUBANTAG",
SubType="MOV",
Title="豆瓣电影")
Title="豆瓣电影",
Filter="douban_movie",
FilterConf=ModuleConf.DISCOVER_FILTER_CONF.get('douban_movie'))


# 豆瓣电视剧
Expand All @@ -440,7 +447,9 @@ def douban_tv():
return render_template("discovery/recommend.html",
Type="DOUBANTAG",
SubType="TV",
Title="豆瓣电视剧")
Title="豆瓣电视剧",
Filter="douban_tv",
FilterConf=ModuleConf.DISCOVER_FILTER_CONF.get('douban_tv'))


@App.route('/tmdb_movie', methods=['POST', 'GET'])
Expand All @@ -449,7 +458,9 @@ def tmdb_movie():
return render_template("discovery/recommend.html",
Type="DISCOVER",
SubType="MOV",
Title="TMDB电影")
Title="TMDB电影",
Filter="tmdb_movie",
FilterConf=ModuleConf.DISCOVER_FILTER_CONF.get('tmdb_movie'))


@App.route('/tmdb_tv', methods=['POST', 'GET'])
Expand All @@ -458,7 +469,9 @@ def tmdb_tv():
return render_template("discovery/recommend.html",
Type="DISCOVER",
SubType="TV",
Title="TMDB电视剧")
Title="TMDB电视剧",
Filter="tmdb_tv",
FilterConf=ModuleConf.DISCOVER_FILTER_CONF.get('tmdb_tv'))


# Bangumi每日放送
Expand Down
Loading

0 comments on commit fb80069

Please sign in to comment.