Merge remote-tracking branch 'origin/main'
This commit is contained in:
commit
6ee934a745
@ -8,13 +8,14 @@ from app import schemas
|
|||||||
from app.chain.cookiecloud import CookieCloudChain
|
from app.chain.cookiecloud import CookieCloudChain
|
||||||
from app.chain.search import SearchChain
|
from app.chain.search import SearchChain
|
||||||
from app.chain.site import SiteChain
|
from app.chain.site import SiteChain
|
||||||
|
from app.core.event import EventManager
|
||||||
from app.core.security import verify_token
|
from app.core.security import verify_token
|
||||||
from app.db import get_db
|
from app.db import get_db
|
||||||
from app.db.models.site import Site
|
from app.db.models.site import Site
|
||||||
from app.db.models.siteicon import SiteIcon
|
from app.db.models.siteicon import SiteIcon
|
||||||
from app.db.systemconfig_oper import SystemConfigOper
|
from app.db.systemconfig_oper import SystemConfigOper
|
||||||
from app.helper.sites import SitesHelper
|
from app.helper.sites import SitesHelper
|
||||||
from app.schemas.types import SystemConfigKey
|
from app.schemas.types import SystemConfigKey, EventType
|
||||||
from app.utils.string import StringUtils
|
from app.utils.string import StringUtils
|
||||||
|
|
||||||
router = APIRouter()
|
router = APIRouter()
|
||||||
@ -90,6 +91,11 @@ def delete_site(
|
|||||||
删除站点
|
删除站点
|
||||||
"""
|
"""
|
||||||
Site.delete(db, site_id)
|
Site.delete(db, site_id)
|
||||||
|
# 插件站点删除
|
||||||
|
EventManager().send_event(EventType.SiteDeleted,
|
||||||
|
{
|
||||||
|
"site_id": site_id
|
||||||
|
})
|
||||||
return schemas.Response(success=True)
|
return schemas.Response(success=True)
|
||||||
|
|
||||||
|
|
||||||
@ -113,6 +119,11 @@ def cookie_cloud_sync(db: Session = Depends(get_db),
|
|||||||
Site.reset(db)
|
Site.reset(db)
|
||||||
SystemConfigOper(db).set(SystemConfigKey.IndexerSites, [])
|
SystemConfigOper(db).set(SystemConfigKey.IndexerSites, [])
|
||||||
CookieCloudChain(db).process(manual=True)
|
CookieCloudChain(db).process(manual=True)
|
||||||
|
# 插件站点删除
|
||||||
|
EventManager().send_event(EventType.SiteDeleted,
|
||||||
|
{
|
||||||
|
"site_id": None
|
||||||
|
})
|
||||||
return schemas.Response(success=True, message="站点已重置!")
|
return schemas.Response(success=True, message="站点已重置!")
|
||||||
|
|
||||||
|
|
||||||
|
@ -232,27 +232,21 @@ class TmdbHelper:
|
|||||||
if self.__compare_names(name, movie.get('original_title')) \
|
if self.__compare_names(name, movie.get('original_title')) \
|
||||||
and movie.get('release_date')[0:4] == str(year):
|
and movie.get('release_date')[0:4] == str(year):
|
||||||
return movie
|
return movie
|
||||||
|
# 匹配别名、译名
|
||||||
|
if not movie.get("names"):
|
||||||
|
movie = self.get_info(mtype=MediaType.MOVIE, tmdbid=movie.get("id"))
|
||||||
|
if movie and self.__compare_names(name, movie.get("names")):
|
||||||
|
return movie
|
||||||
else:
|
else:
|
||||||
for movie in movies:
|
for movie in movies:
|
||||||
if self.__compare_names(name, movie.get('title')) \
|
if self.__compare_names(name, movie.get('title')) \
|
||||||
or self.__compare_names(name, movie.get('original_title')):
|
or self.__compare_names(name, movie.get('original_title')):
|
||||||
return movie
|
return movie
|
||||||
# 匹配别名、译名
|
# 匹配别名、译名
|
||||||
index = 0
|
|
||||||
for movie in movies:
|
|
||||||
# 有年份先过滤
|
|
||||||
if year:
|
|
||||||
if not movie.get('release_date'):
|
|
||||||
continue
|
|
||||||
if movie.get('release_date')[0:4] != str(year):
|
|
||||||
continue
|
|
||||||
index += 1
|
|
||||||
if not movie.get("names"):
|
if not movie.get("names"):
|
||||||
movie = self.get_info(mtype=MediaType.MOVIE, tmdbid=movie.get("id"))
|
movie = self.get_info(mtype=MediaType.MOVIE, tmdbid=movie.get("id"))
|
||||||
if movie and self.__compare_names(name, movie.get("names")):
|
if movie and self.__compare_names(name, movie.get("names")):
|
||||||
return movie
|
return movie
|
||||||
if index > 5:
|
|
||||||
break
|
|
||||||
return {}
|
return {}
|
||||||
|
|
||||||
def __search_tv_by_name(self, name: str, year: str) -> Optional[dict]:
|
def __search_tv_by_name(self, name: str, year: str) -> Optional[dict]:
|
||||||
@ -289,27 +283,22 @@ class TmdbHelper:
|
|||||||
if self.__compare_names(name, tv.get('original_name')) \
|
if self.__compare_names(name, tv.get('original_name')) \
|
||||||
and tv.get('first_air_date')[0:4] == str(year):
|
and tv.get('first_air_date')[0:4] == str(year):
|
||||||
return tv
|
return tv
|
||||||
|
# 匹配别名、译名
|
||||||
|
if not tv.get("names"):
|
||||||
|
tv = self.get_info(mtype=MediaType.TV, tmdbid=tv.get("id"))
|
||||||
|
if tv and self.__compare_names(name, tv.get("names")):
|
||||||
|
return tv
|
||||||
else:
|
else:
|
||||||
for tv in tvs:
|
for tv in tvs:
|
||||||
if self.__compare_names(name, tv.get('name')) \
|
if self.__compare_names(name, tv.get('name')) \
|
||||||
or self.__compare_names(name, tv.get('original_name')):
|
or self.__compare_names(name, tv.get('original_name')):
|
||||||
return tv
|
return tv
|
||||||
# 匹配别名、译名
|
# 匹配别名、译名
|
||||||
index = 0
|
|
||||||
for tv in tvs:
|
|
||||||
# 有年份先过滤
|
|
||||||
if year:
|
|
||||||
if not tv.get('first_air_date'):
|
|
||||||
continue
|
|
||||||
if tv.get('first_air_date')[0:4] != str(year):
|
|
||||||
continue
|
|
||||||
index += 1
|
|
||||||
if not tv.get("names"):
|
if not tv.get("names"):
|
||||||
tv = self.get_info(mtype=MediaType.TV, tmdbid=tv.get("id"))
|
tv = self.get_info(mtype=MediaType.TV, tmdbid=tv.get("id"))
|
||||||
if tv and self.__compare_names(name, tv.get("names")):
|
if tv and self.__compare_names(name, tv.get("names")):
|
||||||
return tv
|
return tv
|
||||||
if index > 5:
|
|
||||||
break
|
|
||||||
return {}
|
return {}
|
||||||
|
|
||||||
def __search_tv_by_season(self, name: str, season_year: str, season_number: int) -> Optional[dict]:
|
def __search_tv_by_season(self, name: str, season_year: str, season_number: int) -> Optional[dict]:
|
||||||
@ -358,7 +347,6 @@ class TmdbHelper:
|
|||||||
and (tv.get('first_air_date') and tv.get('first_air_date')[0:4] == str(season_year)):
|
and (tv.get('first_air_date') and tv.get('first_air_date')[0:4] == str(season_year)):
|
||||||
return tv
|
return tv
|
||||||
# 匹配别名、译名
|
# 匹配别名、译名
|
||||||
for tv in tvs[:5]:
|
|
||||||
if not tv.get("names"):
|
if not tv.get("names"):
|
||||||
tv = self.get_info(mtype=MediaType.TV, tmdbid=tv.get("id"))
|
tv = self.get_info(mtype=MediaType.TV, tmdbid=tv.get("id"))
|
||||||
if not tv or not self.__compare_names(name, tv.get("names")):
|
if not tv or not self.__compare_names(name, tv.get("names")):
|
||||||
@ -430,18 +418,16 @@ class TmdbHelper:
|
|||||||
if self.__compare_names(name, multi.get('title')) \
|
if self.__compare_names(name, multi.get('title')) \
|
||||||
or self.__compare_names(name, multi.get('original_title')):
|
or self.__compare_names(name, multi.get('original_title')):
|
||||||
return multi
|
return multi
|
||||||
elif multi.get("media_type") == "tv":
|
|
||||||
if self.__compare_names(name, multi.get('name')) \
|
|
||||||
or self.__compare_names(name, multi.get('original_name')):
|
|
||||||
return multi
|
|
||||||
# 匹配别名、译名
|
# 匹配别名、译名
|
||||||
for multi in multis[:5]:
|
|
||||||
if multi.get("media_type") == "movie":
|
|
||||||
if not multi.get("names"):
|
if not multi.get("names"):
|
||||||
multi = self.get_info(mtype=MediaType.MOVIE, tmdbid=multi.get("id"))
|
multi = self.get_info(mtype=MediaType.MOVIE, tmdbid=multi.get("id"))
|
||||||
if multi and self.__compare_names(name, multi.get("names")):
|
if multi and self.__compare_names(name, multi.get("names")):
|
||||||
return multi
|
return multi
|
||||||
elif multi.get("media_type") == "tv":
|
elif multi.get("media_type") == "tv":
|
||||||
|
if self.__compare_names(name, multi.get('name')) \
|
||||||
|
or self.__compare_names(name, multi.get('original_name')):
|
||||||
|
return multi
|
||||||
|
# 匹配别名、译名
|
||||||
if not multi.get("names"):
|
if not multi.get("names"):
|
||||||
multi = self.get_info(mtype=MediaType.TV, tmdbid=multi.get("id"))
|
multi = self.get_info(mtype=MediaType.TV, tmdbid=multi.get("id"))
|
||||||
if multi and self.__compare_names(name, multi.get("names")):
|
if multi and self.__compare_names(name, multi.get("names")):
|
||||||
|
@ -571,3 +571,39 @@ class AutoSignIn(_PluginBase):
|
|||||||
self._scheduler = None
|
self._scheduler = None
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error("退出插件失败:%s" % str(e))
|
logger.error("退出插件失败:%s" % str(e))
|
||||||
|
|
||||||
|
@eventmanager.register(EventType.SiteDeleted)
|
||||||
|
def site_deleted(self, event):
|
||||||
|
"""
|
||||||
|
删除对应站点选中
|
||||||
|
"""
|
||||||
|
site_id = event.event_data.get("site_id")
|
||||||
|
config = self.get_config()
|
||||||
|
if config:
|
||||||
|
sign_sites = config.get("sign_sites")
|
||||||
|
if sign_sites:
|
||||||
|
if isinstance(sign_sites, str):
|
||||||
|
sign_sites = [sign_sites]
|
||||||
|
|
||||||
|
# 删除对应站点
|
||||||
|
if site_id:
|
||||||
|
sign_sites = [site for site in sign_sites if int(site) != int(site_id)]
|
||||||
|
else:
|
||||||
|
# 清空
|
||||||
|
sign_sites = []
|
||||||
|
|
||||||
|
# 若无站点,则停止
|
||||||
|
if len(sign_sites) == 0:
|
||||||
|
self._enabled = False
|
||||||
|
|
||||||
|
# 保存配置
|
||||||
|
self.update_config(
|
||||||
|
{
|
||||||
|
"enabled": self._enabled,
|
||||||
|
"notify": self._notify,
|
||||||
|
"cron": self._cron,
|
||||||
|
"onlyonce": self._onlyonce,
|
||||||
|
"queue_cnt": self._queue_cnt,
|
||||||
|
"sign_sites": sign_sites
|
||||||
|
}
|
||||||
|
)
|
||||||
|
@ -1099,3 +1099,31 @@ class SiteStatistic(_PluginBase):
|
|||||||
"statistic_type": self._statistic_type,
|
"statistic_type": self._statistic_type,
|
||||||
"statistic_sites": self._statistic_sites,
|
"statistic_sites": self._statistic_sites,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@eventmanager.register(EventType.SiteDeleted)
|
||||||
|
def site_deleted(self, event):
|
||||||
|
"""
|
||||||
|
删除对应站点选中
|
||||||
|
"""
|
||||||
|
site_id = event.event_data.get("site_id")
|
||||||
|
config = self.get_config()
|
||||||
|
if config:
|
||||||
|
statistic_sites = config.get("statistic_sites")
|
||||||
|
if statistic_sites:
|
||||||
|
if isinstance(statistic_sites, str):
|
||||||
|
statistic_sites = [statistic_sites]
|
||||||
|
|
||||||
|
# 删除对应站点
|
||||||
|
if site_id:
|
||||||
|
statistic_sites = [site for site in statistic_sites if int(site) != int(site_id)]
|
||||||
|
else:
|
||||||
|
# 清空
|
||||||
|
statistic_sites = []
|
||||||
|
|
||||||
|
# 若无站点,则停止
|
||||||
|
if len(statistic_sites) == 0:
|
||||||
|
self._enabled = False
|
||||||
|
|
||||||
|
self._statistic_sites = statistic_sites
|
||||||
|
# 保存配置
|
||||||
|
self.__update_config()
|
||||||
|
@ -22,6 +22,8 @@ class EventType(Enum):
|
|||||||
SiteSignin = "site.signin"
|
SiteSignin = "site.signin"
|
||||||
# 站点数据统计
|
# 站点数据统计
|
||||||
SiteStatistic = "site.statistic"
|
SiteStatistic = "site.statistic"
|
||||||
|
# 站点删除
|
||||||
|
SiteDeleted = "site.deleted"
|
||||||
# 豆瓣想看
|
# 豆瓣想看
|
||||||
DoubanSync = "douban.sync"
|
DoubanSync = "douban.sync"
|
||||||
# Webhook消息
|
# Webhook消息
|
||||||
@ -40,6 +42,7 @@ class EventType(Enum):
|
|||||||
NoticeMessage = "notice.message"
|
NoticeMessage = "notice.message"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# 系统配置Key字典
|
# 系统配置Key字典
|
||||||
class SystemConfigKey(Enum):
|
class SystemConfigKey(Enum):
|
||||||
# 用户已安装的插件
|
# 用户已安装的插件
|
||||||
|
Loading…
x
Reference in New Issue
Block a user