MelodyMaster


NameMelodyMaster JSON
Version 1.0.2 PyPI version JSON
download
home_pagehttps://github.com/BDXBB/MelodyMaster
SummaryIs a asynchronous framework from reverse engineered Shazam API written in Python 3.8+ with asyncio and aiohttp.
upload_time2024-05-14 19:52:26
maintainerNone
docs_urlNone
authorBKXBB
requires_python<4.0,>=3.8
licenseMIT
keywords python shazam music recognize api async asyncio aiohttp identification
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            <p align="center">
<img src="https://scrutinizer-ci.com/g/dotX12/ShazamIO/badges/quality-score.png?b=master" alt="https://scrutinizer-ci.com/g/dotX12/ShazamIO/">
<img src="https://scrutinizer-ci.com/g/dotX12/ShazamIO/badges/code-intelligence.svg?b=master" alt="https://scrutinizer-ci.com/g/dotX12/ShazamIO/">
<img src="https://scrutinizer-ci.com/g/dotX12/ShazamIO/badges/build.png?b=master" alt="https://scrutinizer-ci.com/g/dotX12/ShazamIO/">
<img src="https://badge.fury.io/py/shazamio.svg" alt="https://badge.fury.io/py/shazamio">
<img src="https://pepy.tech/badge/shazamio" alt="https://pepy.tech/project/shazamio">
<img src="https://pepy.tech/badge/shazamio/month" alt="https://pepy.tech/project/shazamio">
<img src="https://img.shields.io/github/license/dotX12/shazamio.svg" alt="https://github.com/dotX12/ShazamIO/blob/master/LICENSE.txt">
<br><br>
  
  <img width="1000" src="https://user-images.githubusercontent.com/64792903/109359596-ca561a00-7896-11eb-9c93-9cf1f283b1a5.png">
  🎡 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.
 
-----
</p>

## πŸ’Ώ Installation

```
πŸ’² pip install MelodyMaster
```

## πŸ’» Example


<details> 
<summary>
<i>πŸ”ŽπŸŽ΅ Recognize track</i>
</summary>

Recognize a track based on a file<br>

  ```python3
import asyncio
from MelodyMaster 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())
  ```
</details>

<details> 
<summary>
<i>πŸ‘¨β€πŸŽ€ About artist</i>
</summary>

Retrieving information from an artist profile<br>
<a href="https://www.shazam.com/artist/43328183/nathan-evans">https://www.shazam.com/artist/43328183/nathan-evans</a>

  ```python3
import asyncio
from MelodyMaster 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())
  ```
</details>


<details> 
<summary>
<i>πŸŽ΅πŸ“„ About track</i>
</summary>

Get track information<br>
<a href="https://www.shazam.com/track/552406075/ale-jazz">https://www.shazam.com/track/552406075/ale-jazz</a>

  ```python3
import asyncio
from MelodyMaster 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())
  ```
</details>

<details> 
<summary>
<i>πŸŽ΅βŒ› Track listenings count</i>
</summary>

Returns the number of times a particular song has been played<br>
<a href="https://www.shazam.com/track/559284007/rampampam">https://www.shazam.com/track/559284007/rampampam</a>

  ```python3
import asyncio
from MelodyMaster 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())
  ```
</details>

<details> 
<summary>
<i>πŸŽΆπŸ’¬ Similar songs</i>
</summary>

Similar songs based song id<br>
<a href="https://www.shazam.com/track/546891609/2-phu%CC%81t-ho%CC%9Bn-kaiz-remix">https://www.shazam.com/track/546891609/2-phu%CC%81t-ho%CC%9Bn-kaiz-remix</a>

  ```python3
import asyncio
from MelodyMaster 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())
  ```
</details>

<details> 
<summary>
<i>πŸ”ŽπŸ‘¨β€πŸŽ€ Search artists</i>
</summary>

Search all artists by prefix<br>
  ```python3
import asyncio
from MelodyMaster 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())

  ```
</details>

<details> 
<summary>
<i>πŸ”ŽπŸŽΆ Search tracks</i>
</summary>

Search all tracks by prefix<br>

  ```python3
import asyncio
from MelodyMaster 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())

  ```
</details>

<details> 
<summary>
<i>πŸ”πŸŽΆπŸ‘¨β€πŸŽ€ Top artist tracks</i>
</summary>

Get the top songs according to Shazam<br>
<a href="https://www.shazam.com/artist/201896832/kizaru">https://www.shazam.com/artist/201896832/kizaru</a>

  ```python3
import asyncio
from MelodyMaster import Shazam, Serialize
from MelodyMaster.schemas.artists import ArtistQuery
from MelodyMaster.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())


  ```
</details>

<details> 
<summary>
<i>πŸ”πŸŽΆπŸ™οΈ Top tracks in city</i>
</summary>

Retrieving information from an artist profile<br>
<a href="https://www.shazam.com/charts/top-50/russia/moscow">https://www.shazam.com/charts/top-50/russia/moscow</a>

  ```python3
import asyncio
from MelodyMaster 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())

  ```
</details>

<details> 
<summary>
<i>πŸ”πŸŽΆ Top tracks in country</i>
</summary>

Get the best tracks by country code<br>
<a href="https://www.shazam.com/charts/discovery/netherlands">https://www.shazam.com/charts/discovery/netherlands</a>

  ```python3
import asyncio
from MelodyMaster 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())
  ```
</details>

<details> 
<summary>
<i>πŸ”πŸŽΆπŸŽΈ Top tracks in country by genre</i>
</summary>

The best tracks by a genre in the country<br>
<a href="https://www.shazam.com/charts/genre/spain/hip-hop-rap">https://www.shazam.com/charts/genre/spain/hip-hop-rap</a>

  ```python3
import asyncio
from MelodyMaster 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())
  ```
</details>

<details> 
<summary>
<i>πŸ”πŸŽΆπŸŒπŸŽΈ Top tracks in world by genre</i>
</summary>

