/Swellow

以自己的理解摸索实现一个类似emby核心功能的本地影视管理工具。

Primary LanguageJavaScriptGNU General Public License v3.0GPL-3.0

还未到达可以git clone在本地测试的地步。

每天写一点点,任重道远……

Swellow

Swellow logo

1 是什么

作者以自己的理解摸索实现一个模仿emby核心功能的、BS模式的本地影视管理工具。
技术栈涉及Asp.Net Core5.0(Web Api后端)Blazor WASM(前端Web)EF Core(数据库访问),前端UI设计使用BootstrapBootstrapBlazor
Swellow的名称来自《精灵宝可梦》中的“傲骨燕/大王燕”。

2 实现功能

2.1 影视信息收集存储

2.1.1 元数据来源

  • 爬虫
    • 从有影视信息的网站抓取
    • 问题麻烦比较多,针对特定网站定制化繁琐,增加网站负担……
  • 网站提供的API接口
    • 豆瓣之前有,但现在好像没了,或者收费了。
    • TMDB有接口,有使用文档,目前起步会采用它。
    • 除了连接国外网站不稳定,要代理,其他没什么大问题。
  • 自建信息分发仓库
    • 不管信息源头从哪来,先由作者先行获得,再存储在作者这里。
    • 借用阿里云数据库等云平台,由作者充当豆瓣或TMDB的角色
    • 需要用户付费,向阿里付费。
    • 用户可以在本地维护修元数据,并向作者提交完善。
    • 这种方式未来可行,如果未来很美好的话。

2.1.2 图片字幕等

  • 和元数据类似,主要分歧在于从哪来。
  • 存储的成本比元数据高很多。
  • 还是从TMDB来。

2.1.3 用户本地存储信息

  • 目前的想法,两个数据库。
    • 一个是原始的影视信息(标题、简介)数据库,与Swellow本身并无绝对依赖关系。
    • 一个是Swellow运转所需的数据库,如“页面显示的标题:流浪地球(2019)”,而不是“标题:流浪地球”。
    • 当用户重新设置“页面显示的标题”的组成格式,如“标题+(+主要演员们+)”,则重新从第一个数据库拿信息,重写新标题“流浪地球(吴京 吴孟达 屈楚萧 赵今麦)”保存到第二个数据库中。
  • 备份
    • 第一个数据库的信息来源是2.1.1讨论的问题,它甚至可以是从作者处直接下载的数据库文件。
    • 第二个数据库是依据用户的个人设置,可以快速生成的本地化数据。备份的意义不大。
  • 问题
    • 作者个人的局限,没接触过具体的工程项目,暂时只想到这种解决方式。

2.2 前端页面与模型

2.2.1 Home

  • 页面
      • 呈现所有媒体库
      • 上一次观看内容
      • 最新加入内容
      • ……

2.2.2 媒体库

  • 模型
    • 用户建立的媒体库,包含一个或多个本地文件夹下的视频。
    • 媒体库的性质可以是电影、电视剧、混合电影+电视剧。
  • 页面
      • 媒体库详情页,呈现下辖所有作品
      • 随机播放、排序等按钮功能
      • ……

2.2.3 电影

  • 模型
    • 页面上所需的各种信息,标题、年份、导演、演员、简介等。
    • 一部作品只要是单集(但可以多cd)就可以算作电影。
    • 电影可以属于一个系列,比如《超凡蜘蛛侠》系列,或者更大的《漫威宇宙》系列。
    • 有了系列后,电影也趋向于电视剧,界限开始模糊。
  • 页面
      • 播放
      • 编辑元数据
      • ……

2.2.3 电视剧

  • 模型
    • 和电影大同小异。
    • 一部电影可能有多季,一季当然也有多集。
    • 番外篇。
  • 页面
      • 播放
      • 编辑元数据
      • ……

2.2.4 演职人员

  • 模型
    • 人物的基本信息,参演的作品,导演的作品。
    • 不明确具体是演员还是导演,只在影视作品的详情页区分开来。
  • 页面
      • 罗列基本信息,参演的作品,导演的作品。
      • 编辑元数据
      • ……

2.2.5 设置

  • 控制台。
      • 显示Swellow当前的状态。
  • 添加媒体库
      • 在这里添加新的媒体库。
      • 重新扫描本地文件。
  • 设置规范本地
      • 各种重命名本地文件的公式。
      • 代理等其他设置

2.3 后端支持

2.3.1 数据库读写

2.3.2 组装ViewModel

2.4 刮削规范

这超出了一个web应用的功能范畴。

2.4.1 刮削

  • 回到信息的收集

2.4.2 规范

  • 修改本地文件
    • 重命名文件、文件夹、字幕文件。
    • 归类。