"""
import asyncio
-import json
from time import time
import ytmusicapi
"""Async wrapper around the ytmusicapi get_artist function."""
def _get_artist():
- ytm = ytmusicapi.YTMusic(auth=json.dumps(headers))
+ ytm = ytmusicapi.YTMusic(auth=headers)
try:
artist = ytm.get_artist(channelId=prov_artist_id)
# ChannelId can sometimes be different and original ID is not part of the response
"""Async wrapper around the ytmusicapi get_playlist function."""
def _get_playlist():
- ytm = ytmusicapi.YTMusic(auth=json.dumps(headers))
+ ytm = ytmusicapi.YTMusic(auth=headers)
playlist = ytm.get_playlist(playlistId=prov_playlist_id, limit=None)
playlist["checksum"] = get_playlist_checksum(playlist)
return playlist
"""Async wrapper around the ytmusicapi get_playlist function."""
def _get_song():
- ytm = ytmusicapi.YTMusic(auth=json.dumps(headers))
+ ytm = ytmusicapi.YTMusic(auth=headers)
track_obj = ytm.get_song(videoId=prov_track_id, signatureTimestamp=signature_timestamp)
track = {}
if "videoDetails" not in track_obj:
"""Async wrapper around the ytmusicapi get_library_artists function."""
def _get_library_artists():
- ytm = ytmusicapi.YTMusic(auth=json.dumps(headers))
+ ytm = ytmusicapi.YTMusic(auth=headers)
artists = ytm.get_library_subscriptions(limit=9999)
# Sync properties with uniformal artist object
for artist in artists:
"""Async wrapper around the ytmusicapi get_library_albums function."""
def _get_library_albums():
- ytm = ytmusicapi.YTMusic(auth=json.dumps(headers))
+ ytm = ytmusicapi.YTMusic(auth=headers)
return ytm.get_library_albums(limit=9999)
return await asyncio.to_thread(_get_library_albums)
"""Async wrapper around the ytmusicapi get_library_playlists function."""
def _get_library_playlists():
- ytm = ytmusicapi.YTMusic(auth=json.dumps(headers))
+ ytm = ytmusicapi.YTMusic(auth=headers)
playlists = ytm.get_library_playlists(limit=9999)
# Sync properties with uniformal playlist object
for playlist in playlists:
"""Async wrapper around the ytmusicapi get_library_tracks function."""
def _get_library_tracks():
- ytm = ytmusicapi.YTMusic(auth=json.dumps(headers))
+ ytm = ytmusicapi.YTMusic(auth=headers)
tracks = ytm.get_library_songs(limit=9999)
return tracks
"""Add or remove an artist to the user's library."""
def _library_add_remove_artist():
- ytm = ytmusicapi.YTMusic(auth=json.dumps(headers))
+ ytm = ytmusicapi.YTMusic(auth=headers)
if add:
return "actions" in ytm.subscribe_artists(channelIds=[prov_artist_id])
if not add:
album = await get_album(prov_album_id=prov_item_id)
def _library_add_remove_album():
- ytm = ytmusicapi.YTMusic(auth=json.dumps(headers))
+ ytm = ytmusicapi.YTMusic(auth=headers)
playlist_id = album["audioPlaylistId"]
if add:
return ytm.rate_playlist(playlist_id, "LIKE")
"""Add or remove an album or playlist to the user's library."""
def _library_add_remove_playlist():
- ytm = ytmusicapi.YTMusic(auth=json.dumps(headers))
+ ytm = ytmusicapi.YTMusic(auth=headers)
if add:
return "actions" in ytm.rate_playlist(prov_item_id, "LIKE")
if not add:
"""Async wrapper around adding/removing tracks to a playlist."""
def _add_playlist_tracks():
- ytm = ytmusicapi.YTMusic(auth=json.dumps(headers))
+ ytm = ytmusicapi.YTMusic(auth=headers)
if add:
return ytm.add_playlist_items(playlistId=prov_playlist_id, videoIds=prov_track_ids)
if not add:
"""Async wrapper around the ytmusicapi radio function."""
def _get_song_radio_tracks():
- ytm = ytmusicapi.YTMusic(auth=json.dumps(headers))
+ ytm = ytmusicapi.YTMusic(auth=headers)
playlist_id = f"RDAMVM{prov_item_id}"
result = ytm.get_watch_playlist(
videoId=prov_item_id, playlistId=playlist_id, limit=limit, radio=True
elif "browseId" in result:
result["id"] = result["browseId"]
del result["browseId"]
- return results
+ return results[:limit]
return await asyncio.to_thread(_search)