Netophonix - Le forum

Un petit univers pour les aventures, series, sketch en mp3 libre sur le net. Informez-vous et discutez sur toutes les sagas mp3.
Nous sommes actuellement le Jeu 28 Mars 2024, 13:27
Rechercher dans tout le forum :

Le fuseau horaire est réglé sur UTC+1 heure [Heure d’été]


Publier un nouveau sujet Répondre au sujet  [ 11 messages ] 
Auteur Message
Message Publié : Ven 24 Fév 2012, 01:25  −  Sujet du message : [Tuto] Lecteur streaming avec compteur de clic
Répondre en citant
Créateur
Créateur
Avatar de l’utilisateur
Masculin 32 ans · 1883 posts
Inscription : 20 Juin 07
A travaillé sur :
Créateur:
Tasheman, Code Lyok Ouille, Le Casier, Brol, Gollum et le Provi

Réalisateur: Le Scénariste, La nuit des clés à molettes, Le livreur, diverses fausses bandes annonces

Acteur: Milhanna, 1287
Et oui, c'est possible et c'est vraiment con à faire :D
Ce tuto est une version améliorée de http://forum.alsacreations.com/topic-1-34954-1.html (par msg_dracula)
Merci aussi à Zylann, Bardyl et LSN qui m'ont filé un gros coup de main quand j'essayais d'installer ce système sur mon site.


Introduction :
Le but donc, est d'avoir un compteur de clic sur un lecteur streaming sans avoir à passer par une redirection. L'auditeur peut alors rester sur une seule page et vos compteurs augmente.
De même, si vous postez un lecteur streaming sur Neto ou toute plateforme supportant le dewplayer, vos clics augmenteront.

Je vais ici vous exposer un tuto simple, pas le plus intelligent non plus, qui marche et qui est restreint au dewplayer d'alsa création.

Avant de commencer :
Pour que ce tuto marche, il vous faut juste un serveur gérant php. La version que je vais vous présenter fonctionne avec une base de donnée sql mais vous pouvez très bien l'adapter à un fichier texte.

Bon, maintenant, allez télécharger le dewplayer: http://www.alsacreations.fr/dewplayer.html

msg_Dracula a écrit:
Tout d'abord, concernant l'arborescence de la base de test. J'ai :
/test/player.php qui est la page contenant le lecteur dewplayer.
/test/download.php qui comptabilise le nombre d'écoute
/test/doxnloads/ qui contient les titre en écoute.


HTML

Je reprends ici le code de msg_Dracula vu qu'il est simple et bien foutu:

Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

  <head>

    <meta http-equiv="Content-Type" content="text/html; charset=windows-1250">

    <meta name="generator" content="PSPad editor,  www.pspad.com">

    <title> DEWPLAYERS  </title>

  </head>

  <body>

    <div align="center">

      <h1 class="style1">Lecteur</h1>

      <object type="application/x-shockwave-flash" data="dewplayer.swf?mp3=download.php?file=test.mp3" width="200" height="20">

        <param name="wmode" value="transparent">

        <param name="movie" value="dewplayer.swf?mp3=download.php?file=test.mp3&amp;autostart=0" />

      </object>

    </div>

</body>

</html>


Le code est assez simple. La seule subtilité est dans l'objet: le data du mp3 est remplacé par une page php.

PHP

Code:
<?php

$FILES_DIR = "/test/downloads/";

$MYSQL_USER = "root";             

$MYSQL_PASS = "";         

$MYSQL_HOST = "localhost";       

$MYSQL_DB   = "freemusic";             

$cnt_sql = @mysql_connect($MYSQL_HOST, $MYSQL_USER, $MYSQL_PASS);

@mysql_select_db($MYSQL_DB, $cnt_sql);

if(isset($_GET['file'])) {

   $file = urlencode($_GET['file']);

   if(empty($file)) {

      echo "No File Specified";

      exit;

   }

   if(strpos($file, "..") !== FALSE) {

      echo "HACK ATTEMPT!";

      exit;

   }

   if(strpos($file, "://") !== FALSE) {

      echo "Invalid File";

      exit;

   }

   $cookie = urlencode(str_replace(".", "_", $file)); 

   $query = "SELECT * FROM dl_count WHERE file = '$file'";

   $result = mysql_query($query, $cnt_sql);

   if(!$result) {

      echo mysql_error();

      exit;

   }

   if(mysql_num_rows($result) == 0) {

      //first use of this file

      $query = "INSERT INTO dl_count VALUES('$file', 1)";

      $result = mysql_query($query, $cnt_sql);

           setcookie("dl_" . $cookie, "set", time() + 60*60*24*365);

   } else {

              $query = "UPDATE dl_count SET count = count + 1 WHERE file = '$file'";

              $result = mysql_query($query);

         setcookie("dl_". $cookie, "set", time() + 60*60*24*365);



   }

   header("Location: " . $FILES_DIR . $file);

}