Get world tracks by certain genre<br>
<a href="https://www.shazam.com/charts/genre/world/rock">https://www.shazam.com/charts/genre/world/rock</a>

  ```python3
import asyncio
from MelodyMaster 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())
  ```
</details>

<details> 
<summary>
<i>πŸ”πŸŽΆπŸŒTop tracks in world</i>
</summary>

Get the best tracks from all over the world<br>
<a href="https://www.shazam.com/charts/top-200/world">https://www.shazam.com/charts/top-200/world</a>

  ```python3
import asyncio
from MelodyMaster 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())
  ```
</details>


## How to use data serialization

<details> 
<summary>
<i>Open Code</i>
</summary>

  ```python3
import asyncio
from MelodyMaster 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())
  ```
</details>

<details> 
<summary>
<i>Open photo: What song information looks like (Dict)</i>
</summary>
<img src="https://user-images.githubusercontent.com/64792903/109454521-75b4c980-7a65-11eb-917e-62da3abefb8a.png">

</details>

<details> 
<summary>
<i>Open photo: what song information looks like (Custom serializer)</i>
</summary>
<img src="https://user-images.githubusercontent.com/64792903/109454465-57e76480-7a65-11eb-956c-1bcac41d7de5.png">

</details>

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.


## How to use in Terminal

1. **recognize_song**: Used to recognize songs.

   Example:
   ```
   MelodyMaster recognize_song --file_path "path/to/audio_file"
   ```
   This example indicates that you want to recognize the song using the audio file located at "path/to/audio_file".

2. **about_artist**: Used to get information about an artist.

   Example:
   ```
   MelodyMaster about_artist --artist_id "Artist id"
   ```
   This example requests information about the artist named "Artist id".

3. **recognize_and_search**: Used to recognize songs and search for the song's name.

   Example:
   ```
   MelodyMaster recognize_and_search --file_path "path/to/audio_file"
   ```
   This example means you want to recognize the song using the audio file located at "path/to/audio_file" and search for the song's name.

4. **search_album**: Used to search for an album using the album ID.

   Example:
   ```
   MelodyMaster search_album --album_id 123
   ```
   This example searches for the album with the ID 123.

5 .**get_default_lyrics**: Used to get the default lyrics of a song.

   Example:
   ```
   MelodyMaster get_default_lyrics --title "Song Title" --srt "true"
   ```
   This example means you want to get the lyrics of the song titled "Song Title" and --srt if true give you lyrics with time if --srt false just lyrics
   
6 .**get_alternative_lyrics**: Used to get alternative lyrics of a song.

   Example:
   ```
   MelodyMaster get_alternative_lyrics --title "Song Title" --artist "Artist Name" --duration "Duration" --srt "true"
   ```
   This example means you want to get the alternative lyrics of the song titled "Song Title" by the artist "Artist Name" with duration "Duration". duration and Artist name optional

 7. **recognize_text**: Used to recognize text from an audio file.

   Example:
   ```
   MelodyMaster recognize_text --file_path "path/to/audio_file" --lang "en-GB"
   ```
   This example means you want to recognize the text from the audio file located at "path/to/audio_file" the lang for language you can find it .
   <details> 
