Akimio521 / MediaWarp

EmbyServer API优化:优化播放Strm文件、自定义前端样式、自定义允许访问客户端、嵌入脚本,配合Alist实现Emby播放网盘资源,推荐配合AutoFilm使用
GNU Affero General Public License v3.0
130 stars 9 forks source link

只有用web端调用外部播放器触发重定向 #5

Open yating1022 opened 1 month ago

yating1022 commented 1 month ago

以下是我的配置文件

Port: 9000                                  # MideWarp监听端口

MeidaServer:                                # 媒体服务器相关设置
  TYPE: Emby                                # 媒体服务器类型(可选选项:Emby)
  ADDR: http://192.168.2.92:7777               # 媒体服务器地址
  AUTH: 32d381126bb146189a351e9b3e28551e                      # 媒体服务器认证方式

Cache:                                      # 缓存设置
  Type: Memory                              # 缓存类型(可选项:Memory内存缓存)

Logger:                                     # 日志设定
  AccessLogger:                        # 访问日志设定
    Console: True                           # 是否将访问日志文件输出到终端中
    File: False                             # 是否将访问日志文件记录到文件中
  ServiceLogger:                            # 服务日志设定
    Console: True                           # 是否将服务日志文件输出到终端中
    File: True                              # 是否将服务日志文件记录到文件中

Web:                                        # Web页面修改相关设置
  Enable: True                              # 总开关
  Custom: True                              # 是否加载自定义静态资源
  Index: False                               # 是否从static目录读取index.html文件 
  Head: |                                   # 是否添加自定义字段到index.html的HEAD中
    <script src="/MediaWarp/static/custom/emby-front-end-mod/actor-plus.js"></script>
    <script src="/MediaWarp/static/custom/emby-front-end-mod/emby-swiper.js"></script>
    <script src="/MediaWarp/static/custom/emby-front-end-mod/emby-tab.js"></script>
    <script src="/MediaWarp/static/custom/emby-front-end-mod/fanart-show.js"></script>
    <script src="/MediaWarp/static/custom/emby-front-end-mod/playbackRate.js"></script>

  ExternalPlayerUrl: True                   # 是否开启外置播放器
  ActorPlus: True                           # 过滤没有头像的演员和制作人员
  FanartShow: False                         # 显示同人图(fanart图)
  Danmaku: True                             # Web显示弹幕
  BeautifyCSS: True                         # Emby美化CSS样式

ClientFilter:                               # 客户端过滤器
  Enable: False                             # 是否启用客户端过滤器
  Mode: BlackList # WhileList / BlackList   # 黑白名单模式
  ClientList:                               # 名单列表
    - Fileball
    - Infuse

# 302重定向相关配置

HTTPStrm: 
  Enable: True                              # 是否开启HttpStrm重定向
  PrefixList:                               # EmbyServer中Strm文件的前缀(符合该前缀的Strm文件且被正确识别为http协议都会路由到该规则下)
    - /media/GoogleStrm/更新/最新电影

经过测试,只有网页调用外部播放器会触发重定向

【INFO】 2024-10-6 07:44:27   | getHttpStrmRedirectURL|Http协议Strm重定向:http://google.xxxx.top/d/更新盘/最新电影/最近,妹妹的样子有点怪 (2014)/最近,妹妹的样子有点怪 (2014) - BluRay.mkv

【AcessLog】 2024-10-6 07:44:27  | 302 | 112.955556ms | GET    |172.17.0.1 "/emby/videos/229927/stream.strm?api_key=5eacf5c0d787405f917e6973430ab453&deviceid=754d9ef4-f5b4-4dd5-9684-0e0c88bb7103&mediasourceid=c5cae115e3e4e905b3faab9600ef5210&static=true"

使用windows客户端播放则不会触发重定向,而且也是调用的外部播放器

【AcessLog】 2024-10-6 07:49:18  | 200 | 2.316704ms | GET    |172.17.0.1 "/emby/Users/11ea14f6f2db439ba215268dcdb1a487/Items/81/Intros?x-emby-client=Emby+Theater&x-emby-client-version=3.0.20-3.0&x-emby-device-id=DESKTOP-1UCHNNL&x-emby-device-name=DESKTOP-1UCHNNL&x-emby-token=68aba3bbf66e44bda68e09939f5428a1"

【AcessLog】 2024-10-6 07:49:18  | 200 | 15.474724ms | POST   |172.17.0.1 "/emby/Items/81/PlaybackInfo?autoopenlivestream=false&directplayprotocols=File%2CHttp%2CRtp%2CRtmp%2CRtsp%2CFtp&isplayback=false&maxstreamingbitrate=120000000&reqformat=json&starttimeticks=0&userid=11ea14f6f2db439ba215268dcdb1a487&x-emby-client=Emby+Theater&x-emby-client-version=3.0.20-3.0&x-emby-device-id=DESKTOP-1UCHNNL&x-emby-device-name=DESKTOP-1UCHNNL&x-emby-token=68aba3bbf66e44bda68e09939f5428a1"

手机上其他客户端也都如此

yating1022 commented 1 month ago

经过多次测试 除了 网页版调用外部播放器100%触发302,其他播放器,如:windows客户端调用外部播放器、yamby、emby手机客户端,都是有概率触发,而且概率很小,十几次可能就触发一次。

Akimio521 commented 1 month ago

如果日志中也没有相关提示,说明是因为没有匹配到(?i)^/.*videos/.*/(stream|original),emby的api目前来看是比较混乱的并且客户端众多,不清楚客户端是如何调用api并且调用哪些api进行判断,可以自己抓包研究研究

yating1022 commented 1 month ago

如果日志中也没有相关提示,说明是因为没有匹配到(?i)^/.*videos/.*/(stream|original),emby的api目前来看是比较混乱的并且客户端众多,不清楚客户端是如何调用api并且调用哪些api进行判断,可以自己抓包研究研究

yamby的wiki是说要匹配到 emby/videos/{id}/original.xxx

Akimio521 commented 1 month ago

如果日志中也没有相关提示,说明是因为没有匹配到(?i)^/.*videos/.*/(stream|original),emby的api目前来看是比较混乱的并且客户端众多,不清楚客户端是如何调用api并且调用哪些api进行判断,可以自己抓包研究研究

yamby的wiki是说要匹配到 emby/videos/{id}/original.xxx

自行了解正则表达式

Akimio521 commented 1 month ago

原因大概是客户端走了api提供的url而不是自行拼接url,问题比较难处理

Akimio521 commented 1 month ago

现在已做部分处理,经测试FileBall可以正常使用(最新DEV有空指针问题未修复,需使用要自行编译)