Savify ist eine Python-Bibliothek, die Songs von einem ausgewählten Anbieter (standardmäßig YouTube) herunterlädt und dann die Metainformationen von Spotify extrahiert. Bei einer Anfrage findet Savify Songs und lädt sie im MP3-Format mit einer Qualität von bis zu 320 kb/s herunter! Die Anwendung scannt und schreibt außerdem ID3v2-Tags in alle Ihre Songs. Zu den Tags gehören Titel, Künstler, Jahr, Album und sogar Cover!
Savify unterstützt alle Spotify-Track-, Album- und Playlist-Links. Darüber hinaus gibt es eine integrierte Suchfunktion . Selbst wenn Sie keinen Spotify-Link haben, können Sie einfach den Songnamen eingeben und Savify lädt ihn herunter!
Neben MP3 kann Savify auch andere Dateitypen herunterladen und in diese konvertieren. Innerhalb der Anwendung können Sie angeben, in welchem Format und in welcher Qualität Sie den Song herunterladen möchten, um maximale Kompatibilität auf allen Ihren Geräten zu gewährleisten. Verfügbare Formate: MP3, AAC, FLAC, M4A, Opus, Vorbis und WAV. Tags und Cover werden nur auf Songs angewendet, die im MP3-Format heruntergeladen wurden.
Bitte beachten Sie, dass diese Bibliothek in keiner Weise gegen die Spotify-Nutzungsbedingungen verstößt. Songs werden nicht direkt von Spotify gerippt, sondern mithilfe der Python-Bibliothek youtube-dl von anderen Quellen wie YouTube und Soundcloud heruntergeladen. Spotify wird nur verwendet, um genaue Metainformationen zu sammeln, die in die heruntergeladenen Songdateien eingebettet werden.
Besuchen Sie unser offizielles Docker Hub-Image-Repository und holen Sie sich das neueste Docker-Image: https://hub.docker.com/repository/docker/laurencerawlings/savify
Bei Fragen oder Rückmeldungen treten Sie dem Discord-Server bei
Savify verlässt sich auf die Open-Source-Bibliothek FFmpeg, um Metadaten in die heruntergeladenen Songs zu konvertieren und zu schreiben. Bitte stellen Sie sicher, dass FFmpeg auf Ihrem Computer installiert und zum Systempfad hinzugefügt ist. Folgen Sie dem Tutorial hier.
Wenn Sie Savify zum Herunterladen persönlicher Spotify-Wiedergabelisten verwenden möchten, stellen Sie sicher, dass deren Sichtbarkeit auf „Öffentlich“ eingestellt ist. Auf diese Weise kann Savify die Spotify-API verwenden, um die Songdetails aus Ihrer Playlist abzurufen.
Wenn Sie Windows verwenden, können Sie das neueste vorgepackte ausführbare Paket herunterladen (was ich empfehle, da Sie keinen Savify-API-Schlüssel angeben müssen), oder Sie können die Python-Bibliothek herunterladen und das Modul direkt über die CLI ausführen.
Gehen Sie hier, um die neueste Savify.exe herunterzuladen, und stellen Sie dann sicher, dass Sie Folgendes haben:
FFmpeg heruntergeladen und zu Ihrem Pfad hinzugefügt
Spotify-API-Anmeldeinformationen wurden Ihren Umgebungsvariablen hinzugefügt
Das ist es, Sie sollten startklar sein! Nachfolgend finden Sie einige Anwendungsbeispiele.
$ pip install -U savify
Klonen Sie das Repository und stellen Sie sicher, dass Sie sich im Stammverzeichnis befinden. Führen Sie den folgenden Build-Befehl aus:
$ docker build -t savify:dev .
Derzeit unterstützt Savify nur Spotify-URLs und Suchabfragen, die Unterstützung für Spotify-URIs wird jedoch in Zukunft hinzugefügt.
Wenn Sie die neueste Savify.exe von der Release-Seite heruntergeladen haben, öffnen Sie Ihr Terminal und navigieren Sie zum gleichen Verzeichnis wie die Binärdatei. Anschließend können Sie Folgendes ausführen:
$ Savify.exe
Wenn Sie das Python-Paket verwenden und savify in Ihren Site-Paketen installiert ist und sich Ihr pip-Ordner in Ihrem PATH befindet (was standardmäßig der Fall sein sollte), können Sie von überall aus einfach Folgendes ausführen:
$ savify
Für Hilfe beim Ausführen:
$ savify --help
Unter Verwendung der oben genannten Standardeinstellung:
$ savify "https://open.spotify.com/track/4Dju9g4NCz0LDxwcjonSvI"
Spezifizieren Ihrer eigenen Optionen:
$ savify "https://open.spotify.com/track/4Dju9g4NCz0LDxwcjonSvI" -q best -f mp3 -o "/path/to/downloads" -g "%artist%/%album%"
Mit einer Suchanfrage:
$ savify "You & I - Bru-C" -t track -q best -f mp3 -o "/path/to/downloads" -g "%artist%/%album%"
Verfügbare Variablen: %artist%, %album%, %playlist%
Zum Beispiel:
$ savify "You & I - Bru-C" -o /path/to/downloads -g "%artist%/%album%"
Würde in der folgenden Verzeichnisstruktur herunterladen:
/Pfad/zu/Downloads | |- /Bru-C | |- /Originaltöne | |- Bru-C – You & I.mp3
Abfragetyp: | Schiene |
---|---|
Qualität: | am besten |
Format: | mp3 |
Weg: | Windows: HOME/AppData/Roaming/Savify/Downloads Linux: HOME/.local/share/Savify/downloads MacOS: HOME/Bibliothek/Anwendungsunterstützung/Savify/Downloads |
Gruppierung: | keine Gruppierung |
Weitere Anwendungsbeispiele finden Sie in den Dokumenten.
Führen Sie savify in einem Container aus, der auch an die Netzwerke anderer Container angeschlossen werden kann. Dies ist praktisch, wenn Sie mehrere Instanzen von Savify ausführen und/oder VPNs zum Herunterladen verwenden möchten. Sie können Ihr selbst erstelltes Docker-Image oder das offizielle verwenden. Stellen Sie sicher, dass Sie den richtigen Docker-Image-Namen und das richtige Tag verwenden.
$ docker run laurencerawlings/savify:latest
Wenn kein Argument angegeben wird, druckt der Container die Hilfeseite. Hängen Sie einfach Ihre Argumente an, stellen Sie sicher, dass Sie einen Ordner von Ihrem Host mounten, damit Downloads dauerhaft sind ( -v
) – pwd
wird zum Mounten des aktuellen Verzeichnisses verwendet, in dem Sie sich befinden – und entfernen Sie den Container, wenn Sie fertig sind ( --rm
). Sie müssen Ihre Spotify-Client-ID und Ihr Geheimnis mithilfe von Umgebungsvariablen ( -e
) angeben:
$ docker run --rm -v "`pwd`:/root/.local/share/Savify/downloads" -e SPOTIPY_CLIENT_ID=client_id -e SPOTIPY_CLIENT_SECRET=client_secret laurencerawlings/savify:latest „https://open.spotify.com/playlist/…“
Wenn Sie Ihre Protokolle beibehalten möchten, können Sie das Protokollierungsverzeichnis bereitstellen, indem Sie einfach das folgende Argument zum Docker-Run-Befehl hinzufügen: -v "./logs:/root/.local/share/Savify/logs"
Automatisieren Sie mit einem Shell-Skript:
$ nano savify.sh
#!/bin/bashdocker run --rm -v "`pwd`:/root/.local/share/Savify/downloads" -e SPOTIPY_CLIENT_ID=client_id -e SPOTIPY_CLIENT_SECRET=client_secret laurencerawlings/savify:latest $1
Dann ausführen mit:
$ sh savify.sh "https://open.spotify.com/track/4Dju9g4NCz0LDxwcjonSvI"
Sie haben auch die Möglichkeit, schnell mit unserem Docker-Skript zu beginnen, das über eine integrierte VPN-Prüfung verfügt, um zu sehen, ob es VPN-Container gibt, mit denen das Skript eine Verbindung herstellen kann. Das Skript eignet sich perfekt für die Planung mit cron:
$ wget https://github.com/laurencerawlings/savify/latest/download/savify-docker-scripts.zip $ entpacken Sie savify-docker-scripts.zip && rm savify-docker-scripts.zip $ cd savify-docker-scripts/
Anschließend müssen Sie die Konfigurationsdatei mit Ihrem bevorzugten Texteditor bearbeiten (wir bevorzugen nano), speichern (Strg + X, Y zum Speichern von Änderungen in nano) und in config.sh
umbenennen.
$ nano template.config.sh $ mv template.config.sh config.sh
Anschließend können Sie das Skript ausführen:
$ bash bulk-download.sh
Um das Savify Python-Modul verwenden zu können, benötigen Sie Ihre eigene Spotify-Entwickleranwendung, um auf deren API zuzugreifen. Um dies zu tun, melden Sie sich hier an. Wenn Sie einen neuen Antrag gestellt haben, notieren Sie sich Ihre Kunden-ID und Ihr Geheimnis. Sie können die ID und das Geheimnis auf zwei Arten an Savify weitergeben:
Jetzt müssen Sie Ihrem System zwei Umgebungsvariablen hinzufügen:
SPOTIPY_CLIENT_ID
SPOTIPY_CLIENT_SECRET
Um herauszufinden, wie das geht, finden Sie online ein Tutorial für Ihr spezifisches Betriebssystem. Stellen Sie anschließend sicher, dass Sie Ihre Shell neu starten.
Sie können Ihre ID und Ihr Geheimnis mithilfe eines Tupels beim Erstellen Ihres Savify-Objekts übergeben:
s = Savify(api_credentials=("CLIENT_ID","CLIENT_SECRET"))
Installieren Sie das Paket in Ihrer Umgebung:
$ pip install savify
Savify importieren und verwenden:
from savify import Savifyfrom savify.types import Type, Format, Qualitys = Savify()# Spotify URLs.download("SPOTIFY URL")# Search Query# Types: TRACK, ALBUM, PLAYLISTs.download("QUERY", query_type=Type. SCHIENE)
Speichern Sie optionale Konstruktorargumente (Standardwerte siehe oben):
Protokollierung importieren aus Savify Savify importieren aus savify.types importieren Typ, Format, Qualität aus savify.utils Import PathHolder # Qualitätsoptionen: SCHLECHTEST, Q32K, Q96K, Q128K, Q192K, Q256K, Q320K, BESTE # Formatoptionen: MP3, AAC, FLAC, M4A, OPUS, VORBIS, WAV Savify(api_credentials=None, quality=Quality.BEST, download_format=Format.MP3, path_holder=PathHolder(downloads_path='path/for/downloads'), group='%artist%/%album%', quiet=False, skip_cover_art =Falsch, log_level=logging.INFO)
Manuelles Anpassen der YouTube-DL-Optionen:
from savify import Savifyoptions = {'cookiefile': 'cookies.txt'}Savify(ydl_options=options)
Übergabe Ihres eigenen Loggers:
from savify import Savifyfrom savify.logger import Loggerlogger = Logger(log_location='path/for/logs', log_level=None) # Stille AusgabeSavify(logger=logger)
Das Gruppenargument wird verwendet, um Ihre heruntergeladenen Songs innerhalb des Ausgabepfads zu sortieren. Mögliche Variablen für die Pfadzeichenfolge sind: %artist%, %album% und %playlist%. Die Variablen werden durch die Song-Metadaten ersetzt. Ein mit dem oben genannten Savify-Objekt heruntergeladener Song würde beispielsweise unter einem Pfad wie diesem gespeichert: path/for/downloads/Example Artist/Example Album/Example Song.mp3
Wenn Sie versuchen möchten, Savify hinzuzufügen, verwenden Sie die Anweisungen hier. Von dort aus können Sie alle Ergänzungen vornehmen, die Savify Ihrer Meinung nach verbessern würden.
Wenn Sie Savify entwickeln, installieren Sie das Pip-Paket lokal, damit Sie Ihre Änderungen vornehmen und testen können. Führen Sie im Stammverzeichnis Folgendes aus:
$ pip install -e .
Anschließend können Sie das Python-Modul ausführen:
$ savify
Dieses Paket wurde mit Cookiecutter und der Projektvorlage audreyr/cookiecutter-pypackage erstellt.