begin process at 2010 03 14 08:16:40
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

AddOns

 > ONERADIOPLAYER

ONERADIOPLAYER


 Information sur la source

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :AddOns Classé sous :radio, player, lecteur, internet, mp3 Niveau :Débutant Date de création :22/12/2008 Vu / téléchargé :1 481 / 61

Auteur : Bestdoud

Ecrire un message privé
Site perso
Commentaire sur cette source (16)
Ajouter un commentaire et/ou une note

 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

  • 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)
  • }
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 ...

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip Source avec une capture AMICODER CONVERSION AUDIO V1.0
Source avec Zip Source avec une capture AMITUBE PLAYER
Source avec Zip Source avec une capture RADIOCHAN V2
Source avec Zip Source avec une capture RADIOCAST PLAYER V2 - RADIO SHOUTCAST
Source avec Zip Source avec une capture RECHERCHER UN FAVORIS IE/FIREFOX

 Sources de la même categorie

TCL - AJOUT SUPPRESSION DE LOGS par Atok
BLACKLIST PSEUDOS/MASKS par usurpateur
Source avec une capture [XCHAT] ANTI KICK / AWAY C++ par GeroXXXX
JEU DU CODE par alanpersonproject
SERVEUR FTP par hisoka2501

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture AMIBLOG PLAYER par Bestdoud
Source avec une capture (MP3 PLAYER) par Mc_AbBeR
LECTEUR MP3 BY MC_ABBER par Abber
Source avec une capture MP3 PLAYER par BSmax
LECTEUR MP3 par Samsung741

Commentaires et avis

Commentaire de wims le 22/12/2008 16:45:47

En terme de coding, a chaque fois jme dis mais comment il fait, et comme je vois aucune socket, les dlls font tilt :(, et jme dis "ah oui, les dll remplaces les lignes de socket et toutes la methode de lecture qui va derrière" c'est un peu dommage :p

Je ne juge pas le code parce que c'est pas vraiment le but, mais on peut optimiser :)

Commentaire de Bestdoud le 22/12/2008 17:21:25

en socket j'ai déja essayé et le résultat final est pas génial. on a des coupure à cause des tampons. A part faire un tampon énorme,j'ai pas trouvé.

Et ca se voit toute de suite que j'utilise des dlls à en regarder le contenu plus haut.

l'avantage c'est qu'on peut ausi écouter les radio en ogg.

ici j'ai pas trop recherché à faire un super truc. j'ai juste repris un ancien addon et laissé que le minimum. j'ai fait ca pour la personne que tu as conseillé de me contacter.

De plus j'ai plus trop le temps de coder. tous mes projets sont un peu laissé à l'abandon.

merci quand même pour ton commentaire

Commentaire de wims le 22/12/2008 20:57:26

Yep, c'est deja bien sympa d'avoir resortis ca vite fait.

j'ai moi meme essaye il fut un temps de lire les donnes en temps reel avec des tampons, et effectivement j'avais aussi des probleme de coupure, mais je me disais que c'est parce que je procedais mal.

Commentaire de uaip le 22/12/2008 22:04:12

Saloute
Même si on s'en fiche, on peut remplacer le goto par un break (dans la dernière boucle) ou même mettre directement le return.
C'est le seul "défaut" que j'ai trouvé à dire ^^
Sinon concernant cet éternel débat dll/mIRC c'est vrai que malgré l'augmentation de la qualité, ça enlève carrément du charme au codage mIRC (ce n'est en aucun cas une critique).

Commentaire de Bestdoud le 23/12/2008 12:13:08

si tu met directement le break ou le return tu ne renvoie aucune valeur alors qu'ici je renvoie une valeur à la fin dans tous les cas

Commentaire de wims le 23/12/2008 12:51:35

Non, le break ne fait qu'arrété la boucle, il ne sort pas de la routine en cours (le return lui stop la routine en cours DONC stop la boucle).
Mais Uaip a raison ton code est mal fichu, actuelement tu retourne %x - 1 dans nimporte quel cas (je sais pas si c'est voulu).
Mettre un break ou le même return (dans tout les cas il faut laissé le return de fin) et viré tes gotos reviendrai exactement au même que ton code actuel, mais on peut faire plus propre encore :

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

mais je pense pas que l'optimisation t'interesse vraiment ici, sinon... :)
En tout cas les regex font grandement defaut dans ton code.

Commentaire de Bestdoud le 23/12/2008 13:59:16

Dans ton code, si je ne rencontre jamais le caractère $chr(41), je boucle indéfiniment. alors que moi je scan toute ma chaine et je m'arrète à la fin. je retourne le nombre de caractère avant le chr(41) ou toute la longueur s'il n'y est pas.

Il doit y avoir moyen en effet d'utiliser les regex et d'optimiser le code. Mais ce n'était pas mon but efectivement.

Commentaire de uaip le 23/12/2008 15:10:56

Remplacer le goto par un return ne veut pas dire enlever le return initial.
Ton goto amène à une seule instruction : un return. Donc au lieu de laisser mIRC se débrouiller à chercher l'étiquette du goto, un return est, à mon avis, plus efficace, un break aussi.
Mais comme je l'ai dit, c'était juste histoire d'avoir un truc à dire sur la source ^^ (sinon j'ai rien trouvé d'autre à dire, à part peut-être le $numtok() recalculé à chaque passage de la boucle) mais bon, ça aurait été plus important si les tampons étaient manipulés en mIRC, or là c'est une dll qui s'en charge. Donc je répète que mes petits commentaires sont à prendre à la légère, sinon ça reste relativement bien codé, puis c'est sympa d'avoir ressorti ça pour aider quelqu'un.

Commentaire de PeGaZe33000 le 25/12/2008 12:12:45 10/10

Merci, en effet, d'avoir sorti ce code :)

Commentaire de WorldDMT le 27/12/2008 21:34:07

salut
j'ai regardé vite fais dejà on a commenté mais j'ai vu quelque ptites truc là

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))
}

