Exploiter l'API NetEase Cloud Music avec pyncm : Guide pour les développeurs Python

Pour les développeurs évoluant dans un environnement de terminal, l'utilisation de clients musicaux graphiques peut s'avérer lourde en ressources système. pyncm se présente comme une solution robuste : un wrapper Python pour l'API NetEase Cloud Music qui permet d'accéder aux ressources musicales directement via la ligne de commande ou via des scripts personnalisés.

Installation et configuration initiale

L'insatllation de la bibliothèque est simple et s'effectue via le gestionnaire de paquets Python. Pour une utilisation standard :

pip install pyncm

Si vous souhaitez bénéficier de l'ensemble des fonctionnalités, notamment les dépendances liées au traitement audio avancé, préférez l'installation complète :

pip install pyncm[full]

Fonctionnalités principales

  • Gestion de la qualité audio : Accès aux flux allant du format standard jusqu'au Hi-Res.
  • Authentification flexible : Support des connexions par numéro de téléphone, email, cookies ou mode anonyme.
  • Moteur de recherche intégré : Recherche précise par morceaux, artistes ou albums.
  • Extraction locale : Possibilité de sauvegarder les pistes pour une écoute hors ligne.

Exemples d'utilisation pratique

1. Rehcerche programmatique de titres

Voici comment effectuer une recherche de morceaux en utilisant l'API Python :

from pyncm import apis

# Recherche d'un artiste ou d'un titre spécifique
recherche_musique = apis.cloudsearch.GetSearchResult(keyword="Daft Punk", type=1)
# Analyse des résultats
for piste in recherche_musique['result']['songs']:
   print(f"ID: {piste['id']} - Titre: {piste['name']}")

2. Téléchargement via la ligne de commande

L'outil CLI permet de récupérer rapidement des fichiers en spécifiant un répertoire de sortie :

pyncm "https://music.163.com/song?id=123456" --output-path ./ma_bibliotheque

3. Gestion des sessions et authentification

Pour accéder à votre bibliothèque personnelle ou à des contenus protégés, la gestion des sessions est indispensable :

from pyncm import CreateNewSession
   from pyncm.apis.login import LoginViaCellPhone

   # Initialisation d'une session isolée
   instance_session = CreateNewSession()
   with instance_session:
       # Connexion avec identifiants
       LoginViaCellPhone(phone="0601020304", password="mon_mot_de_passe")
       print("Connecté avec succès")

Architecture du projet

Le projet pyncm est structuré de manière modulaire, facilitant l'intégration de composants spécifiques dans vos propres applications :

  • pyncm/apis/ : Contient les définitions des appels API (login, recherche, gestion des playlists).
  • pyncm/utils/ : Regroupe les fonctions utilitaires pour le chiffrement et le formatage des données.
  • demos/ : Propose des scripts d'exemple pour la synchronisation de playlists ou l'upload sur le cloud personnel.

Optimisation et astuces techniques

Gestion du formatage des fichiers : Vous pouvez automatiser l'organisation de vos téléchargements en utilisant des templates de nommage :

pyncm "URL_PLAYLIST" --template "{artist} - {title}.{ext}"

Accès anonyme : Si vous rencontrez des erreurs de récupération d'URL lors de tests rapides, assurez-vous d'initialiser une session anonyme pour obtenir les autorisations de base :

from pyncm.apis.login import LoginViaAnonymousAccount
LoginViaAnonymousAccount()

Traitement par lots : Pour les bibliothèques volumineuses, l'argument --max-workers permet d'ajuster le parallélisme des téléchargements afin d'optimiser la bande passante sans déclencher les mécanismes de limitation de débit de l'API.

Étiquettes: Python API NetEaseCloudMusic CLI pyncm

Publié le 28 juillet à 08h13