// Package yandexmusic provides the public API for the Yandex Music Go client. // It re-exports types and functions from the internal packages for convenient use. package yandexmusic import ( "gitea.mrixs.me/Mrixs/yandex-music-api-go/internal/client" "gitea.mrixs.me/Mrixs/yandex-music-api-go/internal/models" "gitea.mrixs.me/Mrixs/yandex-music-api-go/internal/utils" "gitea.mrixs.me/Mrixs/yandex-music-api-go/internal/ynison" ) // ClientConfig holds configuration for the Client. type ClientConfig = client.ClientConfig // Client is the main Yandex Music API client. type Client = client.Client // NewClient creates a new Yandex Music client with the given configuration. func NewClient(config ClientConfig) *Client { return client.NewClient(config) } // Request is the HTTP request handler. type Request = client.Request // DeviceCode represents the device authorization response. type DeviceCode = client.DeviceCode // OAuthToken represents an OAuth token response. type OAuthToken = client.OAuthToken // Status represents account status. type Status = client.Status // Account represents a user account. type Account = client.Account // Track represents a music track. type Track = models.Track // Artist represents an artist. type Artist = models.Artist // Album represents an album. type Album = models.Album // Playlist represents a playlist. type Playlist = models.Playlist // User represents a user. type User = models.User // DownloadInfo represents file download info. type DownloadInfo = models.DownloadInfo // SupplementLyrics represents lyrics content from supplement. type SupplementLyrics = models.SupplementLyrics // Major represents major label info. type Major = models.Major // Label represents a label. type Label = models.Label // Availability represents availability info. type Availability = models.Availability // Upsell represents upsell info. type Upsell = models.Upsell // AlbumMeta represents album metadata. type AlbumMeta = models.AlbumMeta // Best represents best tracks info. type Best = models.Best // Ratings represents artist ratings. type Ratings = models.Ratings // Counts represents artist counts. type Counts = models.Counts // TrackShort represents a lightweight track. type TrackShort = models.TrackShort // TracksList represents a list of tracks with metadata. type TracksList = models.TracksList // Pager represents pagination info. type Pager = models.Pager // TrackPosition represents track position. type TrackPosition = models.TrackPosition // TrailerInfo represents trailer info. type TrailerInfo = models.TrailerInfo // Cover represents cover image info. type Cover = models.Cover // ArtistBriefInfo represents brief artist info. type ArtistBriefInfo = models.ArtistBriefInfo // ArtistDonations represents artist donations info. type ArtistDonations = models.ArtistDonations // DonationItem represents a donation item. type DonationItem = models.DonationItem // Concert represents a concert (minimal). type Concert = models.Concert // Clip represents a clip (short video). type Clip = models.Clip // SearchResult represents search results. type SearchResult = models.SearchResult // SearchTracksResult represents track search results. type SearchTracksResult = models.SearchTracksResult // SearchAlbumsResult represents album search results. type SearchAlbumsResult = models.SearchAlbumsResult // SearchArtistsResult represents artist search results. type SearchArtistsResult = models.SearchArtistsResult // SearchPlaylistsResult represents playlist search results. type SearchPlaylistsResult = models.SearchPlaylistsResult // SearchVideosResult represents video search results. type SearchVideosResult = models.SearchVideosResult // SearchUsersResult represents user search results. type SearchUsersResult = models.SearchUsersResult // SearchBanner represents a search banner. type SearchBanner = models.SearchBanner // Tag represents a search tag. type Tag = models.Tag // Video represents a video. type Video = models.Video // ChartInfoMenu represents a chart info menu. type ChartInfoMenu = models.ChartInfoMenu // ChartInfoMenuItem represents a chart info menu item. type ChartInfoMenuItem = models.ChartInfoMenuItem // ChartItems represents chart items response. type ChartItems = models.ChartItems // AccountSettings represents account settings. type AccountSettings = models.AccountSettings // Subscription represents subscription info. type Subscription = models.Subscription // PlusInfo represents Plus subscription info. type PlusInfo = models.PlusInfo // PromoCodeStatus represents promo code status. type PromoCodeStatus = models.PromoCodeStatus // Queue represents a playback queue. type Queue = models.Queue // QueueItem represents a queue item. type QueueItem = models.QueueItem // PlayContext represents a play context. type PlayContext = models.PlayContext // PlayContextsData represents play contexts data. type PlayContextsData = models.PlayContextsData // Feed represents the main feed. type Feed = models.Feed // Day represents a day in the feed. type Day = models.Day // DayBlock represents a block in a day. type DayBlock = models.DayBlock // DayBlockData represents data in a day block. type DayBlockData = models.DayBlockData // GeneratedPlaylist represents a generated playlist. type GeneratedPlaylist = models.GeneratedPlaylist // Event represents a feed event. type Event = models.Event // AlbumEvent represents an album event. type AlbumEvent = models.AlbumEvent // ArtistEvent represents an artist event. type ArtistEvent = models.ArtistEvent // TrackWithAds represents a track with ads. type TrackWithAds = models.TrackWithAds // Ad represents an ad. type Ad = models.Ad // AdParams represents ad parameters. type AdParams = models.AdParams // Landing represents a landing page. type Landing = models.Landing // LandingBlock represents a block in a landing. type LandingBlock = models.LandingBlock // LandingBlockData represents data in a landing block. type LandingBlockData = models.LandingBlockData // LandingList represents a list of landings. type LandingList = models.LandingList // LyricsInfo represents lyrics information. type LyricsInfo = models.LyricsInfo // VideoSupplement represents video supplement. type VideoSupplement = models.VideoSupplement // Supplement represents track supplement. type Supplement = models.Supplement // LyricsMajor represents a lyrics provider (e.g., Genius, Musixmatch). type LyricsMajor = models.LyricsMajor // TrackLyrics represents lyrics information from /tracks/{id}/lyrics endpoint. type TrackLyrics = models.TrackLyrics // Credits represents track credits. type Credits = models.Credits // Credit represents a credit item. type Credit = models.Credit // ArtistTracks represents a page of tracks by an artist. type ArtistTracks = models.ArtistTracks // ArtistAlbums represents a page of albums by an artist. type ArtistAlbums = models.ArtistAlbums // RadioStation represents a radio station. type RadioStation = models.RadioStation // StationTracksResult represents station tracks result. type StationTracksResult = models.StationTracksResult // RotorStation represents a rotor (generative) station. type RotorStation = models.RotorStation // RotorSettings represents rotor station settings. type RotorSettings = models.RotorSettings // RotorStationTracksResult represents rotor station tracks result. type RotorStationTracksResult = models.RotorStationTracksResult // RotorSession represents a rotor session. type RotorSession = models.RotorSession // SessionFeedback represents session feedback. type SessionFeedback = models.SessionFeedback // SessionFeedbacks represents multiple session feedbacks. type SessionFeedbacks = models.SessionFeedbacks // Experiments represents experiments. type Experiments = models.Experiments // ExperimentDetail represents experiment details. type ExperimentDetail = models.ExperimentDetail // Permissions represents user permissions. type Permissions = models.Permissions // PermissionAlerts represents permission alerts. type PermissionAlerts = models.PermissionAlerts // PermissionAlert represents a permission alert. type PermissionAlert = models.PermissionAlert // ContentRestrictions represents content restrictions. type ContentRestrictions = models.ContentRestrictions // JSONBackend defines the interface for JSON encoding/decoding. type JSONBackend = utils.JSONBackend // GetDefaultJSONBackend returns the default JSON backend. func GetDefaultJSONBackend() JSONBackend { return utils.GetDefaultJSONBackend() } // SchemaMismatchConfig holds configuration for schema mismatch handling. type SchemaMismatchConfig = utils.SchemaMismatchConfig // DefaultSchemaMismatchConfig returns the default configuration. func DefaultSchemaMismatchConfig() SchemaMismatchConfig { return utils.DefaultSchemaMismatchConfig() } // SchemaMismatchHandler is a callback for handling schema mismatches. type SchemaMismatchHandler = utils.SchemaMismatchHandler // SchemaMismatch represents a mismatch between expected and actual API response. type SchemaMismatch = utils.SchemaMismatch // YnisonClient represents a Ynison WebSocket client. type YnisonClient = ynison.YnisonClient // DeviceConfig holds device configuration for Ynison. type DeviceConfig = ynison.DeviceConfig // Example usage: // // client := yandexmusic.NewClient(yandexmusic.ClientConfig{ // Token: "your-oauth-token", // Language: "en", // }) // // ctx := context.Background() // if err := client.Init(ctx); err != nil { // log.Fatal(err) // } // // // Get liked tracks // tracks, err := client.GetLikedTracks(ctx) // if err != nil { // log.Fatal(err) // } // // for _, track := range tracks { // fmt.Println(track.Title, "-", track.Artists[0].Name) // } // // // Search for tracks // results, err := client.SearchTracks(ctx, "Daft Punk", 10) // if err != nil { // log.Fatal(err) // } // // // Download a track // if len(tracks) > 0 { // data, err := client.DownloadTrack(ctx, tracks[0].ID, "mp3", 320) // if err != nil { // log.Fatal(err) // } // os.WriteFile("track.mp3", data, 0644) // }