[Tuto] Lecteur streaming avec compteur de clic

Apprendre à maîtriser les outils informatiques pour bien diffuser ses sagas mp3.
Répondre ↩
Message
Auteur
Avatar du membre
Kradukman
Créateur
Créateur
Masculin Messages : 1883
Enregistré le : mer. 20 juin 2007, 17:42
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
Localisation : quelque part entre les ombres
Contact :

[Tuto] Lecteur streaming avec compteur de clic

#1 Message par Kradukman » ven. 24 févr. 2012, 01:25

Voir les messages bonnet d ane de cet utilisateur (4)

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 : Tout sélectionner

<!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 : Tout sélectionner

<?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 : Tout sélectionner

[...] 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.
Modifié en dernier par Kradukman le ven. 24 févr. 2012, 10:45, modifié 1 fois.
je sais d'où vient topic tralala...
Image
Apprendre à mixer? Tutos
Baroudeur du mp3

Avatar du membre
Bardyl
Neto-Rédacteur
Neto-Rédacteur
Masculin Messages : 1189
Enregistré le : mer. 05 août 2009, 20:07
A travaillé sur : J'ai une page Netowiki je crois. Vas voir ;-).
Localisation : Mon sac de couchage.
Contact :

Re: [TUTO] Lecteur streaming avec compteur de clic

#2 Message par Bardyl » ven. 24 févr. 2012, 08:36

Voir les messages bonnet d ane de cet utilisateur (8)

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

Avatar du membre
Aquatikelfik
Neto-technicien
Neto-technicien
Masculin Messages : 439
Enregistré le : mar. 11 mars 2008, 08:54
A travaillé sur : le NetoWiki
Localisation : Orléans
Contact :

Re: [Tuto] Lecteur streaming avec compteur de clic

#3 Message par Aquatikelfik » ven. 24 févr. 2012, 10:20

Voir les messages bonnet d ane de cet utilisateur (1)

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 : Tout sélectionner

data="dewplayer.swf?mp3=download.php?file=test.mp3"
fonctionnera, mais pas

Code : Tout sélectionner

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.

Avatar du membre
Kradukman
Créateur
Créateur
Masculin Messages : 1883
Enregistré le : mer. 20 juin 2007, 17:42
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
Localisation : quelque part entre les ombres
Contact :

Re: [Tuto] Lecteur streaming avec compteur de clic

#4 Message par Kradukman » ven. 24 févr. 2012, 10:45

Voir les messages bonnet d ane de cet utilisateur (4)

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

Avatar du membre
Kak Miortvi Pengvin
Netophoniste
Netophoniste
Masculin Messages : 4793
Enregistré le : dim. 21 janv. 2007, 10:31
Contact :

Re: [Tuto] Lecteur streaming avec compteur de clic

#5 Message par Kak Miortvi Pengvin » ven. 24 févr. 2012, 11:01

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.

:}

Avatar du membre
Kradukman
Créateur
Créateur
Masculin Messages : 1883
Enregistré le : mer. 20 juin 2007, 17:42
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
Localisation : quelque part entre les ombres
Contact :

Re: [Tuto] Lecteur streaming avec compteur de clic

#6 Message par Kradukman » ven. 24 févr. 2012, 11:09

Voir les messages bonnet d ane de cet utilisateur (4)

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

Avatar du membre
Kak Miortvi Pengvin
Netophoniste
Netophoniste
Masculin Messages : 4793
Enregistré le : dim. 21 janv. 2007, 10:31
Contact :

Re: [Tuto] Lecteur streaming avec compteur de clic

#7 Message par Kak Miortvi Pengvin » ven. 24 févr. 2012, 11:29

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 : Tout sélectionner

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.

:}

Avatar du membre
Kradukman
Créateur
Créateur
Masculin Messages : 1883
Enregistré le : mer. 20 juin 2007, 17:42
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
Localisation : quelque part entre les ombres
Contact :

Re: [Tuto] Lecteur streaming avec compteur de clic

#8 Message par Kradukman » ven. 24 févr. 2012, 11:38

Voir les messages bonnet d ane de cet utilisateur (4)

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

Avatar du membre
Kak Miortvi Pengvin
Netophoniste
Netophoniste
Masculin Messages : 4793
Enregistré le : dim. 21 janv. 2007, 10:31
Contact :

Re: [Tuto] Lecteur streaming avec compteur de clic

#9 Message par Kak Miortvi Pengvin » ven. 24 févr. 2012, 11:41

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.

:}

Avatar du membre
Kradukman
Créateur
Créateur
Masculin Messages : 1883
Enregistré le : mer. 20 juin 2007, 17:42
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
Localisation : quelque part entre les ombres
Contact :

Re: [Tuto] Lecteur streaming avec compteur de clic

#10 Message par Kradukman » ven. 24 févr. 2012, 11:47

Voir les messages bonnet d ane de cet utilisateur (4)

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

Avatar du membre
Kak Miortvi Pengvin
Netophoniste
Netophoniste
Masculin Messages : 4793
Enregistré le : dim. 21 janv. 2007, 10:31
Contact :

Re: [Tuto] Lecteur streaming avec compteur de clic

#11 Message par Kak Miortvi Pengvin » ven. 24 févr. 2012, 15:55

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 : Tout sélectionner

    $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 : Tout sélectionner

    $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 : Tout sélectionner

    $FILES_DIR = "/test/downloads/";
  • Que vient faire ici la création d'un cookie ? Oo

    Code : Tout sélectionner

    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.

:}

Répondre ↩

Qui est en ligne

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