{"id":19240057,"url":"https://github.com/shazamio/ShazamIO","last_synced_at":"2025-04-21T07:32:30.677Z","repository":{"id":38363765,"uuid":"335738515","full_name":"shazamio/ShazamIO","owner":"shazamio","description":"🎵 Is a free asynchronous library from reverse engineered Shazam API written in Python 3.8+ with asyncio and aiohttp.","archived":false,"fork":false,"pushed_at":"2024-10-29T04:22:37.000Z","size":3062,"stargazers_count":507,"open_issues_count":14,"forks_count":73,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-10-29T04:41:17.313Z","etag":null,"topics":["aiohttp","api","async","asyncio","identification","music","python","python3","shazam"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/shazamio.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":"CODE_OF_CONDUCT.md","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}},"created_at":"2021-02-03T19:54:45.000Z","updated_at":"2024-10-29T04:21:44.000Z","dependencies_parsed_at":"2023-01-31T09:01:30.873Z","dependency_job_id":"9c1232da-b09f-493c-b24c-2845c8258f07","html_url":"https://github.com/shazamio/ShazamIO","commit_stats":null,"previous_names":["shazamio/shazamio","dotx12/shazamio"],"tags_count":20,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shazamio%2FShazamIO","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shazamio%2FShazamIO/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shazamio%2FShazamIO/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shazamio%2FShazamIO/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/shazamio","download_url":"https://codeload.github.com/shazamio/ShazamIO/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223856777,"owners_count":17214938,"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","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":["aiohttp","api","async","asyncio","identification","music","python","python3","shazam"],"created_at":"2024-11-09T17:01:29.172Z","updated_at":"2024-11-09T17:02:22.975Z","avatar_url":"https://github.com/shazamio.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n\u003cimg src=\"https://scrutinizer-ci.com/g/dotX12/ShazamIO/badges/quality-score.png?b=master\" alt=\"https://scrutinizer-ci.com/g/dotX12/ShazamIO/\"\u003e\n\u003cimg src=\"https://scrutinizer-ci.com/g/dotX12/ShazamIO/badges/code-intelligence.svg?b=master\" alt=\"https://scrutinizer-ci.com/g/dotX12/ShazamIO/\"\u003e\n\u003cimg src=\"https://scrutinizer-ci.com/g/dotX12/ShazamIO/badges/build.png?b=master\" alt=\"https://scrutinizer-ci.com/g/dotX12/ShazamIO/\"\u003e\n\u003cimg src=\"https://badge.fury.io/py/shazamio.svg\" alt=\"https://badge.fury.io/py/shazamio\"\u003e\n\u003cimg src=\"https://pepy.tech/badge/shazamio\" alt=\"https://pepy.tech/project/shazamio\"\u003e\n\u003cimg src=\"https://pepy.tech/badge/shazamio/month\" alt=\"https://pepy.tech/project/shazamio\"\u003e\n\u003cimg src=\"https://img.shields.io/github/license/dotX12/shazamio.svg\" alt=\"https://github.com/dotX12/ShazamIO/blob/master/LICENSE.txt\"\u003e\n\u003cbr\u003e\u003cbr\u003e\n  \n  \u003cimg width=\"1000\" src=\"https://user-images.githubusercontent.com/64792903/109359596-ca561a00-7896-11eb-9c93-9cf1f283b1a5.png\"\u003e\n  🎵 Is a FREE asynchronous library from reverse engineered Shazam API written in Python 3.8+ with asyncio and aiohttp. Includes all the methods that Shazam has, including searching for a song by file.\n \n-----\n\u003c/p\u003e\n\n## 💿 Installation\n\n```\n💲 pip install shazamio\n```\n\n## 💻 Example\n\n\n\u003cdetails\u003e \n\u003csummary\u003e\n\u003ci\u003e🔎🎵 Recognize track\u003c/i\u003e\n\u003c/summary\u003e\n\nRecognize a track based on a file\u003cbr\u003e\n\n  ```python3\nimport asyncio\nfrom shazamio import Shazam\n\n\nasync def main():\n    shazam = Shazam()\n    # out = await shazam.recognize_song('dora.ogg') # slow and deprecated, don't use this!\n    out = await shazam.recognize('dora.ogg')  # rust version, use this!\n    print(out)\n\nloop = asyncio.get_event_loop()\nloop.run_until_complete(main())\n  ```\n\u003c/details\u003e\n\n\u003cdetails\u003e \n\u003csummary\u003e\n\u003ci\u003e👨‍🎤 About artist\u003c/i\u003e\n\u003c/summary\u003e\n\nRetrieving information from an artist profile\u003cbr\u003e\n\u003ca href=\"https://www.shazam.com/artist/43328183/nathan-evans\"\u003ehttps://www.shazam.com/artist/43328183/nathan-evans\u003c/a\u003e\n\n  ```python3\nimport asyncio\nfrom shazamio import Shazam, Serialize\n\n\nasync def main():\n    shazam = Shazam()\n    artist_id = 43328183\n    about_artist = await shazam.artist_about(artist_id)\n    serialized = Serialize.artist(about_artist)\n\n    print(about_artist)  # dict\n    print(serialized)  # serialized from dataclass factory\n\nloop = asyncio.get_event_loop()\nloop.run_until_complete(main())\n  ```\n\u003c/details\u003e\n\n\n\u003cdetails\u003e \n\u003csummary\u003e\n\u003ci\u003e🎵📄 About track\u003c/i\u003e\n\u003c/summary\u003e\n\nGet track information\u003cbr\u003e\n\u003ca href=\"https://www.shazam.com/track/552406075/ale-jazz\"\u003ehttps://www.shazam.com/track/552406075/ale-jazz\u003c/a\u003e\n\n  ```python3\nimport asyncio\nfrom shazamio import Shazam, Serialize\n\n\nasync def main():\n    shazam = Shazam()\n    track_id = 552406075\n    about_track = await shazam.track_about(track_id=track_id)\n    serialized = Serialize.track(data=about_track)\n\n    print(about_track)  # dict\n    print(serialized)  # serialized from dataclass factory\n\nloop = asyncio.get_event_loop()\nloop.run_until_complete(main())\n  ```\n\u003c/details\u003e\n\n\u003cdetails\u003e \n\u003csummary\u003e\n\u003ci\u003e🎵⌛ Track listenings count\u003c/i\u003e\n\u003c/summary\u003e\n\nReturns the number of times a particular song has been played\u003cbr\u003e\n\u003ca href=\"https://www.shazam.com/track/559284007/rampampam\"\u003ehttps://www.shazam.com/track/559284007/rampampam\u003c/a\u003e\n\n  ```python3\nimport asyncio\nfrom shazamio import Shazam\n\n\nasync def main():\n    # Example: https://www.shazam.com/track/559284007/rampampam\n\n    shazam = Shazam()\n    track_id = 559284007\n    count = await shazam.listening_counter(track_id=track_id)\n    print(count)\n\nloop = asyncio.get_event_loop()\nloop.run_until_complete(main())\n  ```\n\u003c/details\u003e\n\n\u003cdetails\u003e \n\u003csummary\u003e\n\u003ci\u003e🎶💬 Similar songs\u003c/i\u003e\n\u003c/summary\u003e\n\nSimilar songs based song id\u003cbr\u003e\n\u003ca href=\"https://www.shazam.com/track/546891609/2-phu%CC%81t-ho%CC%9Bn-kaiz-remix\"\u003ehttps://www.shazam.com/track/546891609/2-phu%CC%81t-ho%CC%9Bn-kaiz-remix\u003c/a\u003e\n\n  ```python3\nimport asyncio\nfrom shazamio import Shazam\n\n\nasync def main():\n    shazam = Shazam()\n    track_id = 546891609\n    related = await shazam.related_tracks(track_id=track_id, limit=5, offset=2)\n    # ONLY №3, №4 SONG\n    print(related)\n\nloop = asyncio.get_event_loop()\nloop.run_until_complete(main())\n  ```\n\u003c/details\u003e\n\n\u003cdetails\u003e \n\u003csummary\u003e\n\u003ci\u003e🔎👨‍🎤 Search artists\u003c/i\u003e\n\u003c/summary\u003e\n\nSearch all artists by prefix\u003cbr\u003e\n  ```python3\nimport asyncio\nfrom shazamio import Shazam, Serialize\n\n\nasync def main():\n    shazam = Shazam()\n    artists = await shazam.search_artist(query='Lil', limit=5)\n    for artist in artists['artists']['hits']:\n        serialized = Serialize.artist(data=artist)\n        print(serialized)\n\nloop = asyncio.get_event_loop()\nloop.run_until_complete(main())\n\n  ```\n\u003c/details\u003e\n\n\u003cdetails\u003e \n\u003csummary\u003e\n\u003ci\u003e🔎🎶 Search tracks\u003c/i\u003e\n\u003c/summary\u003e\n\nSearch all tracks by prefix\u003cbr\u003e\n\n  ```python3\nimport asyncio\nfrom shazamio import Shazam\n\n\nasync def main():\n    shazam = Shazam()\n    tracks = await shazam.search_track(query='Lil', limit=5)\n    print(tracks)\n\nloop = asyncio.get_event_loop()\nloop.run_until_complete(main())\n\n  ```\n\u003c/details\u003e\n\n\u003cdetails\u003e \n\u003csummary\u003e\n\u003ci\u003e🔝🎶👨‍🎤 Top artist tracks\u003c/i\u003e\n\u003c/summary\u003e\n\nGet the top songs according to Shazam\u003cbr\u003e\n\u003ca href=\"https://www.shazam.com/artist/201896832/kizaru\"\u003ehttps://www.shazam.com/artist/201896832/kizaru\u003c/a\u003e\n\n  ```python3\nimport asyncio\nfrom shazamio import Shazam, Serialize\nfrom shazamio.schemas.artists import ArtistQuery\nfrom shazamio.schemas.enums import ArtistView\n\n\nasync def main():\n    shazam = Shazam()\n    artist_id = 1081606072\n\n    about_artist = await shazam.artist_about(\n        artist_id,\n        query=ArtistQuery(\n            views=[\n                ArtistView.TOP_SONGS,\n            ],\n        ),\n    )\n    serialized = Serialize.artist_v2(about_artist)\n    for i in serialized.data[0].views.top_songs.data:\n        print(i.attributes.name)\n\n\nloop = asyncio.get_event_loop_policy().get_event_loop()\nloop.run_until_complete(main())\n\n\n  ```\n\u003c/details\u003e\n\n\u003cdetails\u003e \n\u003csummary\u003e\n\u003ci\u003e🔝🎶🏙️ Top tracks in city\u003c/i\u003e\n\u003c/summary\u003e\n\nRetrieving information from an artist profile\u003cbr\u003e\n\u003ca href=\"https://www.shazam.com/charts/top-50/russia/moscow\"\u003ehttps://www.shazam.com/charts/top-50/russia/moscow\u003c/a\u003e\n\n  ```python3\nimport asyncio\nfrom shazamio import Shazam, Serialize\n\n\nasync def main():\n    shazam = Shazam()\n    top_ten_moscow_tracks = await shazam.top_city_tracks(country_code='RU', city_name='Moscow', limit=10)\n    print(top_ten_moscow_tracks)\n    # ALL TRACKS DICT\n    for track in top_ten_moscow_tracks['tracks']:\n        serialized = Serialize.track(data=track)\n        # SERIALIZE FROM DATACLASS FACTORY\n        print(serialized)\n\nloop = asyncio.get_event_loop()\nloop.run_until_complete(main())\n\n  ```\n\u003c/details\u003e\n\n\u003cdetails\u003e \n\u003csummary\u003e\n\u003ci\u003e🔝🎶🏳️‍🌈 Top tracks in country\u003c/i\u003e\n\u003c/summary\u003e\n\nGet the best tracks by country code\u003cbr\u003e\n\u003ca href=\"https://www.shazam.com/charts/discovery/netherlands\"\u003ehttps://www.shazam.com/charts/discovery/netherlands\u003c/a\u003e\n\n  ```python3\nimport asyncio\nfrom shazamio import Shazam, Serialize\n\n\nasync def main():\n    shazam = Shazam()\n    top_five_track_from_amsterdam = await shazam.top_country_tracks('NL', 5)\n    for track in top_five_track_from_amsterdam['tracks']:\n        serialized = Serialize.track(data=track)\n        print(serialized)\n\nloop = asyncio.get_event_loop()\nloop.run_until_complete(main())\n  ```\n\u003c/details\u003e\n\n\u003cdetails\u003e \n\u003csummary\u003e\n\u003ci\u003e🔝🎶🏳️‍🌈🎸 Top tracks in country by genre\u003c/i\u003e\n\u003c/summary\u003e\n\nThe best tracks by a genre in the country\u003cbr\u003e\n\u003ca href=\"https://www.shazam.com/charts/genre/spain/hip-hop-rap\"\u003ehttps://www.shazam.com/charts/genre/spain/hip-hop-rap\u003c/a\u003e\n\n  ```python3\nimport asyncio\nfrom shazamio import Shazam, GenreMusic\n\n\nasync def main():\n    shazam = Shazam()\n    top_spain_rap = await shazam.top_country_genre_tracks(\n        country_code='ES',\n        genre=GenreMusic.HIP_HOP_RAP,\n        limit=4\n    )\n    print(top_spain_rap)\n\nloop = asyncio.get_event_loop()\nloop.run_until_complete(main())\n  ```\n\u003c/details\u003e\n\n\u003cdetails\u003e \n\u003csummary\u003e\n\u003ci\u003e🔝🎶🌏🎸 Top tracks in world by genre\u003c/i\u003e\n\u003c/summary\u003e\n\nGet world tracks by certain genre\u003cbr\u003e\n\u003ca href=\"https://www.shazam.com/charts/genre/world/rock\"\u003ehttps://www.shazam.com/charts/genre/world/rock\u003c/a\u003e\n\n  ```python3\nimport asyncio\nfrom shazamio import Shazam, Serialize, GenreMusic\n\n\nasync def main():\n    shazam = Shazam()\n    top_rock_in_the_world = await shazam.top_world_genre_tracks(genre=GenreMusic.ROCK, limit=10)\n\n    for track in top_rock_in_the_world['tracks']:\n        serialized_track = Serialize.track(data=track)\n        print(serialized_track.spotify_url)\n\n\nloop = asyncio.get_event_loop()\nloop.run_until_complete(main())\n  ```\n\u003c/details\u003e\n\n\u003cdetails\u003e \n\u003csummary\u003e\n\u003ci\u003e🔝🎶🌏Top tracks in world\u003c/i\u003e\n\u003c/summary\u003e\n\nGet the best tracks from all over the world\u003cbr\u003e\n\u003ca href=\"https://www.shazam.com/charts/top-200/world\"\u003ehttps://www.shazam.com/charts/top-200/world\u003c/a\u003e\n\n  ```python3\nimport asyncio\nfrom shazamio import Shazam, Serialize\n\n\nasync def main():\n    shazam = Shazam()\n    top_world_tracks = await shazam.top_world_tracks(limit=10)\n    print(top_world_tracks)\n    for track in top_world_tracks['tracks']:\n        serialized = Serialize.track(track)\n        print(serialized)\n\nloop = asyncio.get_event_loop()\nloop.run_until_complete(main())\n  ```\n\u003c/details\u003e\n\n\n## How to use data serialization\n\n\u003cdetails\u003e \n\u003csummary\u003e\n\u003ci\u003eOpen Code\u003c/i\u003e\n\u003c/summary\u003e\n\n  ```python3\nimport asyncio\nfrom shazamio import Shazam, Serialize\n\n\nasync def main():\n    shazam = Shazam()\n    top_five_track_from_amsterdam = await shazam.top_country_tracks('NL', 5)\n    for track in top_five_track_from_amsterdam['tracks']:\n        serialized = Serialize.track(data=track)\n        print(serialized.title)\n\nloop = asyncio.get_event_loop()\nloop.run_until_complete(main())\n  ```\n\u003c/details\u003e\n\n\u003cdetails\u003e \n\u003csummary\u003e\n\u003ci\u003eOpen photo: What song information looks like (Dict)\u003c/i\u003e\n\u003c/summary\u003e\n\u003cimg src=\"https://user-images.githubusercontent.com/64792903/109454521-75b4c980-7a65-11eb-917e-62da3abefb8a.png\"\u003e\n\n\u003c/details\u003e\n\n\u003cdetails\u003e \n\u003csummary\u003e\n\u003ci\u003eOpen photo: what song information looks like (Custom serializer)\u003c/i\u003e\n\u003c/summary\u003e\n\u003cimg src=\"https://user-images.githubusercontent.com/64792903/109454465-57e76480-7a65-11eb-956c-1bcac41d7de5.png\"\u003e\n\n\u003c/details\u003e\n\nAgree, thanks to the serializer, you no longer need to manually select the necessary data from the dictionary. Now the serializer contains the most necessary information about an artist or a track.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshazamio%2FShazamIO","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshazamio%2FShazamIO","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshazamio%2FShazamIO/lists"}