Skip to content

A Kotlin Multiplatform library for (unofficially) using the YouTube Music API, optionally with user authentication.

License

Notifications You must be signed in to change notification settings

toasterofbread/ytm-kt

Repository files navigation

ytm-kt

A Kotlin Multiplatform library for (unofficially) using the YouTube Music API, optionally with user authentication. This library was originally a part of SpMp.

Setup

ytm-kt currently supports the following Kotlin targets:

  • Android
  • JVM (Desktop)
  • Linux x86_64
  • Linux arm64
  • Windows x86_64
  • Wasm

Gradle:

  1. Add the Maven Central repository to your dependency resolution configuration
repositories {
  mavenCentral()
}
  1. Add the ytm-kt library dependency (replace <version> with the desired ytm-kt version)
implementation("dev.toastbits.ytmkt:ytmkt:<version>")

Usage

API endpoints are accessed through the YtmApi interface. To use this interface, either implement it yourself or use one of the built-in implementations:

Example usage

// Initialise the Youtubei api implementation
val api: YtmApi =
    YoutubeiApi(
        data_language = "en-GB" // The language we want data (such as song names) to be in
    )

// Download the home page recommendations feed
val song_feed_result: Result<SongFeedLoadResult> = api.SongFeed.getSongFeed()

// Print feed row titles in our desired language
for (layout in song_feed_result.getOrThrow().layouts) {
  val title_text: String = layout.title.getString("en-GB") // The language we want UI strings to be in
  println("Layout $title_text has ${layout.items.size} items")
}

See the sample application for a more detailed example

Documentation

TODO