{"id":13910489,"url":"https://github.com/bbye98/minim","last_synced_at":"2025-09-24T13:58:16.339Z","repository":{"id":167119916,"uuid":"642690774","full_name":"bbye98/minim","owner":"bbye98","description":"A collection of music service (iTunes, Qobuz, Spotify, TIDAL) APIs for media information retrieval and semi-automated music tagging.","archived":false,"fork":false,"pushed_at":"2025-09-23T02:54:42.000Z","size":78738,"stargazers_count":72,"open_issues_count":7,"forks_count":7,"subscribers_count":13,"default_branch":"main","last_synced_at":"2025-09-23T04:25:08.813Z","etag":null,"topics":["audio","audio-metadata","itunes","itunes-api","itunes-search","python","python3","qobuz","qobuz-api","spotify","spotify-api","tidal","tidal-api"],"latest_commit_sha":null,"homepage":"https://bbye98.github.io/minim/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bbye98.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-05-19T06:17:38.000Z","updated_at":"2025-09-22T03:25:30.000Z","dependencies_parsed_at":"2025-09-23T04:26:16.834Z","dependency_job_id":null,"html_url":"https://github.com/bbye98/minim","commit_stats":null,"previous_names":["bbye98/minim"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/bbye98/minim","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bbye98%2Fminim","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bbye98%2Fminim/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bbye98%2Fminim/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bbye98%2Fminim/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bbye98","download_url":"https://codeload.github.com/bbye98/minim/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bbye98%2Fminim/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":276538268,"owners_count":25659932,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-23T02:00:09.130Z","response_time":73,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["audio","audio-metadata","itunes","itunes-api","itunes-search","python","python3","qobuz","qobuz-api","spotify","spotify-api","tidal","tidal-api"],"created_at":"2024-08-07T00:01:29.090Z","updated_at":"2025-09-24T13:58:16.316Z","avatar_url":"https://github.com/bbye98.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"\u003cpicture\u003e\n  \u003csource media=\"(prefers-color-scheme: dark)\" \n   srcset=\"https://raw.githubusercontent.com/bbye98/minim/main/assets/logo_dark.svg\"\u003e\n  \u003csource media=\"(prefers-color-scheme: light)\" \n   srcset=\"https://raw.githubusercontent.com/bbye98/minim/main/assets/logo_light.svg\"\u003e\n  \u003cimg alt=\"minim logo\" \n   src=\"https://raw.githubusercontent.com/bbye98/minim/main/assets/logo_light.svg\"\u003e\n\u003c/picture\u003e\n\u003cbr\u003e\u003c/br\u003e\n\n# Minim\n\n[![continuous-integration](https://github.com/bbye98/minim/actions/workflows/ci.yml/badge.svg)](https://github.com/bbye98/minim/actions/workflows/ci.yml)\n\nMinim is a lightweight Python 3 library that can interface with APIs \nby popular music services—iTunes, Qobuz, Spotify, and TIDAL—and operate \non audio files, such as updating metadata and converting between audio\nformats.\n\n* **Documentation**: https://bbye98.github.io/minim/\n\n## Features\n\n* [`minim.audio`](https://github.com/bbye98/minim/blob/main/src/minim/audio.py):\n  Audio file handlers for reading and writing metadata and converting\n  between audio formats.\n* [`minim.itunes`](https://github.com/bbye98/minim/blob/main/src/minim/itunes.py):\n  A client for the iTunes Search API.\n* [`minim.qobuz`](https://github.com/bbye98/minim/blob/main/src/minim/qobuz.py):\n  A client for the Qobuz API with support for the password grant type \n  for user authentication and user authentication token caching.\n* [`minim.spotify`](https://github.com/bbye98/minim/blob/main/src/minim/spotify.py):\n  Clients for the Spotify Lyrics service and the Spotify Web API with\n  support for the authorization code, authorization code with proof key\n  for code exchange (PKCE), and client credentials grant types, and\n  access token caching.\n* [`minim.tidal`](https://github.com/bbye98/minim/blob/main/src/minim/tidal.py):\n  Clients for the old and new TIDAL APIs with support for the \n  authorization code with PKCE and client credentials grant types, and\n  access token caching.\n\n## Installation\n\nMinim requires Python 3.9 or later.\n\nClone the repository and install the package using pip:\n\n    git clone https://github.com/bbye98/minim.git\n    cd minim\n    python -m pip install -e .\n\n## Examples\n\n- Import Minim and create clients for the different APIs. Additional \n  keyword arguments can be passed to the constructors to control user\n  authentication.\n\n      \u003e\u003e\u003e from minim import itunes, qobuz, spotify, tidal\n      \u003e\u003e\u003e client_itunes = itunes.SearchAPI()\n      \u003e\u003e\u003e client_qobuz = qobuz.PrivateAPI()\n      \u003e\u003e\u003e client_spotify = spotify.WebAPI(flow=\"web_player\")\n      \u003e\u003e\u003e client_tidal = tidal.PrivateAPI(client_id=\u003cTIDAL_CLIENT_ID\u003e)\n\n- Search for and retrieve information about an artist, such as the EDM \n  group Galantis:\n\n  **iTunes Search API**\n\n      \u003e\u003e\u003e client_itunes.search(\"Galantis\", entity=\"musicArtist\", \n      ...                      limit=1)[\"results\"][0]\n\n  \u003cdetails\u003e\n  \u003csummary\u003eOutput\u003c/summary\u003e\n\n      {\n        \"wrapperType\": \"artist\",\n        \"artistType\": \"Artist\",\n        \"artistName\": \"Galantis\",\n        \"artistLinkUrl\": \"https://music.apple.com/us/artist/galantis/543322169?uo=4\",\n        \"artistId\": 543322169,\n        \"amgArtistId\": 2616267,\n        \"primaryGenreName\": \"Dance\",\n        \"primaryGenreId\": 17\n      }\n\n  \u003c/details\u003e\n\n  **Private Qobuz API**\n\n      \u003e\u003e\u003e client_qobuz.search(\"Galantis\", limit=1, \n      ...                     strict=True)[\"artists\"][\"items\"][0]\n\n  \u003cdetails\u003e\n  \u003csummary\u003eOutput\u003c/summary\u003e\n\n      {\n        \"picture\": \"https://static.qobuz.com/images/artists/covers/small/8dcf30e5c8e30281ecbb13b0886426c8.jpg\",\n        \"image\": {\n          \"small\": \"https://static.qobuz.com/images/artists/covers/small/8dcf30e5c8e30281ecbb13b0886426c8.jpg\",\n          \"medium\": \"https://static.qobuz.com/images/artists/covers/medium/8dcf30e5c8e30281ecbb13b0886426c8.jpg\",\n          \"large\": \"https://static.qobuz.com/images/artists/covers/large/8dcf30e5c8e30281ecbb13b0886426c8.jpg\",\n          \"extralarge\": \"https://static.qobuz.com/images/artists/covers/large/8dcf30e5c8e30281ecbb13b0886426c8.jpg\",\n          \"mega\": \"https://static.qobuz.com/images/artists/covers/large/8dcf30e5c8e30281ecbb13b0886426c8.jpg\"\n        },\n        \"name\": \"Galantis\",\n        \"slug\": \"galantis\",\n        \"albums_count\": 126,\n        \"id\": 865362\n      }\n  \n  \u003c/details\u003e\n\n  **Spotify Web API**\n\n      \u003e\u003e\u003e client_spotify.search(\"Galantis\", \"artist\", limit=1)[\"items\"][0]\n\n  \u003cdetails\u003e\n  \u003csummary\u003eOutput\u003c/summary\u003e\n\n      {\n        \"external_urls\": {\n          \"spotify\": \"https://open.spotify.com/artist/4sTQVOfp9vEMCemLw50sbu\"\n        },\n        \"followers\": {\n          \"href\": null,\n          \"total\": 3373205\n        },\n        \"genres\": [\n          \"dance pop\",\n          \"edm\",\n          \"pop\",\n          \"pop dance\"\n        ],\n        \"href\": \"https://api.spotify.com/v1/artists/4sTQVOfp9vEMCemLw50sbu\",\n        \"id\": \"4sTQVOfp9vEMCemLw50sbu\",\n        \"images\": [\n          {\n            \"height\": 640,\n            \"url\": \"https://i.scdn.co/image/ab6761610000e5eb7bda087d6fb48d481efd3344\",\n            \"width\": 640\n          },\n          {\n            \"height\": 320,\n            \"url\": \"https://i.scdn.co/image/ab676161000051747bda087d6fb48d481efd3344\",\n            \"width\": 320\n          },\n          {\n            \"height\": 160,\n            \"url\": \"https://i.scdn.co/image/ab6761610000f1787bda087d6fb48d481efd3344\",\n            \"width\": 160\n          }\n        ],\n        \"name\": \"Galantis\",\n        \"popularity\": 67,\n        \"type\": \"artist\",\n        \"uri\": \"spotify:artist:4sTQVOfp9vEMCemLw50sbu\"\n      }\n  \n  \u003c/details\u003e\n\n  **Private TIDAL API**\n    \n      \u003e\u003e\u003e client_tidal.search(\"Galantis\", type=\"artist\", limit=1)[\"items\"][0]\n\n  \u003cdetails\u003e\n  \u003csummary\u003eOutput\u003c/summary\u003e\n\n      {\n        \"id\": 4676988,\n        \"name\": \"Galantis\",\n        \"artistTypes\": [\n          \"ARTIST\",\n          \"CONTRIBUTOR\"\n        ],\n        \"url\": \"http://www.tidal.com/artist/4676988\",\n        \"picture\": \"a627e21c-60f7-4e90-b2bb-e50b178c4f0b\",\n        \"popularity\": 72,\n        \"artistRoles\": [\n          {\n            \"categoryId\": -1,\n            \"category\": \"Artist\"\n          },\n          {\n            \"categoryId\": 11,\n            \"category\": \"Performer\"\n          },\n          {\n            \"categoryId\": 3,\n            \"category\": \"Engineer\"\n          },\n          {\n            \"categoryId\": 10,\n            \"category\": \"Production team\"\n          },\n          {\n            \"categoryId\": 1,\n            \"category\": \"Producer\"\n          },\n          {\n            \"categoryId\": 2,\n            \"category\": \"Songwriter\"\n          }\n        ],\n        \"mixes\": {\n          \"ARTIST_MIX\": \"000202a7e72fd90d0c0df2ed56ddea\"\n        }\n      }\n  \n  \u003c/details\u003e\n\n- Search for and retrieve information about a track, such as \"Everybody Talks\" by Neon Trees:\n\n  **iTunes Search API**\n\n      \u003e\u003e\u003e client_itunes.search(\"Everybody Talks\", media=\"music\", \n      ...                      limit=1)[\"results\"][0]\n\n  \u003cdetails\u003e\n  \u003csummary\u003eOutput\u003c/summary\u003e\n\n      {\n        \"wrapperType\": \"track\",\n        \"kind\": \"song\",\n        \"artistId\": 350172836,\n        \"collectionId\": 1443469527,\n        \"trackId\": 1443469581,\n        \"artistName\": \"Neon Trees\",\n        \"collectionName\": \"Picture Show\",\n        \"trackName\": \"Everybody Talks\",\n        \"collectionCensoredName\": \"Picture Show\",\n        \"trackCensoredName\": \"Everybody Talks\",\n        \"artistViewUrl\": \"https://music.apple.com/us/artist/neon-trees/350172836?uo=4\",\n        \"collectionViewUrl\": \"https://music.apple.com/us/album/everybody-talks/1443469527?i=1443469581\u0026uo=4\",\n        \"trackViewUrl\": \"https://music.apple.com/us/album/everybody-talks/1443469527?i=1443469581\u0026uo=4\",\n        \"previewUrl\": \"https://audio-ssl.itunes.apple.com/itunes-assets/AudioPreview122/v4/5c/29/bf/5c29bf6b-ca2c-4e8b-2be6-c51a282c7dae/mzaf_1255557534804450018.plus.aac.p.m4a\",\n        \"artworkUrl30\": \"https://is1-ssl.mzstatic.com/image/thumb/Music115/v4/80/e3/95/80e39565-35f9-2496-c6f8-6572490c4a7b/12UMGIM12509.rgb.jpg/30x30bb.jpg\",\n        \"artworkUrl60\": \"https://is1-ssl.mzstatic.com/image/thumb/Music115/v4/80/e3/95/80e39565-35f9-2496-c6f8-6572490c4a7b/12UMGIM12509.rgb.jpg/60x60bb.jpg\",\n        \"artworkUrl100\": \"https://is1-ssl.mzstatic.com/image/thumb/Music115/v4/80/e3/95/80e39565-35f9-2496-c6f8-6572490c4a7b/12UMGIM12509.rgb.jpg/100x100bb.jpg\",\n        \"collectionPrice\": 6.99,\n        \"trackPrice\": 1.29,\n        \"releaseDate\": \"2011-12-19T12:00:00Z\",\n        \"collectionExplicitness\": \"explicit\",\n        \"trackExplicitness\": \"explicit\",\n        \"discCount\": 1,\n        \"discNumber\": 1,\n        \"trackCount\": 12,\n        \"trackNumber\": 3,\n        \"trackTimeMillis\": 177280,\n        \"country\": \"USA\",\n        \"currency\": \"USD\",\n        \"primaryGenreName\": \"Alternative\",\n        \"contentAdvisoryRating\": \"Explicit\",\n        \"isStreamable\": true\n      }\n\n  \u003c/details\u003e\n\n  **Private Qobuz API**\n\n      \u003e\u003e\u003e client_qobuz.search(\"Everybody Talks\", \"ReleaseName\", limit=1, \n      ...                     strict=True)[\"tracks\"][\"items\"][0]\n\n  \u003cdetails\u003e\n  \u003csummary\u003eOutput\u003c/summary\u003e\n\n      {\n        \"maximum_bit_depth\": 16,\n        \"copyright\": \"\\u2117 2011 UMG Recordings, Inc.\",\n        \"performers\": \"Justin Meldal-Johnsen, Producer, Guitar, Additional Keyboards, Percussion, Programmer, AssociatedPerformer - Tim Pagnotta, ComposerLyricist - Greg Collins, Engineer, StudioPersonnel - Wesley Seidman, Asst. Recording Engineer, StudioPersonnel - Tyler Glenn, ComposerLyricist - Neon Trees, MainArtist - Matt Wiggers, Asst. Recording Engineer, StudioPersonnel - Bill Bush, Mixer, StudioPersonnel\",\n        \"audio_info\": {\n          \"replaygain_track_peak\": 0.999969,\n          \"replaygain_track_gain\": -11.63\n        },\n        \"performer\": {\n          \"name\": \"Neon Trees\",\n          \"id\": 470727\n        },\n        \"album\": {\n          \"image\": {\n            \"small\": \"https://static.qobuz.com/images/covers/42/54/0060252795442_230.jpg\",\n            \"thumbnail\": \"https://static.qobuz.com/images/covers/42/54/0060252795442_50.jpg\",\n            \"large\": \"https://static.qobuz.com/images/covers/42/54/0060252795442_600.jpg\"\n          },\n          \"maximum_bit_depth\": 16,\n          \"media_count\": 1,\n          \"artist\": {\n            \"image\": null,\n            \"name\": \"Neon Trees\",\n            \"id\": 470727,\n            \"albums_count\": 42,\n            \"slug\": \"neon-trees\",\n            \"picture\": null\n          },\n          \"upc\": \"0060252795442\",\n          \"released_at\": 1325372400,\n          \"label\": {\n            \"name\": \"Mercury Records\",\n            \"id\": 17487,\n            \"albums_count\": 774,\n            \"supplier_id\": 1,\n            \"slug\": \"mercury-records\"\n          },\n          \"title\": \"Picture Show\",\n          \"qobuz_id\": 5653617,\n          \"version\": null,\n          \"duration\": 2785,\n          \"parental_warning\": true,\n          \"tracks_count\": 11,\n          \"popularity\": 0,\n          \"genre\": {\n            \"path\": [112, 119, 113],\n            \"color\": \"#0070ef\",\n            \"name\": \"Alternative \u0026 Indie\",\n            \"id\": 113,\n            \"slug\": \"alternatif-et-inde\"\n          },\n          \"maximum_channel_count\": 2,\n          \"id\": \"0060252795442\",\n          \"maximum_sampling_rate\": 44.1,\n          \"previewable\": true,\n          \"sampleable\": true,\n          \"displayable\": true,\n          \"streamable\": true,\n          \"streamable_at\": 1683529200,\n          \"downloadable\": false,\n          \"purchasable_at\": null,\n          \"purchasable\": false,\n          \"release_date_original\": \"2012-01-01\",\n          \"release_date_download\": \"2012-01-01\",\n          \"release_date_stream\": \"2012-01-01\",\n          \"release_date_purchase\": \"2012-01-01\",\n          \"hires\": false,\n          \"hires_streamable\": false\n        },\n        \"work\": null,\n        \"composer\": {\n          \"name\": \"Tyler Glenn\",\n          \"id\": 583118\n        },\n        \"isrc\": \"USUM71119189\",\n        \"title\": \"Everybody Talks\",\n        \"version\": \"Album Version\",\n        \"duration\": 177,\n        \"parental_warning\": true,\n        \"track_number\": 3,\n        \"maximum_channel_count\": 2,\n        \"id\": 5653620,\n        \"media_number\": 1,\n        \"maximum_sampling_rate\": 44.1,\n        \"release_date_original\": null,\n        \"release_date_download\": null,\n        \"release_date_stream\": null,\n        \"release_date_purchase\": null,\n        \"purchasable\": true,\n        \"streamable\": true,\n        \"previewable\": true,\n        \"sampleable\": true,\n        \"downloadable\": true,\n        \"displayable\": true,\n        \"purchasable_at\": 1683702000,\n        \"streamable_at\": 1683529200,\n        \"hires\": false,\n        \"hires_streamable\": false\n      }\n  \n  \u003c/details\u003e\n\n  **Spotify Web API**\n\n      \u003e\u003e\u003e client_spotify.search(\"Everybody Talks\", \"track\", limit=1)[\"items\"][0]\n\n  \u003cdetails\u003e\n  \u003csummary\u003eOutput\u003c/summary\u003e\n\n      {\n        \"album\": {\n          \"album_type\": \"album\",\n          \"artists\": [\n            {\n              \"external_urls\": {\n                \"spotify\": \"https://open.spotify.com/artist/0RpddSzUHfncUWNJXKOsjy\"\n              },\n              \"href\": \"https://api.spotify.com/v1/artists/0RpddSzUHfncUWNJXKOsjy\",\n              \"id\": \"0RpddSzUHfncUWNJXKOsjy\",\n              \"name\": \"Neon Trees\",\n              \"type\": \"artist\",\n              \"uri\": \"spotify:artist:0RpddSzUHfncUWNJXKOsjy\"\n            }\n          ],\n          \"available_markets\": [\n            \"AR\", \"AU\", \"AT\", \"BE\", \"BO\", \"BR\", \"BG\", \n            \"CA\", \"CL\", \"CO\", \"CR\", \"CY\", \"CZ\", \"DK\",\n            \"DO\", \"DE\", \"EC\", \"EE\", \"SV\", \"FI\", \"FR\", \n            \"GR\", \"GT\", \"HN\", \"HK\", \"HU\", \"IS\", \"IE\", \n            \"IT\", \"LV\", \"LT\", \"LU\", \"MY\", \"MT\", \"NL\", \n            \"NZ\", \"NI\", \"NO\", \"PA\", \"PY\", \"PE\", \"PH\", \n            \"PL\", \"PT\", \"SG\", \"SK\", \"ES\", \"SE\", \"CH\", \n            \"TW\", \"TR\", \"UY\", \"US\", \"GB\", \"AD\", \"LI\", \n            \"MC\", \"ID\", \"TH\", \"VN\", \"RO\", \"IL\", \"ZA\", \n            \"SA\", \"AE\", \"BH\", \"QA\", \"OM\", \"KW\", \"EG\", \n            \"TN\", \"LB\", \"JO\", \"PS\", \"IN\", \"BY\", \"KZ\", \n            \"MD\", \"UA\", \"AL\", \"BA\", \"HR\", \"ME\", \"MK\", \n            \"RS\", \"SI\", \"KR\", \"BD\", \"PK\", \"LK\", \"GH\",\n            \"KE\", \"NG\", \"TZ\", \"UG\", \"AG\", \"AM\", \"BS\", \n            \"BB\", \"BZ\", \"BT\", \"BW\", \"BF\", \"CV\", \"CW\", \n            \"DM\", \"FJ\", \"GM\", \"GD\", \"GW\", \"GY\", \"HT\", \n            \"JM\", \"KI\", \"LS\", \"LR\", \"MW\", \"MV\", \"ML\", \n            \"MH\", \"FM\", \"NA\", \"NR\", \"NE\", \"PW\", \"PG\", \n            \"WS\", \"ST\", \"SN\", \"SC\", \"SL\", \"SB\", \"KN\", \n            \"LC\", \"VC\", \"SR\", \"TL\", \"TO\", \"TT\", \"TV\", \n            \"AZ\", \"BN\", \"BI\", \"KH\", \"CM\", \"TD\", \"KM\", \n            \"GQ\", \"SZ\", \"GA\", \"GN\", \"KG\", \"LA\", \"MO\", \n            \"MR\", \"MN\", \"NP\", \"RW\", \"TG\", \"UZ\", \"ZW\", \n            \"BJ\", \"MG\", \"MU\", \"MZ\", \"AO\", \"CI\", \"DJ\", \n            \"ZM\", \"CD\", \"CG\", \"IQ\", \"TJ\", \"VE\", \"XK\"\n          ],\n          \"external_urls\": {\n            \"spotify\": \"https://open.spotify.com/album/0uRFz92JmjwDbZbB7hEBIr\"\n          },\n          \"href\": \"https://api.spotify.com/v1/albums/0uRFz92JmjwDbZbB7hEBIr\",\n          \"id\": \"0uRFz92JmjwDbZbB7hEBIr\",\n          \"images\": [\n            {\n              \"height\": 640,\n              \"url\": \"https://i.scdn.co/image/ab67616d0000b2734a6c0376235e5aa44e59d2c2\",\n              \"width\": 640\n            },\n            {\n              \"height\": 300,\n              \"url\": \"https://i.scdn.co/image/ab67616d00001e024a6c0376235e5aa44e59d2c2\",\n              \"width\": 300\n            },\n            {\n              \"height\": 64,\n              \"url\": \"https://i.scdn.co/image/ab67616d000048514a6c0376235e5aa44e59d2c2\",\n              \"width\": 64\n            }\n          ],\n          \"name\": \"Picture Show\",\n          \"release_date\": \"2012-01-01\",\n          \"release_date_precision\": \"day\",\n          \"total_tracks\": 11,\n          \"type\": \"album\",\n          \"uri\": \"spotify:album:0uRFz92JmjwDbZbB7hEBIr\"\n        },\n        \"artists\": [\n          {\n            \"external_urls\": {\n              \"spotify\": \"https://open.spotify.com/artist/0RpddSzUHfncUWNJXKOsjy\"\n            },\n            \"href\": \"https://api.spotify.com/v1/artists/0RpddSzUHfncUWNJXKOsjy\",\n            \"id\": \"0RpddSzUHfncUWNJXKOsjy\",\n            \"name\": \"Neon Trees\",\n            \"type\": \"artist\",\n            \"uri\": \"spotify:artist:0RpddSzUHfncUWNJXKOsjy\"\n          }\n        ],\n        \"available_markets\": [\n          \"AR\", \"AU\", \"AT\", \"BE\", \"BO\", \"BR\", \"BG\", \n          \"CA\", \"CL\", \"CO\", \"CR\", \"CY\", \"CZ\", \"DK\",\n          \"DO\", \"DE\", \"EC\", \"EE\", \"SV\", \"FI\", \"FR\", \n          \"GR\", \"GT\", \"HN\", \"HK\", \"HU\", \"IS\", \"IE\", \n          \"IT\", \"LV\", \"LT\", \"LU\", \"MY\", \"MT\", \"NL\", \n          \"NZ\", \"NI\", \"NO\", \"PA\", \"PY\", \"PE\", \"PH\", \n          \"PL\", \"PT\", \"SG\", \"SK\", \"ES\", \"SE\", \"CH\", \n          \"TW\", \"TR\", \"UY\", \"US\", \"GB\", \"AD\", \"LI\", \n          \"MC\", \"ID\", \"TH\", \"VN\", \"RO\", \"IL\", \"ZA\", \n          \"SA\", \"AE\", \"BH\", \"QA\", \"OM\", \"KW\", \"EG\", \n          \"TN\", \"LB\", \"JO\", \"PS\", \"IN\", \"BY\", \"KZ\", \n          \"MD\", \"UA\", \"AL\", \"BA\", \"HR\", \"ME\", \"MK\", \n          \"RS\", \"SI\", \"KR\", \"BD\", \"PK\", \"LK\", \"GH\",\n          \"KE\", \"NG\", \"TZ\", \"UG\", \"AG\", \"AM\", \"BS\", \n          \"BB\", \"BZ\", \"BT\", \"BW\", \"BF\", \"CV\", \"CW\", \n          \"DM\", \"FJ\", \"GM\", \"GD\", \"GW\", \"GY\", \"HT\", \n          \"JM\", \"KI\", \"LS\", \"LR\", \"MW\", \"MV\", \"ML\", \n          \"MH\", \"FM\", \"NA\", \"NR\", \"NE\", \"PW\", \"PG\", \n          \"WS\", \"ST\", \"SN\", \"SC\", \"SL\", \"SB\", \"KN\", \n          \"LC\", \"VC\", \"SR\", \"TL\", \"TO\", \"TT\", \"TV\", \n          \"AZ\", \"BN\", \"BI\", \"KH\", \"CM\", \"TD\", \"KM\", \n          \"GQ\", \"SZ\", \"GA\", \"GN\", \"KG\", \"LA\", \"MO\", \n          \"MR\", \"MN\", \"NP\", \"RW\", \"TG\", \"UZ\", \"ZW\", \n          \"BJ\", \"MG\", \"MU\", \"MZ\", \"AO\", \"CI\", \"DJ\", \n          \"ZM\", \"CD\", \"CG\", \"IQ\", \"TJ\", \"VE\", \"XK\"\n        ],\n        \"disc_number\": 1,\n        \"duration_ms\": 177280,\n        \"explicit\": true,\n        \"external_ids\": {\n          \"isrc\": \"USUM71119189\"\n        },\n        \"external_urls\": {\n          \"spotify\": \"https://open.spotify.com/track/2iUmqdfGZcHIhS3b9E9EWq\"\n        },\n        \"href\": \"https://api.spotify.com/v1/tracks/2iUmqdfGZcHIhS3b9E9EWq\",\n        \"id\": \"2iUmqdfGZcHIhS3b9E9EWq\",\n        \"is_local\": false,\n        \"name\": \"Everybody Talks\",\n        \"popularity\": 81,\n        \"preview_url\": null,\n        \"track_number\": 3,\n        \"type\": \"track\",\n        \"uri\": \"spotify:track:2iUmqdfGZcHIhS3b9E9EWq\"\n      }\n  \n  \u003c/details\u003e\n\n  **Private TIDAL API**\n    \n      \u003e\u003e\u003e client_tidal.search(\"Everybody Talks\", type=\"track\", \n      ...                     limit=1)[\"items\"][0]\n\n  \u003cdetails\u003e\n  \u003csummary\u003eOutput\u003c/summary\u003e\n\n      {\n        \"id\": 14492425,\n        \"title\": \"Everybody Talks\",\n        \"duration\": 177,\n        \"replayGain\": -11.7,\n        \"peak\": 0.999969,\n        \"allowStreaming\": true,\n        \"streamReady\": true,\n        \"adSupportedStreamReady\": true,\n        \"djReady\": true,\n        \"stemReady\": false,\n        \"streamStartDate\": \"2012-04-17T00:00:00.000+0000\",\n        \"premiumStreamingOnly\": false,\n        \"trackNumber\": 3,\n        \"volumeNumber\": 1,\n        \"version\": null,\n        \"popularity\": 55,\n        \"copyright\": \"A Mercury Records Release; \\u2117 2011 UMG Recordings, Inc.\",\n        \"url\": \"http://www.tidal.com/track/14492425\",\n        \"isrc\": \"USUM71119189\",\n        \"editable\": false,\n        \"explicit\": true,\n        \"audioQuality\": \"LOSSLESS\",\n        \"audioModes\": [\n          \"STEREO\"\n        ],\n        \"mediaMetadata\": {\n          \"tags\": [\n            \"LOSSLESS\"\n          ]\n        },\n        \"artist\": {\n          \"id\": 3665225,\n          \"name\": \"Neon Trees\",\n          \"type\": \"MAIN\",\n          \"picture\": \"e6f17398-759e-45a0-9673-6ded6811e199\"\n        },\n        \"artists\": [\n          {\n            \"id\": 3665225,\n            \"name\": \"Neon Trees\",\n            \"type\": \"MAIN\",\n            \"picture\": \"e6f17398-759e-45a0-9673-6ded6811e199\"\n          }\n        ],\n        \"album\": {\n          \"id\": 14492422,\n          \"title\": \"Picture Show\",\n          \"cover\": \"1c2d7c90-034e-485a-be1f-24a669c7e6ee\",\n          \"vibrantColor\": \"#f8af88\",\n          \"videoCover\": null\n        },\n        \"mixes\": {\n          \"TRACK_MIX\": \"0019768c833a193c29829e5bf473fc\"\n        }\n      }\n  \n  \u003c/details\u003e\n\n- If the clients are authenticated, you can create a user playlist and\n  add tracks to it. Using the track IDs for \"Everybody Talks\" by Neon\n  Trees from the previous example:\n\n  **Private Qobuz API**\n\n      \u003e\u003e\u003e playlist_qobuz = client_qobuz.create_playlist(\n      ...     \"Minim\", \n      ...     description=\"A playlist created using Minim.\"\n      ... )\n      \u003e\u003e\u003e client_qobuz.add_playlist_tracks(playlist_qobuz[\"id\"], 5653620)\n\n  **Spotify Web API**\n\n      \u003e\u003e\u003e playlist_spotify = client_spotify.create_playlist(\n      ...     \"Minim\", \n      ...     description=\"A playlist created using Minim.\"\n      ... )\n      \u003e\u003e\u003e client_spotify.add_playlist_items(\n      ...     playlist_spotify[\"id\"], \n      ...     [\"spotify:track:2iUmqdfGZcHIhS3b9E9EWq\"]\n      ... )\n\n  **Private TIDAL API**\n\n      \u003e\u003e\u003e playlist_tidal = client_tidal.create_playlist(\n      ...     \"Minim\", \n      ...     description=\"A playlist created using Minim.\"\n      ... )\n      \u003e\u003e\u003e client_tidal.add_playlist_items(playlist_tidal[\"data\"][\"uuid\"], \n      ...                                 14492425)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbbye98%2Fminim","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbbye98%2Fminim","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbbye98%2Fminim/lists"}