Oneradioplayer

Soyez le premier à donner votre avis sur cette source.

Vue 3 587 fois - Téléchargée 167 fois

Description

J'ai réalisé ce lecteur suite à la demande d'un membre du site. Je n'ai pas cherché à faire un lecteur performant mais collant à ses besoins. Je le poste ici au cas ou il pourrait interresser d'autres personnes.

pour un lecteur radio performant allez voir plutôt ici:

http://www.ircfr.com/codes/RADIOCAST-PLAYER-V2-RADIO-SHOUTCAST_41735.aspx

Ce lecteur permet d'écouter une radio unique dont l'adresse est mise dans un fichier ini pour faciliter l'accès. Il ne possède aucune interface et ses fonctions se limitent à lecture, pause et stop. il retourne également le titre en cours et à suivre sous la forme d'un signal.

Toute l'aide est fournie dans le zip

Source / Exemple :


on 1:start:{
  hmake OneRP 100
  var %a $dll($OneRP.Amp,PluginManager,load input $shortfn($scriptdirplugins\in_vorbis.dll))
  var %a $dll($OneRP.Amp,PluginManager,load input $shortfn($scriptdirplugins\in_mp3.dll))
  var %a $dll($OneRP.Amp,PluginManager,load output $shortfn($scriptdirplugins\out_ds.dll))
}

alias -l OneRP.Amp {
  return $shortfn($scriptdirplugins\amp_in.dll)
}

alias OneRP.lecture {
  if ($dll($OneRP.Amp,CurrentMusic,status) == ok paused) OneRP.pause
  else {
    OneRP.stop
    var %b $readini($scriptdir/Oneradioplayer.ini,OneRP,adresse)
    if $right(%b,3) != ogg { 
      var %a $dll($OneRP.Amp,Play, $+ %b $+ .mp3)
    }
    else {
      var %a $dll($OneRP.Amp,Play, $+ %b $+ )
    }
    .timerOneRP -iom 0 1000 OneRP.affcurrent
  }
}

alias OneRP.stop {
  var %a $dll($OneRP.Amp,Stop,.)
  .timerOneRP off
}

alias OneRP.pause {
  var %a $dll($OneRP.Amp,CurrentMusic,$iif($mid($dll($OneRP.Amp,CurrentMusic,status),4) == playing,pause,unpause))
}

alias -l OneRP.affcurrent {
  var %b $hget(OneRP,stream)
  var %a $OneRP.current
  if (%b != %a) { .signal OneRP titre %a }
}

alias -l OneRP.current {
  if ($mid($dll($OneRP.Amp,CurrentMusic,status),4) != stopped) {
    var %a $mid($dll($OneRP.Amp,CurrentMusic,title),4)
    var %b $remove(%a,$chr(40),$chr(41),$chr(93),$chr(91),$chr(123),$chr(125))
    var %b $numtok(%a,40)
    if (($chr(40) isin %a) && (%b > 1) && ($len($gettok(%a,1,40)) > 1) ) {
      hadd OneRP stream $gettok(%a,1- $+ $OneRP.testtitreradio(%a) $+ ,40)
      var %d = $remove($gettok(%a,$calc($OneRP.testtitreradio(%a) + 1) $+ -,40),$chr(41),$chr(40))
      if ($hget(OneRP,stream2) != %d) {
        hadd OneRP stream2 %d
      }
    }
    else {
      if ((timed out isin %a) || (could not connect isin %a) || (unknown host isin %a)) { }
      elseif (([ICY 200 OK] isin %a) || (HTTP/ isin %a)) { hdel OneRP stream2 }
      elseif (connecting isin %a) { hdel OneRP stream2 | hadd OneRP stream connection... }
      elseif (buffer isin %a) { hdel OneRP stream2 | hadd OneRP stream Mise en mémoire tampon... }
      else { 
        if ($len($hget(OneRP,stream2)) == 0) {
        }
        hadd OneRP stream $remove(%a,$chr(40),$chr(41)) 
        hadd OneRP stream2 $remove(%a,$chr(40),$chr(41)) 
      }
    }
    return $hget(OneRP,stream)
  }
  else OneRP.stop
}

alias -l OneRP.testtitreradio {
  var %a $remove($1-,$chr(32))
  var %x 2
  while %x < $numtok(%a,40) {
    if ($right($gettok(%a,%x,40),1) != $chr(41)) goto a4fin
    inc %x 1
  }
  :a4fin
  return $calc(%x - 1)
}

Conclusion :


Téléchargez le zip car la source affichée ne suffit pas

En espérant que cela vous soit utile, bonne écoute ...

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

WorldDMT
Messages postés
882
Date d'inscription
jeudi 6 juillet 2006
Statut
Membre
Dernière intervention
6 janvier 2012
1 -
ok bro excuse moi :D

je disais que effectivement tu a raison wims pour ce que tu a dis que si il n'y a pas de commande on peut pas enlevé les accolades si non on aura un msg d'erreur

c'est pk j'ai mis dans mon exp "cmd" que ça s'applique rien qu'avec la presence d'une commande

j'espere etre bien clair cette fois ci :)
cs_wims
Messages postés
2466
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
1 août 2010
1 -
?
Essaye de te relire quand tu postes un message :(
WorldDMT
Messages postés
882
Date d'inscription
jeudi 6 juillet 2006
Statut
Membre
Dernière intervention
6 janvier 2012
1 -
effectivement wims c'est pk j'ai mis "cmd" :) si non pour un vide on aura un msg d'erreur :)
cs_wims
Messages postés
2466
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
1 août 2010
1 -
$dll est mieux que /dll.
par contre le coup des vars sur $dll, autant utilisé .echo -q (ou /noop, mais pour resté compatible), tu auras ton echo plus simplement si tu veux check le retour :) (a noté aussi que tu peux utilisé var -s pour afficher le resultat.)

Et worldDMT, enlevé les {} ne marche que quand il n'y qu'une command derrière, ou alors quand ce qui précède la { n'est pas une condition et encore, il faut savoir ce que l'on fait.
WorldDMT
Messages postés
882
Date d'inscription
jeudi 6 juillet 2006
Statut
Membre
Dernière intervention
6 janvier 2012
1 -
ok je vois

bon a propos de l'alias OneRP.current je vois dans else

else {
if ($len($hget(OneRP,stream2)) == 0) {
}
hadd OneRP stream $remove(%a,$chr(40),$chr(41))
hadd OneRP stream2 $remove(%a,$chr(40),$chr(41))
}

ici la condition "if ($len($hget(OneRP,stream2)) == 0)" ça jou quel role?
puisque tu a une accolade fermé avant la cmd
si je ne me trompe pas si la condition est vraie ou fausse la commande hadd fontionnera tjr non?

au passage quand tu met dejà des "()" enleve les "{}" c'est plus rapide

exp:

if (x y) { cmd } tu peu faire if (x y) cmd

aussi pour

if ((x ==y) || (x == z)) { cmd }

=>

if (x ==y) || (x == z) { cmd }

ou

if ((x ==y) || (x == z)) cmd

c'est juste une proposition

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.