<summary>
<i>here</i>
</summary>
     
 Afrikaans (South Africa) : af-ZA  
 Albanian (Albania) : sq-AL  
 Albanian (Albania) : sq-AL  
 Amharic (Ethiopia) : am-ET  
 Amharic (Ethiopia) : am-ET  
 Arabic (Algeria) : ar-DZ  
 Arabic (Algeria) : ar-DZ  
 Arabic (Bahrain) : ar-BH  
 Arabic (Bahrain) : ar-BH  
 Arabic (Egypt) : ar-EG  
 Arabic (Egypt) : ar-EG  
 Arabic (Iraq) : ar-IQ  
 Arabic (Iraq) : ar-IQ  
 Arabic (Israel) : ar-IL  
 Arabic (Israel) : ar-IL  
 Arabic (Jordan) : ar-JO  
 Arabic (Jordan) : ar-JO  
 Arabic (Kuwait) : ar-KW  
 Arabic (Kuwait) : ar-KW  
 Arabic (Lebanon) : ar-LB  
 Arabic (Lebanon) : ar-LB  
 Arabic (Morocco) : ar-MA  
 Arabic (Morocco) : ar-MA  
 Arabic (Oman) : ar-OM  
 Arabic (Oman) : ar-OM  
 Arabic (Qatar) : ar-QA  
 Arabic (Qatar) : ar-QA  
 Arabic (Saudi Arabia) : ar-SA  
 Arabic (Saudi Arabia) : ar-SA  
 Arabic (Palestine) : ar-PS  
 Arabic (Palestine) : ar-PS  
 Arabic (Tunisia) : ar-TN  
 Arabic (Tunisia) : ar-TN  
 Arabic (UAE) : ar-AE
 Arabic (Yemen) : ar-YE  
 Arabic (Yemen) : ar-YE  
 Armenian (Armenia) : hy-AM  
 Armenian (Armenia) : hy-AM  
 Azerbaijani (Azerbaijan) : az-AZ  
 Azerbaijani (Azerbaijan) : az-AZ  
 Basque (Spain) : eu-ES  
 Basque (Spain) : eu-ES  
 Bengali (Bangladesh) : bn-BD  
 Bengali (Bangladesh) : bn-BD  
 Bengali (India) : bn-IN  
 Bengali (India) : bn-IN  
 Bosnian (Bosnia Herzegovina) : bs-BA  
 Bosnian (Bosnia Herzegovina) : bs-BA  
 Bulgarian (Bulgaria) : bg-BG  
 Bulgarian (Bulgaria) : bg-BG  
 Burmese (Myanmar) : my-MM  
 Burmese (Myanmar) : my-MM  
 Catalan (Spain) : ca-ES  
 Catalan (Spain) : ca-ES  
 Chinese, Cantonese (Traditional Hong Kong) : yue-Hant-HK  
 Chinese, Mandarin (Simplified, China) : zh (cmn-Hans-CN)
 Chinese, Mandarin (Traditional, Taiwan) : zh-TW (cmn-Hant-TW)
 Croatian (Croatia) : hr-HR  
 Croatian (Croatia) : hr-HR  
 Czech (Czech Republic) : cs-CZ
 Czech (Czech Republic) : cs-CZ
 Danish (Denmark) : da-DK
 Danish (Denmark) : da-DK
 Dutch (Belgium) : nl-BE  
 Dutch (Belgium) : nl-BE  
 Dutch (Netherlands) : nl-NL
 Dutch (Netherlands) : nl-NL
 English (Australia) : en-AU
 English (Australia) : en-AU
 English (Canada) : en-CA
 English (Canada) : en-CA  
 English (Ghana) : en-GH
 English (Ghana) : en-GH
 English (Hong Kong) : en-HK
 English (Hong Kong) : en-HK
 English (India) : en-IN
 English (India) : en-IN
 English (Ireland) : en-IE
 English (Ireland) : en-IE
 English (Kenya) : en-KE
 English (Kenya) : en-KE
 English (New Zealand) : en-NZ
 English (New Zealand) : en-NZ
 English (Nigeria) : en-NG
 English (Nigeria) : en-NG
 English (Pakistan) : en-PK
 English (Pakistan) : en-PK
 English (Philippines) : en-PH
 English (Philippines) : en-PH  
 English (Singapore) : en-SG
 English (Singapore) : en-SG
 English (South Africa) : en-ZA
 English (South Africa) : en-ZA
 English (Tanzania) : en-TZ
 English (Tanzania) : en-TZ  
 English (United Kingdom) : en-GB      
 English (United States) : en-US    
 English (United States) : en-US    
 Estonian (Estonia) : et-EE  
 Estonian (Estonia) : et-EE  
 Filipino (Philippines) : fil-PH  
 Filipino (Philippines) : fil-PH  
 Finnish (Finland) : fi-FI
 Finnish (Finland) : fi-FI
 French (Belgium) : fr-BE
 French (Belgium) : fr-BE
 French (Canada) : fr-CA
 French (Canada) : fr-CA
 French (France) : fr-FR   
 French (France) : fr-FR  
 French (Switzerland) : fr-CH
 French (Switzerland) : fr-CH
 Galician (Spain) : gl-ES  
 Galician (Spain) : gl-ES  
 Georgian (Georgia) : ka-GE  
 Georgian (Georgia) : ka-GE  
 German (Austria) : de-AT  
 German (Austria) : de-AT  
 German (Germany) : de-DE
 German (Germany) : de-DE
 German (Switzerland) : de-CH  
 German (Switzerland) : de-CH  
 Greek (Greece) : el-GR  
 Greek (Greece) : el-GR  
 Gujarati (India) : gu-IN  
 Gujarati (India) : gu-IN  
 Hebrew (Israel) : iw-IL
 Hebrew (Israel) : iw-IL
 Hindi (India) : hi-IN
 Hindi (India) : hi-IN
 Hungarian (Hungary) : hu-HU  
 Hungarian (Hungary) : hu-HU  
 Icelandic (Iceland) : is-IS  
 Icelandic (Iceland) : is-IS  
 Indonesian (Indonesia) : id-ID
 Indonesian (Indonesia) : id-ID
 Italian (Italy) : it-IT
 Italian (Italy) : it-IT
 Italian (Switzerland) : it-CH  
 Italian (Switzerland) : it-CH  
 Japanese (Japan) : ja-JP     
 Japanese (Japan) : ja-JP    
 Javanese (Indonesia) : jv-ID  
 Javanese (Indonesia) : jv-ID  
 Kannada (India) : kn-IN  
 Kannada (India) : kn-IN  
 Kazakh (Kazakhstan) : kk-KZ  
 Kazakh (Kazakhstan) : kk-KZ  
 Khmer (Cambodia) : km-KH  
 Khmer (Cambodia) : km-KH  
 Korean (South Korea) : ko-KR
 Korean (South Korea) : ko-KR
 Lao (Laos) : lo-LA  
 Lao (Laos) : lo-LA  
 Latvian (Latvia) : lv-LV  
 Latvian (Latvia) : lv-LV  
 Lithuanian (Lithuania) : lt-LT  
 Lithuanian (Lithuania) : lt-LT  
 Macedonian (North Macedonia) :
