Swiftpack.co - omaralbeik/M3UKit as Swift Package

Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.
See all packages published by omaralbeik.
omaralbeik/M3UKit 0.8.0
Modern framework for parsing m3u files
⭐️ 27
🕓 2 weeks ago
.package(url: "https://github.com/omaralbeik/M3UKit.git", from: "0.8.0")

M3UKit

Modern framework for parsing m3u files.

CI codecov


Features

  • ☑ Parse playlists from a String, local file, or any URL.
  • ☑ Capable of parsing large playlists with hundreds of thousands of media items.
  • ☑ Sync/Async parsing.
  • ☑ Season/Episode number extraction for TV show media items.
  • ☑ Media kind extraction from URL path.

Usage

1. Create a parser

let parser = PlaylistParser()

2. Parse a playlist

The playlist parser can parse a playlist from any source that conforms to the protocol PlaylistSource, by default: String, and URL.

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

or

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

or

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 also supports asynchronous parsing with a completion handler or with the new async/await API

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

or

let playlist = try await parser.parse(url)

Schema

M3U exposes one model; Playlist, with the following schema:

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

Installation

Swift Package Manager

The Swift Package Manager is a tool for managing the distribution of Swift code.

  1. Add the following to your Package.swift file:
dependencies: [
    .package(url: "https://github.com/omaralbeik/M3UKit.git", from: "0.8.0")
]
  1. Build your project:
$ swift build

CocoaPods

To integrate M3UKit into your Xcode project using CocoaPods, specify it in your Podfile:

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

Carthage

To integrate M3UKit into your Xcode project using Carthage, specify it in your Cartfile:

github "omaralbeik/M3UKit" ~> 0.8.0

Manually

Add the Sources folder to your Xcode project.


Thanks

Special thanks to Bashar Ghadanfar for helping with the regex patterns used for parsing m3u files 👏


License

M3UKit is released under the MIT license. See LICENSE for more information.

GitHub

link
Stars: 27
Last commit: 2 weeks ago
jonrohan Something's broken? Yell at me @ptrpavlik. Praise and feedback (and money) is also welcome.

Related Packages

Release Notes

0.8.0
2 weeks ago

What's Changed

Full Changelog: https://github.com/omaralbeik/M3UKit/compare/0.7.0...0.8.0

Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics