Как загрузить музыку из Shazam

Comment télécharger de la musique depuis Shazam?

Bonjour tout le monde ! Je suis un grand amateur de musique – la musique m’accompagne tout au long de ma vie. C’est probablement pour cela que j’utilise souvent le service Shazam. Si j’aime une mélodie, je la shazame, je découvre quelle chanson c’est (même dans la musique moderne, il y a parfois quelque chose qui me plaît), et ensuite… Ensuite quoi ?

Il y a quelques jours, je me suis connecté à mon compte Shazam et j’ai remarqué (avec une certaine surprise, je dois l’admettre) que j’avais environ 1 500 chansons différentes dans ma liste. La question se pose donc : que faire ? Les rechercher manuellement ? C’est assez fastidieux et long avec 1 500 chansons. Automatiser ? Où télécharger les chansons ? Comment obtenir la liste de toutes les chansons enregistrées sur Shazam ? Je ne vais pas vous faire attendre plus longtemps – pendant que j’écris cet article, les statistiques de téléchargement des chansons s’affichent déjà sur mon deuxième écran. Voici une capture d’écran :
Comment télécharger de la musique depuis Shazam

Le code n’est pas encore parfait et s’exécute simplement dans Sublime Text (je voulais absolument le lancer en mode streaming, donc je ne l’ai pas converti en fichier .exe ; en plus, il y a encore des améliorations à apporter). Mais l’essentiel est que le code fonctionne. Alors, comment ça marche ?

1. Récupération des chansons enregistrées sur Shazam :
Commençons par le plus simple : comment télécharger une liste de toutes les chansons enregistrées sur Shazam sur son ordinateur ? C’est très simple : visitez ce lien : https://www.shazam.com/ru/privacy/login/download et vous verrez la fenêtre suivante :
Enregistrer la liste des chansons depuis Shazam
Connectez-vous. Dans mon cas, la connexion est liée à mon compte Google. Je me suis donc simplement connecté via Google, puis j’ai saisi mon adresse e-mail manuellement :
Enregistrer la liste des chansons depuis Shazam

Cliquez sur le bouton « Envoyer les données », et vous verrez un message indiquant que vous recevrez vos données Shazam enregistrées sous 30 jours. Ne vous inquiétez pas – j’ai reçu mon fichier en deux heures. Le fichier arrive sous forme d’archive « data.zip » contenant les fichiers suivants :
– AnalyticsSongs.jsonl
– AnalyticsUsage.jsonl
– Installations.json
– README.pdf
– SyncedSongs.csv

Je n’avais pas envie de lire les détails (bien que AnalyticsSongs.jsonl contienne de nombreuses informations intéressantes), alors j’ai simplement ouvert directement SyncedSongs.csv. C’est ici que commence l’étape suivante…

2. Création d’un fichier texte avec l’artiste et le titre de la chanson :
Le fichier SyncedSongs.csv a la structure suivante :

artist,"title","status","date","longitude","latitude"

Ce qui nous intéresse, bien sûr, ce sont uniquement l’artiste et le titre de la chanson. On pourrait utiliser Python pour supprimer les colonnes inutiles, mais pourquoi se compliquer la tâche alors qu’Excel peut le faire plus facilement ? Voici deux méthodes pour ouvrir le fichier CSV et séparer les valeurs en colonnes :

Méthode 1 :
Ouvrir le fichier dans Excel :
– Ouvrez Excel.
– Allez dans l’onglet « Données ».
– Cliquez sur « À partir d’un fichier texte/CSV » (dans les anciennes versions d’Excel : « Ouvrir » et sélectionnez le fichier CSV).
– Assurez-vous que le séparateur est défini sur « Virgule ».
– Cliquez sur « Charger » ou « OK » – les données seront séparées en colonnes.

Méthode 2 :
Utilisation de l’assistant « Convertir le texte en colonnes » :
– Si le fichier est déjà ouvert et que toutes les données sont dans une seule colonne, sélectionnez cette colonne.
– Allez dans l’onglet « Données ».
– Cliquez sur « Convertir ».
– Sélectionnez « Délimité » et cliquez sur « Suivant ».
– Sélectionnez « Virgule » comme séparateur (assurez-vous qu’aucun autre séparateur n’est sélectionné) et cliquez sur « Suivant ».
– Cliquez sur « Terminer » – les données seront séparées en colonnes.

Une fois les données bien séparées, supprimez les colonnes inutiles et enregistrez le reste sous forme de fichier texte :
– Sélectionnez « Fichier » → « Enregistrer sous ».
– Choisissez le format « Texte (délimité par des tabulations) » (.txt).
– Enregistrez.
Nous avons maintenant un fichier texte où chaque ligne contient l’artiste et le titre de la chanson, séparés par une tabulation. Reste maintenant à télécharger les chansons.