mk-MK  
 Macedonian (North Macedonia) : mk-MK  
 Malay (Malaysia) : ms-MY  
 Malay (Malaysia) : ms-MY  
 Malayalam (India) : ml-IN
 Malayalam (India) : ml-IN
 Marathi (India) : mr-IN  
 Marathi (India) : mr-IN  
 Mongolian (Mongolia) : mn-MN  
 Mongolian (Mongolia) : mn-MN  
 Nepali (Nepal) : ne-NP  
 Nepali (Nepal) : ne-NP  
 Norwegian BokmΓ₯l (Norway): no-NO
 Norwegian BokmΓ₯l (Norway): no-NO
 Persian (Iran) : fa-IR  
 Persian (Iran) : fa-IR  
 Polish (Poland) : pl-PL
 Polish (Poland) : pl-PL
 Portuguese (Brazil) : pt-BR
 Portuguese (Brazil) : pt-BR
 Portuguese (Portugal) : pt-PT
 Portuguese (Portugal) : pt-PT
 Punjabi (Gurmukhi India) : pa-Guru-IN  
 Punjabi (Gurmukhi India) : pa-Guru-IN  
 Romanian (Romania) : ro-RO  
 Romanian (Romania) : ro-RO  
 Russian (Russia) : ru-RU
 Russian (Russia) : ru-RU
 Russian (Russia) : ru-RU     
 Russian (Russia) : ru-RU    
 Serbian (Serbia) : sr-RS  
 Serbian (Serbia) : sr-RS  
 Sinhala (Sri Lanka) : si-LK  
 Sinhala (Sri Lanka) : si-LK  
 Slovak (Slovakia) : sk-SK  
 Slovak (Slovakia) : sk-SK  
 Slovenian (Slovenia) : sl-SI  
 Slovenian (Slovenia) : sl-SI  
 Spanish (Argentina) : es-AR  
 Spanish (Argentina) : es-AR  
 Spanish (Bolivia) : es-BO  
 Spanish (Bolivia) : es-BO  
 Spanish (Chile) : es-CL  
 Spanish (Chile) : es-CL  
 Spanish (Colombia) : es-CO  
 Spanish (Colombia) : es-CO  
 Spanish (Costa Rica) : es-CR  
 Spanish (Costa Rica) : es-CR  
 Spanish (Dominican Rep.) : es-DO
 Spanish (Ecuador) : es-EC  
 Spanish (Ecuador) : es-EC  
 Spanish (El Salvador) : es-SV  
 Spanish (El Salvador) : es-SV  
 Spanish (Guatemala) : es-GT  
 Spanish (Guatemala) : es-GT  
 Spanish (Honduras) : es-HN  
 Spanish (Honduras) : es-HN  
 Spanish (Mexico) : es-MX  
 Spanish (Mexico) : es-MX  
 Spanish (Nicaragua) : es-NI  
 Spanish (Nicaragua) : es-NI  
 Spanish (Panama) : es-PA  
 Spanish (Panama) : es-PA  
 Spanish (Paraguay) : es-PY  
 Spanish (Paraguay) : es-PY  
 Spanish (Peru) : es-PE  
 Spanish (Peru) : es-PE  
 Spanish (Puerto Rico) : es-PR  
 Spanish (Puerto Rico) : es-PR  
 Spanish (Spain) : es-ES
 Spanish (Spain) : es-ES    
 Spanish (United States) : es-US    
 Spanish (Uruguay) : es-UY  
 Spanish (Uruguay) : es-UY  
 Spanish (Venezuela) : es-VE  
 Spanish (Venezuela) : es-VE  
 Sundanese (Indonesia) : su-ID  
 Sundanese (Indonesia) : su-ID  
 Swahili (Kenya) : sw-KE  
 Swahili (Kenya) : sw-KE  
 Swahili (Tanzania) : sw-TZ  
 Swahili (Tanzania) : sw-TZ  
 Swedish (Sweden) : sv-SE
 Swedish (Sweden) : sv-SE
 Tamil (India) : ta-IN  
 Tamil (India) : ta-IN  
 Tamil (Malaysia) : ta-MY  
 Tamil (Malaysia) : ta-MY  
 Tamil (Singapore) : ta-SG  
 Tamil (Singapore) : ta-SG  
 Tamil (Sri Lanka) : ta-LK  
 Tamil (Sri Lanka) : ta-LK  
 Telugu (India) : te-IN  
 Telugu (India) : te-IN  
 Thai (Thailand) : th-TH  
 Thai (Thailand) : th-TH  
 Turkish (Turkey) : tr-TR
 Turkish (Turkey) : tr-TR
 Ukrainian (Ukraine) : uk-UA  
 Ukrainian (Ukraine) : uk-UA  
 Urdu (India) : ur-IN  
 Urdu (India) : ur-IN  
 Urdu (Pakistan) : ur-PK  
 Urdu (Pakistan) : ur-PK  
 Uzbek (Uzbekistan) : uz-UZ  
 Uzbek (Uzbekistan) : uz-UZ  
 Vietnamese (Vietnam) : vi-VN  
 Vietnamese (Vietnam) : vi-VN  
 Zulu (South Africa) : zu-ZA  
 Zulu (South Africa) : zu-ZA  
</details>

# MelodyMaster

MelodyMaster is a modified version of the Shazamio library.

## Acknowledgements

We would like to express our gratitude to everyone who contributed to the modification of the MelodyMaster library, which is based on the Shazamio library.


## Contact Us

