作者以自己的理解摸索实现一个模仿emby
核心功能的、BS模式的本地影视管理工具。
技术栈涉及Asp.Net Core5.0(Web Api后端)、Blazor WASM(前端Web)、EF Core(数据库访问),前端UI设计使用Bootstrap和BootstrapBlazor。
Swellow的名称来自《精灵宝可梦》中的“傲骨燕/大王燕”。
- 爬虫
- 从有影视信息的网站抓取
- 问题麻烦比较多,针对特定网站定制化繁琐,增加网站负担……
- 网站提供的API接口
- 豆瓣之前有,但现在好像没了,或者收费了。
TMDB有接口,有使用文档,目前起步会采用它。
- 除了连接国外网站不稳定,要代理,其他没什么大问题。
- 自建信息分发仓库
- 不管信息源头从哪来,先由作者先行获得,再存储在作者这里。
- 借用阿里云数据库等云平台,
由作者充当豆瓣或TMDB的角色
。 - 需要用户付费,向阿里付费。
- 用户可以在本地维护修元数据,并向作者提交完善。
- 这种方式未来可行,如果未来很美好的话。
- 和元数据类似,主要分歧在于从哪来。
- 存储的成本比元数据高很多。
- 还是从TMDB来。
- 目前的想法,两个数据库。
- 一个是原始的影视信息(标题、简介)数据库,与Swellow本身并无绝对依赖关系。
- 一个是Swellow运转所需的数据库,如“页面显示的标题:流浪地球(2019)”,而不是“标题:流浪地球”。
- 当用户重新设置“页面显示的标题”的组成格式,如“标题+(+主要演员们+)”,则重新从第一个数据库拿信息,重写新标题“流浪地球(吴京 吴孟达 屈楚萧 赵今麦)”保存到第二个数据库中。
- 备份
- 第一个数据库的信息来源是2.1.1讨论的问题,它甚至可以是从作者处直接下载的数据库文件。
- 第二个数据库是依据用户的个人设置,可以快速生成的本地化数据。备份的意义不大。
- 问题
- 作者个人的局限,没接触过具体的工程项目,暂时只想到这种解决方式。
- 页面
-
- 呈现所有媒体库
-
- 上一次观看内容
-
- 最新加入内容
-
- ……
-
- 模型
- 用户建立的媒体库,包含一个或多个本地文件夹下的视频。
- 媒体库的性质可以是电影、电视剧、混合电影+电视剧。
- 页面
-
- 媒体库详情页,呈现下辖所有作品
-
- 随机播放、排序等按钮功能
-
- ……
-
- 模型
- 页面上所需的各种信息,标题、年份、导演、演员、简介等。
- 一部作品只要是单集(但可以多cd)就可以算作电影。
- 电影可以属于一个系列,比如《超凡蜘蛛侠》系列,或者更大的《漫威宇宙》系列。
- 有了系列后,电影也趋向于电视剧,界限开始模糊。
- 页面
-
- 播放
-
- 编辑元数据
-
- ……
-
- 模型
- 和电影大同小异。
- 一部电影可能有多季,一季当然也有多集。
- 番外篇。
- 页面
-
- 播放
-
- 编辑元数据
-
- ……
-
- 模型
- 人物的基本信息,参演的作品,导演的作品。
- 不明确具体是演员还是导演,只在影视作品的详情页区分开来。
- 页面
-
- 罗列基本信息,参演的作品,导演的作品。
-
- 编辑元数据
-
- ……
-
- 控制台。
-
- 显示Swellow当前的状态。
-
- 添加媒体库
-
- 在这里添加新的媒体库。
-
- 重新扫描本地文件。
-
- 设置规范本地
-
- 各种重命名本地文件的公式。
-
- 代理等其他设置
-
- 读
- 写
这超出了一个web应用的功能范畴。
- 回到信息的收集
- 修改本地文件
- 重命名文件、文件夹、字幕文件。
- 归类。