ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Jellyfin API 实战:登录取令牌、查询媒体、管理媒体库的 4 步操作

Jellyfin API 实战:登录取令牌、查询媒体、管理媒体库的 4 步操作 Jellyfin API 实战登录取令牌、查询媒体、管理媒体库的 4 步操作【免费下载链接】jellyfinThe Free Software Media System - Server Backend API项目地址: https://gitcode.com/GitHub_Trending/je/jellyfinJellyfin API 是 Jellyfin 媒体服务器对外暴露的 HTTP 接口用它可以用脚本或第三方应用直接读取媒体库、上报播放进度、维护媒体库结构全程无需打开网页界面。本文按要完成的事拆成 4 个任务每个任务给出可直接使用的请求示例和参数说明所有路径均以仓库内控制器源码为准。前置准备开始前你只需要三样东西一台可访问的 Jellyfin 服务器记下它的地址如http://localhost:8096一个管理员账号及密码任意 HTTP 客户端curl、Postman 或浏览器所有接口都挂在服务器根路径下例如/Users、/Items。源码入口在 Jellyfin.Api/Controllers 目录每个控制器的[Route]属性就是接口前缀对照源码即可找到任何接口的参数定义。任务一登录拿 AccessToken发出第一个请求认证采用用户名密码换令牌模式先 POST 登录之后每个请求都携带返回的令牌。POST /Users/AuthenticateByName Content-Type: application/json { Username: admin, Pw: your_password }请求体只有两个字段定义见 AuthenticateUserByName.cs。响应结构见 AuthenticationResult.cs其中三个关键字段字段说明AccessToken后续所有请求的凭据User当前用户信息其中的 Id 后面查询要用SessionInfo会话信息播放上报时会用到其中的 Id拿到令牌后每个请求的头部加一行Authorization: MediaBrowser Token你的AccessToken可以先调GET /Users验证能返回用户列表说明认证链路已打通。任务二查询媒体资源——用 GET /Items 按需筛选ItemsController 中的GET /Items是最常用的查询入口参数全部走 query string按需取用GET /Items?userId用户IdIncludeItemTypesMovieLimit20 Authorization: MediaBrowser Token...userId查哪个用户的视图IncludeItemTypes过滤类型如Movie、Series、MusicAlbumLimit/StartIndex分页两个参数大数据集配合使用fields只返回指定字段减少网络传输量响应是标准分页结构Items项目数组含Id、Name、Type、PremiereDate、RunTimeTicks等字段和TotalRecordCount总记录数。任务三管理媒体库——增删虚拟媒体库媒体库结构由 LibraryStructureController 维护接口前缀是/Library/VirtualFolders操作接口权限查看现有媒体库GET /Library/VirtualFolders登录用户新增媒体库POST /Library/VirtualFolders仅管理员删除媒体库DELETE /Library/VirtualFolders仅管理员新增时核心参数走 query stringbody 传库的细化选项可选POST /Library/VirtualFolders?name家庭照片collectionTypephotospaths/media/photosrefreshLibrarytrue Authorization: MediaBrowser Token管理员令牌paths支持多个路径用逗号分隔refreshLibrarytrue表示建库后立即触发扫描。成功后返回 204 No Content没有响应体。新库建好后后台元数据管线会自动抓取封面与简介。例如接上仓库自带的 OMDB 插件后电影信息可以自动补全任务四进阶——上报播放进度与标记已看播放状态由 PlaystateController 管理全部是 POST 接口接口作用/Sessions/Playing开始播放注册会话/Sessions/Playing/Progress上报进度/Sessions/Playing/Stopped结束播放/PlayingItems/{itemId}直接标记某项目为已看进度上报示例POST /Sessions/Playing/Progress Content-Type: application/json { MediaSessionId: 会话Id, PositionTicks: 36000000000, IsPaused: false }注意PositionTicks是 100 纳秒为单位的时长36000000000 即 1 小时IsPaused用于标记暂停状态。顺带一提用户管理同样在/Users前缀下POST /Users/New可创建新用户body 为{Name: new_user, Password: ...}但仅限管理员令牌调用见 CreateUserByName.cs 的字段定义。排错速查状态码与常见错误状态码含义常见原因200成功—204成功且无响应体虚拟媒体库增删的正常返回别当成出错400请求参数错误query 参数拼写或类型不对401认证失败令牌缺失、过期或头部格式写错403权限不足用普通账号调了管理员接口建库、建用户404资源不存在itemId、userId 写错500服务器内部错误查服务端日志定位两个高频坑位401确认头部格式是Authorization: MediaBrowser Token...Token 后面的引号不能少403/Users/New和/Library/VirtualFolders的增删操作都要求管理员令牌普通用户令牌会被拒绝。接下来可以看什么服务器运行时内置了 Swagger 文档资源位于 Jellyfin.Server/wwwroot/api-docs可以直接在线浏览并调试全部接口想弄清某个接口的每个参数翻到 Jellyfin.Api/Controllers 下对应控制器的 XML 注释就是最权威的答案。【免费下载链接】jellyfinThe Free Software Media System - Server Backend API项目地址: https://gitcode.com/GitHub_Trending/je/jellyfin创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表