https://www.hitmix.fi/
-->wss://sanoma-radio-ws-production.herokuapp.com tai wss://sanoma-radio-ws-prod.herokuapp.com
^tuolla pitäisi olla parhaillaan soivan biisin tiedot. miten kaivelen ne pythonilla? muukin kieli toki käy!
-->wss://sanoma-radio-ws-production.herokuapp.com tai wss://sanoma-radio-ws-prod.herokuapp.com
^tuolla pitäisi olla parhaillaan soivan biisin tiedot. miten kaivelen ne pythonilla? muukin kieli toki käy!
Vastaukset 40
Vanhimmat
wscat -n -c wss://sanoma-radio-ws-production.herokuapp.com
antaa vain:
< {"data":"19-11-2015_14-39-30","type":"version"}
miksi?
Siksi että sisältö tuotetaan JavaScript vetoisesti, ja tämä estää normaalin noutamisen ohjelmilla jotka ei tue JavaScriptiä, mutta ei se mikään ongelma ole, ei sinne päinkään. Katselen josko se listaus irtoaisi Bash Shell scriptin avulla. Olihan tässä nyt kyse sen SOITTOHISTORIA LISTAN noutamisesta.
Jahaas, sepä ei onnistukkaan ihan helposti. Kopioin 922 kpl historiaa, mutta se ei ole lähelläkään loppuaan, yltää ties kuinka kauas menneeseen.
Hankaluutena on se että listaa generoidaan vasta kun SOITTOHISTORIA painiketta on slikattu, ja silloinkin 18 ensimmäistä, ja uudet renderöidään kun listaa on vieritetty tarpeeksi alas.
Sinä taisit tietääkin tämän ongelman, ja höynäytit joutavat yrittämään. Koko historian saaminen vaatii listan käsittelyä JavaScript avulla. Scripti vierittää listaa ja samalla kopioi listaa ylös kun uutta renderöidään näkyviin.
LUOVUTAN ei ole vaivan arvoista, tai maksusta voisin kelta tuon listan alkuun, ja jatkossahan alkupäätä ei tarvitsekkaan hakea koska se ei muutu.
.
Tästä ei ole vielä pitkä aika (lumien aikaan) kun vedin tuollaisen listan ulos jonkun lehden sivuilta, ja silloin mentiin vuoteen 2011 asti.
Tuohon varmaankin pitäisi jo saada lupa, sillä ilmeisesti heillä soittohistoria on mennyt kokoajan tietokantaan sitä mukaa kun kappaleita on soitettu.
Luulen että jos he tämän ketjun lukevat, varmaan tekevät muutoksia, niin ettei jatkossa koko historiaa saa ulos.
"Olihan tässä nyt kyse sen SOITTOHISTORIA LISTAN noutamisesta."
Ei ollut historiasta kyse. Aloituksessahan kirjoitettiin:
"^tuolla pitäisi olla parhaillaan soivan biisin tiedot. miten kaivelen ne pythonilla? muukin kieli toki käy!"
Ahaa, no se helpottaa asioita, toivon mukaan riittävästi.
Tässä yksi vaihtoehto, valitettavasti tarvitaan selain tiedon noutoon. Ellei sinulla ole Chromium vaiha se siihen mikä sinulla on os.system() funktioon.
import requests
from bs4 import BeautifulSoup
import os
os.system("chromium --headless --disable-gpu --dump-dom https://www.supla.fi/hitmix > supla.html 2>/dev/null" )
url = '/home/maxtor/supla.html'
soup = BeautifulSoup(open(url, encoding="utf8"), "html.parser")
print(soup.find('div', {'class' :'RadioHeader__WidgetContent-sc-17ofob1-4 hfKklb'}).text)
No niin, tuohon pitää myös vaihtaa tuo polku omaasi vastaavaksi, eli
url = '/home/maxtor/supla.html'
Tein parannuksia, koska tuossa tulee välistä "music_note" tekstin eteen. Myös polku luetaan järjestelmästä, ettei siitä tarvitse huolehtia.
import requests
from bs4 import BeautifulSoup
import os
os.system("chromium --headless --disable-gpu --dump-dom https://www.supla.fi/hitmix > supla.html 2>/dev/null" )
url = os.getcwd() "/supla.html"
soup = BeautifulSoup(open(url, encoding="utf8"), "html.parser")
str=soup.find('div', {'class' :'RadioHeader__WidgetContent-sc-17ofob1-4 hfKklb'}).text
if "music_note" in str: str=str.replace('music_note', '')
print(str)
Kun tieto haetaan selaimella, se kestää hieman pitempään, testasin ja melko tasaisesti meni tuo 5 sekuntia.
Soittolista näyttäisi olevan json-muodossa. Esimerkiksi yhden saa noudettua vaikka wgetillä:
wget -qO- "https://supla-playlist.nm-services.nelonenmedia.fi/playlist?channel=55&limit=1"
{"items":[{"timestamp":1623582724,"date":"2021-06-13T11:12:04.829Z","channel":55,"artist":"Hausmylly","song":"Ikävä lokakuu"}],"next_token":1623582724}
Tää näyttäisi toimivan. Tällä hetkellä kuuluu nimittäin.
"Real Mccoy","song":"Another Night"
Seuraavaksi Aikakone","song":"Odota"
Nyt "Inner Circle","song":"Sweat (A La La La La Long)"
Lukitaan vastaus. Tämä toimii.
Ehkä hieman ruma toteutus, mutta toimii:
#!/bin/bash
biisidata=`wget -qO- "https://supla-playlist.nm-services.nelonenmedia.fi/playlist?channel=55&l>
artisti=`echo $biisidata | awk -F '\"artist\":\"' '{print $2}' | awk -F '\",\"song\":"' '{prin>
biisi=`echo $biisidata | awk -F '\"song\":\"' '{print $2}' | awk -F '\"' '{print $1}'`
echo $artisti - $biisi
Tulos:
$ bash biisi.sh
Masterboy - Feel The Heat Of The Night
Kopsasin tuon nano-editorista. Jotain taisi jäädä pois. Täydentäminen pitäisi onnistua tämän ketjun tiedoilla.
Tällä haavaa
$ bash biisi.sh
Eminem - Without Me
Laitoin skriptin nyt pastebiniin jemmaan, kun en muistanut sitä edes itselleni tallentaa.
https://pastebin.com/ertmjctX
Testasin, toimii hienosti.
Ihan hyvä.
Tein+tuosta+koodistasi+lyhyemmän+version+(179+merkkiä).
#!/bin/bash
x=`wget+-qO-+"https://supla-playlist.nm-services.nelonenmedia.fi/playlist?channel=55&limit=1"`
echo+$x+|+awk+-F'"'+'{printf+"%s\n%s\n",+"Solisti:+"$14,"Kappale:+"$18}'
Sinä se osaat, pakko myöntää.
Osaanhan minä, olet oikeassa.
Eipähän se tuostaan pysty paranemaankaan.
rhythmbox soittimeen tämä osoite:
https://supla.digitacdn.net/live/_definst_/supla/suomipop/chunklist.m3u8
Pitihän se minukin tehdä Bash Shell scripti kun tuo python tylytettiin ulos. Rivejäkin tuli 35, ja tämmöisen se tulostaa: https://s6.gifyu.com/images/supla.png
Koodinkin saa jos kiinnostaa,
Painit eri sarjassa.
Tuossa on ominaisuus, jolla voidaan määrittä monenko viimeisimmän kappaleen tiedot haetaan. Pelkkä supla.sh näyttää 10 viimeisintä, mutta voit käynnistää supla.sh 200 niin haetaan tiedot 200:ta viimeisimmästä.
Sivusta seuranneena, voin todeta, olet ainut jolla hommat täällä luonnistuu.
Ylipäätään voi todeta, että melko harva nuo osaajat on.
Asiapitoinen ketju.
Näin on.
Näistä saa motivaatiota verestää vanhoja taitojaan, jotka muutoin menisi vuoden tai kahden sisällä aika perusteelliseen uudelleen opiskeluun.
Ennen kaikkea, juuri näin.
Vanha ketju, mutta hyvä käsitellä loppuun, kun noin pahasti oli jäänyt kesken.
4 vuotta meni ennen kuin ketju osaajat tavoitti.
Sämppärin kiusaksi.