Merge remote-tracking branch 'origin/main'

This commit is contained in:
jxxghp 2023-08-21 12:33:00 +08:00
commit 6ee934a745
5 changed files with 106 additions and 42 deletions

View File

@ -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="站点已重置!")

View File

@ -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
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
return {}
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)):
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")):

View File

@ -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
}
)

View File

@ -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()

View File

@ -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):
# 用户已安装的插件