Aber Streaming-Musik ist gestern nicht erschienen, und es gibt sicherlich diejenigen, die von Yandex begeistert sind und ein Abonnement für Yandex.Music verwenden, das später zu Yandex.Plus wurde.
Es wurde bequem, Songs zu hören, die Selektoren lernten, gute Tracks auszuwählen, und dies führte zur Anhäufung einer Bibliothek mit Wiedergabelisten und anderen praktischen Dingen, die im neuen Dienst neu hinzugefügt werden müssen.
Wenn Sie es versuchen möchten, aber zu faul sind, werde ich Ihnen sagen, wie Sie Ihre Sachen schnell und kostenlos bewegen können. Sie brauchen nur ein paar Pythons mit Batterien.
Beachtung!
, .
, . , . .
.
Spotify , . , . , - .
— , . - ., - Spotify. , - , 144 / Ogg Vorbis.
, .
/ .
, . , . .
.
Spotify , . , . , - .
— , . - ., - Spotify. , - , 144 / Ogg Vorbis.
, .
/ .
Mit Hilfe einfacher Geräte gelang es mir in ein paar Tagen, einen Importeur von Tracks in Spotify zu erstellen und kein Geld für Soundiiz auszugeben, was aus irgendeinem Grund plötzlich die Last erhöhte.
Aber es gibt Nuancen.
API
Spotify bietet eine Art Dokumentation für seinen Web-API-Dienst, einschließlich einer API zum Hinzufügen von Wiedergabelisten und Favoriten zu seiner Bibliothek.
Yandex.Music wiederum verfügt nicht über eine öffentliche API , aber möglicherweise spornt der Wettbewerb sie an, Drittentwicklern Zugriff zu gewähren, da dies notwendig, bequem und nützlich ist.
Deshalb werden wir hier ein wenig einen gekrümmten Weg gehen und Tricks mit einem zweifelhaften Ruf anwenden.
Und was ist mit Deezer?
Deezer, , API . Python, .
Spotify
Hier ist alles einfach. Um Entwickler zu werden, müssen Sie den Anwendungsschlüssel in der Konsole abrufen .
Sie bieten an,
Redirect URI
für OAuth hinzuzufügen , das von jedem installiert werden kann. Es wird nur für Dienste benötigt, die viele Menschen gleichzeitig bedienen, aber in unserem Fall geschieht alles vor Ort.
Yandex.Music
Sie benötigen einen Benutzernamen und ein Kennwort für Ihr Konto. Wenn jedoch die Zwei-Faktor-Authentifizierung aktiviert ist, müssen Sie Yandex.Password von Yandex.Key angeben.
Anwendungsbetrieb
Ich möchte mich nicht mit dem Ausführen von Python-Anwendungen, dem Bereitstellen einer virtuellen Umgebung usw. befassen. Daher werde ich beschreiben, wie der Import funktioniert. Link zum Repository mit dem Programmcode am Ende des Artikels .
Tracks von APIs aller Plattformen haben ein anderes Format, sodass sie mit den minimal erforderlichen Eigenschaften in dieselbe Präsentation konvertiert werden:
class Track:
title = property(lambda self: self.__title)
album = property(lambda self: self.__albums[0] if len(self.__albums) > 0 else None)
artist = property(lambda self: self.__artists[0] if len(self.__artists) > 0 else None)
albums = property(lambda self: self.__albums)
artists = property(lambda self: self.__artists)
Wiedergabelisten (einschließlich Favoriten) haben ebenfalls das gleiche Format und enthalten einen Track-Iterator zur einfachen Verwendung in Loops:
class Playlist:
class __iterator:
def __init__(self, playlist):
pass #
def __next__(self):
pass #
title = property(lambda self: self.__title)
tracks = property(lambda self: self.__tracks)
is_public = property(lambda self: self.__is_public)
def __len__(self):
return len(self.__tracks)
def __iter__(self):
return Playlist.__iterator(self)
def __getitem__(self, index):
return self.__tracks[index]
Die Klasse ist für die Interaktion mit Diensten verantwortlich
MusicProvider
:
class MusicProvider:
favorites = property(lambda self: self.__favorites)
playlists = property(lambda self: self.__playlists)
YandexMusic (MusicProvider)
Bei der Initialisierung lädt die
Klasse Informationen zu allen Wiedergabelisten und allen Titeln in die Wiedergabeliste "Ich mochte".
Spotify (MusicProvider)
es tut es nicht, enthält aber Methoden zum Importieren:
class Spotify(MusicProvider):
def import_playlist(self, playlist):
pass #
def import_favorites(self, playlist):
pass #
Im Inneren wird anhand der von Yandex.Music erhaltenen Songdaten nach Titeln in der Spotify-Datenbank gesucht.
Nachdem alle Titel in der Wiedergabeliste gefunden wurden, wird sie mit demselben Namen erstellt (sofern es sich nicht um "Liked Songs" handelt) und alle gefundenen Melodien werden hinzugefügt.
Wiedergabelisten und gespeicherte Titel erfordern unterschiedliche Berechtigungen:
- playlist-modify-private - zum Erstellen / Ändern von Wiedergabelisten
- user-library-modify - um Audiotracks zu Favoriten hinzuzufügen
Es gibt ein Problem: Die Länge der Abfragezeichenfolge ist begrenzt. Wenn sich also eine große Anzahl von Titeln in der Wiedergabeliste befindet, schlägt die Abfrage fehl, ohne überhaupt zu starten. Um diese Situation zu vermeiden, wird die Liste der Spuren in Stücke von 50 Teilen geschnitten und die Hinzufügung mit mehreren Anfragen vorgenommen.
Die
search
Spotify-API- Methode unterstützt Schlüsselwörter für die Suche nach Album / Künstler / Titel, die wir schamlos verwenden werden.
Suche Spotify
Spotify verfügt über eine große Titeldatenbank, aber nicht die gesamte Musik ist vorhanden. Sie können leicht erraten, dass sich viele in Spotify fehlende Musik mit vielen Yandex.Music-Songdatenbanken überschneidet. Einige der Musiktitel können Cover / Remixe und andere Perversionen sein, andere können einfach falsch eingefügt werden: Das falsche Album oder die Reihenfolge der Musiker ist unterschiedlich.
Ein weiteres Problem ist ein anderer Ansatz zum Zusammenstellen von Informationen zu Titeln: Spotify kann nur ein Album enthalten, und Yandex.Music sendet eine Reihe von Alben. Möglicherweise gibt es dort und dort bereits mehrere Künstler.
Deezer bietet ein Album und einen Künstler, aber das ist eine andere Geschichte.
Daher wird der folgende Ansatz
- Für alle Alben für genau passende Keywords gesucht
track:
,artist:
,album:
.
Meistens reicht dies aus. - Wenn der Titel nicht gefunden wird (oder das Album nicht in Yandex.Music angegeben ist), wird versucht, ohne Album zu suchen.
- Wird kein Titel gefunden, wird mit dem nächsten Künstler gesucht.
Nicht gefundene Melodien und nicht standardmäßige Suchbedingungen für Audiospuren werden im Protokoll angezeigt. Sie können sehen, was genau hinzugefügt wurde, und es gegebenenfalls manuell verarbeiten.
Hinweis
Dieses Projekt ist im Großen und Ganzen für eine einmalige Aufgabe erforderlich. Es wurde in der Freizeit entwickelt und nicht für industrielle Anwendungen. Für einen erfahrenen Spezialisten mag der Code daher ekelhaft erscheinen.
Während der Entwicklung der Praxis hat PEP8 jedoch mehr oder weniger versucht, befolgt zu werden, und die Gesamtgröße des Programms ist eher gering.
Quellcodes des Programms
Aktuelle Python-Version zum Zeitpunkt des Schreibens: 3.8.4
Gebrauchte Materialien:
- Illustration von Peter Pig: Buch "Peter das Schwein und die Maschine", Petrushevskaya Ludmila
- Yandex.Music-Logo: YANDEX LLC
- Spotify-Logo: Spotify AB