#1 Le 17/10/2022, à 19:39
- joko
Récupération de données [Résolu]
Bonjour,
je souhaiterais récupérer les données de cette page radio meuh, à savoir l'artiste et le morceau.
Avec le navigateur Firefox, en cliquant sur inspecter, j'ai pu voir les datas, mais ne sais les récupérer en ligne de commande.
Ai essayé avec wget et curl sans succès. Une bonne âme pour m'aider ?
Merci de votre attention.
Dernière modification par joko (Le 19/10/2022, à 19:34)
Je suis un homme, quoi de plus naturel en somme ?
linux on the rocks
Hors ligne
#2 Le 17/10/2022, à 20:10
- krodelabestiole
Re : Récupération de données [Résolu]
c'est du javascript :
https://www.radiomeuh.com/player/v1212/loadtracks.js
la page qui contient ces données est celle-ci :
https://www.radiomeuh.com/player/rtdata/tracks.json
c'est du json (donc du javascript) et tu peux la récup avec curl ou wget.
nouveau forum ubuntu-fr on en parle là : refonte du site / nouveau design
profil - sujets récurrents - sources du site
Hors ligne
#3 Le 18/10/2022, à 22:11
- sputnick
Re : Récupération de données [Résolu]
Here We Go
(morceau en cours)
$ curl -s 'https://www.radiomeuh.com/player/rtdata/tracks.json' | jq -r '.[]|select(.pos == 1)|("artist: " + .artist, "title: " + .titre)'
artist: Eddy Grant
title: Nobodys Got Time (Misiu Edit)
Si jq n'est pas installé, il s'installe simplement sans dépendances.
On ne peut pas mettre d'array dans un string!
https://sputnick.fr/
Hors ligne
#4 Le 19/10/2022, à 19:33
- joko
Re : Récupération de données [Résolu]
J'ai fait plus compliqué que vous sputnick, mais avec le même principe. J'ai eu des des pb pour les accents qui ne s'affichent pas et qui sont remplacés par des trucs comme \0049.
Ai trouvé une soluce :
cat tracks.json | jq > out.json
.
Sinon merci à vous deux.
En espérant que vous aurez apprécié cette radio, juste une pub au lancement avec vlc, mais une excellente programmation musicale.
Je suis un homme, quoi de plus naturel en somme ?
linux on the rocks
Hors ligne
#5 Le 22/10/2022, à 12:53
- LeoMajor
Re : Récupération de données [Résolu]
salut,
variante webkit & vba.net (gambas), permettant une web application cliente et plus si affinité.
cat ~/scripts/radiomeuh.gbs
#!/usr/bin/env gbs3
'Auto Generated Script 10/30/2022 15:29:48.825 Version (3.17.3)
#Script Title="wbkit"
#Script Startup="FMain"
#Script Version="0.0.1"
#Script License="General Public License 2.0"
#Script Name="radiomeuh"
Use "gb.image"
Use "gb.qt4"
Use "gb.form"
Use "gb.qt4.webkit"
class FMain
' Gambas class file
Private wb As WebView
Private sCur As Variant
Private tTrack As New Timer As "eTrack"
Private tActiveButton As New Timer As "eActiveButton" ' playButton
Private omsg As MessageView
Private hlcd As HBox
Private lcb As LCDLabel
Private mcb As LCDLabel
Private TrackEnd As Date ' track
Private sp As New Collection
Private duration As Date = Time(0, 0, 0)
Private delta As Short = 0
Public Sub Form_Open()
MainWeb()
End
Public Sub Form_Resize()
With FMain
If .ClientH < 95 Or .ClientH > 500 Then .H = 360
If .ClientW < 250 Or .ClientW > 500 Then .W = 300
End With
End
Public Sub ewb_Load()
Dim wd As WebElement = wb.Document
With sp
.Add(wd.FindFirst("span.time").Eval("this.innerText;"), "time")
.Add(wd.FindFirst("span.artist").Eval("this.innerText;"), "artist")
.Add(wd.FindFirst("span.titre").Eval("this.innerText;"), "titre")
.Add(wd.FindFirst("span.album").Eval("this.innerText;"), "album")
.Add(wd.FindFirst("span.expire").Eval("this.innerText;"), "expire")
End With
If sp["titre"] <> "" And sp["titre"] <> sCur Then
sCur = sp["titre"]
For Each item As Variant In sp
Print sp.key, ":", item
Next
TrackEnd = DateAdd(Val(sp["time"]), gb.Second, CInt(sp["expire"]))
Print "TimeTrack", TrackEnd
tTrack.Delay = 1000
If Not wd.FindFirst(".jp-state-playing") Then wd.FindFirst("button.jp-play").Eval("this.click();")
tTrack.Start()
'backgroundImage vs background
Dim img As Variant
Try img = wd.FindFirst("#trackImg img").Eval("this.getAttribute('src');")
If CStr(img) Match "noname" Then img = "https://www.radiomeuh.com/img/logo-footer.svg" '"https://www.radiomeuh.com/img/logo-header.png"
If img Then wd.Document.Eval("document.body.style.backgroundImage=\"url('" & CStr(img) & "')\";")
With wd.Document
'Try .Eval("document.body.style.background = 'grey'; document.body.style.foreground = 'black';")
'.Add("<h3 style=\"color:auto; text-indent: 2em;\">TrackEnd: " & TrackEnd & "</h3>")
.Add("<h3 style=\"color:yellow; text-indent: 2em;\">artiste: " & sp!artist & "</h3>")
.Add("<h3 style=\"color:yellow; text-indent: 2em;\">titre: " & sp!titre & "</h3>")
.Add("<h3 style=\"color:yellow; text-indent: 2em;\">album: " & sp!album & "</h3>")
End With
Print String(10, "-")
Print wb.HTML
Print String(10, "-")
omsg.Open(sp!artist & "\n" & sp!titre & "\n" & sp!album)
Exec ["/usr/bin/notify-send", sp!artist & ":" & sp!titre]
Endif
End
Public Sub MainWeb()
WebSettings[WebSettings.DeveloperExtrasEnabled] = True 'option right-click -> inspect
Dim dk As Screen = Screens[0]
With FMain
.X = Int(dk.W / 5)
.Y = Int(dk.H / 5)
.W = 300
.H = 360
.Arrangement = Arrange.Vertical
.Title = "Radio Meuh"
End With
With hlcd = New HBox(FMain)
.W = FMain.ClientW - 5
.H = 30
End With
With lcb = New LCDLabel(hlcd)
.Height = 25
.Width = Int(hlcd.ClientW / 2 - 10)
.Top = 0
.Left = 0
End With
With mcb = New LCDLabel(hlcd)
.Height = 25
.Top = 0
.Alignment = Align.Right
.Width = Int(hlcd.ClientW / 2)
.Left = Int(hlcd.ClientW - 10)
End With
With omsg = New MessageView(FMain) As "emsg"
.Top = 0
.Expand = True
End With
With wb = New WebView(FMain) As "ewb"
.H = FMain.ClientHeight - 10
.W = FMain.ClientWidth - 100
.Expand = False
.Url = "https://www.radiomeuh.com/player/v1212/index.html"
End With
Wait 3
tActiveButton.Delay = 1000 * 3
tActiveButton.Start()
End
Public Sub eActiveButton_Timer()
Dim wd As WebElement = wb.Document
If Not wd.FindFirst(".jp-state-playing") Then Try wd.FindFirst("button.jp-play").Eval("this.click();")
End
Public Sub eTrack_Timer()
Dim tmp, dtmp As Date
If sp!expire Then
duration = Time(DateAdd(duration, gb.Second, 1))
'lcb.Text = Format(duration, "hh:nn:ss") ' ok croissant relatif
Inc delta
tmp = DateAdd(Val(sp["time"]), gb.Second, delta)
dtmp = CDate(CFloat(TrackEnd) - CFloat(tmp))
lcb.Text = Format(tmp, "hh:nn:ss") 'croissant horaire
mcb.Text = Format(dtmp, "hh:nn:ss") ' décroissant horaire
If tmp >= TrackEnd
Print "Fin de Lecture"
tTrack.Stop()
delta = 0
duration = Time(0, 0, 0)
TrackEnd = Time(0, 0, 0)
Dim wd As WebElement = wb.Document
wd.Eval("document.location.reload();")
Endif
Endif
End
End class
form FMain
# Gambas Form File 3.0
{ FMain Form
MoveScaled(0,0,64,64)
}
End form
gbs3 ~/scripts/radiomeuh.gbs
à l'envers ( script --> projet sous gambas)
exemple;
mkdir -p ~/Projets
gbs3 --convert-script ~/scripts/target.gbs ~/Projets/
Edit 30/10/2022: variante avec chrono horaires croissant, décroissant
Dernière modification par LeoMajor (Le 30/10/2022, à 17:00)
Hors ligne