Git Product home page Git Product logo

https://scrutinizer-ci.com/g/dotX12/ShazamIO/ https://scrutinizer-ci.com/g/dotX12/ShazamIO/ https://scrutinizer-ci.com/g/dotX12/ShazamIO/ https://badge.fury.io/py/shazamio https://pepy.tech/project/shazamio https://pepy.tech/project/shazamio https://github.com/dotX12/ShazamIO/blob/master/LICENSE.txt

🎡 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.

shazamio's Projects

shazamio icon shazamio

🎡 Is a free asynchronous library from reverse engineered Shazam API written in Python 3.8+ with asyncio and aiohttp.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.