Documentation ¶
Index ¶
- Constants
- Variables
- func ParamsToValues(s any) (url.Values, error)
- type Account
- type AccountPermissions
- type AccountSettings
- type AddPlaylistTracksRequestBody
- type Album
- type AlbumIdRequestBody
- type AlbumIdsRequestBody
- type AlbumMetaType
- type AlbumShort
- type Artist
- type ArtistAlbumsPaged
- type ArtistBriefInfo
- type ArtistIdsRequestBody
- type ArtistTopTracks
- type ArtistTracksPaged
- type Best
- type Cover
- type CoverType
- type CreatePlaylistRequestBody
- type DeletePlaylistTracksRequestBody
- type ErrWithStatusCode
- type Error
- type GetTracksByIdsRequestBody
- type GetUserPlaylistsQueryParams
- type ID
- type InvocationInfo
- type KindOwnerUidRequestBody
- type Label
- type Lyrics
- type Owner
- type Pager
- type Playlist
- type PlaylistAddTracksOperation
- type PlaylistDeleteTracksOperation
- type PlaylistId
- type PlaylistRecommendations
- type PlaylistsIdsRequestBody
- type Plus
- type R128
- type Response
- type ResponseLikedPlaylist
- type Search
- type SearchQueryParams
- type SearchResult
- type SearchSuggestQueryParams
- type SearchType
- type SimilarTracks
- type SortBy
- type SortOrder
- type Status
- type Subscription
- type Suggestions
- type Supplement
- type Theme
- type Track
- type TrackDownloadInfo
- type TrackIdRequestBody
- type TrackIdsRequestBody
- type TrackItem
- type TrackShort
- type TrackSource
- type TracksLibrary
- type Visibility
Constants ¶
const (
ApiUrl = "https://api.music.yandex.net"
)
Variables ¶
Functions ¶
Types ¶
type Account ¶
type Account struct { // Текущая дата и время // // example: 2021-03-17T18:13:40+00:00. Now string `json:"now"` // Уникальный идентификатор. UID ID `json:"uid"` // Виртуальное имя (обычно e-mail). Login string `json:"login"` // Полное имя (имя и фамилия). FullName string `json:"fullName"` // Фамилия. SecondName string `json:"secondName"` // Имя. FirstName string `json:"firstName"` // Отображаемое имя. DisplayName string `json:"displayName"` // Доступен ли сервис. ServiceAvailable bool `json:"serviceAvailable"` // Является ли пользователем чьим-то другим. HostedUser bool `json:"hostedUser"` // Мобильные номера. PassportPhones []struct { Phone string `json:"phone"` } `json:"passport-phones"` Child bool `json:"child"` NonOwnerFamilyMember bool `json:"nonOwnerFamilyMember"` }
Аккаунт пользователя.
Некоторые поля могут (не) быть доступны. Зависит от запроса.
type AccountPermissions ¶ added in v0.2.3
type AccountSettings ¶
type AccountSettings struct { // ID. UID ID `json:"uid" url:"-"` // Включен ли скробблинг last.fm? LastFmScrobblingEnabled bool `json:"lastFmScrobblingEnabled" url:"lastFmScrobblingEnabled,omitempty"` FacebookScrobblingEnabled bool `json:"facebookScrobblingEnabled" url:"lastFmScrobblingEnabled,omitempty"` // (?) Включено ли рандомное воспроизведение треков? ShuffleEnabled bool `json:"shuffleEnabled" url:"shuffleEnabled,omitempty"` // Добавлять новый трек в начало плейлиста? AddNewTrackOnPlaylistTop bool `json:"addNewTrackOnPlaylistTop" url:"addNewTrackOnPlaylistTop,omitempty"` // Громкость в процентах (example: 75). VolumePercents int `json:"volumePercents" url:"volumePercents,omitempty"` // Видимость музыкальной библиотеки. UserMusicVisibility Visibility `json:"userMusicVisibility" url:"userMusicVisibility,omitempty"` // ??? UserSocialVisibility Visibility `json:"userSocialVisibility" url:"userSocialVisibility,omitempty"` AdsDisabled bool `json:"adsDisabled" url:"adsDisabled,omitempty"` // example: 2019-04-14T14:55:50+00:00 Modified string `json:"modified" url:"-"` RbtDisabled bool `json:"rbtDisabled" url:"-"` // Тема оформления. Theme Theme `json:"theme" url:"theme,omitempty"` AutoPlayRadio bool `json:"autoPlayRadio" url:"autoPlayRadio,omitempty"` SyncQueueEnabled bool `json:"syncQueueEnabled" url:"syncQueueEnabled,omitempty"` }
Настройки пользователя.
type AddPlaylistTracksRequestBody ¶ added in v0.4.2
type AddPlaylistTracksRequestBody struct { Revision ID `url:"revision"` Diff string `url:"diff"` // contains filtered or unexported fields }
POST /users/{userId}/playlists/{kind}/change-relative
POST /users/{userId}/playlists/{kind}/change
func NewAddPlaylistTracksRequestBody ¶ added in v0.4.2
func NewAddPlaylistTracksRequestBody(pl Playlist) AddPlaylistTracksRequestBody
func (*AddPlaylistTracksRequestBody) AddTracks ¶ added in v0.4.2
func (a *AddPlaylistTracksRequestBody) AddTracks(item []Track)
func (*AddPlaylistTracksRequestBody) ParamsToValues ¶ added in v0.4.2
func (a *AddPlaylistTracksRequestBody) ParamsToValues() (url.Values, error)
type Album ¶
type Album struct { // Идентификатор альбома. ID ID `json:"id"` // Название альбома. Title string `json:"title"` // Тип альбома. MetaType AlbumMetaType `json:"metaType"` // Год релиза. Year int `json:"year"` // Дата релиза в формате ISO 8601. ReleaseDate time.Time `json:"releaseDate"` // Ссылка на обложку. CoverURI string `json:"coverUri"` // Ссылка на превью Open Graph. OgImage string `json:"ogImage"` // Жанр музыки. Genre string `json:"genre"` // Количество треков. TrackCount int `json:"trackCount"` // Количество лайков. LikesCount int `json:"likesCount"` // Является новинкой. Recent bool `json:"recent"` // Является важным. VeryImportant bool `json:"veryImportant"` // Исполнители альбома, в минимальной информации. Artists []Artist `json:"artists"` // Лейблы. // // Может быть как слайсом строк с названиями, так и слайсом структур Label. // // (?) Слайсы строк используются при поиске, а слайсы структур в остальных случаях. Labels []any `json:"labels"` // Доступен ли альбом. Available bool `json:"available"` // Доступен ли альбом для пользователей с подпиской. AvailableForPremiumUsers bool `json:"availableForPremiumUsers"` AvailableForOptions []string `json:"availableForOptions"` // Доступен ли альбом из приложения для телефона. AvailableForMobile bool `json:"availableForMobile"` // Доступен ли альбом частично для пользователей без подписки. AvailablePartially bool `json:"availablePartially"` // ID лучших треков альбома. Bests []ID `json:"bests"` // Ремиксы, и прочее. Не пуст, например когда запрашивается альбом с треками. Duplicates []Album `json:"duplicates"` StorageDir string `json:"storageDir"` TrackPosition struct { Volume int `json:"volume"` Index int `json:"index"` } `json:"trackPosition"` Regions []string `json:"regions"` AvailableRegions []interface{} `json:"availableRegions"` // например: "Remix". Version string `json:"version"` // Треки альбома, разделенные по дискам. Volumes [][]Track `json:"volumes"` }
Альбом.
type AlbumIdRequestBody ¶ added in v0.3.4
type AlbumIdRequestBody struct { // ID альбома. AlbumId ID `url:"album-id"` }
POST /users/{userId}/likes/albums/add
type AlbumIdsRequestBody ¶ added in v0.3.4
type AlbumIdsRequestBody struct { // ID альбомов. AlbumIds []ID `url:",albumIds"` }
POST /users/{userId}/likes/albums/add-multiple
POST /users/{userId}/likes/albums/remove
func (*AlbumIdsRequestBody) SetIds ¶ added in v0.3.4
func (l *AlbumIdsRequestBody) SetIds(ids ...ID)
type AlbumMetaType ¶ added in v0.4.8
type AlbumMetaType string
Тип альбома.
const ( AlbumMetaTypeSingle AlbumMetaType = "single" AlbumMetaTypePodcast AlbumMetaType = "podcast" AlbumMetaTypeMusic AlbumMetaType = "music" AlbumMetaTypeRemix AlbumMetaType = "remix" )
type AlbumShort ¶ added in v0.2.2
type Artist ¶
type Artist struct { ID ID `json:"id"` // Имя. Name string `json:"name"` // Исполнитель относится к категории сборник. Various bool `json:"various"` // Исполнитель является композитором. Composer bool `json:"composer"` // Фото. Cover *Cover `json:"cover"` // По сути дублирует Cover.URI. OgImage *string `json:"ogImage"` // Жанры исполнителя. Genres []string `json:"genres"` // Количество разных вещей. Counts *struct { // Общее количество треков исполнителя, доступных в каталоге ЯМ. Tracks int `json:"tracks"` // Количество собственных альбомов. DirectAlbums int `json:"directAlbums"` // Количество альбомов, где представлен исполнитель. AlsoAlbums int `json:"alsoAlbums"` // Количество треков, где представлен исполнитель. AlsoTracks int `json:"alsoTracks"` } `json:"counts"` // Треки исполнителя доступны? Available bool `json:"available"` // Рейтинги исполнителя. Ratings *struct { // За месяц. Month int `json:"month"` // За неделю. Week *int `json:"week"` // За день. Day *int `json:"day"` } `json:"ratings"` // Список ссылок на сайты исполнителя. Links []struct { // Заголовок ссылки. Title string `json:"title"` // Сама ссылка. YouTube, Twitter, персональный сайт, etc. Href string `json:"href"` // social | official Type string `json:"type"` // twitter | youtube | vk | telegram. Может быть nil, когда Type == official. SocialNetwork *string `json:"socialNetwork"` } `json:"links"` // Доступны билеты на концерт? TicketsAvailable *bool `json:"ticketsAvailable"` }
Артист.
Много полей могут быть nil. Например, когда Artist находится в составе Track.
type ArtistAlbumsPaged ¶ added in v0.2.3
type ArtistAlbumsPaged struct { Pager Pager `json:"pager"` Albums []Album `json:"albums"` }
type ArtistBriefInfo ¶ added in v0.2.3
type ArtistBriefInfo struct { Artist *struct { Artist // Количество слушателей, оценивших исполнителя. LikesCount int `json:"likesCount"` // Описание. Description struct { // Об артисте. Text string `json:"text"` // Ссылка на источник. Например, на Википедию. URI string `json:"uri"` } `json:"description"` // Откуда артист? Пример: ["Франция"]. Countries []string `json:"countries"` // Год начала карьеры. InitDate string `json:"initDate"` // Год конца карьеры. EndDate string `json:"endDate"` // Ссылка на страницу артиста в английской Википедии. EnWikipediaLink string `json:"enWikipediaLink"` // Список вариантов ввода имени исполнителя в поисковой строке // // (для облегчения поиска музыки на смартфоне в режиме офлайн). // // Пример: ["Daft punk", "Дафт Панк", "duft pank", "ダフトパンク"] DbAliases []string `json:"dbAliases"` } `json:"artist"` // Собственные альбомы исполнителя (где он указан исполнителем), в базовой информации. Albums []Album `json:"albums"` // Альбомы, где представлен исполнитель (где он указан исполнителем), в базовой информации. AlsoAlbums []Album `json:"alsoAlbums"` // Популярные треки, в базовой информации. PopularTracks []Track `json:"popularTracks"` // Похожие (по стилю) исполнители, в базовой информации. SimilarArtists []Artist `json:"similarArtists"` // Все изображения исполнителя. AllCovers []Cover `json:"allCovers"` Stats struct { LastMonthListeners int `json:"lastMonthListeners"` } `json:"stats"` CustomWave struct { Title string `json:"title"` AnimationURL string `json:"animationUrl"` } `json:"customWave"` PlaylistIds []struct { UID ID `json:"uid"` Kind ID `json:"kind"` } `json:"playlistIds"` Playlists []Playlist `json:"playlists"` }
type ArtistIdsRequestBody ¶ added in v0.3.4
type ArtistIdsRequestBody struct { // ID альбомов. ArtistIds []ID `url:",artistIds"` }
POST /users/{userId}/likes/artists/add-multiple
POST /users/{userId}/likes/artists/remove
func (*ArtistIdsRequestBody) SetIds ¶ added in v0.3.4
func (l *ArtistIdsRequestBody) SetIds(ids ...ID)
type ArtistTopTracks ¶ added in v0.2.3
type ArtistTracksPaged ¶ added in v0.2.3
type ArtistTracksPaged struct { Pager Pager `json:"pager"` Tracks []Track `json:"tracks"` }
type Best ¶
type Best struct { // Тип лучшего результата Type SearchType `json:"type"` Text string `json:"text"` // Может быть nil. // // Для удобства используйте поля Track, Artist, и так далее. // Это тот же Result. Result any `json:"result"` // Лучший трек. Track *Track `json:"-"` // Лучший артист. Artist *Artist `json:"-"` // Лучший альбом. Album *Album `json:"-"` // Лучший плейлист. Playlist *Playlist `json:"-"` }
Лучший результат поиска
func (*Best) UnmarshalJSON ¶ added in v0.4.0
type Cover ¶
type Cover struct { // Если не пуста, значит остальные поля структуры будут пусты. // // Пример: "cover doesn't exist". Error string `json:"error"` // (?) Пользовательская обложка? Custom bool `json:"custom"` // Тип обложки. Type CoverType `json:"type"` // Пример: "7d7e16a0.p.ЕЩЁ_КАКОЙ_ТО_ID/" Prefix string `json:"prefix"` // Не пуста когда поле type = "pic". Dir string `json:"dir"` // Существует когда поле type == mosaic. // // Видимо здесь находятся ссылки на изображения используемые для создания мозайки. Например ссылки на обложки треков. ItemsUri []string `json:"itemsUri"` // Существует, когда поле Type не mosaic. // // пример: "avatars.yandex.net/get-music-content/КАКОЙ_ТО_ID/7d7e16a0.p.ЕЩЁ_КАКОЙ_ТО_ID/%%" URI string `json:"uri"` // ???. Version string `json:"version"` }
type CoverType ¶ added in v0.4.0
type CoverType string
const ( // Своя картинка. Например вы создали плейлист, и на обложку установили свою картинку. CoverTypePic CoverType = "pic" // Например когда плейлист без обложки, то в качестве обложки используется коллаж из четырех обложек первых треков. CoverTypeMosaic CoverType = "mosaic" // Когда у артиста есть официальное фото в профиле ЯМ. Используется на странице профиля артиста. CoverTypeFromArtistPhotos CoverType = "from-artist-photos" // Когда у артиста нет официального фото в профиле ЯМ, то в качестве фото артиста используется обложка одного из альбомов. // Используется на странице профиля артиста. CoverTypeFromAlbumCover CoverType = "from-album-cover" )
type CreatePlaylistRequestBody ¶
type CreatePlaylistRequestBody struct { // Название. Title string `url:"title"` // Видимость. Visibility Visibility `url:"visibility"` // Описание. Description string `url:"description"` }
POST /users/{userId}/playlists/create
type DeletePlaylistTracksRequestBody ¶ added in v0.4.2
type DeletePlaylistTracksRequestBody struct { Kind ID `url:"kind"` Revision ID `url:"revision"` Diff string `url:"diff"` // contains filtered or unexported fields }
func NewDeletePlaylistTracksRequestBody ¶ added in v0.4.2
func NewDeletePlaylistTracksRequestBody(pl Playlist) DeletePlaylistTracksRequestBody
func (*DeletePlaylistTracksRequestBody) AddTrack ¶ added in v0.4.2
func (d *DeletePlaylistTracksRequestBody) AddTrack(item TrackItem)
func (*DeletePlaylistTracksRequestBody) ParamsToValues ¶ added in v0.4.2
func (d *DeletePlaylistTracksRequestBody) ParamsToValues() (url.Values, error)
type ErrWithStatusCode ¶ added in v0.4.8
type ErrWithStatusCode struct {
StatusCode int
}
func NewErrWithStatusCode ¶ added in v0.4.8
func NewErrWithStatusCode(statusCode int) ErrWithStatusCode
func (ErrWithStatusCode) Error ¶ added in v0.4.8
func (e ErrWithStatusCode) Error() string
type Error ¶
type Error struct { // Например: validate. Name string `json:"name"` // Например: Parameters requirements are not met. Message string `json:"message"` }
Ошибка. Например ошибка валидации.
func (Error) IsNotFound ¶ added in v0.4.9
Вероятно если ID валидный (см. IsValidate), то в каких-то случаях может быть и ошибка not found.
func (Error) IsSessionExpired ¶ added in v0.4.8
Нужно обновить access token.
func (Error) IsValidate ¶ added in v0.4.8
Ошибка валидации может быть в этих случаях:
1. Изменилось API.
2. Я допустил ошибку.
3. Неверные данные в теле запроса. Например вы пытаетесь получить артиста с ID "-1", "0" и так далее. Хотя в таких случаях нужно отдавать 404, но имеем что имеем.
type GetTracksByIdsRequestBody ¶
type GetTracksByIdsRequestBody struct { // ID треков. TrackIds []ID `url:",track-ids"` // С позициями? WithPositions bool `url:"with-positions"` }
POST /tracks
type GetUserPlaylistsQueryParams ¶
type GetUserPlaylistsQueryParams struct { // like 1000,1003 Kinds []string `url:",kinds"` Mixed bool `url:"mixed"` RichTracks bool `url:"rich-tracks"` }
GET /users/{userId}/playlists
type InvocationInfo ¶
type InvocationInfo struct { // Адрес какого-то сервера Яндекс.Музыки. Hostname string `json:"hostname"` // ID запроса. ReqID string `json:"req-id"` // (?) Время выполнения запроса в миллисекундах. // // string | int ExecDurationMillis any `json:"exec-duration-millis"` }
Что-то техническое.
type KindOwnerUidRequestBody ¶ added in v0.3.4
type KindOwnerUidRequestBody struct { // Kind плейлиста. Kind ID `url:"kind"` // UID владельца плейлиста. OwnerUid ID `url:"owner-uid"` }
POST /users/{userId}/likes/playlists/add
type Lyrics ¶
type Lyrics struct { // Уникальный идентификатор текста трека. ID ID `json:"id"` // Первые строки текст песни. Lyrics string `json:"lyrics"` // Есть ли права. HasRights bool `json:"hasRights"` // Текст песни. FullLyrics string `json:"fullLyrics"` // Язык текста. TextLanguage string `json:"textLanguage"` // Доступен ли перевод. ShowTranslation bool `json:"showTranslation"` // Ссылка на источник перевода. Url string `json:"url"` }
Текст трека.
type Owner ¶
type Owner struct { // id. UID ID `json:"uid"` // Логин. Login string `json:"login"` // Имя. Name string `json:"name"` // Пол. Sex string `json:"sex"` // (?) Плейлист от редакции. Verified bool `json:"verified"` }
Владелец. Владелец плейлиста, например.
type Pager ¶ added in v0.2.3
type Pager struct { // Текущая страница. Page int `json:"page"` // Сколько элементов на странице. // // Обратите внимание: // // Допустим вы отправили запрос с perPage = 20. // // Вам пришел ответ с этой структурой (Pager). И вот это поле (PerPage) // может не быть равным 20. Такое может быть когда элементов чуть больше чем perPage. // // Например вы указали perPage = 20, и пришел ответ, где Total равен 22. // В таком случае это поле (PerPage) будет равно 22. PerPage int `json:"perPage"` // Общее кол-во элементов. Total int `json:"total"` }
Информация о страницах.
type Playlist ¶
type Playlist struct { // Владелец плейлиста. Owner Owner `json:"owner"` // UID владельца плейлиста. UID ID `json:"uid"` // UUID. PlaylistUuid string `json:"playlistUuid"` // Уникальный идентификатор плейлиста. // // Обычно используется для операций над плейлистом. Kind ID `json:"kind"` // Название. Title string `json:"title"` // Описание. Description string `json:"description"` DescriptionFormatted string `json:"descriptionFormatted,omitempty"` // Что-то типа версии плейлиста. // Если плейлист изменился: добавили/удалили треки, // то Revision прибавляется на 1. // // Может быть пуст, если плейлист не создан вами(?). Revision ID `json:"revision"` Available bool `json:"available"` // Совместный плейлист? Collective bool `json:"collective"` // Обложка. Cover Cover `json:"cover"` // Дата создания. Created time.Time `json:"created"` // Дата изменения. Modified time.Time `json:"modified"` // Общая длина в миллисекундах. DurationMs int `json:"durationMs"` OgImage string `json:"ogImage"` // Количество треков. TrackCount int `json:"trackCount"` // Количество лайков. LikesCount int `json:"likesCount"` // Видимость. Visibility Visibility `json:"visibility"` // Треки. // // Может быть пустым. Зависит от метода, который вернул эту структуру. Tracks []TrackItem `json:"tracks"` }
type PlaylistAddTracksOperation ¶ added in v0.4.2
type PlaylistDeleteTracksOperation ¶ added in v0.4.2
type PlaylistId ¶
type PlaylistRecommendations ¶
type PlaylistRecommendations struct { // Уникальный идентификатор партии треков BatchId string `json:"batch_id"` // Треки. Tracks []Track `json:"tracks"` }
Рекомендации для плейлиста
type PlaylistsIdsRequestBody ¶ added in v0.2.2
type PlaylistsIdsRequestBody struct { // uid владельца плейлиста и kind плейлиста через двоеточие и запятую. // // "123:9482", "999:8888". PlaylistIds []string `url:",playlistIds"` }
POST /playlists/list
POST /users/{userId}/likes/playlists/add-multiple
func (*PlaylistsIdsRequestBody) Add ¶ added in v0.2.2
func (g *PlaylistsIdsRequestBody) Add(kind ID, uid ID)
Добавить в PlaylistIds.
owner - uid владелеца плейлиста
kind - kind плейлиста
func (*PlaylistsIdsRequestBody) AddMany ¶ added in v0.2.2
func (g *PlaylistsIdsRequestBody) AddMany(kindUid map[ID]ID)
Добавить в PlaylistIds.
map[kind плейлиста]uid_владельца
type Plus ¶ added in v0.2.3
type Plus struct { HasPlus bool `json:"hasPlus"` IsTutorialCompleted bool `json:"isTutorialCompleted"` Migrated bool `json:"migrated"` }
Информация о подписке Плюс.
type Response ¶ added in v0.2.3
type Response[T any] struct { // Информация о запросе. InvocationInfo InvocationInfo `json:"invocationInfo"` // Если не nil, то поле result будет nil. Error *Error `json:"error"` // Результат запроса. Result T `json:"result"` // Может быть при некоторых запросах. // Например при получении лайкнутых плейлистов. Pager *Pager `json:"pager"` }
Обычно ответ выглядит так.
type ResponseLikedPlaylist ¶ added in v0.3.4
type Search ¶
type Search struct { // По какому типу был выполнен поиск. // // Например: если тип поиска будет "artist", то // поля best, playlists, и подобные, будут пусты, кроме поля Artists. Type SearchType `json:"type"` // Текущая страница. Доступно при использовании параметра type. Page int `json:"page"` // Результатов на странице. Доступно при использовании параметра type. PerPage int `json:"perPage"` // Поисковой запрос (оригинальный или исправленный). Text string `json:"text"` // ID запроса. SearchRequestID string `json:"searchRequestId"` // Был ли исправлен запрос. Доступен при Type "all". MisspellCorrected bool `json:"misspellCorrected"` // Исправленный поисковой запрос. Не пуст, если запрос был исправлен. MisspellResult string `json:"misspellResult"` // Оригинальный поисковой запрос. Не пуст, если запрос был исправлен. MisspellOriginal string `json:"misspellOriginal"` // ID запроса. SearchResultID string `json:"searchResultId"` // Лучший результат. // // Не nil если Type == all. Best *Best `json:"best"` // Найденные треки. Tracks SearchResult[Track] `json:"tracks"` // Найденные альбомы. Albums SearchResult[Album] `json:"albums"` // Найденные артисты. Artists SearchResult[Artist] `json:"artists"` // Найденные плейлисты. Playlists SearchResult[Playlist] `json:"playlists"` }
Результаты поиска.
type SearchQueryParams ¶
type SearchQueryParams struct { // Текст запроса. Text string `url:"text"` // Номер страницы. Page int `url:"page"` // Тип поиска (default = all). Type SearchType `url:"type"` // Исправлять опечатки? NoCorrect bool `url:"nocorrect"` }
GET /search
type SearchResult ¶
type SearchSuggestQueryParams ¶
type SearchSuggestQueryParams struct { // Часть поискового запроса. Part string `url:"part"` }
GET /search/suggest
type SearchType ¶
type SearchType string
Тип поиска.
const ( // Поиск артистов. SearchTypeArtist SearchType = "artist" // Поиск альбомов. SearchTypeAlbum SearchType = "album" // Поиск треков. SearchTypeTrack SearchType = "track" // Поиск подкастов. SearchTypePodcast SearchType = "podcast" // Поиск плейлистов. SearchTypePlaylist SearchType = "playlist" // Поиск видео. SearchTypeVideo SearchType = "video" // Поиск всего. SearchTypeAll SearchType = "all" )
type SimilarTracks ¶
type SimilarTracks struct { Track Track `json:"track"` // Похожие треки. // // Может быть пуст, если изначальный трек не популярен(?). SimilarTracks []Track `json:"similarTracks"` }
Список похожих треков на другой трек.
type Status ¶
type Status struct { Account Account `json:"account"` Subscription Subscription `json:"subscription"` }
type Subscription ¶
type Subscription struct {
HadAnySubscription bool `json:"hadAnySubscription"`
}
Информация о подписках пользователя
type Suggestions ¶
type Suggestions struct { // Лучший результат. // // Альбом, артист, плейлист, видео, и так далее. Best Best `json:"best"` // Предложения на основе запроса. // // Например, запрос: "emine" // // Suggestions будут примерно такие: // // ["eminem", "mount eminest", "eminen", "eminem - encore"], и так далее. Suggestions []string `json:"suggestions"` }
Поисковая подсказка.
type Supplement ¶
type Supplement struct { // Уникальный идентификатор дополнительной информации. ID string `json:"id"` // Текст. Lyrics Lyrics `json:"lyrics"` // Станция по треку доступна? RadioIsAvailable bool `json:"radioIsAvailable"` // Описание эпизода подкаста. Description string `json:"description"` }
Дополнительная информация о треке.
type Track ¶
type Track struct { // Идентификатор трека. ID ID `json:"id"` // Идентификатор подменного трека. // // ID и RealID совпадают в случаях: // // 1. Трек доступен для прослушивания. // // 2. Трек недоступен и не имеет идентичного трека для автозамены. RealID ID `json:"realId"` // Название трека. Title string `json:"title"` // Лейбл. Major *Label `json:"major"` // Доступен для стриминга? Available bool `json:"available"` // Доступен только для пользователей с подпиской? AvailableForPremiumUsers bool `json:"availableForPremiumUsers"` // Трек могут послушать даже те, кто без подписки, или не вошел в аккаунт? AvailableFullWithoutPermission bool `json:"availableFullWithoutPermission"` // Например: ["bookmate"]. AvailableForOptions []string `json:"availableForOptions"` // Адрес каталога, в котором хранится трек. StorageDir string `json:"storageDir"` // Продолжительность трека в миллисекундах. DurationMs int `json:"durationMs"` // Размер трека в байтах. FileSize int `json:"fileSize"` // Нормализация. R128 *R128 `json:"r128"` // Длина превью в миллисекундах. PreviewDurationMs int `json:"previewDurationMs"` // Список исполнителей трека, в минимальной информации. Artists []Artist `json:"artists"` // Список альбомов, в которые входит трек, в базовой информации. Albums []Album `json:"albums"` // URI обложки. CoverUri string `json:"coverUri"` // Ссылка на загруженную обложку трека. OgImage string `json:"ogImage"` // Доступен ли текст трека. LyricsAvailable bool `json:"lyricsAvailable"` Type string `json:"type"` RememberPosition bool `json:"rememberPosition"` TrackSharingFlag string `json:"trackSharingFlag"` // Информация о тексте. LyricsInfo struct { // Текст с треком будет синхронизироваться? HasAvailableSyncLyrics bool `json:"hasAvailableSyncLyrics"` // Текст для трека доступен? HasAvailableTextLyrics bool `json:"hasAvailableTextLyrics"` } `json:"lyricsInfo"` // Источник трека. TrackSource TrackSource `json:"trackSource"` // Если трек загружен пользователем, // то здесь будет имя файла. Filename *string `json:"filename"` AvailableAsRbt bool `json:"availableAsRbt"` // Трек 18+? (E) Explicit bool `json:"explicit"` // Регионы в которых доступен трек. Regions []string `json:"regions"` // Версия трека. Remix, deluxe, и так далее. Version string `json:"version"` }
Трек.
type TrackDownloadInfo ¶
type TrackDownloadInfo struct { // Кодек аудиофайла (mp3, aac). Codec string `json:"codec"` // Усиление. Gain bool `json:"gain"` // Предварительный просмотр. Preview bool `json:"preview"` // Ссылка на XML документ содержащий данные для загрузки трека. DownloadInfoUrl string `json:"downloadInfoUrl"` // Прямая ли ссылка. Direct bool `json:"direct"` // Битрейт аудиофайла в кбит/с. BitrateInKbps int `json:"bitrateInKbps"` }
Информация о вариантах загрузки трека.
type TrackIdRequestBody ¶ added in v0.3.4
type TrackIdRequestBody struct { // ID трека. TrackId ID `url:"track-id"` }
POST /users/{userId}/likes/tracks/add
type TrackIdsRequestBody ¶ added in v0.3.4
type TrackIdsRequestBody struct { // ID треков. TrackIds []ID `url:",track-ids"` }
POST /users/{userId}/likes/tracks/add-multiple
POST /users/{userId}/likes/tracks/remove
func (*TrackIdsRequestBody) SetIds ¶ added in v0.3.4
func (l *TrackIdsRequestBody) SetIds(ids ...ID)
type TrackShort ¶
type TrackShort struct { // Уникальный идентификатор трека. ID ID `json:"id"` // Уникальный идентификатор альбома. AlbumId ID `json:"albumId"` // Дата. Timestamp time.Time `json:"timestamp"` }
Укороченная версия трека с неполными данными.
type TrackSource ¶ added in v0.5.1
type TrackSource string
const ( // (?) Трек из библиотеки ЯМ. TrackSourceOwn TrackSource = "OWN" // Трек загружен пользователем. TrackSourceUgc TrackSource = "UGC" )
type TracksLibrary ¶
type TracksLibrary struct { Library struct { // Уникальный идентификатор пользователя. Uid ID `json:"uid"` Revision ID `json:"revision"` // Список треков в укороченной версии. Tracks []TrackShort `json:"tracks"` } `json:"library"` }
Список треков.
type Visibility ¶
type Visibility string
Видимость.
const ( // Приватная. VisibilityPrivate Visibility = "private" // Публичная. VisibilityPublic Visibility = "public" )
func (Visibility) String ¶ added in v0.4.8
func (e Visibility) String() string