媒体库
默认响应为
{
// 获得的胡萝卜
"carrot": 1
}视频类型为固定值
movie电影tv电视
媒体库列表
GET /api/library/base
[
{
"id": 11,
"name": "电视",
"image_url": "https://emos.lol/files/base/library/11.png"
},
{
"id": 21,
"name": "电影",
"image_url": "https://emos.lol/files/base/library/21.png"
}
]更新媒体库封面图
todo: 自动删除缓存
PUT /api/library/changeImage
library_id媒体库IDfile_id文件ID 用image获取
视频列表
GET /api/video/list
请求参数
library_id媒体库IDtmdb_idtmdb 中idvideo_id视频IDtype视频类型title视频标题 模糊搜索page当前页数page_size每页条数 1 - 100 默认 20with_delete是否包含删除已的视频0否 或1是 默认为0
响应内容
{
// 当前页码
"page": 1,
// 每页条数
"page_size": 10,
// 总数
"total": 2,
"items": [
{
// 存在则可以直接上传资源
"item_id": null,
"tmdb_id": "75778",
"tmdb_url": "https://www.themoviedb.org/tv/75778",
// 媒体库ID
"library_id": 31,
// 媒体库名称
"library_name": "电视",
"video_id": 2665,
"video_type": "tv",
"video_title": "25岁的女高中生",
"video_origin_title": "25歳の女子高生",
"video_description": "花(原田瞳 配音)从来都没想象过,25岁的自己依然在苦苦的寻找着工作。某日,花的亲戚找到了她,提出了一个奇怪的委托。原来,花16岁的表妹是一个家里蹲,不愿意去学校上学,而花的样貌和表妹极为相似,所以亲戚请求花隐姓埋名假扮表妹去学校上课。\n\n走投无路的花接受了委托,经过一番精心的装扮后,自认为无懈可击绝对不会暴露的花踏入了高中的校园。让花没有想到的是,自己的班主任,竟然是曾经的高中同学蟹江,不仅如此,蟹江在第一时间便识破了花的真身。花请求蟹江帮她保守秘密,然而,蟹将却提出了令花感到害臊又悸动的条件。",
// 封面图
"video_image_cover": "https://emos.lol/emby/Items/vl-2665/Images/Primary",
// 上映时间
"video_date_air": "2018-01-08",
// 资源总数 大于0则可以获取资源列表
"media_count": 12,
// 点播ID
"seek_id": 1,
// 是否进行了点播
"seek_is_request": true,
// 点播总数
"request_count": 1,
// 别名总数
"title_alias_count": 1,
// 是否已删除
"is_delete": true
},
{
"item_id": "vl-2660",
"tmdb_id": "17578",
"tmdb_url": "https://www.themoviedb.org/movie/17578",
"library_id": 21,
"library_name": "电影",
"video_id": 2660,
"video_type": "movie",
"video_title": "丁丁历险记",
"video_origin_title": "The Adventures of Tintin",
"video_description": "电影改编自比利时漫画家埃尔热(Hergé)笔下风靡全球多年的同名作品《丁丁历险记》。故事跟随着一个充满好奇心的年轻记者丁丁(杰米贝尔 饰)和他忠心无比的狗狗白雪,他们发现一艘藏有惊爆秘密的模型船,于是丁丁受到这个流传几世纪的秘密吸引,并引起残暴恶棍萨卡林(丹尼尔克雷格 饰)的注意,因为萨卡林相信丁丁偷了跟红色拉克姆有关的无价宝藏,不过由于狗狗白雪、坏脾气的航海家阿道克船长(安迪瑟金斯 饰)及笨手笨脚的侦探搭挡杜庞与杜邦(赛门佩吉和尼克弗斯特 饰)的帮助,丁丁将会游历半个地球,智取并赶过他的敌人,热切地寻找船舰独角兽号的最后落脚处,因为那正关键着一艘失事船的庞大财富……以及一则古老的诅咒。",
"video_image_cover": "https://emos.lol/emby/Items/vl-2660/Images/Primary",
"video_date_air": "2011-10-24",
"media_count": 0,
"seek_id": 0,
"seek_is_request": false,
"request_count": 0,
"title_alias_count": 0,
"is_delete": false
}
]
}修改视频所在媒体库ID
PUT /api/video/[video_id]/changeLibraryId?library_id=[library_id]
video_id视频IDlibrary_id新媒体库ID
删除视频
DELETE /api/video/[video_id]/delete
video_id视频ID
恢复删除的视频
PATCH /api/video/[video_id]/recover
video_id视频ID
获取视频别名
GET /api/video/[video_id]/alias/list
video_id视频ID
[
{
// 别名ID 删除用到
"id": 4,
"title": "Tais-toi"
},
{
"id": 3,
"title": "你丫闭嘴"
},
{
"id": 1,
"title": "请你闭嘴"
}
]新建视频别名
POST /api/video/[video_id]/alias/create
video_id视频ID
请求
{
// 新别名内容
"title": "Ruby & Quentin!"
}删除视频别名
DELETE /api/video/[video_id]/alias/delete?alias_id=[alias_id]
video_id视频IDalias_id视频别名列表中的别名ID
获取电视集列表
GET /api/video/[video_id]/episode?with_seek=[with_seek]
video_id视频IDwith_seek是否包含认领信息0或1默认为0不包含with_seek_is_request是否包含是否点播信息0或1默认为0不包含
item_type 均为 ve
[
{
// 集 item_id
"episode_id": 53976,
"episode_title": "最喜欢你了",
// Exx E01
"episode_number": 1,
"season_id": 3810,
"season_title": "第 1 季",
// Sxx S01
"season_number": 1,
// 上映时间
"date_air": "2018-03-28",
// 资源总数
"medias_count": 1
},
// 包含了认领信息的 有认领
{
"episode_id": 53976,
"episode_title": "最喜欢你了",
"episode_number": 1,
"season_id": 3810,
"season_title": "第 1 季",
"season_number": 1,
"date_air": "2018-03-28",
"medias_count": 0,
// 认领信息 以下字段注释在 点播 -> 查询认领信息 中
"seek": {
"seek_id": 2,
"status": "upload",
"upload_username": "1234",
"upload_expired_at": "2025-12-08T23:01:57.000000Z",
"is_can_claim": false,
"request_count": 1,
"seek_carrot": 100,
"updated_at": "2025-12-08T17:02:58.000000Z"
}
},
// 包含了认领信息的 无认领情况
{
"episode_id": 53976,
"episode_title": "最喜欢你了",
"episode_number": 1,
"season_id": 3810,
"season_title": "第 1 季",
"season_number": 1,
"date_air": "2018-03-28",
"medias_count": 0,
// 有资源时 seek 也会为空 此时也不可认领
"seek": null
},
// 包含了是否点播信息的
{
"episode_id": 53976,
"episode_title": "最喜欢你了",
"episode_number": 1,
"season_id": 3810,
"season_title": "第 1 季",
"season_number": 1,
"date_air": "2018-03-28",
"medias_count": 0,
"with_seek_is_request": false
},
]获取视频的资源列表
GET/api/video/media/list?video_list_id=[video_list_id]&video_season_id=[video_season_id]&video_episode_id=[video_episode_id]
video_list_id视频IDvideo_season_id视频季IDvideo_episode_id视频集ID
三个参数为合并查询关系 使用时必须传一个
对于电影类型 传 video_list_id
对于电视类型 传 video_season_id 或 video_episode_id
[
// 电影返回
{
"media_uuid": "01997206-86e0-70e0-b396-96744256d527",
"media_name": "1080P",
"media_file_size": 1024,
"media_file_second": 60,
"season_id": null,
"season_name": null,
"season_number": null,
"episode_id": null,
"episode_name": null,
"episode_number": null,
// 是否为自己上传
"is_self_upload": true
},
// 电视返回
{
"media_uuid": "01997239-b91e-7324-b615-98625ac2f7ab",
"media_name": "2160P",
"media_file_size": 2048,
"media_file_second": 120,
"season_id": 1333,
"season_name": "第 1 季",
"season_number": 1,
"episode_id": 2333,
"episode_name": "第 1 集",
"episode_number": 1,
"is_self_upload": false
},
]删除视频的媒体资源
删除视频下面的某项媒体资源
DELETE /api/video/media/delete?media_uuid=[media_uuid]
media_uuid媒体资源UUID 必传
移动视频的媒体资源
将视频媒体资源移动到另一个视频下面
PUT /api/video/media/move?media_uuid=[media_uuid]&item_type=[item_type]&item_id=[item_id]
media_uuid媒体资源UUID 必传item_type目标资源类型 必传item_id目标资源ID 必传
重命名视频的媒体资源
重命名视频下面的某项媒体资源 比如将 2K - 上传 重命名成 2k
PUT /api/video/media/rename?media_uuid=[media_uuid]&name=[name]
media_uuid媒体资源UUID 必传name新名称 20字符内
获取视频的字幕列表
GET/api/video/subtitle/list?media_uuid=[media_uuid]
media_uuid媒体资源UUID
[
{
"subtitle_id": "xWDKXEMv2E",
"title": "RUOppenheimer_2023_2160p_IMAX_UHDRemux_HYBRID_HDR_DV_TheEqualizer",
"codec": "ass"
}
]删除视频的字幕
DELETE /api/video/subtitle/delete?subtitle_id=[subtitle_id]
subtitle_id字幕ID