Savify est une bibliothèque Python qui télécharge des chansons à partir d'un fournisseur sélectionné (par défaut YouTube), puis récupère les méta-informations de Spotify. Suite à une requête, Savify trouvera et téléchargera des chansons au format mp3 avec une qualité pouvant atteindre 320 kb/s ! L'application grattera et écrira également des balises id3v2 sur toutes vos chansons. Les tags incluent le titre, les artistes, l'année, l'album et même la pochette !
Savify prend en charge tous les liens de pistes, d'albums et de listes de lecture Spotify. De plus, il existe une fonction de recherche intégrée , donc même si vous n'avez pas le lien Spotify, vous pouvez simplement saisir le nom de la chanson et Savify la téléchargera !
En plus des mp3, Savify peut également télécharger et convertir en d'autres types de fichiers. Dans l'application, vous pouvez spécifier le format et la qualité dans lesquels vous souhaitez télécharger la chanson pour une compatibilité maximale sur tous vos appareils. Formats disponibles : mp3, aac, flac, m4a, opus, vorbis et wav. Les tags et les pochettes ne seront appliqués qu’aux chansons téléchargées au format mp3.
Veuillez noter que cette bibliothèque ne va en aucun cas à l'encontre du TOS de Spotify, les chansons ne sont pas extraites directement de Spotify, mais sont plutôt téléchargées à partir d'autres sources telles que YouTube et Soundcloud à l'aide de la bibliothèque python youtube-dl. Spotify est uniquement utilisé pour collecter des méta-informations précises à intégrer dans les fichiers de chansons téléchargés.
Visitez notre référentiel d'images Docker Hub officiel et obtenez la dernière image Docker : https://hub.docker.com/repository/docker/laurencerawlings/savify
Si vous avez des questions ou des commentaires, rejoignez le serveur Discord
Savify s'appuie sur la bibliothèque open source FFmpeg pour convertir et écrire des métadonnées sur les chansons qu'il télécharge. Veuillez vous assurer que FFmpeg est installé sur votre ordinateur et ajouté au PATH système. Suivez le tutoriel ici.
Si vous souhaitez utiliser Savify pour télécharger des listes de lecture Spotify personnelles, assurez-vous que leur visibilité est définie sur « Public ». Ainsi, Savify peut utiliser l'API Spotify pour récupérer les détails de la chanson de votre liste de lecture.
Si vous êtes sous Windows, vous pouvez télécharger le dernier package exécutable pré-emballé (ce que je recommande car vous n'aurez pas à fournir de clé API Savify), ou vous pouvez télécharger la bibliothèque python et exécuter le module directement à l'aide de la CLI.
Allez ici pour télécharger le dernier Savify.exe puis assurez-vous d'avoir :
FFmpeg téléchargé et ajouté à votre chemin
Informations d'identification de l'API Spotify ajoutées à vos variables d'environnement
Ça y est, vous devriez être prêt à partir ! Voir quelques exemples d'utilisation ci-dessous.
$ pip install -U savify
Clonez le référentiel et assurez-vous que vous êtes dans le répertoire racine. Exécutez la commande de build suivante :
$ docker build -t savify:dev .
Actuellement, Savify ne prend en charge que les URL Spotify et les requêtes de recherche, mais la prise en charge des URI Spotify sera ajoutée à l'avenir.
Si vous avez téléchargé le dernier Savify.exe à partir de la page des versions, ouvrez votre terminal et accédez au même répertoire que le binaire, vous pouvez alors exécuter :
$ Savify.exe
Si vous utilisez le package Python et que savify est installé sur vos packages de site et que votre dossier pip se trouve dans votre PATH (ce qu'il devrait être par défaut), depuis n'importe où, vous pouvez simplement exécuter :
$ savify
Pour obtenir de l'aide, exécutez :
$ savify --help
En utilisant la valeur par défaut ci-dessus :
$ savify "https://open.spotify.com/track/4Dju9g4NCz0LDxwcjonSvI"
Spécifier vos propres options :
$ savify "https://open.spotify.com/track/4Dju9g4NCz0LDxwcjonSvI" -q best -f mp3 -o "/path/to/downloads" -g "%artist%/%album%"
Avec une requête de recherche :
$ savify "You & I - Bru-C" -t track -q best -f mp3 -o "/path/to/downloads" -g "%artist%/%album%"
Variables disponibles : %artist%, %album%, %playlist%
Par exemple:
$ savify "You & I - Bru-C" -o /path/to/downloads -g "%artist%/%album%"
Serait téléchargé dans la structure de répertoires suivante :
/chemin/vers/téléchargements | |- /Bru-C | |- /Sons originaux | |- Bru-C - Toi et moi.mp3
Type de requête : | piste |
---|---|
Qualité: | meilleur |
Format: | mp3 |
Chemin: | Windows : ACCUEIL/AppData/Roaming/Savify/téléchargements Linux : ACCUEIL/.local/share/Savify/downloads MacOS : ACCUEIL/Bibliothèque/Support d'application/Savify/téléchargements |
Regroupement: | pas de regroupement |
Pour plus d'exemples d'utilisation, lisez la documentation.
Exécutez savify dans un conteneur qui peut également être connecté aux réseaux d'autres conteneurs. Ceci est pratique si vous souhaitez exécuter plusieurs instances de savify et/ou utiliser des VPN pour le téléchargement. Vous pouvez utiliser votre image Docker créée par vous-même ou celle officielle. Assurez-vous d'utiliser le bon nom d'image Docker et la bonne balise.
$ docker run laurencerawlings/savify:latest
Si aucun argument n'est spécifié, le conteneur imprimera la page d'aide. Ajoutez simplement vos arguments, assurez-vous de monter un dossier depuis votre hôte afin que les téléchargements soient persistants ( -v
) - pwd
est utilisé pour monter le répertoire actuel dans lequel vous vous trouvez - et supprimez le conteneur une fois terminé ( --rm
). Vous devez spécifier votre identifiant client Spotify et votre secret en utilisant des variables d'environnement ( -e
) :
$ docker run --rm -v "`pwd`:/root/.local/share/Savify/downloads" -e SPOTIPY_CLIENT_ID=identifiant_client -e SPOTIPY_CLIENT_SECRET=client_secret laurencerawlings/savify:latest "https://open.spotify.com/playlist/..."
Si vous souhaitez conserver vos journaux, vous pouvez monter le répertoire de journalisation en ajoutant simplement l'argument suivant à la commande docker run : -v "./logs:/root/.local/share/Savify/logs"
Automatisez avec un script shell :
$ nano savify.sh
#!/bin/bashdocker run --rm -v "`pwd`:/root/.local/share/Savify/downloads" -e SPOTIPY_CLIENT_ID=identifiant_client -e SPOTIPY_CLIENT_SECRET=client_secret laurencerawlings/savify :dernier 1 $
Exécutez ensuite avec :
$ sh savify.sh "https://open.spotify.com/track/4Dju9g4NCz0LDxwcjonSvI"
Vous avez également la possibilité de démarrer rapidement en utilisant notre script Docker qui dispose d'une vérification VPN intégrée pour voir s'il existe des conteneurs VPN auxquels le script peut se connecter. Le script est parfait pour être planifié avec cron :
$ wget https://github.com/laurencerawlings/savify/latest/download/savify-docker-scripts.zip $ décompressez savify-docker-scripts.zip && rm savify-docker-scripts.zip $ cd savify-docker-scripts/
Vous devez ensuite éditer le fichier de configuration avec votre éditeur de texte préféré (nous préférons nano), le sauvegarder (Ctrl + X, Y pour enregistrer les modifications dans nano) et le renommer en config.sh
.
$ nano modèle.config.sh $ mv modèle.config.sh config.sh
Vous pouvez ensuite exécuter le script :
$ bash téléchargement en masse.sh
Pour utiliser le module Savify Python, vous aurez besoin de votre propre application de développement Spotify pour accéder à leur API. Pour ce faire, inscrivez-vous ici. Lorsque vous avez fait une nouvelle demande, prenez note de votre identifiant client et de votre secret. Vous pouvez transmettre l'identifiant et le secret à Savify de deux manières :
Vous devez maintenant ajouter 2 variables d'environnement à votre système :
SPOTIPY_CLIENT_ID
SPOTIPY_CLIENT_SECRET
Pour savoir comment procéder, recherchez un didacticiel en ligne correspondant à votre système d'exploitation spécifique. Une fois que vous avez fait cela, assurez-vous de redémarrer votre shell.
Vous pouvez transmettre votre identifiant et votre secret à l'aide d'un tuple lors de la création de votre objet Savify :
s = Savify(api_credentials=("CLIENT_ID","CLIENT_SECRET"))
Installez le package dans votre environnement :
$ pip install savify
Importez et utilisez Savify :
from savify import Savifyfrom savify.types import Type, Format, Qualitys = Savify()# Spotify URLs.download("SPOTIFY URL")# Requête de recherche# Types : PISTE, ALBUM, PLAYLISTs.download("QUERY", query_type=Type. PISTE)
Enregistrez les arguments de constructeur facultatifs (voir ci-dessus pour les valeurs par défaut) :
journalisation des importations depuis savify importer Savify à partir de savify.types importer le type, le format, la qualité à partir de savify.utils importer PathHolder # Options de qualité : PIRE, Q32K, Q96K, Q128K, Q192K, Q256K, Q320K, MEILLEUR # Options de format : MP3, AAC, FLAC, M4A, OPUS, VORBIS, WAV Savify(api_credentials=Aucun, quality=Quality.BEST, download_format=Format.MP3, path_holder=PathHolder(downloads_path='path/for/downloads'), group='%artist%/%album%', quiet=False, skip_cover_art =Faux, log_level=logging.INFO)
Personnalisation manuelle des options de youtube-dl :
depuis savify import Savifyoptions = {'cookiefile': 'cookies.txt'}Savify(ydl_options=options)
En passant votre propre enregistreur :
from savify import Savifyfrom savify.logger import Loggerlogger = Logger(log_location='path/for/logs', log_level=None) # Sortie silencieuseSavify(logger=logger)
L'argument de groupe est utilisé pour trier les chansons téléchargées dans le chemin de sortie. Les variables possibles pour la chaîne de chemin sont : %artist%, %album% et %playlist%. Les variables sont remplacées par les métadonnées des chansons. Par exemple, une chanson téléchargée avec l'objet Savify ci-dessus serait enregistrée dans un chemin comme celui-ci : path/for/downloads/Example Artist/Example Album/Example Song.mp3
Si vous souhaitez essayer d'ajouter à Savify, utilisez les instructions ici. À partir de là, vous pouvez effectuer tous les ajouts qui, selon vous, amélioreraient Savify.
Si vous développez Savify, installez le package pip localement afin de pouvoir apporter et tester vos modifications. Depuis le répertoire racine, exécutez :
$ pip install -e .
Vous pouvez ensuite exécuter le module Python :
$ savify
Ce package a été créé avec Cookiecutter et le modèle de projet audreyr/cookiecutter-pypackage.