pourquoi un hmake puisqu'il n'y a pas de hload?
tu peus enlevé et utilisé hadd -m le "-m" crée la hash table

pourquoi un tas de variable locale utilise /dll tout simplement

@+

Commentaire de Bestdoud le 28/12/2008 11:19:10

Salut,

tout d'abord merci pour ton commentaire

si tu regardes l'alias OneRP.current tu verra que je stocke des trucs dans la table, en l'occurence le tire en cours.  Ca m'évite de stocker dans des variables. un hmake ne signifie pas qu'on utilise un hload derrière. et je préfère créer la htable avant. je trouve ca plus propre. Après c'est une question de façon de travailler.

oui je peux utiliser /dll mais mes variables ne sont pas tockées, elles sont juste utilisées dans l'alias. Regarde dans la section variable. Et j'ai pris k'habitude de faire ca au cas ou j'ai un problème de dll. j'ai juste à remplacer par un echo et je vois ce que me retroune la dll.

Commentaire de WorldDMT le 28/12/2008 12:06:04

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

Commentaire de wims le 28/12/2008 17:27:59

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

Commentaire de WorldDMT le 29/12/2008 10:36:35

effectivement wims c'est pk j'ai mis "cmd" :) si non pour un vide on aura un msg d'erreur :)

Commentaire de wims le 29/12/2008 11:19:07

?
Essaye de te relire quand tu postes un message :(

Commentaire de WorldDMT le 29/12/2008 11:39:11

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 :)

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

je voudrai faire un lecteur MP3 et MIDI (si possible) [ par bibi_81 ] Voila jai deja tout di je voudrais faire un lecteur MP &gt;ET&lt; MIDI siouplait ... Deja me demanderez vous le formtat MIDI est peu repandu NON !!moi Lecteur MP3 capable de lire des fichiers sons distants [ par cyclopdev ] Voilà un défi :est-il possible de faire un lecteur MP3 capable de lire des fichiers hébergés sur une page web, le tout pas trop lourd et entièrement m Lecteur Mp3 [ par titeuf28310 ] Bonjour,A chaque lecteur mp3 trouver sur le site, meme les mieux noté, fait planter mon script. je comprend pas pourquoi (mon mirc est le 6.16).Il a t Stream/double utilisation de fichier [ par S333 ] Bonjour amis Mirceurs... hum... Je suis en train de cr&#233;er une radio(j'en ai d&#233;j&#224;&nbsp; fait une en utilisant nhtmln etc.. mais bon c'es Pour ceux qui aiment écouter la musique en tchattant [ par Bestdoud ] Cela fait quelque temps que je réalise un lecteur mp3 en picwin. venez le découvrir à l'adresse suivante: http://amigagaamp.free.fr voici ces caract probleme de Sclick [ par Erwanou ] dialog skin {&nbsp; title "Skins"&nbsp; icon Icones\Consctructions\Full Folder.ico, 0&nbsp; size -1 -1 115 81&nbsp; option pixels&nbsp; radio "Dragon Socket [ par Dabouille ] Bonjour,quand jessaye de me connecter, j'obtient ceciHTTP/1.1 403 ForbiddenDate: Fri, 03 Feb 2006 21:25:14 GMTServer: Apache/2.0.52 (Red Hat) DAV/2 mo Site internet + chan IRC #comedie ( server voilà/wanadoo ) [ par Anatolei ] Je vous signale l'ouverture du site internet http://sunsation.ifrance.com/&nbsp;site officiel du chan IRC #comedie&nbsp;sur le&nbsp;server voil&#224;/ Passer une playlist d'une radio sur iRC [ par koskos ] Bonjour, Voil&#224;, j'aimerai savoir comment je pourrai faire pour pouvoir passer les playlist de differentes radios sur IRC &#224; l'aide des comma radio-bot [ par frank26 ] bonjour moi jai un channel de radio et je cherche un bot qui peux aficher les titre de ma musique qui joue et la prochane tounne qui va jouer le nombr


Nos sponsors


Appels d'offres

Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,827 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales