Wieder eine Spotify Playliste: Alle (neuen) Songs aus den Maus Podcasts

Meine Tochter hört schon lange den Maus Podcast. Im Podcast gibt es nicht nur tolle Geschichten sondern auch einen schönen Mix an Kinderliedern.

Und natürlich fragt sie immer mal wieder nach bestimmten Liedern. Wenn es nur eine Playlist gäbe,  in der alle Lieder gesammelt werden. Zum einen kann man dann deutlich einfacher ein bestimmtes Lied finden, zum anderen kann man die Playlist auch einfach so durchlaufen lassen wenn man im Auto oder zuhause Musik für die Kleinen braucht.

Zum Glück gibt es unter https://kinder.wdr.de/hoerensehen/maus-zum-hoeren-playlist-106.html eine Liste welche Lieder in den letzten Podcasts gespielt wurden.

Und nun gibt es auch eine passende Spotify Playlist!

Mein Bot fügt täglich die neuen Folgen hinzu. Wer wissen möchte wie das ganze geht findet hier den Python Code.

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import os
import requests
from bs4 import BeautifulSoup
from pprint import pprint
import spotipy
import spotipy.util as util

scope = (‚user-library-read user-library-modify playlist-read-private playlist-modify-public ‚
‚playlist-modify-private playlist-read-collaborative user-follow-modify user-follow-read ‚
‚user-read-private user-read-email‘)

username = ‚XXXXXXXXXXXXXXXXX‘
token = util.prompt_for_user_token(username,
scope,
client_id=’XXXXXXXXXXXXXXXX‘,
client_secret=’XXXXXXXXXXXXXXXX‘,
redirect_uri=’http://localhost‘)

if token:
spotify = spotipy.Spotify(auth=token)

url = „https://kinder.wdr.de/hoerensehen/maus-zum-hoeren-playlist-106.html“

# https://open.spotify.com/playlist/4FqLy2Rfv6x2pKncAzenv9?si=ae1c8a2c676949d9
playlist = „4FqLy2Rfv6x2pKncAzenv9″
results = spotify.user_playlist_tracks(username,playlist)
playlist_tracks = results[‚items‘]
while results[’next‘]:
results = spotify.next(results)
playlist_tracks.extend(results[‚items‘])

response = requests.get(url)

if response.status_code == 200:
soup = BeautifulSoup(response.content, ‚html.parser‘)
elements = soup.find_all(‚p‘, class_=’text small‘)
elements = [element for element in elements if “ – “ in element.text]
element_list = [element.text.rsplit(‚ – ‚, 1) for element in elements]

for interpret, song in element_list:
query = „track:“ + song + “ artist:“ + interpret

results = spotify.search(q=query, type=’track‘, limit=1)
if results[‚tracks‘][‚items‘]:
track_uri = results[‚tracks‘][‚items‘][0][‚uri‘]

for item in playlist_tracks:
if item[‚track‘][‚uri‘] == track_uri:
break
else:
spotify.playlist_add_items(playlist, [track_uri])
print(„Song hinzugefügt:“ + query)
new_track_info = spotify.track(track_uri)
playlist_tracks.append({‚track‘: new_track_info})

else:
print(„Fehler beim Abrufen der Webseite. Statuscode:“, response.status_code)