Skip to content

KarlKraft/youtube-metadata-swift

This branch is up to date with ezefranca/youtube-metadata-swift:main.

Repository files navigation

youtube-metadata-swift Swift

Get YouTube metadata without YouTube API

youtube-metadata-swift is a Swift package and command-line tool for fetching metadata of YouTube videos.

Features

  • Fetch metadata for YouTube videos.
  • Display the title, author, and thumbnail URL of a video.
  • Command-line interface with usage instructions.

Installation

Swift Package

To use youtube-metadata-swift as a dependency in your Swift project, add the following to your Package.swift:

dependencies: [
    .package(url: "https://github.com/ezefranca/youtube-metadata-swift.git", from: "1.0.0")
],
targets: [
    .target(
        name: "YourTarget",
        dependencies: ["YTMetadataRequesterLib"]),
]

Command-Line Tool

To install the command-line tool, you can use the provided install.sh script:

  1. Clone the repository:

    git clone https://github.com/ezefranca/youtube-metadata-swift.git
    cd youtube-metadata-swift
  2. Run the install script:

    ./install.sh

This will build the tool and copy it to /usr/local/bin.

Usage

Command-Line Tool

To fetch metadata for a YouTube video, run:

ytmeta <YouTube URL>

How to get a video metadata from url

    func getMetadata() async {
        let vid = "https://youtu.be/TRqiFPpw2fY"
        let req = YTMetadataRequester()

        do {
            let metadata = try await req.getMetadata(for: vid)
            print("Title: \(metadata.title)")
        } catch {
            print("Failed to fetch metadata: \(error.localizedDescription)")
        }
    }

Response

{
  title: 'Foo Fighters - The Sky Is A Neighborhood (Official Music Video)',
  author_name: 'foofightersVEVO',
  author_url: 'https://www.youtube.com/user/foofightersVEVO',
  type: 'video',
  height: 113,
  width: 200,
  version: '1.0',
  provider_name: 'YouTube',
  provider_url: 'https://www.youtube.com/',
  thumbnail_height: 360,
  thumbnail_width: 480,
  thumbnail_url: 'https://i.ytimg.com/vi/TRqiFPpw2fY/hqdefault.jpg',
  html: '<iframe width="200" height="113" src="https://www.youtube.com/embed/TRqiFPpw2fY?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>'
}
// MARK: -Metadata
struct Metadata: Codable {
    let authorName: String
    let authorURL: String
    let height: Int
    let html, providerName: String
    let providerURL: String
    let thumbnailHeight: Int
    let thumbnailURL: String
    let thumbnailWidth: Int
    let title, type, version: String
    let width: Int
}

Related

A npm module with the same purpose

License

This project is provided for educational purposes only. It is not affiliated with and has not been approved by Youtube.

About

πŸ‘» Get YouTube metadata without YouTube API

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Swift 95.3%
  • Shell 4.7%