?>


Dans l'ordre:
-Connection à la bdd
-Vérification des données
-Création d'une url
-Update de la table
-Redirection grâce à Header

Alors où est le soucis?
Le soucis, c'est que vous êtes limité à un seul paramètre dans l'url du dewplayer.
Il vous est impossible d'écrire:
Code:
[...] data="dewplayer.swf?mp3=download.php?type=DL&amp;id=03


Donc si vous voulez distinguer le streaming du download, comme vous n'avez droit qu'à un paramètre, il faudra utiliser des substring genre "DL01" où DL est le type et 01 l'ID.

Pour ma part, j'utilise deux fichiers php (un pour le DL et un pour le streaming).

Voilà, je pense que tout est dit.

Encore un grand merci à msg_dracula.

je sais d'où vient topic tralala...
Image
Apprendre à mixer? Tutos
Baroudeur du mp3


Dernière édition par Kradukman le Ven 24 Fév 2012, 10:45, édité 1 fois.

Haut
 Profil  
 
Message Publié : Ven 24 Fév 2012, 08:36  −  Sujet du message : Re: [TUTO] Lecteur streaming avec compteur de clic
Répondre en citant
Neto-Rédacteur
Neto-Rédacteur
Avatar de l’utilisateur
Masculin 29 ans · 1188 posts
Inscription : 5 Août 09
A travaillé sur :
J'ai une page Netowiki je crois. Vas voir ;-).
Ha ben tiens, tu t'es [strike]enfin[/strike] décodé à le faire ce tuto :D

Bien expliqué en tout cas, ça devrait servir à pas mal de personnes qui touchent un peu à leur code :)


Haut
 Profil  
 
Message Publié : Ven 24 Fév 2012, 10:20  −  Sujet du message : Re: [Tuto] Lecteur streaming avec compteur de clic
Répondre en citant
Neto-technicien
Neto-technicien
Avatar de l’utilisateur
Masculin 34 ans · 439 posts
Inscription : 11 Mars 08
A travaillé sur :
le NetoWiki
Est-ce qu'il ne faudrait pas faire attention à feinter correctement le dewplayer en ayant bien un paramètre qui fini en .mp3 ?

C'est à dire que
Code:
data="dewplayer.swf?mp3=download.php?file=test.mp3"
fonctionnera, mais pas
Code:
data="dewplayer.swf?mp3=download.php?file=DL03
.

Ou est-ce que le Location final du script va savoir dire au dewplayer que c'est bien du mp3 ?

Il se peut que je me trompe, je n'ai pas présentement le moyen de tester, mais ça m'intrigue.

Avatar par yamiyonofen sur DeviantArt.


Haut
 Profil  
 
Message Publié : Ven 24 Fév 2012, 10:45  −  Sujet du message : Re: [Tuto] Lecteur streaming avec compteur de clic
Répondre en citant
Créateur
Créateur
Avatar de l’utilisateur
Masculin 32 ans · 1883 posts
Inscription : 20 Juin 07
A travaillé sur :
Créateur:
Tasheman, Code Lyok Ouille, Le Casier, Brol, Gollum et le Provi

Réalisateur: Le Scénariste, La nuit des clés à molettes, Le livreur, diverses fausses bandes annonces

Acteur: Milhanna, 1287
Non, ça n'est pas nécessaire.
Par exemple, mon url de streaming (pour le teaser de LNDCAM) :
http://kradukmanprod.redline-prod.com/p ... .php?id=64 marche (tu peux tester ici ou sur mon site, tu clic puis reload la page et tu verras que le compteur aura augmenté).

(hitcounter.php étant le lien pour le DL).

Comme je l'ai dit, le seul soucis (sur lequel Zylann et moi avons perdu une heure), c'est qu'on est limité à un seul paramètre.
Le code n'est actuellement pas plus précis car je ne sais pas utiliser les substring (je n'ai pas trop cherché non plus mais ça a l'air relativement simple).
Enfin, le fait d'utiliser 2 pages, c'est aussi à cause des générations automatique et tout, vu que je bosse avec un moteur de template (ça me rajouterait une conditions).

