Spotify-päivittäjä Levyraatiin.
Find a file
2026-09-08 18:40:59 +00:00
.env.example Ensimmäinen versio: Spotify-päivittäjä 2026-03-08 14:16:17 +00:00
.gitignore Ensimmäinen versio: Spotify-päivittäjä 2026-03-08 14:16:17 +00:00
levyraati.nginx Lisää webhook-tuki, parannettu Spotifyn luvitus (--auth) ja palvelinkonfiguraatiot 2026-09-08 18:40:59 +00:00
levyraati.py Lisää webhook-tuki, parannettu Spotifyn luvitus (--auth) ja palvelinkonfiguraatiot 2026-09-08 18:40:59 +00:00
levyraati.service Lisää webhook-tuki, parannettu Spotifyn luvitus (--auth) ja palvelinkonfiguraatiot 2026-09-08 18:40:59 +00:00
README.md Lisää webhook-tuki, parannettu Spotifyn luvitus (--auth) ja palvelinkonfiguraatiot 2026-09-08 18:40:59 +00:00

Wiki-to-Spotify Soittolistan Päivittäjä 🎵

Tämä Python-skripti hakee automaattisesti kuluvan viikon biisivalinnat MediaWiki-sivulta ja päivittää ne haluttuun Spotifyn soittolistaan.

Ominaisuudet

  • Kaksi toimintatilaa:
    1. Komentorivi: Hakee biisit kerran ja lopettaa (sopii Cron-ajoon).
    2. Webhook-palvelin: Kuuntelee (Flask/Gunicorn) ilmoituksia Wikistä ja päivittää soittolistan reaaliajassa kun sivu tallennetaan.
  • Kirjautuu MediaWiki-rajapintaan ja lukee kuluvan viikon (esim. == Viikko 10 ==) sisällön.
  • Etsii tekstistä suorat Spotify-linkit.
  • Jättää huomiotta muiden palveluiden (esim. YouTube) linkit.
  • Korvaa valitun Spotify-soittolistan sisällön löydetyillä kappaleilla.

Vaatimukset

  • Python 3
  • uv (suositeltu) tai perinteinen pip paketinhallintaan.
  • Spotify Developer -sovelluksen tunnukset (Client ID & Client Secret).
  • Tunnukset kohde-MediaWikiin.

Asennus ja käyttöönotto

1. Lataa koodi ja luo virtuaaliympäristö

uv venv
source .venv/bin/activate
uv pip install -r requirements.txt # Tai asenna manuaalisesti: spotipy requests python-dotenv flask gunicorn

2. Asetukset

Luo tiedosto nimeltä .env (voit kopioida .env.example -tiedoston pohjaksi) ja täytä sinne omat tietosi:

SPOTIPY_CLIENT_ID="sinun_spotify_client_id"
SPOTIPY_CLIENT_SECRET="sinun_spotify_client_secret"
SPOTIPY_REDIRECT_URI="http://localhost:8888/callback"
PLAYLIST_ID="soittolistan_id_jota_paivitetaan"

WIKI_USERNAME="wiki_tunnuksesi"
WIKI_PASSWORD="wiki_salasanasi"
WIKI_API_URL="https://sinun-wikisi.fi/api.php"
WIKI_PAGE_TITLE="Sivun_Nimi"

# Valinnainen webhookin suojaus
WEBHOOK_SECRET="valitse_oma_salasana"

Toimintatila 1: Komentorivi (Cron)

Aja skripti kerran:

python levyraati.py

Voit asettaa tämän ajumaan Cron-työkalulla esimerkiksi klo 04:00:

0 4 * * * cd /polku/projektiin && .venv/bin/python levyraati.py >> loki.log 2>&1

Toimintatila 2: Webhook-palvelin (Nginx + Gunicorn)

Tämä tila mahdollistaa reaaliaikaisen päivityksen kun Wikissä muokataan sivua.

1. Testaus manuaalisesti

python levyraati.py --server

Palvelin kuuntelee portissa 5000. Webhook-osoite on http://osoite:5000/webhook?secret=salainen_avain.

2. Tuotantoasennus (Systemd)

  1. Kopioi levyraati.service hakemistoon /etc/systemd/system/.
  2. sudo systemctl daemon-reload
  3. sudo systemctl enable --now levyraati

3. Nginx-konfiguraatio

  1. Kopioi levyraati.nginx hakemistoon /etc/nginx/sites-available/.
  2. Aktivoi ja käynnistä uudelleen: sudo ln -s ... /etc/nginx/sites-enabled/ && sudo systemctl restart nginx

Spotifyn luvitus

Ensimmäisellä käyttökerralla (tai jos kirjautuminen vanhenee / token mitätöidään):

  1. Aja terminaalissa:
    python levyraati.py --auth
    
  2. Skripti tulostaa Spotify-linkin. Avaa se selaimessasi ja hyväksy luvat.
  3. Kopioi selaimen osoiterivillä oleva koko URL ja liitä se takaisin terminaaliin.
  4. .cache -tiedosto syntyy ja pitää sinut kirjautuneena jatkossa.

Jos soittolistan päivityksessä tulee virhe error: invalid_grant, error_description: Refresh token revoked, aja uudelleen python levyraati.py --auth.