Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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.

Hors ligne

#3 Le 18/10/2022, à 22:11

sputnick

Re : Récupération de données [Résolu]

Here We Go smile

(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