mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-09-04 23:17:20 +08:00
refactor(db): convert suitable string fields to JSON type
This commit is contained in:
@@ -86,13 +86,13 @@ def delete_transfer_history(history_in: schemas.TransferHistory,
|
|||||||
return schemas.Response(success=False, msg="记录不存在")
|
return schemas.Response(success=False, msg="记录不存在")
|
||||||
# 册除媒体库文件
|
# 册除媒体库文件
|
||||||
if deletedest and history.dest_fileitem:
|
if deletedest and history.dest_fileitem:
|
||||||
dest_fileitem = schemas.FileItem(**json.loads(history.dest_fileitem))
|
dest_fileitem = schemas.FileItem(**history.dest_fileitem)
|
||||||
state = StorageChain().delete_file(dest_fileitem)
|
state = StorageChain().delete_file(dest_fileitem)
|
||||||
if not state:
|
if not state:
|
||||||
return schemas.Response(success=False, msg=f"{dest_fileitem.path}删除失败")
|
return schemas.Response(success=False, msg=f"{dest_fileitem.path}删除失败")
|
||||||
# 删除源文件
|
# 删除源文件
|
||||||
if deletesrc and history.dest_fileitem:
|
if deletesrc and history.dest_fileitem:
|
||||||
dest_fileitem = schemas.FileItem(**json.loads(history.dest_fileitem))
|
dest_fileitem = schemas.FileItem(**history.dest_fileitem)
|
||||||
state = StorageChain().delete_file(dest_fileitem)
|
state = StorageChain().delete_file(dest_fileitem)
|
||||||
if not state:
|
if not state:
|
||||||
return schemas.Response(success=False, msg=f"{dest_fileitem.path}删除失败")
|
return schemas.Response(success=False, msg=f"{dest_fileitem.path}删除失败")
|
||||||
|
|||||||
@@ -78,7 +78,7 @@ async def login_access_token(
|
|||||||
user_name=user.name,
|
user_name=user.name,
|
||||||
avatar=user.avatar,
|
avatar=user.avatar,
|
||||||
level=level,
|
level=level,
|
||||||
permissions=json.loads(user.permissions or '{}')
|
permissions=user.permissions or {}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -89,14 +89,14 @@ def manual_transfer(transer_item: ManualTransferItem,
|
|||||||
force = True
|
force = True
|
||||||
if history.status and ("move" in history.mode):
|
if history.status and ("move" in history.mode):
|
||||||
# 重新整理成功的转移,则使用成功的 dest 做 in_path
|
# 重新整理成功的转移,则使用成功的 dest 做 in_path
|
||||||
src_fileitem = FileItem(**json.loads(history.dest_fileitem))
|
src_fileitem = FileItem(**history.dest_fileitem)
|
||||||
else:
|
else:
|
||||||
# 源路径
|
# 源路径
|
||||||
src_fileitem = FileItem(**json.loads(history.src_fileitem))
|
src_fileitem = FileItem(**history.src_fileitem)
|
||||||
# 目的路径
|
# 目的路径
|
||||||
if history.dest_fileitem:
|
if history.dest_fileitem:
|
||||||
# 删除旧的已整理文件
|
# 删除旧的已整理文件
|
||||||
dest_fileitem = FileItem(**json.loads(history.dest_fileitem))
|
dest_fileitem = FileItem(**history.dest_fileitem)
|
||||||
StorageChain().delete_file(dest_fileitem)
|
StorageChain().delete_file(dest_fileitem)
|
||||||
|
|
||||||
# 从历史数据获取信息
|
# 从历史数据获取信息
|
||||||
|
|||||||
@@ -151,7 +151,7 @@ class MediaServerChain(ChainBase):
|
|||||||
seasoninfo[episode.season] = episode.episodes
|
seasoninfo[episode.season] = episode.episodes
|
||||||
# 插入数据
|
# 插入数据
|
||||||
item_dict = item.dict()
|
item_dict = item.dict()
|
||||||
item_dict["seasoninfo"] = json.dumps(seasoninfo)
|
item_dict["seasoninfo"] = seasoninfo
|
||||||
item_dict["item_type"] = item_type
|
item_dict["item_type"] = item_type
|
||||||
self.dboper.add(**item_dict)
|
self.dboper.add(**item_dict)
|
||||||
logger.info(f"{server_name} 媒体库 {library.name} 同步完成,共同步数量:{library_count}")
|
logger.info(f"{server_name} 媒体库 {library.name} 同步完成,共同步数量:{library_count}")
|
||||||
|
|||||||
@@ -501,7 +501,7 @@ class MessageChain(ChainBase):
|
|||||||
# 获取已下载剧集
|
# 获取已下载剧集
|
||||||
downloaded = [download.meta_info.begin_episode for download in downloads
|
downloaded = [download.meta_info.begin_episode for download in downloads
|
||||||
if download.meta_info.begin_episode]
|
if download.meta_info.begin_episode]
|
||||||
note = json.dumps(downloaded)
|
note = downloaded
|
||||||
else:
|
else:
|
||||||
note = None
|
note = None
|
||||||
# 添加订阅,状态为R
|
# 添加订阅,状态为R
|
||||||
|
|||||||
+7
-17
@@ -480,7 +480,7 @@ class SubscribeChain(ChainBase):
|
|||||||
return default_sites
|
return default_sites
|
||||||
try:
|
try:
|
||||||
# 尝试解析订阅中的站点数据
|
# 尝试解析订阅中的站点数据
|
||||||
user_sites = json.loads(subscribe.sites)
|
user_sites = subscribe.sites
|
||||||
# 计算 user_sites 和 default_sites 的交集
|
# 计算 user_sites 和 default_sites 的交集
|
||||||
intersection_sites = [site for site in user_sites if site in default_sites]
|
intersection_sites = [site for site in user_sites if site in default_sites]
|
||||||
# 如果交集与原始订阅不一致,更新数据库
|
# 如果交集与原始订阅不一致,更新数据库
|
||||||
@@ -542,7 +542,7 @@ class SubscribeChain(ChainBase):
|
|||||||
domains = []
|
domains = []
|
||||||
if subscribe.sites:
|
if subscribe.sites:
|
||||||
try:
|
try:
|
||||||
siteids = json.loads(subscribe.sites)
|
siteids = subscribe.sites
|
||||||
if siteids:
|
if siteids:
|
||||||
domains = self.siteoper.get_domains_by_ids(siteids)
|
domains = self.siteoper.get_domains_by_ids(siteids)
|
||||||
except JSONDecodeError:
|
except JSONDecodeError:
|
||||||
@@ -812,10 +812,7 @@ class SubscribeChain(ChainBase):
|
|||||||
return
|
return
|
||||||
note = []
|
note = []
|
||||||
if subscribe.note:
|
if subscribe.note:
|
||||||
try:
|
note = subscribe.note or []
|
||||||
note = json.loads(subscribe.note)
|
|
||||||
except JSONDecodeError:
|
|
||||||
note = []
|
|
||||||
for context in downloads:
|
for context in downloads:
|
||||||
meta = context.meta_info
|
meta = context.meta_info
|
||||||
mediainfo = context.media_info
|
mediainfo = context.media_info
|
||||||
@@ -846,13 +843,9 @@ class SubscribeChain(ChainBase):
|
|||||||
return []
|
return []
|
||||||
if subscribe.type != MediaType.TV.value:
|
if subscribe.type != MediaType.TV.value:
|
||||||
return []
|
return []
|
||||||
try:
|
episodes = subscribe.note or []
|
||||||
episodes = json.loads(subscribe.note)
|
logger.info(f'订阅 {subscribe.name} 第{subscribe.season}季 已下载集数:{episodes}')
|
||||||
logger.info(f'订阅 {subscribe.name} 第{subscribe.season}季 已下载集数:{episodes}')
|
return episodes
|
||||||
return episodes
|
|
||||||
except JSONDecodeError:
|
|
||||||
logger.warn(f'订阅 {subscribe.name} note字段解析失败')
|
|
||||||
return []
|
|
||||||
|
|
||||||
def __update_lack_episodes(self, lefts: Dict[Union[int, str], Dict[int, NotExistMediaInfo]],
|
def __update_lack_episodes(self, lefts: Dict[Union[int, str], Dict[int, NotExistMediaInfo]],
|
||||||
subscribe: Subscribe,
|
subscribe: Subscribe,
|
||||||
@@ -1110,10 +1103,7 @@ class SubscribeChain(ChainBase):
|
|||||||
for subscribe in self.subscribeoper.list():
|
for subscribe in self.subscribeoper.list():
|
||||||
if not subscribe.sites:
|
if not subscribe.sites:
|
||||||
continue
|
continue
|
||||||
try:
|
sites = subscribe.sites or []
|
||||||
sites = json.loads(subscribe.sites)
|
|
||||||
except JSONDecodeError:
|
|
||||||
sites = []
|
|
||||||
if site_id not in sites:
|
if site_id not in sites:
|
||||||
continue
|
continue
|
||||||
sites.remove(site_id)
|
sites.remove(site_id)
|
||||||
|
|||||||
@@ -603,13 +603,13 @@ class TransferChain(ChainBase):
|
|||||||
# 删除旧的已整理文件
|
# 删除旧的已整理文件
|
||||||
if history.dest_fileitem:
|
if history.dest_fileitem:
|
||||||
# 解析目标文件对象
|
# 解析目标文件对象
|
||||||
dest_fileitem = FileItem(**json.loads(history.dest_fileitem))
|
dest_fileitem = FileItem(**history.dest_fileitem)
|
||||||
self.storagechain.delete_file(dest_fileitem)
|
self.storagechain.delete_file(dest_fileitem)
|
||||||
|
|
||||||
# 强制整理
|
# 强制整理
|
||||||
if history.src_fileitem:
|
if history.src_fileitem:
|
||||||
# 解析源文件对象
|
# 解析源文件对象
|
||||||
fileitem = FileItem(**json.loads(history.src_fileitem))
|
fileitem = FileItem(**history.src_fileitem)
|
||||||
state, errmsg = self.__do_transfer(fileitem=fileitem,
|
state, errmsg = self.__do_transfer(fileitem=fileitem,
|
||||||
mediainfo=mediainfo,
|
mediainfo=mediainfo,
|
||||||
download_hash=history.download_hash,
|
download_hash=history.download_hash,
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ class MediaServerOper(DbOper):
|
|||||||
# 判断季是否存在
|
# 判断季是否存在
|
||||||
if not item.seasoninfo:
|
if not item.seasoninfo:
|
||||||
return None
|
return None
|
||||||
seasoninfo = json.loads(item.seasoninfo) or {}
|
seasoninfo = item.seasoninfo or {}
|
||||||
if kwargs.get("season") not in seasoninfo.keys():
|
if kwargs.get("season") not in seasoninfo.keys():
|
||||||
return None
|
return None
|
||||||
return item
|
return item
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ class MessageOper(DbOper):
|
|||||||
"userid": userid,
|
"userid": userid,
|
||||||
"action": action,
|
"action": action,
|
||||||
"reg_time": time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()),
|
"reg_time": time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()),
|
||||||
"note": note
|
"note": note or {}
|
||||||
})
|
})
|
||||||
|
|
||||||
# 从kwargs中去掉Message中没有的字段
|
# 从kwargs中去掉Message中没有的字段
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import time
|
import time
|
||||||
|
|
||||||
from sqlalchemy import Column, Integer, String, Sequence
|
from sqlalchemy import Column, Integer, String, Sequence, JSON
|
||||||
from sqlalchemy.orm import Session
|
from sqlalchemy.orm import Session
|
||||||
|
|
||||||
from app.db import db_query, db_update, Base
|
from app.db import db_query, db_update, Base
|
||||||
@@ -46,7 +46,7 @@ class DownloadHistory(Base):
|
|||||||
# 创建时间
|
# 创建时间
|
||||||
date = Column(String)
|
date = Column(String)
|
||||||
# 附加信息
|
# 附加信息
|
||||||
note = Column(String)
|
note = Column(JSON)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
@db_query
|
@db_query
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
from sqlalchemy import Column, Integer, String, Sequence
|
from sqlalchemy import Column, Integer, String, Sequence, JSON
|
||||||
from sqlalchemy.orm import Session
|
from sqlalchemy.orm import Session
|
||||||
|
|
||||||
from app.db import db_query, db_update, Base
|
from app.db import db_query, db_update, Base
|
||||||
@@ -35,9 +35,9 @@ class MediaServerItem(Base):
|
|||||||
# 路径
|
# 路径
|
||||||
path = Column(String)
|
path = Column(String)
|
||||||
# 季集
|
# 季集
|
||||||
seasoninfo = Column(String)
|
seasoninfo = Column(JSON, default=dict)
|
||||||
# 备注
|
# 备注
|
||||||
note = Column(String)
|
note = Column(JSON)
|
||||||
# 同步时间
|
# 同步时间
|
||||||
lst_mod_date = Column(String, default=datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
|
lst_mod_date = Column(String, default=datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
from sqlalchemy import Column, Integer, String, Sequence
|
from sqlalchemy import Column, Integer, String, Sequence, JSON
|
||||||
from sqlalchemy.orm import Session
|
from sqlalchemy.orm import Session
|
||||||
|
|
||||||
from app.db import db_query, Base
|
from app.db import db_query, Base
|
||||||
@@ -30,7 +30,7 @@ class Message(Base):
|
|||||||
# 消息方向:0-接收息,1-发送消息
|
# 消息方向:0-接收息,1-发送消息
|
||||||
action = Column(Integer)
|
action = Column(Integer)
|
||||||
# 附件json
|
# 附件json
|
||||||
note = Column(String)
|
note = Column(JSON)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
@db_query
|
@db_query
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
||||||
from sqlalchemy import Boolean, Column, Integer, String, Sequence
|
from sqlalchemy import Boolean, Column, Integer, String, Sequence, JSON
|
||||||
from sqlalchemy.orm import Session
|
from sqlalchemy.orm import Session
|
||||||
|
|
||||||
from app.db import db_query, db_update, Base
|
from app.db import db_query, db_update, Base
|
||||||
@@ -38,7 +38,7 @@ class Site(Base):
|
|||||||
# 是否公开站点
|
# 是否公开站点
|
||||||
public = Column(Integer)
|
public = Column(Integer)
|
||||||
# 附加信息
|
# 附加信息
|
||||||
note = Column(String)
|
note = Column(JSON)
|
||||||
# 流控单位周期
|
# 流控单位周期
|
||||||
limit_interval = Column(Integer, default=0)
|
limit_interval = Column(Integer, default=0)
|
||||||
# 流控次数
|
# 流控次数
|
||||||
|
|||||||
@@ -40,11 +40,11 @@ class SiteUserData(Base):
|
|||||||
# 下载体积
|
# 下载体积
|
||||||
leeching_size = Column(Float, default=0)
|
leeching_size = Column(Float, default=0)
|
||||||
# 做种人数, 种子大小 JSON
|
# 做种人数, 种子大小 JSON
|
||||||
seeding_info = Column(JSON)
|
seeding_info = Column(JSON, default=dict)
|
||||||
# 未读消息
|
# 未读消息
|
||||||
message_unread = Column(Integer, default=0)
|
message_unread = Column(Integer, default=0)
|
||||||
# 未读消息内容 JSON
|
# 未读消息内容 JSON
|
||||||
message_unread_contents = Column(JSON)
|
message_unread_contents = Column(JSON, default=list)
|
||||||
# 错误信息
|
# 错误信息
|
||||||
err_msg = Column(String)
|
err_msg = Column(String)
|
||||||
# 更新日期
|
# 更新日期
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import time
|
import time
|
||||||
|
|
||||||
from sqlalchemy import Column, Integer, String, Sequence, Float
|
from sqlalchemy import Column, Integer, String, Sequence, Float, JSON
|
||||||
from sqlalchemy.orm import Session
|
from sqlalchemy.orm import Session
|
||||||
|
|
||||||
from app.db import db_query, db_update, Base
|
from app.db import db_query, db_update, Base
|
||||||
@@ -53,7 +53,7 @@ class Subscribe(Base):
|
|||||||
# 缺失集数
|
# 缺失集数
|
||||||
lack_episode = Column(Integer)
|
lack_episode = Column(Integer)
|
||||||
# 附加信息
|
# 附加信息
|
||||||
note = Column(String)
|
note = Column(JSON)
|
||||||
# 状态:N-新建, R-订阅中
|
# 状态:N-新建, R-订阅中
|
||||||
state = Column(String, nullable=False, index=True, default='N')
|
state = Column(String, nullable=False, index=True, default='N')
|
||||||
# 最后更新时间
|
# 最后更新时间
|
||||||
@@ -63,7 +63,7 @@ class Subscribe(Base):
|
|||||||
# 订阅用户
|
# 订阅用户
|
||||||
username = Column(String)
|
username = Column(String)
|
||||||
# 订阅站点
|
# 订阅站点
|
||||||
sites = Column(String)
|
sites = Column(JSON, default=list)
|
||||||
# 是否洗版
|
# 是否洗版
|
||||||
best_version = Column(Integer, default=0)
|
best_version = Column(Integer, default=0)
|
||||||
# 当前优先级
|
# 当前优先级
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ class SystemConfig(Base):
|
|||||||
# 主键
|
# 主键
|
||||||
key = Column(String, index=True)
|
key = Column(String, index=True)
|
||||||
# 值
|
# 值
|
||||||
value = Column(JSON, nullable=True)
|
value = Column(JSON)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
@db_query
|
@db_query
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import time
|
import time
|
||||||
|
|
||||||
from sqlalchemy import Column, Integer, String, Sequence, Boolean, func, or_
|
from sqlalchemy import Column, Integer, String, Sequence, Boolean, func, or_, JSON
|
||||||
from sqlalchemy.orm import Session
|
from sqlalchemy.orm import Session
|
||||||
|
|
||||||
from app.db import db_query, db_update, Base
|
from app.db import db_query, db_update, Base
|
||||||
@@ -16,13 +16,13 @@ class TransferHistory(Base):
|
|||||||
# 源存储
|
# 源存储
|
||||||
src_storage = Column(String)
|
src_storage = Column(String)
|
||||||
# 源文件项
|
# 源文件项
|
||||||
src_fileitem = Column(String)
|
src_fileitem = Column(JSON, default=dict)
|
||||||
# 目标路径
|
# 目标路径
|
||||||
dest = Column(String)
|
dest = Column(String)
|
||||||
# 目标存储
|
# 目标存储
|
||||||
dest_storage = Column(String)
|
dest_storage = Column(String)
|
||||||
# 目标文件项
|
# 目标文件项
|
||||||
dest_fileitem = Column(String)
|
dest_fileitem = Column(JSON, default=dict)
|
||||||
# 转移模式 move/copy/link...
|
# 转移模式 move/copy/link...
|
||||||
mode = Column(String)
|
mode = Column(String)
|
||||||
# 类型 电影/电视剧
|
# 类型 电影/电视剧
|
||||||
@@ -52,7 +52,7 @@ class TransferHistory(Base):
|
|||||||
# 时间
|
# 时间
|
||||||
date = Column(String, index=True)
|
date = Column(String, index=True)
|
||||||
# 文件清单,以JSON存储
|
# 文件清单,以JSON存储
|
||||||
files = Column(String)
|
files = Column(JSON, default=list)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
@db_query
|
@db_query
|
||||||
|
|||||||
@@ -31,9 +31,9 @@ class User(Base):
|
|||||||
# otp秘钥
|
# otp秘钥
|
||||||
otp_secret = Column(String, default=None)
|
otp_secret = Column(String, default=None)
|
||||||
# 用户权限 json
|
# 用户权限 json
|
||||||
permissions = Column(JSON, default='')
|
permissions = Column(JSON, default=dict)
|
||||||
# 用户个性化设置 json
|
# 用户个性化设置 json
|
||||||
settings = Column(JSON, default='')
|
settings = Column(JSON, default=dict)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
@db_query
|
@db_query
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ class UserConfig(Base):
|
|||||||
# 配置键
|
# 配置键
|
||||||
key = Column(String)
|
key = Column(String)
|
||||||
# 值
|
# 值
|
||||||
value = Column(JSON, nullable=True)
|
value = Column(JSON)
|
||||||
|
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
# 用户名和配置键联合唯一
|
# 用户名和配置键联合唯一
|
||||||
|
|||||||
+1
-1
@@ -202,7 +202,7 @@ class SiteOper(DbOper):
|
|||||||
seconds=seconds or 1,
|
seconds=seconds or 1,
|
||||||
lst_state=0,
|
lst_state=0,
|
||||||
lst_mod_date=lst_date,
|
lst_mod_date=lst_date,
|
||||||
note=json.dumps(note)
|
note=note
|
||||||
).create(self._db)
|
).create(self._db)
|
||||||
|
|
||||||
def fail(self, domain: str):
|
def fail(self, domain: str):
|
||||||
|
|||||||
@@ -128,10 +128,10 @@ class TransferHistoryOper(DbOper):
|
|||||||
self.add_force(
|
self.add_force(
|
||||||
src=fileitem.path,
|
src=fileitem.path,
|
||||||
src_storage=fileitem.storage,
|
src_storage=fileitem.storage,
|
||||||
src_fileitem=json.dumps(fileitem.dict()),
|
src_fileitem=fileitem.dict(),
|
||||||
dest=transferinfo.target_item.path if transferinfo.target_item else None,
|
dest=transferinfo.target_item.path if transferinfo.target_item else None,
|
||||||
dest_storage=transferinfo.target_item.storage if transferinfo.target_item else None,
|
dest_storage=transferinfo.target_item.storage if transferinfo.target_item else None,
|
||||||
dest_fileitem=json.dumps(transferinfo.target_item.dict()) if transferinfo.target_item else None,
|
dest_fileitem=transferinfo.target_item.dict() if transferinfo.target_item else None,
|
||||||
mode=mode,
|
mode=mode,
|
||||||
type=mediainfo.type.value,
|
type=mediainfo.type.value,
|
||||||
category=mediainfo.category,
|
category=mediainfo.category,
|
||||||
@@ -146,7 +146,7 @@ class TransferHistoryOper(DbOper):
|
|||||||
image=mediainfo.get_poster_image(),
|
image=mediainfo.get_poster_image(),
|
||||||
download_hash=download_hash,
|
download_hash=download_hash,
|
||||||
status=1,
|
status=1,
|
||||||
files=json.dumps(transferinfo.file_list)
|
files=transferinfo.file_list
|
||||||
)
|
)
|
||||||
|
|
||||||
def add_fail(self, fileitem: FileItem, mode: str, meta: MetaBase, mediainfo: MediaInfo = None,
|
def add_fail(self, fileitem: FileItem, mode: str, meta: MetaBase, mediainfo: MediaInfo = None,
|
||||||
@@ -158,10 +158,10 @@ class TransferHistoryOper(DbOper):
|
|||||||
his = self.add_force(
|
his = self.add_force(
|
||||||
src=fileitem.path,
|
src=fileitem.path,
|
||||||
src_storage=fileitem.storage,
|
src_storage=fileitem.storage,
|
||||||
src_fileitem=json.dumps(fileitem.dict()),
|
src_fileitem=fileitem.dict(),
|
||||||
dest=transferinfo.target_item.path if transferinfo.target_item else None,
|
dest=transferinfo.target_item.path if transferinfo.target_item else None,
|
||||||
dest_storage=transferinfo.target_item.storage if transferinfo.target_item else None,
|
dest_storage=transferinfo.target_item.storage if transferinfo.target_item else None,
|
||||||
dest_fileitem=json.dumps(transferinfo.target_item.dict()) if transferinfo.target_item else None,
|
dest_fileitem=transferinfo.target_item.dict() if transferinfo.target_item else None,
|
||||||
mode=mode,
|
mode=mode,
|
||||||
type=mediainfo.type.value,
|
type=mediainfo.type.value,
|
||||||
category=mediainfo.category,
|
category=mediainfo.category,
|
||||||
@@ -177,7 +177,7 @@ class TransferHistoryOper(DbOper):
|
|||||||
download_hash=download_hash,
|
download_hash=download_hash,
|
||||||
status=0,
|
status=0,
|
||||||
errmsg=transferinfo.message or '未知错误',
|
errmsg=transferinfo.message or '未知错误',
|
||||||
files=json.dumps(transferinfo.file_list)
|
files=transferinfo.file_list
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
his = self.add_force(
|
his = self.add_force(
|
||||||
@@ -185,7 +185,7 @@ class TransferHistoryOper(DbOper):
|
|||||||
year=meta.year,
|
year=meta.year,
|
||||||
src=fileitem.path,
|
src=fileitem.path,
|
||||||
src_storage=fileitem.storage,
|
src_storage=fileitem.storage,
|
||||||
src_fileitem=json.dumps(fileitem.dict()),
|
src_fileitem=fileitem.dict(),
|
||||||
mode=mode,
|
mode=mode,
|
||||||
seasons=meta.season,
|
seasons=meta.season,
|
||||||
episodes=meta.episode,
|
episodes=meta.episode,
|
||||||
|
|||||||
+2
-10
@@ -80,10 +80,7 @@ class UserOper(DbOper):
|
|||||||
"""
|
"""
|
||||||
user = User.get_by_name(self._db, name)
|
user = User.get_by_name(self._db, name)
|
||||||
if user:
|
if user:
|
||||||
try:
|
return user.permissions or {}
|
||||||
return json.loads(user.permissions)
|
|
||||||
except json.JSONDecodeError:
|
|
||||||
return {}
|
|
||||||
return {}
|
return {}
|
||||||
|
|
||||||
def get_settings(self, name: str) -> Optional[dict]:
|
def get_settings(self, name: str) -> Optional[dict]:
|
||||||
@@ -92,12 +89,7 @@ class UserOper(DbOper):
|
|||||||
"""
|
"""
|
||||||
user = User.get_by_name(self._db, name)
|
user = User.get_by_name(self._db, name)
|
||||||
if user:
|
if user:
|
||||||
try:
|
return user.settings or {}
|
||||||
if user.settings:
|
|
||||||
return json.loads(user.settings)
|
|
||||||
return {}
|
|
||||||
except json.JSONDecodeError:
|
|
||||||
return {}
|
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def get_setting(self, name: str, key: str) -> Optional[str]:
|
def get_setting(self, name: str, key: str) -> Optional[str]:
|
||||||
|
|||||||
@@ -116,7 +116,7 @@ class MediaServerItem(BaseModel):
|
|||||||
# 季集
|
# 季集
|
||||||
seasoninfo: Optional[Dict[int, list]] = None
|
seasoninfo: Optional[Dict[int, list]] = None
|
||||||
# 备注
|
# 备注
|
||||||
note: Optional[str] = None
|
note: Optional[dict] = None
|
||||||
# 同步时间
|
# 同步时间
|
||||||
lst_mod_date: Optional[str] = None
|
lst_mod_date: Optional[str] = None
|
||||||
user_state: Optional[MediaServerItemUserState] = None
|
user_state: Optional[MediaServerItemUserState] = None
|
||||||
|
|||||||
Reference in New Issue
Block a user