For any inquiries or feedback, you can reach us on Telegram at [@BDXBB](https://t.me/BDXBB).


            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/BDXBB/MelodyMaster",
    "name": "MelodyMaster",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<4.0,>=3.8",
    "maintainer_email": null,
    "keywords": "python, shazam, music, recognize, api, async, asyncio, aiohttp, identification",
    "author": "BKXBB",
    "author_email": null,
    "download_url": "https://files.pythonhosted.org/packages/e9/43/01962e1326fd9910b291bef4488a529a4030abcac7940da9ff09433e9634/melodymaster-1.0.2.tar.gz",
    "platform": null,
    "description": "<p align=\"center\">\n<img src=\"https://scrutinizer-ci.com/g/dotX12/ShazamIO/badges/quality-score.png?b=master\" alt=\"https://scrutinizer-ci.com/g/dotX12/ShazamIO/\">\n<img src=\"https://scrutinizer-ci.com/g/dotX12/ShazamIO/badges/code-intelligence.svg?b=master\" alt=\"https://scrutinizer-ci.com/g/dotX12/ShazamIO/\">\n<img src=\"https://scrutinizer-ci.com/g/dotX12/ShazamIO/badges/build.png?b=master\" alt=\"https://scrutinizer-ci.com/g/dotX12/ShazamIO/\">\n<img src=\"https://badge.fury.io/py/shazamio.svg\" alt=\"https://badge.fury.io/py/shazamio\">\n<img src=\"https://pepy.tech/badge/shazamio\" alt=\"https://pepy.tech/project/shazamio\">\n<img src=\"https://pepy.tech/badge/shazamio/month\" alt=\"https://pepy.tech/project/shazamio\">\n<img src=\"https://img.shields.io/github/license/dotX12/shazamio.svg\" alt=\"https://github.com/dotX12/ShazamIO/blob/master/LICENSE.txt\">\n<br><br>\n  \n  <img width=\"1000\" src=\"https://user-images.githubusercontent.com/64792903/109359596-ca561a00-7896-11eb-9c93-9cf1f283b1a5.png\">\n  \ud83c\udfb5 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</p>\n\n## \ud83d\udcbf Installation\n\n```\n\ud83d\udcb2 pip install MelodyMaster\n```\n\n## \ud83d\udcbb Example\n\n\n<details> \n<summary>\n<i>\ud83d\udd0e\ud83c\udfb5 Recognize track</i>\n</summary>\n\nRecognize a track based on a file<br>\n\n  ```python3\nimport asyncio\nfrom MelodyMaster 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</details>\n\n<details> \n<summary>\n<i>\ud83d\udc68\u200d\ud83c\udfa4 About artist</i>\n</summary>\n\nRetrieving information from an artist profile<br>\n<a href=\"https://www.shazam.com/artist/43328183/nathan-evans\">https://www.shazam.com/artist/43328183/nathan-evans</a>\n\n  ```python3\nimport asyncio\nfrom MelodyMaster 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</details>\n\n\n<details> \n<summary>\n<i>\ud83c\udfb5\ud83d\udcc4 About track</i>\n</summary>\n\nGet track information<br>\n<a href=\"https://www.shazam.com/track/552406075/ale-jazz\">https://www.shazam.com/track/552406075/ale-jazz</a>\n\n  ```python3\nimport asyncio\nfrom MelodyMaster 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</details>\n\n<details> \n<summary>\n<i>\ud83c\udfb5\u231b Track listenings count</i>\n</summary>\n\nReturns the number of times a particular song has been played<br>\n<a href=\"https://www.shazam.com/track/559284007/rampampam\">https://www.shazam.com/track/559284007/rampampam</a>\n\n  ```python3\nimport asyncio\nfrom MelodyMaster 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</details>\n\n<details> \n<summary>\n<i>\ud83c\udfb6\ud83d\udcac Similar songs</i>\n</summary>\n\nSimilar songs based song id<br>\n<a href=\"https://www.shazam.com/track/546891609/2-phu%CC%81t-ho%CC%9Bn-kaiz-remix\">https://www.shazam.com/track/546891609/2-phu%CC%81t-ho%CC%9Bn-kaiz-remix</a>\n\n  ```python3\nimport asyncio\nfrom MelodyMaster 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 \u21163, \u21164 SONG\n    print(related)\n\nloop = asyncio.get_event_loop()\nloop.run_until_complete(main())\n  ```\n</details>\n\n<details> \n<summary>\n<i>\ud83d\udd0e\ud83d\udc68\u200d\ud83c\udfa4 Search artists</i>\n</summary>\n\nSearch all artists by prefix<br>\n  ```python3\nimport asyncio\nfrom MelodyMaster 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</details>\n\n<details> \n<summary>\n<i>\ud83d\udd0e\ud83c\udfb6 Search tracks</i>\n</summary>\n\nSearch all tracks by prefix<br>\n\n  ```python3\nimport asyncio\nfrom MelodyMaster 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</details>\n\n<details> \n<summary>\n<i>\ud83d\udd1d\ud83c\udfb6\ud83d\udc68\u200d\ud83c\udfa4 Top artist tracks</i>\n</summary>\n\nGet the top songs according to Shazam<br>\n<a href=\"https://www.shazam.com/artist/201896832/kizaru\">https://www.shazam.com/artist/201896832/kizaru</a>\n\n  ```python3\nimport asyncio\nfrom MelodyMaster import Shazam, Serialize\nfrom MelodyMaster.schemas.artists import ArtistQuery\nfrom MelodyMaster.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</details>\n\n<details> \n<summary>\n<i>\ud83d\udd1d\ud83c\udfb6\ud83c\udfd9\ufe0f Top tracks in city</i>\n</summary>\n\nRetrieving information from an artist profile<br>\n<a href=\"https://www.shazam.com/charts/top-50/russia/moscow\">https://www.shazam.com/charts/top-50/russia/moscow</a>\n\n  ```python3\nimport asyncio\nfrom MelodyMaster 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</details>\n\n<details> \n<summary>\n<i>\ud83d\udd1d\ud83c\udfb6 Top tracks in country</i>\n</summary>\n\nGet the best tracks by country code<br>\n<a href=\"https://www.shazam.com/charts/discovery/netherlands\">https://www.shazam.com/charts/discovery/netherlands</a>\n\n  ```python3\nimport asyncio\nfrom MelodyMaster 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</details>\n\n<details> \n<summary>\n<i>\ud83d\udd1d\ud83c\udfb6\ud83c\udfb8 Top tracks in country by genre</i>\n</summary>\n\nThe best tracks by a genre in the country<br>\n<a href=\"https://www.shazam.com/charts/genre/spain/hip-hop-rap\">https://www.shazam.com/charts/genre/spain/hip-hop-rap</a>\n\n  ```python3\nimport asyncio\nfrom MelodyMaster 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</details>\n\n<details> \n<summary>\n<i>\ud83d\udd1d\ud83c\udfb6\ud83c\udf0f\ud83c\udfb8 Top tracks in world by genre</i>\n</summary>\n\nGet world tracks by certain genre<br>\n<a href=\"https://www.shazam.com/charts/genre/world/rock\">https://www.shazam.com/charts/genre/world/rock</a>\n\n  ```python3\nimport asyncio\nfrom MelodyMaster 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</details>\n\n<details> \n<summary>\n<i>\ud83d\udd1d\ud83c\udfb6\ud83c\udf0fTop tracks in world</i>\n</summary>\n\nGet the best tracks from all over the world<br>\n<a href=\"https://www.shazam.com/charts/top-200/world\">https://www.shazam.com/charts/top-200/world</a>\n\n  ```python3\nimport asyncio\nfrom MelodyMaster 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</details>\n\n\n## How to use data serialization\n\n<details> \n<summary>\n<i>Open Code</i>\n</summary>\n\n  ```python3\nimport asyncio\nfrom MelodyMaster 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</details>\n\n<details> \n<summary>\n<i>Open photo: What song information looks like (Dict)</i>\n</summary>\n<img src=\"https://user-images.githubusercontent.com/64792903/109454521-75b4c980-7a65-11eb-917e-62da3abefb8a.png\">\n\n</details>\n\n<details> \n<summary>\n<i>Open photo: what song information looks like (Custom serializer)</i>\n</summary>\n<img src=\"https://user-images.githubusercontent.com/64792903/109454465-57e76480-7a65-11eb-956c-1bcac41d7de5.png\">\n\n</details>\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\n\n## How to use in Terminal\n\n1. **recognize_song**: Used to recognize songs.\n\n   Example:\n   ```\n   MelodyMaster recognize_song --file_path \"path/to/audio_file\"\n   ```\n   This example indicates that you want to recognize the song using the audio file located at \"path/to/audio_file\".\n\n2. **about_artist**: Used to get information about an artist.\n\n   Example:\n   ```\n   MelodyMaster about_artist --artist_id \"Artist id\"\n   ```\n   This example requests information about the artist named \"Artist id\".\n\n3. **recognize_and_search**: Used to recognize songs and search for the song's name.\n\n   Example:\n   ```\n   MelodyMaster recognize_and_search --file_path \"path/to/audio_file\"\n   ```\n   This example means you want to recognize the song using the audio file located at \"path/to/audio_file\" and search for the song's name.\n\n4. **search_album**: Used to search for an album using the album ID.\n\n   Example:\n   ```\n   MelodyMaster search_album --album_id 123\n   ```\n   This example searches for the album with the ID 123.\n\n5 .**get_default_lyrics**: Used to get the default lyrics of a song.\n\n   Example:\n   ```\n   MelodyMaster get_default_lyrics --title \"Song Title\" --srt \"true\"\n   ```\n   This example means you want to get the lyrics of the song titled \"Song Title\" and --srt if true give you lyrics with time if --srt false just lyrics\n   \n6 .**get_alternative_lyrics**: Used to get alternative lyrics of a song.\n\n   Example:\n   ```\n   MelodyMaster get_alternative_lyrics --title \"Song Title\" --artist \"Artist Name\" --duration \"Duration\" --srt \"true\"\n   ```\n   This example means you want to get the alternative lyrics of the song titled \"Song Title\" by the artist \"Artist Name\" with duration \"Duration\". duration and Artist name optional\n\n 7. **recognize_text**: Used to recognize text from an audio file.\n\n   Example:\n   ```\n   MelodyMaster recognize_text --file_path \"path/to/audio_file\" --lang \"en-GB\"\n   ```\n   This example means you want to recognize the text from the audio file located at \"path/to/audio_file\" the lang for language you can find it .\n   <details> \n<summary>\n<i>here</i>\n</summary>\n     \n Afrikaans (South Africa) : af-ZA  \n Albanian (Albania) : sq-AL  \n Albanian (Albania) : sq-AL  \n Amharic (Ethiopia) : am-ET  \n Amharic (Ethiopia) : am-ET  \n Arabic (Algeria) : ar-DZ  \n Arabic (Algeria) : ar-DZ  \n Arabic (Bahrain) : ar-BH  \n Arabic (Bahrain) : ar-BH  \n Arabic (Egypt) : ar-EG  \n Arabic (Egypt) : ar-EG  \n Arabic (Iraq) : ar-IQ  \n Arabic (Iraq) : ar-IQ  \n Arabic (Israel) : ar-IL  \n Arabic (Israel) : ar-IL  \n Arabic (Jordan) : ar-JO  \n Arabic (Jordan) : ar-JO  \n Arabic (Kuwait) : ar-KW  \n Arabic (Kuwait) : ar-KW  \n Arabic (Lebanon) : ar-LB  \n Arabic (Lebanon) : ar-LB  \n Arabic (Morocco) : ar-MA  \n Arabic (Morocco) : ar-MA  \n Arabic (Oman) : ar-OM  \n Arabic (Oman) : ar-OM  \n Arabic (Qatar) : ar-QA  \n Arabic (Qatar) : ar-QA  \n Arabic (Saudi Arabia) : ar-SA  \n Arabic (Saudi Arabia) : ar-SA  \n Arabic (Palestine) : ar-PS  \n Arabic (Palestine) : ar-PS  \n Arabic (Tunisia) : ar-TN  \n Arabic (Tunisia) : ar-TN  \n Arabic (UAE) : ar-AE\n Arabic (Yemen) : ar-YE  \n Arabic (Yemen) : ar-YE  \n Armenian (Armenia) : hy-AM  \n Armenian (Armenia) : hy-AM  \n Azerbaijani (Azerbaijan) : az-AZ  \n Azerbaijani (Azerbaijan) : az-AZ  \n Basque (Spain) : eu-ES  \n Basque (Spain) : eu-ES  \n Bengali (Bangladesh) : bn-BD  \n Bengali (Bangladesh) : bn-BD  \n Bengali (India) : bn-IN  \n Bengali (India) : bn-IN  \n Bosnian (Bosnia Herzegovina) : bs-BA  \n Bosnian (Bosnia Herzegovina) : bs-BA  \n Bulgarian (Bulgaria) : bg-BG  \n Bulgarian (Bulgaria) : bg-BG  \n Burmese (Myanmar) : my-MM  \n Burmese (Myanmar) : my-MM  \n Catalan (Spain) : ca-ES  \n Catalan (Spain) : ca-ES  \n Chinese, Cantonese (Traditional Hong Kong) : yue-Hant-HK  \n Chinese, Mandarin (Simplified, China) : zh (cmn-Hans-CN)\n Chinese, Mandarin (Traditional, Taiwan) : zh-TW (cmn-Hant-TW)\n Croatian (Croatia) : hr-HR  \n Croatian (Croatia) : hr-HR  \n Czech (Czech Republic) : cs-CZ\n Czech (Czech Republic) : cs-CZ\n Danish (Denmark) : da-DK\n Danish (Denmark) : da-DK\n Dutch (Belgium) : nl-BE  \n Dutch (Belgium) : nl-BE  \n Dutch (Netherlands) : nl-NL\n Dutch (Netherlands) : nl-NL\n English (Australia) : en-AU\n English (Australia) : en-AU\n English (Canada) : en-CA\n English (Canada) : en-CA  \n English (Ghana) : en-GH\n English (Ghana) : en-GH\n English (Hong Kong) : en-HK\n English (Hong Kong) : en-HK\n English (India) : en-IN\n English (India) : en-IN\n English (Ireland) : en-IE\n English (Ireland) : en-IE\n English (Kenya) : en-KE\n English (Kenya) : en-KE\n English (New Zealand) : en-NZ\n English (New Zealand) : en-NZ\n English (Nigeria) : en-NG\n English (Nigeria) : en-NG\n English (Pakistan) : en-PK\n English (Pakistan) : en-PK\n English (Philippines) : en-PH\n English (Philippines) : en-PH  \n English (Singapore) : en-SG\n English (Singapore) : en-SG\n English (South Africa) : en-ZA\n English (South Africa) : en-ZA\n English (Tanzania) : en-TZ\n English (Tanzania) : en-TZ  \n English (United Kingdom) : en-GB      \n English (United States) : en-US    \n English (United States) : en-US    \n Estonian (Estonia) : et-EE  \n Estonian (Estonia) : et-EE  \n Filipino (Philippines) : fil-PH  \n Filipino (Philippines) : fil-PH  \n Finnish (Finland) : fi-FI\n Finnish (Finland) : fi-FI\n French (Belgium) : fr-BE\n French (Belgium) : fr-BE\n French (Canada) : fr-CA\n French (Canada) : fr-CA\n French (France) : fr-FR   \n French (France) : fr-FR  \n French (Switzerland) : fr-CH\n French (Switzerland) : fr-CH\n Galician (Spain) : gl-ES  \n Galician (Spain) : gl-ES  \n Georgian (Georgia) : ka-GE  \n Georgian (Georgia) : ka-GE  \n German (Austria) : de-AT  \n German (Austria) : de-AT  \n German (Germany) : de-DE\n German (Germany) : de-DE\n German (Switzerland) : de-CH  \n German (Switzerland) : de-CH  \n Greek (Greece) : el-GR  \n Greek (Greece) : el-GR  \n Gujarati (India) : gu-IN  \n Gujarati (India) : gu-IN  \n Hebrew (Israel) : iw-IL\n Hebrew (Israel) : iw-IL\n Hindi (India) : hi-IN\n Hindi (India) : hi-IN\n Hungarian (Hungary) : hu-HU  \n Hungarian (Hungary) : hu-HU  \n Icelandic (Iceland) : is-IS  \n Icelandic (Iceland) : is-IS  \n Indonesian (Indonesia) : id-ID\n Indonesian (Indonesia) : id-ID\n Italian (Italy) : it-IT\n Italian (Italy) : it-IT\n Italian (Switzerland) : it-CH  \n Italian (Switzerland) : it-CH  \n Japanese (Japan) : ja-JP     \n Japanese (Japan) : ja-JP    \n Javanese (Indonesia) : jv-ID  \n Javanese (Indonesia) : jv-ID  \n Kannada (India) : kn-IN  \n Kannada (India) : kn-IN  \n Kazakh (Kazakhstan) : kk-KZ  \n Kazakh (Kazakhstan) : kk-KZ  \n Khmer (Cambodia) : km-KH  \n Khmer (Cambodia) : km-KH  \n Korean (South Korea) : ko-KR\n Korean (South Korea) : ko-KR\n Lao (Laos) : lo-LA  \n Lao (Laos) : lo-LA  \n Latvian (Latvia) : lv-LV  \n Latvian (Latvia) : lv-LV  \n Lithuanian (Lithuania) : lt-LT  \n Lithuanian (Lithuania) : lt-LT  \n Macedonian (North Macedonia) :\nmk-MK  \n Macedonian (North Macedonia) : mk-MK  \n Malay (Malaysia) : ms-MY  \n Malay (Malaysia) : ms-MY  \n Malayalam (India) : ml-IN\n Malayalam (India) : ml-IN\n Marathi (India) : mr-IN  \n Marathi (India) : mr-IN  \n Mongolian (Mongolia) : mn-MN  \n Mongolian (Mongolia) : mn-MN  \n Nepali (Nepal) : ne-NP  \n Nepali (Nepal) : ne-NP  \n Norwegian Bokm\u00e5l (Norway): no-NO\n Norwegian Bokm\u00e5l (Norway): no-NO\n Persian (Iran) : fa-IR  \n Persian (Iran) : fa-IR  \n Polish (Poland) : pl-PL\n Polish (Poland) : pl-PL\n Portuguese (Brazil) : pt-BR\n Portuguese (Brazil) : pt-BR\n Portuguese (Portugal) : pt-PT\n Portuguese (Portugal) : pt-PT\n Punjabi (Gurmukhi India) : pa-Guru-IN  \n Punjabi (Gurmukhi India) : pa-Guru-IN  \n Romanian (Romania) : ro-RO  \n Romanian (Romania) : ro-RO  \n Russian (Russia) : ru-RU\n Russian (Russia) : ru-RU\n Russian (Russia) : ru-RU     \n Russian (Russia) : ru-RU    \n Serbian (Serbia) : sr-RS  \n Serbian (Serbia) : sr-RS  \n Sinhala (Sri Lanka) : si-LK  \n Sinhala (Sri Lanka) : si-LK  \n Slovak (Slovakia) : sk-SK  \n Slovak (Slovakia) : sk-SK  \n Slovenian (Slovenia) : sl-SI  \n Slovenian (Slovenia) : sl-SI  \n Spanish (Argentina) : es-AR  \n Spanish (Argentina) : es-AR  \n Spanish (Bolivia) : es-BO  \n Spanish (Bolivia) : es-BO  \n Spanish (Chile) : es-CL  \n Spanish (Chile) : es-CL  \n Spanish (Colombia) : es-CO  \n Spanish (Colombia) : es-CO  \n Spanish (Costa Rica) : es-CR  \n Spanish (Costa Rica) : es-CR  \n Spanish (Dominican Rep.) : es-DO\n Spanish (Ecuador) : es-EC  \n Spanish (Ecuador) : es-EC  \n Spanish (El Salvador) : es-SV  \n Spanish (El Salvador) : es-SV  \n Spanish (Guatemala) : es-GT  \n Spanish (Guatemala) : es-GT  \n Spanish (Honduras) : es-HN  \n Spanish (Honduras) : es-HN  \n Spanish (Mexico) : es-MX  \n Spanish (Mexico) : es-MX  \n Spanish (Nicaragua) : es-NI  \n Spanish (Nicaragua) : es-NI  \n Spanish (Panama) : es-PA  \n Spanish (Panama) : es-PA  \n Spanish (Paraguay) : es-PY  \n Spanish (Paraguay) : es-PY  \n Spanish (Peru) : es-PE  \n Spanish (Peru) : es-PE  \n Spanish (Puerto Rico) : es-PR  \n Spanish (Puerto Rico) : es-PR  \n Spanish (Spain) : es-ES\n Spanish (Spain) : es-ES    \n Spanish (United States) : es-US    \n Spanish (Uruguay) : es-UY  \n Spanish (Uruguay) : es-UY  \n Spanish (Venezuela) : es-VE  \n Spanish (Venezuela) : es-VE  \n Sundanese (Indonesia) : su-ID  \n Sundanese (Indonesia) : su-ID  \n Swahili (Kenya) : sw-KE  \n Swahili (Kenya) : sw-KE  \n Swahili (Tanzania) : sw-TZ  \n Swahili (Tanzania) : sw-TZ  \n Swedish (Sweden) : sv-SE\n Swedish (Sweden) : sv-SE\n Tamil (India) : ta-IN  \n Tamil (India) : ta-IN  \n Tamil (Malaysia) : ta-MY  \n Tamil (Malaysia) : ta-MY  \n Tamil (Singapore) : ta-SG  \n Tamil (Singapore) : ta-SG  \n Tamil (Sri Lanka) : ta-LK  \n Tamil (Sri Lanka) : ta-LK  \n Telugu (India) : te-IN  \n Telugu (India) : te-IN  \n Thai (Thailand) : th-TH  \n Thai (Thailand) : th-TH  \n Turkish (Turkey) : tr-TR\n Turkish (Turkey) : tr-TR\n Ukrainian (Ukraine) : uk-UA  \n Ukrainian (Ukraine) : uk-UA  \n Urdu (India) : ur-IN  \n Urdu (India) : ur-IN  \n Urdu (Pakistan) : ur-PK  \n Urdu (Pakistan) : ur-PK  \n Uzbek (Uzbekistan) : uz-UZ  \n Uzbek (Uzbekistan) : uz-UZ  \n Vietnamese (Vietnam) : vi-VN  \n Vietnamese (Vietnam) : vi-VN  \n Zulu (South Africa) : zu-ZA  \n Zulu (South Africa) : zu-ZA  \n</details>\n\n# MelodyMaster\n\nMelodyMaster is a modified version of the Shazamio library.\n\n## Acknowledgements\n\nWe would like to express our gratitude to everyone who contributed to the modification of the MelodyMaster library, which is based on the Shazamio library.\n\n\n## Contact Us\n\nFor any inquiries or feedback, you can reach us on Telegram at [@BDXBB](https://t.me/BDXBB).\n\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Is a asynchronous framework from reverse engineered Shazam API written in Python 3.8+ with asyncio and aiohttp.",
    "version": "1.0.2",
    "project_urls": {
        "Homepage": "https://github.com/BDXBB/MelodyMaster",
        "Repository": "https://github.com/BDXBB/MelodyMaster"
    },
    "split_keywords": [
        "python",
        " shazam",
        " music",
        " recognize",
        " api",
        " async",
        " asyncio",
        " aiohttp",
        " identification"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "dbcdcadffa24fc3a654739ed3c48ae8b3d34705852fd7b369a601d3af2c379fb",
                "md5": "e87ab633deaab860e7f097a5ba61d7f7",
                "sha256": "fbd238eaa4b0090d08e12014fd6c68f9d7b5ab3a83f8d792920486fdf8663a0b"
            },
            "downloads": -1,
            "filename": "melodymaster-1.0.2-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "e87ab633deaab860e7f097a5ba61d7f7",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<4.0,>=3.8",
            "size": 52609,
            "upload_time": "2024-05-14T19:52:24",
            "upload_time_iso_8601": "2024-05-14T19:52:24.918486Z",
            "url": "https://files.pythonhosted.org/packages/db/cd/cadffa24fc3a654739ed3c48ae8b3d34705852fd7b369a601d3af2c379fb/melodymaster-1.0.2-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e94301962e1326fd9910b291bef4488a529a4030abcac7940da9ff09433e9634",
                "md5": "7bc93a46b2ff74d7baf6bfdad8848e9a",
                "sha256": "a7ce9062974d9b3192d6038e24ac264cc595bda8a4470ed11f3a2772fddadaf5"
            },
            "downloads": -1,
            "filename": "melodymaster-1.0.2.tar.gz",
            "has_sig": false,
            "md5_digest": "7bc93a46b2ff74d7baf6bfdad8848e9a",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<4.0,>=3.8",
            "size": 34861,
            "upload_time": "2024-05-14T19:52:26",
            "upload_time_iso_8601": "2024-05-14T19:52:26.409067Z",
            "url": "https://files.pythonhosted.org/packages/e9/43/01962e1326fd9910b291bef4488a529a4030abcac7940da9ff09433e9634/melodymaster-1.0.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-05-14 19:52:26",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "BDXBB",
    "github_project": "MelodyMaster",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "melodymaster"
}
        
Elapsed time: 0.31277s