Is a asynchronous framework from reverse engineered Shazam API written in Python 3.8+ with asyncio and aiohttp.
Project description
๐ต 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.
๐ฟ Installation
๐ฒ pip install shazamio
๐ป Example
๐๐ต Recognize track
Recognize a track based on a file
import asyncio
from shazamio import Shazam
async def main():
shazam = Shazam()
# out = await shazam.recognize_song('dora.ogg') # slow and deprecated, don't use this!
out = await shazam.recognize('dora.ogg') # rust version, use this!
print(out)
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
๐จโ๐ค About artist
Retrieving information from an artist profile
https://www.shazam.com/artist/43328183/nathan-evans
import asyncio
from shazamio import Shazam, Serialize
async def main():
shazam = Shazam()
artist_id = 43328183
about_artist = await shazam.artist_about(artist_id)
serialized = Serialize.artist(about_artist)
print(about_artist) # dict
print(serialized) # serialized from dataclass factory
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
๐ต๐ About track
Get track information
https://www.shazam.com/track/552406075/ale-jazz
import asyncio
from shazamio import Shazam, Serialize
async def main():
shazam = Shazam()
track_id = 552406075
about_track = await shazam.track_about(track_id=track_id)
serialized = Serialize.track(data=about_track)
print(about_track) # dict
print(serialized) # serialized from dataclass factory
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
๐ตโ Track listenings count
Returns the number of times a particular song has been played
https://www.shazam.com/track/559284007/rampampam
import asyncio
from shazamio import Shazam
async def main():
# Example: https://www.shazam.com/track/559284007/rampampam
shazam = Shazam()
track_id = 559284007
count = await shazam.listening_counter(track_id=track_id)
print(count)
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
๐ถ๐ฌ Similar songs
Similar songs based song id
https://www.shazam.com/track/546891609/2-phu%CC%81t-ho%CC%9Bn-kaiz-remix
import asyncio
from shazamio import Shazam
async def main():
shazam = Shazam()
track_id = 546891609
related = await shazam.related_tracks(track_id=track_id, limit=5, offset=2)
# ONLY โ3, โ4 SONG
print(related)
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
๐๐จโ๐ค Search artists
Search all artists by prefix
import asyncio
from shazamio import Shazam, Serialize
async def main():
shazam = Shazam()
artists = await shazam.search_artist(query='Lil', limit=5)
for artist in artists['artists']['hits']:
serialized = Serialize.artist(data=artist)
print(serialized)
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
๐๐ถ Search tracks
Search all tracks by prefix
import asyncio
from shazamio import Shazam
async def main():
shazam = Shazam()
tracks = await shazam.search_track(query='Lil', limit=5)
print(tracks)
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
๐๐ถ๐จโ๐ค Top artist tracks
Get the top songs according to Shazam
https://www.shazam.com/artist/201896832/kizaru
import asyncio
from shazamio import Shazam, Serialize
from shazamio.schemas.artists import ArtistQuery
from shazamio.schemas.enums import ArtistView
async def main():
shazam = Shazam()
artist_id = 1081606072
about_artist = await shazam.artist_about(
artist_id,
query=ArtistQuery(
views=[
ArtistView.TOP_SONGS,
],
),
)
serialized = Serialize.artist_v2(about_artist)
for i in serialized.data[0].views.top_songs.data:
print(i.attributes.name)
loop = asyncio.get_event_loop_policy().get_event_loop()
loop.run_until_complete(main())
๐๐ถ๐๏ธ Top tracks in city
Retrieving information from an artist profile
https://www.shazam.com/charts/top-50/russia/moscow
import asyncio
from shazamio import Shazam, Serialize
async def main():
shazam = Shazam()
top_ten_moscow_tracks = await shazam.top_city_tracks(country_code='RU', city_name='Moscow', limit=10)
print(top_ten_moscow_tracks)
# ALL TRACKS DICT
for track in top_ten_moscow_tracks['tracks']:
serialized = Serialize.track(data=track)
# SERIALIZE FROM DATACLASS FACTORY
print(serialized)
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
๐๐ถ๐ณ๏ธโ๐ Top tracks in country
Get the best tracks by country code
https://www.shazam.com/charts/discovery/netherlands
import asyncio
from shazamio import Shazam, Serialize
async def main():
shazam = Shazam()
top_five_track_from_amsterdam = await shazam.top_country_tracks('NL', 5)
for track in top_five_track_from_amsterdam['tracks']:
serialized = Serialize.track(data=track)
print(serialized)
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
๐๐ถ๐ณ๏ธโ๐๐ธ Top tracks in country by genre
The best tracks by a genre in the country
https://www.shazam.com/charts/genre/spain/hip-hop-rap
import asyncio
from shazamio import Shazam, GenreMusic
async def main():
shazam = Shazam()
top_spain_rap = await shazam.top_country_genre_tracks(
country_code='ES',
genre=GenreMusic.HIP_HOP_RAP,
limit=4
)
print(top_spain_rap)
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
๐๐ถ๐๐ธ Top tracks in world by genre
Get world tracks by certain genre
https://www.shazam.com/charts/genre/world/rock
import asyncio
from shazamio import Shazam, Serialize, GenreMusic
async def main():
shazam = Shazam()
top_rock_in_the_world = await shazam.top_world_genre_tracks(genre=GenreMusic.ROCK, limit=10)
for track in top_rock_in_the_world['tracks']:
serialized_track = Serialize.track(data=track)
print(serialized_track.spotify_url)
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
๐๐ถ๐Top tracks in world
Get the best tracks from all over the world
https://www.shazam.com/charts/top-200/world
import asyncio
from shazamio import Shazam, Serialize
async def main():
shazam = Shazam()
top_world_tracks = await shazam.top_world_tracks(limit=10)
print(top_world_tracks)
for track in top_world_tracks['tracks']:
serialized = Serialize.track(track)
print(serialized)
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
How to use data serialization
Open Code
import asyncio
from shazamio import Shazam, Serialize
async def main():
shazam = Shazam()
top_five_track_from_amsterdam = await shazam.top_country_tracks('NL', 5)
for track in top_five_track_from_amsterdam['tracks']:
serialized = Serialize.track(data=track)
print(serialized.title)
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
Open photo: What song information looks like (Dict)
Open photo: what song information looks like (Custom serializer)
Agree, 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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file shazamio-0.7.0.tar.gz
.
File metadata
- Download URL: shazamio-0.7.0.tar.gz
- Upload date:
- Size: 27.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.4 CPython/3.12.7 Linux/6.5.0-1025-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | cf501b5caabe3a3decdb9a709be50c495c8849e0b445c47c3fc8c25bf31dd2c5 |
|
MD5 | 313b953ea812a21470032bb8f3f7258f |
|
BLAKE2b-256 | fed037d8b72a28eabe2b6cd14375c9cdb4a46ff7df49d073db6e644d7271fc2b |
File details
Details for the file shazamio-0.7.0-py3-none-any.whl
.
File metadata
- Download URL: shazamio-0.7.0-py3-none-any.whl
- Upload date:
- Size: 39.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.4 CPython/3.12.7 Linux/6.5.0-1025-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 06bcf62aa9eb81690cce80f4d360c58613b9f99bdcc05fb0f8431b1640046785 |
|
MD5 | f86ad3f954adebc2731eb5335aaf5f45 |
|
BLAKE2b-256 | fa42fcfa7ddf470bda0ce7081ab3709d23f4fdbeb1b9b7d82bef1756b43ec541 |