je sais d'où vient topic tralala...
Image
Apprendre à mixer? Tutos
Baroudeur du mp3


Haut
 Profil  
 
Message Publié : Ven 24 Fév 2012, 11:01  −  Sujet du message : Re: [Tuto] Lecteur streaming avec compteur de clic
Répondre en citant
Netophoniste
Netophoniste
Avatar de l’utilisateur
Masculin4792 posts
Inscription : 21 Janvier 07
Remarque peut être idiote mais pour multiplier les conditions pourquoi ne pas utiliser de l'url rewriting ? Ca permettrait d'utiliser une url terminant bien par .mp3, sans condition apparente et pour l'internaute final de gagner une url simple et claire.

→ Carton poussiéreux.

:}


Haut
 Profil  
 
Message Publié : Ven 24 Fév 2012, 11:09  −  Sujet du message : Re: [Tuto] Lecteur streaming avec compteur de clic
Répondre en citant
Créateur
Créateur
Avatar de l’utilisateur
Masculin 32 ans · 1883 posts
Inscription : 20 Juin 07
A travaillé sur :
Créateur:
Tasheman, Code Lyok Ouille, Le Casier, Brol, Gollum et le Provi

Réalisateur: Le Scénariste, La nuit des clés à molettes, Le livreur, diverses fausses bandes annonces

Acteur: Milhanna, 1287
C'est pas bête. Mais il faut quand même envoyer une première URL à un seul paramètre qui doit contenir l'id.
Donc on aurait soit deux lien
urlStream.php?id=01
et
urlDL.php?id=01

soit un seul lien avec un param illisible à décoder dans le deuxième header
url.php?id=DL01LNDCAM (pour avoir la saga en plus :D)

Je ne sais pas si c'est tellement mieux.
Puis au niveau temps d'exécution, c'est peut-être plus intéressant d'utiliser une page simple pour le stream (qui vérifie juste la présence d'un id, pas de hack puis incrémente direct (et on n'est pas obligé de passer par urlencode, on peut juste mettre le header avec une concaténation pour l'ID récupéré par $_GET['id']) plutôt que passer par 2 pages pour refaire la même chose).

je sais d'où vient topic tralala...
Image
Apprendre à mixer? Tutos
Baroudeur du mp3


Haut
 Profil  
 
Message Publié : Ven 24 Fév 2012, 11:29  −  Sujet du message : Re: [Tuto] Lecteur streaming avec compteur de clic
Répondre en citant
Netophoniste
Netophoniste
Avatar de l’utilisateur
Masculin4792 posts
Inscription : 21 Janvier 07
Non, je pense que tu passes à côté de mon idée. Plutôt que de donner au dewplayer ce genre d'url compliquée, tu pourrais par exemple te servir de http://www.monsite.com/stream/id-monfichier.mp3 Et pour le téléchargement, tu pourrais utiliser http://www.monsite.com/download/id-monfichier.mp3 Et dans ton .htaccess, tu filtrerais (de tête, je n'ai pas pratiqué depuis un moment et n'ai pas mes exemples sous la main) comme ça :
Code:
RewriteRule ^http://www.monsite.com/([a-z])/([1-9])-[a-zA-Z1-9_-]\.mp3$   moncompteur.php?type=$1&id=$2   [L]

Mais voilà, j'avoue que ça ajoute un certain niveau de complexité pour le débutant et que cela nécessite d'avoir le mod_rewrite d'activé (et accès à son .htaccess mais l'un va avec l'autre je suppose).

→ Carton poussiéreux.

:}


Haut
 Profil  
 
Message Publié : Ven 24 Fév 2012, 11:38  −  Sujet du message : Re: [Tuto] Lecteur streaming avec compteur de clic
Répondre en citant
Créateur
Créateur
Avatar de l’utilisateur
Masculin 32 ans · 1883 posts
Inscription : 20 Juin 07
A travaillé sur :
Créateur:
Tasheman, Code Lyok Ouille, Le Casier, Brol, Gollum et le Provi

Réalisateur: Le Scénariste, La nuit des clés à molettes, Le livreur, diverses fausses bandes annonces

