菜单

广播媒体提取器

相关源文件

此页面介绍了 youtube-dl 中广播媒体网络的提取器。这些提取器专门用于处理来自公共和商业电视及广播公司(如 BBC、NRK、ABC 等)的内容。有关 YouTube 和 Vimeo 等通用视频平台提取器信息,请参阅视频平台提取器,有关 Twitch 等流媒体平台提取器,请参阅流媒体平台提取器

架构概述

youtube-dl 中的广播媒体提取器遵循通用的提取器系统架构,同时应对广播媒体平台独有的挑战,例如地理限制、复杂的身份验证要求以及专门的内容分发方法。

广播媒体提取器层次结构

来源:youtube_dl/extractor/bbc.py40-197 youtube_dl/extractor/nrk.py22-283 youtube_dl/extractor/abc.py106-193

常见模式和挑战

广播媒体提取器共享一些常见的挑战和模式

地理限制

大多数广播媒体网络将内容限制在特定国家/地区。提取器通过以下方式处理此问题:

  1. 通过 _GEO_COUNTRIES 属性定义支持的国家/地区
  2. 当内容不可用时引发地理限制错误
  3. 处理特定地区的 API 端点

媒体选择和格式提取

广播提取器通常需要处理复杂的媒体选择系统

来源:youtube_dl/extractor/bbc.py344-457 youtube_dl/extractor/nrk.py31-41

身份验证和令牌

许多广播服务需要身份验证或令牌才能访问内容

  1. 登录凭证处理
  2. 基于会话的身份验证
  3. 令牌生成和签名

主要广播媒体提取器

BBC

BBC 提取器处理 BBC 网站(包括 BBC iPlayer)上的内容。

关键组件

  • BBCCoUkIE:BBC iPlayer 的基础提取器
  • BBCIE:通用的 BBC 网站提取器

媒体选择过程

BBC 内容使用媒体选择服务来提供合适的格式

提取器尝试不同的媒体集以获得最佳质量

来源:youtube_dl/extractor/bbc.py40-197 youtube_dl/extractor/bbc.py595-743

NRK(挪威广播公司)

NRK 提取器处理挪威公共广播公司的内容,包括电视、广播和播客内容。

关键组件

  • NRKBaseIE:具有通用功能的基类提取器
  • NRKIE:NRK 内容的主要提取器
  • NRKTVSeriesIE, NRKTVSeasonIE:处理电视剧和季

API 交互

NRK 提取器使用 PSAPI REST API

来源:youtube_dl/extractor/nrk.py22-283 youtube_dl/extractor/nrk.py285-344

ABC(澳大利亚广播公司)

ABC 提取器处理澳大利亚公共广播公司的内容。

关键组件

  • ABCIE:处理一般 ABC 新闻内容
  • ABCIViewIE:专门针对 ABC iView 流媒体平台

令牌生成

ABC iView 使用 HMAC 身份验证来访问内容

来源:youtube_dl/extractor/abc.py21-103 youtube_dl/extractor/abc.py106-193

其他值得注意的广播提取器

西班牙广播媒体(Telecinco、Cuatro、Mitele)

  • TelecincoIE:西班牙媒体集团的基础提取器
  • MiTeleIE:专门用于 mitele.es 平台

来源:youtube_dl/extractor/telecinco.py16-151 youtube_dl/extractor/mitele.py11-85

Vbox7(保加利亚媒体平台)

  • Vbox7IE:处理保加利亚平台 vbox7.com 的内容
  • 具有保加利亚的地理限制功能

来源:youtube_dl/extractor/vbox7.py23-204

实施技术

处理多种媒体格式

广播媒体提取器通常需要处理多种格式类型(HLS、DASH、渐进式下载)

来源:youtube_dl/extractor/nrk.py31-41

地理限制内容的错误处理

为地理限制内容提供恰当的错误消息可以改善用户体验

来源:youtube_dl/extractor/nrk.py43-57

通用实用函数

媒体选择处理

许多广播提取器使用相似的模式来处理媒体选择

来源:youtube_dl/extractor/bbc.py365-456

总结

youtube-dl 中的广播媒体提取器处理国家和商业广播服务的独特挑战。它们实施了专门的技术来

  1. 处理每个广播公司的特定地理限制
  2. 使用复杂的 API 进行身份验证
  3. 处理多格式媒体选择
  4. 管理节目、系列和剧集的元数据

模块化架构允许共享功能,同时适应每个广播服务所需的独特要求。

来源:youtube_dl/extractor/bbc.py youtube_dl/extractor/nrk.py youtube_dl/extractor/abc.py youtube_dl/extractor/telecinco.py youtube_dl/extractor/mitele.py youtube_dl/extractor/vbox7.py