3. Téléchargement de musique :
Je n’ai pas pu télécharger de chansons directement depuis Shazam ou Spotify. Cependant, YouTube contient probablement presque tout. Partant de cette idée, j’ai écrit un script qui recherche automatiquement les chansons sur YouTube et les télécharge. Le code utilise la bibliothèque Python yt_dlp. Vous pouvez retrouver le code complet ici.

import yt_dlp  # Bibliothèque pour télécharger de l'audio/vidéo depuis YouTube
from tqdm import tqdm  # Bibliothèque pour afficher une barre de progression
import time
import os
import sys
# Fichier contenant la liste des chansons
song_list_file = "Song_list.txt"
# Fichiers journaux
success_file = "success.txt"  # Fichier des téléchargements réussis
failed_file = "failed.txt"  # Fichier des erreurs de téléchargement
# Boucle principale pour traiter les chansons
while True:
# Lire le fichier contenant la liste des chansons
with open(song_list_file, "r", encoding="utf-8") as file:
songs = file.readlines()
# Si la liste des chansons est vide – terminer le programme
if not songs:
break
# Prendre la première chanson de la liste
song = songs[0].strip()
if not song:  # Si la ligne est vide, la sauter
songs.pop(0)
continue
# Séparer la ligne en artiste et titre de la chanson
try:
artist, title = song.split("\t", 1)  # Séparateur – tabulation
except ValueError:  # Si la ligne n'est pas au bon format, enregistrer l'erreur
with open(failed_file, "a", encoding="utf-8") as failed_log:
failed_log.write(f"{song} - Format incorrect\n")
songs.pop(0)
continue
# Créer la requête de recherche pour YouTube
query = f"{artist} {title}"
# Définir le chemin du fichier téléchargé
output_filename = f"downloads/{artist} - {title}.mp3"
# Créer le dossier de téléchargement s'il n'existe pas
os.makedirs("downloads", exist_ok=True)
# Paramètres yt-dlp pour le téléchargement audio
ydl_opts = {
"format": "bestaudio/best",  # Choisir la meilleure qualité audio
"outtmpl": f"downloads/{artist} - {title}.%(ext)s",  # Format du nom de fichier
"quiet": True,  # Désactiver l'affichage inutile dans la console
"postprocessors": [{  # Conversion en MP3 après le téléchargement
"key": "FFmpegExtractAudio",
"preferredcodec": "mp3",
"preferredquality": "192",
}],
"progress_hooks": [],  # Hook pour mettre à jour la progression
"noprogress": True,  # Désactiver la barre de progression standard de yt-dlp
}
print(f"\n🔍 Recherche : {query}")
# Créer une barre de progression
pbar = tqdm(total=100, desc=f"Téléchargement {query}", ncols=100, unit="%", dynamic_ncols=True, file=sys.stdout)
def progress_hook(d):
"""Fonction pour mettre à jour la progression du téléchargement"""
if d["status"] == "downloading":
percent_str = d.get("_percent_str", "0.0%").strip("%")
try:
percent = float(percent_str)
pbar.update(percent - pbar.n)  # Mettre à jour la différence en pourcentage
except ValueError:
pass
elif d["status"] == "finished":
pbar.n = 100
pbar.update(0)
pbar.close()
# Ajouter le hook de progression aux paramètres yt-dlp
ydl_opts["progress_hooks"].append(progress_hook)
try:
# Lancer le téléchargement avec yt-dlp
with yt_dlp.YoutubeDL(ydl_opts) as ydl:
ydl.download([f"ytsearch:{query}"])  # Recherche et téléchargement
# Vérifier si le fichier a été créé
if os.path.exists(output_filename):
with open(success_file, "a", encoding="utf-8") as success_log:
success_log.write(f"{query}\n")
print(f"\r✅ Téléchargé avec succès : {query}{' ' * 30}")
else:
with open(failed_file, "a", encoding="utf-8") as failed_log:
failed_log.write(f"{query} - Erreur de conversion\n")
print(f"\r❌ Erreur de conversion : {query}{' ' * 30}")
except Exception as e:
# Enregistrer l'erreur de téléchargement
with open(failed_file, "a", encoding="utf-8") as failed_log:
failed_log.write(f"{query} - {str(e)}\n")
print(f"\r❌ Erreur lors du téléchargement : {query} - {e}{' ' * 30}")
# Supprimer la ligne traitée du fichier
songs.pop(0)
with open(song_list_file, "w", encoding="utf-8") as file:
file.writelines(songs)
time.sleep(1)  # Petite pause avant le téléchargement suivant
print("\n🎵 Terminé ! Téléchargements réussis dans success.txt, erreurs dans failed.txt.")

Si vous avez des questions, envoyez-moi un e-mail ou contactez-moi sur Telegram. Et oui – une version avec interface graphique de cette application sera bientôt disponible ! 😊

Support the Blog!

Running a blog takes a lot of effort, time, and passion. Your donations help improve the content, inspire new ideas, and keep the project going.
If you’ve enjoyed the blog’s materials, any support would mean the world to me. Thank you for being here! ❤️

PayPal Logo Donate via PayPal

Revolut Logo Donate via Revolut

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *