M3UKit

用于解析 m3u 文件的现代框架。

CI codecov


特性

用法

1. 创建解析器

let parser = PlaylistParser()

2. 解析播放列表

播放列表解析器可以从任何符合 PlaylistSource 协议的源解析播放列表,默认支持:StringURL

let url = URL(string: "https://domain.com/link/to/m3u/file")
let playlist = try parser.parse(url)

let url = Bundle.main.url(forResource: "playlist", withExtension: "m3u")!
let playlist = try parser.parse(url)

let raw = """
#EXTM3U
#EXTINF:-1 tvg-id="DenHaagTV.nl",Den Haag TV (1080p)
http://wowza5.video-streams.nl:1935/denhaag/denhaag/playlist.m3u8
"""
let playlist = try parser.parse(raw)

M3UKit 也支持使用完成处理程序或新的 async/await API 进行异步解析

parser.parse(url) { result in
    switch result {
    case .success(let playlist):
        // consume playlist
    case .failure(let error):
        // handle error
    }
}

let playlist = try await parser.parse(url)

架构

M3U 公开一个模型;Playlist,具有以下架构

Playlist
└── medias
Media
├── duration
├── attributes
├── kind
├── name
└── url
Attributes
├── id (tvg-id)
├── name (tvg-name)
├── country (tvg-country)
├── language (tvg-language)
├── logo (tvg-logo)
├── channelNumber (tvg-chno)
├── shift (tvg-shift)
├── groupTitle (group-title)
├── seasonNumber
└── episodeNumber
Kind
├── movie
├── series
├── live
└── unknown

安装

Swift Package Manager

Swift Package Manager 是一个用于管理 Swift 代码分发的工具。

  1. 将以下内容添加到您的 Package.swift 文件中
dependencies: [
    .package(url: "https://github.com/omaralbeik/M3UKit.git", from: "0.8.1")
]
  1. 构建您的项目
$ swift build

CocoaPods

要使用 CocoaPods 将 M3UKit 集成到您的 Xcode 项目中,请在您的 Podfile 中指定它

pod 'M3UKit', :git => 'https://github.com/omaralbeik/M3UKit.git', :tag => '0.8.1'

Carthage

要使用 Carthage 将 M3UKit 集成到您的 Xcode 项目中,请在您的 Cartfile 中指定它

github "omaralbeik/M3UKit" ~> 0.8.1

手动

Sources 文件夹添加到您的 Xcode 项目。


致谢

特别感谢 Bashar Ghadanfar 协助提供用于解析 m3u 文件的正则表达式模式 👏


许可

M3UKit 在 MIT 许可下发布。有关更多信息,请参阅 LICENSE