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.search import SearchChain
|
||||
from app.chain.site import SiteChain
|
||||
from app.core.event import EventManager
|
||||
from app.core.security import verify_token
|
||||
from app.db import get_db
|
||||
from app.db.models.site import Site
|
||||
from app.db.models.siteicon import SiteIcon
|
||||
from app.db.systemconfig_oper import SystemConfigOper
|
||||
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
|
||||
|
||||
router = APIRouter()
|
||||
@ -90,6 +91,11 @@ def delete_site(
|
||||
删除站点
|
||||
"""
|
||||
Site.delete(db, site_id)
|
||||
# 插件站点删除
|
||||
EventManager().send_event(EventType.SiteDeleted,
|
||||
{
|
||||
"site_id": site_id
|
||||
})
|
||||
return schemas.Response(success=True)
|
||||
|
||||
|
||||
@ -113,6 +119,11 @@ def cookie_cloud_sync(db: Session = Depends(get_db),
|
||||
Site.reset(db)
|
||||
SystemConfigOper(db).set(SystemConfigKey.IndexerSites, [])
|
||||
CookieCloudChain(db).process(manual=True)
|
||||
# 插件站点删除
|
||||
EventManager().send_event(EventType.SiteDeleted,
|
||||
{
|
||||
"site_id": None
|
||||
})
|
||||
return schemas.Response(success=True, message="站点已重置!")
|
||||
|
||||
|
||||
|
@ -232,27 +232,21 @@ class TmdbHelper:
|
||||
if self.__compare_names(name, movie.get('original_title')) \
|
||||
and movie.get('release_date')[0:4] == str(year):
|
||||
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:
|
||||
for movie in movies:
|
||||
if self.__compare_names(name, movie.get('title')) \
|
||||
or self.__compare_names(name, movie.get('original_title')):
|
||||
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"):
|
||||
movie = self.get_info(mtype=MediaType.MOVIE, tmdbid=movie.get("id"))
|
||||
if movie and self.__compare_names(name, movie.get("names")):
|
||||
return movie
|
||||
if index > 5:
|
||||
break
|
||||
# 匹配别名、译名
|
||||
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
|
||||
return {}
|
||||
|
||||
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')) \
|
||||
and tv.get('first_air_date')[0:4] == str(year):
|
||||
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:
|
||||
for tv in tvs:
|
||||
if self.__compare_names(name, tv.get('name')) \
|
||||
or self.__compare_names(name, tv.get('original_name')):
|
||||
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"):
|
||||
tv = self.get_info(mtype=MediaType.TV, tmdbid=tv.get("id"))
|
||||
if tv and self.__compare_names(name, tv.get("names")):
|
||||
return tv
|
||||
if index > 5:
|
||||
break
|
||||
# 匹配别名、译名
|
||||
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
|
||||
|
||||
return {}
|
||||
|
||||
def __search_tv_by_season(self, name: str, season_year: str, season_number: int) -> Optional[dict]:
|
||||
@ -357,8 +346,7 @@ class TmdbHelper:
|
||||
or self.__compare_names(name, tv.get('original_name'))) \
|
||||
and (tv.get('first_air_date') and tv.get('first_air_date')[0:4] == str(season_year)):
|
||||
return tv
|
||||
# 匹配别名、译名
|
||||
for tv in tvs[:5]:
|
||||
# 匹配别名、译名
|
||||
if not tv.get("names"):
|
||||
tv = self.get_info(mtype=MediaType.TV, tmdbid=tv.get("id"))
|
||||
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')) \
|
||||
or self.__compare_names(name, multi.get('original_title')):
|
||||
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"):
|
||||
multi = self.get_info(mtype=MediaType.MOVIE, tmdbid=multi.get("id"))
|
||||
if multi and self.__compare_names(name, multi.get("names")):
|
||||
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
|
||||
# 匹配别名、译名
|
||||
if not multi.get("names"):
|
||||
multi = self.get_info(mtype=MediaType.TV, tmdbid=multi.get("id"))
|
||||
if multi and self.__compare_names(name, multi.get("names")):
|
||||
|
@ -571,3 +571,39 @@ class AutoSignIn(_PluginBase):
|
||||
self._scheduler = None
|
||||
except Exception as 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_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"
|
||||
# 站点数据统计
|
||||
SiteStatistic = "site.statistic"
|
||||
# 站点删除
|
||||
SiteDeleted = "site.deleted"
|
||||
# 豆瓣想看
|
||||
DoubanSync = "douban.sync"
|
||||
# Webhook消息
|
||||
@ -40,6 +42,7 @@ class EventType(Enum):
|
||||
NoticeMessage = "notice.message"
|
||||
|
||||
|
||||
|
||||
# 系统配置Key字典
|
||||
class SystemConfigKey(Enum):
|
||||
# 用户已安装的插件
|
||||
|
Loading…
x
Reference in New Issue
Block a user