| .env.example | ||
| .gitignore | ||
| levyraati.nginx | ||
| levyraati.py | ||
| levyraati.service | ||
| README.md | ||
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:
- Komentorivi: Hakee biisit kerran ja lopettaa (sopii Cron-ajoon).
- 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
pippaketinhallintaan. - 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)
- Kopioi
levyraati.servicehakemistoon/etc/systemd/system/. sudo systemctl daemon-reloadsudo systemctl enable --now levyraati
3. Nginx-konfiguraatio
- Kopioi
levyraati.nginxhakemistoon/etc/nginx/sites-available/. - 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):
- Aja terminaalissa:
python levyraati.py --auth - Skripti tulostaa Spotify-linkin. Avaa se selaimessasi ja hyväksy luvat.
- Kopioi selaimen osoiterivillä oleva koko URL ja liitä se takaisin terminaaliin.
.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.