Acteur: Milhanna, 1287
J'ai relu ton message précédent.
Pourquoi vouloir une url simple et clair pour l'internaute? Parce qu'il ne la voit pas de toute façon (vu qu'elle est dans un dewplayer) ?

je sais d'où vient topic tralala...
Image
Apprendre à mixer? Tutos
Baroudeur du mp3


Haut
 Profil  
 
Message Publié : Ven 24 Fév 2012, 11:41  −  Sujet du message : Re: [Tuto] Lecteur streaming avec compteur de clic
Répondre en citant
Netophoniste
Netophoniste
Avatar de l’utilisateur
Masculin4792 posts
Inscription : 21 Janvier 07
Parce que des gens vont citer ton message (par exemple sur Netophonix avec la balise [mp3]) ? Parce que beaucoup savent comment trouver le lien depuis la source de la page ? Parce que ça colle à l'url "classique" attendue par le dewplayer ? Parce que ça peut être plus simple pour toi une fois mis en place ? Parce que c'est plus élégant ? :D

→ Carton poussiéreux.

:}


Haut
 Profil  
 
Message Publié : Ven 24 Fév 2012, 11:47  −  Sujet du message : Re: [Tuto] Lecteur streaming avec compteur de clic
Répondre en citant
Créateur
Créateur
Avatar de l’utilisateur
Masculin 32 ans · 1883 posts
Inscription : 20 Juin 07
A travaillé sur :
Créateur:
Tasheman, Code Lyok Ouille, Le Casier, Brol, Gollum et le Provi

Réalisateur: Le Scénariste, La nuit des clés à molettes, Le livreur, diverses fausses bandes annonces

Acteur: Milhanna, 1287
Hum... Rude.
Dans ce cas, ils rediffuseront l'url du DL (c'est un peu pourri là).
Et même avec ton url, il faudrait que t'écrives en plus l'url monsite.com/streaming/machin en précisant à l'internaute que c'est celui-la qu'il faut utiliser pour rediffuser et pas l'autre pour le DL, etc... Ça risque peut-être de surcharger la page.

Les 2 derniers arguments sont bons, effectivement :).

je sais d'où vient topic tralala...
Image
Apprendre à mixer? Tutos
Baroudeur du mp3


Haut
 Profil  
 
Message Publié : Ven 24 Fév 2012, 15:55  −  Sujet du message : Re: [Tuto] Lecteur streaming avec compteur de clic
Répondre en citant
Netophoniste
Netophoniste
Avatar de l’utilisateur
Masculin4792 posts
Inscription : 21 Janvier 07
Pourquoi lui préciser ? Les gens qui iront chercher dans la source et rediffuseront représenteront sans doute une part minime et à mon avis acceptable de tes stats. Au pire, avec une bonne présentation de l'info sur ton site, tu peux tout présenter comme il faut sans surcharger. Mais tu as le même souci avec ton système actuel puisque tu as tout de même deux url différentes pour séparer streaming et téléchargement.
Après, à ce niveau de détail là, c'est être vraiment tatillon et il n'y a pas de "bonne" réponse.

Edition : Je viens de relire d'un œil attentif le script PHP et selon moi, nous sommes bien loin d'un tuto (d'ailleurs en l'état, je vais migrer le topic vers les astuces). Quelques remarques donc.
  • Tu ne précises pas la structure de ta table qui sert à garder les comptes. Or les deux lignes suivantes exigent un nommage précis.
    Code:
    $query = "SELECT * FROM dl_count WHERE file = '$file'";
    $query = "UPDATE dl_count SET count = count + 1 WHERE file = '$file'";
  • Toujours dans le domaine de la base de données, la ligne suivante implique que les valeurs de la colonne file doivent être formatées précisément. Et entre nous, je trouve ça moche.
    Code:
    $file = urlencode($_GET['file']);
  • Accessoirement, il aurait été bon de donner une petite précision sur la façon dont est gérée l'arborescence des fichiers.
    Code:
    $FILES_DIR = "/test/downloads/";
  • Que vient faire ici la création d'un cookie ? Oo
    Code:
    setcookie("dl_". $cookie, "set", time() + 60*60*24*365);
Bref, c'est très (trop) léger à mon avis pour un tutoriel.

→ Carton poussiéreux.

:}


Haut
 Profil  
 
Afficher les messages publiés depuis:  Trier par  
Publier un nouveau sujet Répondre au sujet  [ 11 messages ] 

Le fuseau horaire est réglé sur UTC+1 heure [Heure d’été]


Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 1 invité


Vous ne pouvez pas publier de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas transférer de pièces jointes dans ce forum

Rechercher :
Atteindre:  


Powered by phpBB © 2000-2007 phpBB Group
Traduction française officielle © Maël Soucaze
[ Time : 0.168s | 18 Queries | GZIP : Off ]