Popcorn Desktop JSON-RPC API 详解:远程控制你的观影体验

Popcorn Desktop JSON-RPC API 详解:远程控制你的观影体验

popcorn-desktop Popcorn Time is a multi-platform, free software BitTorrent client that includes an integrated media player ( Windows / Mac / Linux ) A Butter-Project Fork popcorn-desktop 项目地址: https://gitcode.com/gh_mirrors/po/popcorn-desktop

什么是JSON-RPC API

JSON-RPC是一种轻量级的远程过程调用协议,它使用JSON格式进行数据交换。在Popcorn Desktop项目中,开发者内置了一套完整的JSON-RPC 2.0接口,允许其他程序通过HTTP协议与Popcorn Desktop应用进行交互。

这套API的设计初衷是为开发者提供扩展Popcorn Desktop功能的可能性,比如:

  • 开发手机遥控器应用
  • 创建语音控制插件
  • 实现自动化观影脚本
  • 与其他智能家居系统集成

基础配置与安全

在使用API前,需要进行简单的配置:

  1. HTTP基础认证:API使用标准的HTTP基础认证机制,确保只有授权用户才能访问
  2. 端口设置:可以在Popcorn Desktop的设置视图中自定义API监听的端口号

每个API响应都会包含当前Popcorn Desktop的版本信息,通过butterVersion字段返回,这有助于开发者做版本兼容性处理。

API功能分类详解

基础控制类

这些方法提供了对播放器的基本控制功能:

  • ping():最简单的连接测试方法,无需参数
  • volume([volume]):获取或设置音量(0-1之间的小数)
  • toggleplaying():播放/暂停切换
  • togglemute():静音/取消静音切换
  • togglefullscreen():全屏/窗口模式切换

界面导航类

控制应用界面导航的方法:

  • showslist()/movieslist()/animelist():切换到不同内容分类
  • showwatchlist()/showfavourites():打开观看列表或收藏夹
  • toggletab():在标签页间切换
  • getviewstack():获取当前视图堆栈信息

内容管理类

管理影视内容的方法:

  • togglefavourite():切换当前项的收藏状态
  • togglewatched():标记/取消标记为已观看
  • togglequality():切换视频质量(需在详情页)
  • getselection():获取当前选中项或打开视图的详情

播放控制类

精细控制播放过程的方法:

  • seek(amount):跳转到指定时间位置(秒)
  • subtitleoffset(amount):调整字幕时间偏移
  • setsubtitle():设置字幕
  • setplayer(player_id):选择媒体播放器
  • getstreamurl():获取当前播放视频的流URL

数据获取类

获取各类信息的方法:

  • getloading():获取当前加载视频的信息(缓冲状态、下载速度等)
  • getplaying():获取当前播放视频的详细信息
  • getgenres()/getsorters()/gettypes():获取可用的分类、排序和类型
  • getcurrentlist():获取当前显示列表的内容项

高级功能类

  • listennotifications():使用长轮询方式监听应用事件通知
    • 支持的事件类型:音量变化、视图堆栈变化、全屏状态变化等
  • startstream():启动流媒体播放(参数丰富,支持电影和剧集)

实用技巧与最佳实践

  1. 错误处理:所有API调用都应做好错误处理,检查HTTP状态码
  2. 频率控制:避免高频调用控制类API,特别是界面导航相关方法
  3. 长轮询优化:使用listennotifications()时,建议设置合理的超时时间(如30秒)并实现重试机制
  4. 参数验证:调用如volume()等方法时,确保传入参数在有效范围内
  5. 状态同步:某些操作(如toggleplaying)会改变播放器状态,客户端应保持状态同步

典型应用场景示例

手机遥控器实现

// 连接API端点
const apiClient = new JSONRPCClient('http://localhost:9117');

// 播放/暂停控制
function togglePlay() {
  apiClient.request('toggleplaying', []);
}

// 音量控制
function setVolume(level) {
  apiClient.request('volume', [level]);
}

// 获取当前播放信息
async function getPlaybackInfo() {
  return await apiClient.request('getplaying', []);
}

自动化观影脚本

def play_movie(imdb_id, torrent_url):
    params = {
        'imdb_id': imdb_id,
        'torrent_url': torrent_url,
        'quality': '1080p',
        'type': 'movie'
    }
    response = requests.post(
        'http://localhost:9117/jsonrpc',
        json={
            'jsonrpc': '2.0',
            'method': 'startstream',
            'params': [params],
            'id': 1
        },
        auth=HTTPBasicAuth('username', 'password')
    )
    return response.json()

注意事项

  1. filterrating()方法仅在客户端电影API设置为使用YTS API时有效
  2. startstream()方法的epInfo参数用于从多个提供商获取字幕,应正确设置剧集相关信息
  3. 部分导航类方法模拟了键盘操作,实际效果可能因界面状态而异
  4. 长时间不活动后,可能需要重新建立连接

通过这套功能丰富的JSON-RPC API,开发者可以轻松扩展Popcorn Desktop的功能,创造个性化的观影控制体验。无论是简单的遥控操作,还是复杂的自动化流程,都能通过这些接口实现。

popcorn-desktop Popcorn Time is a multi-platform, free software BitTorrent client that includes an integrated media player ( Windows / Mac / Linux ) A Butter-Project Fork popcorn-desktop 项目地址: https://gitcode.com/gh_mirrors/po/popcorn-desktop

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

强耿习Margot

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值