musicou-kit

Musicou-kit is an API wrapper for Youtube Music, SoundCloud and Bandcamp. It's fairly straight forward to use and easy to implement into other applications.

Current state

This crate is still experimental & WIP and will significantly change in the future. It has very messy code and some bugs and only support one(1) platform for now..

Examples

Search with a query and get the first artist and fetch its data.

```rust

[tokio::main]

async fn main() { env_logger::init(); // logs stuff // crating search with query and defining platform let mut search = Search::new("the weeknd" structs::Platform::Youtube) .fetch(structs::Page::Artist) // fetching a certain page .await;

// fetching all data for first artist in search results
print!(" {:?}, ", search.unwrap().artists.unwrap()[0].fetch().await)
// Ok(Artist { id: "UClYV6hHlupm_S_ObS1W-DYw", name: "The Weeknd", platform: Youtube, thumbnails: [Thumbnail { url: ".....", width: 540, height: 225 }], background: [], incomplete: true, followers: 33000000 }

} ```

Getting song data from id

```rust

[tokio::main]

async fn main() { envlogger::init(); // logs stuff let song = Song::fromid("diW6jXhLE0E").fetch().await; println!("{:?}", song.unwrap()); // Song { id: "", title: "The Weeknd - Party Monster (Official Video)", length: 258, author: Artist { id: "", name: "", platform: Youtube, thumbnails: [], background: [], incomplete: true, followers: 0, privatefield: "" }, thumbnails: [Thumbnail { url: "https://i.ytimg.com/.....", width: 400, height: 225 } ... ], viewcount: 154341745, streams: Some([Stream { url: "https://rr3---....", bitrate: "130477", mimetype: "audio/mp4; codecs="mp4a.40.2" } ]), album: None, typeof: Youtube, incomplete: false} } ```

Roadmap

Thanks <3!

Youtube internal api research