begin process at 2012 05 27 21:23:46
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Astuces

 > FORMATER UN LIEN YOUTUBE, DAILYMOTION OU VIMEO POUR L'UTILISER DANS SHADOWBOX

FORMATER UN LIEN YOUTUBE, DAILYMOTION OU VIMEO POUR L'UTILISER DANS SHADOWBOX


 Information sur la source

 Description

Ce code permet de formater l'adresse d'une vidéo de la barre d'adresse du navigateur afin de pouvoir l'utiliser dans ShadowBox.
On appelle la fonction format_url_vdo avec, en paramètre, l'url de la vidéo copié de la barre d'adresse du navigateur.
On récupère l'url formaté que l'on pourra utilisé dans ShadowBox.

La seconde fonction formate le lien à mettre sur la page web afin d'avoir la miniature qui fera "pop" la shadowBox. On passe en paramètre l'url formaté par la première fonction, un titre, le nom de la classe et/ou de l'id pour se permettre plus de souplesse dans les feuilles de style.


Source

  • ===== Formatage du lien =====
  • function format_url_vdo($url) {
  • //initialisation des variables
  • $host = '';
  • $id = '';
  • $parse = '';
  • $parse2 = '';
  • $formated_url = '';
  • //On détermine où est hebergée la vidéo (youtube, dailymotion, vimeo) et on extrait les données nécessaires au formatage du lien shadowbox
  • $parse = parse_url($url);
  • switch ($parse['host']) {
  • case 'youtu.be':
  • $host = 'youtube';
  • $id = substr($parse['path'], 1);
  • break;
  • case 'www.youtube.com':
  • $host = 'youtube';
  • $parse2 = parse_str($parse['query'], $data);
  • $id = $data['v'];
  • break;
  • case 'vimeo.com':
  • $host = 'vimeo';
  • $id = substr($parse['path'], 1);
  • break;
  • case 'www.dailymotion.com':
  • $host = 'dailymotion';
  • $id = substr($parse['path'], 7);
  • break;
  • default:
  • break;
  • }
  • //On formate le lien selon l'hébergeur
  • switch ($host) {
  • case 'youtube':
  • $formated_url = 'http://www.youtube.com/v/' . $id . ';hl=en&fs=1&rel=0&autoplay=1';
  • break;
  • case 'vimeo':
  • $formated_url = 'http://player.vimeo.com/video/' . $id . '?title=0&byline=0&portrait=0';
  • break;
  • case 'dailymotion':
  • $formated_url = 'http://www.dailymotion.com/swf/' . $id;
  • break;
  • default:
  • break;
  • }
  • return $formated_url;
  • }
  • ===== Lien ShadowBox =====
  • function lnkShadowbox($url, $title, $nompic, $class, $id) {
  • if (strlen($class) > 0) {
  • $class = ' class="' . $class . '" ';
  • }
  • if (strlen($id) > 0) {
  • $id = ' id="' . $id . '" ';
  • }
  • $link = '<a ' . $class . $id . 'rel="shadowbox" title="' . $title . '" href="' . $url . '">';
  • $link .= '<img src="../storage/pics/' . $nompic . '" alt="' . $nompic . '" style="max-width: 66px; max-height: 61px;" />';
  • $link .= '</a>';
  • return $link;
  • }
===== Formatage du lien =====

function format_url_vdo($url) {
    //initialisation des variables
    $host = '';
    $id = '';
    $parse = '';
    $parse2 = '';
    $formated_url = '';

    //On détermine où est hebergée la vidéo (youtube, dailymotion, vimeo) et on extrait les données nécessaires au formatage du lien shadowbox
    $parse = parse_url($url);

    switch ($parse['host']) {
        case 'youtu.be':
            $host = 'youtube';
            $id = substr($parse['path'], 1);
            break;
        case 'www.youtube.com':
            $host = 'youtube';
            $parse2 = parse_str($parse['query'], $data);
            $id = $data['v'];
            break;
        case 'vimeo.com':
            $host = 'vimeo';
            $id = substr($parse['path'], 1);
            break;
        case 'www.dailymotion.com':
            $host = 'dailymotion';
            $id = substr($parse['path'], 7);
            break;

        default:
            break;
    }

    //On formate le lien selon l'hébergeur
    switch ($host) {
        case 'youtube':
            $formated_url = 'http://www.youtube.com/v/' . $id . ';hl=en&amp;fs=1&amp;rel=0&amp;autoplay=1';

            break;
        case 'vimeo':
            $formated_url = 'http://player.vimeo.com/video/' . $id . '?title=0&amp;byline=0&amp;portrait=0';

            break;
        case 'dailymotion':
            $formated_url = 'http://www.dailymotion.com/swf/' . $id;

            break;

        default:
            break;
    }

    return $formated_url;
}

===== Lien ShadowBox =====

function lnkShadowbox($url, $title, $nompic, $class, $id) {
    if (strlen($class) > 0) {
        $class = ' class="' . $class . '" ';
    }
    if (strlen($id) > 0) {
        $id = ' id="' . $id . '" ';
    }
    $link = '<a ' . $class . $id . 'rel="shadowbox" title="' . $title . '" href="' . $url . '">';
    $link .= '<img src="../storage/pics/' . $nompic . '" alt="' . $nompic . '" style="max-width: 66px; max-height: 61px;" />';
    $link .= '</a>';

    return $link;
}



 Sources de la même categorie

AFFICHÉ SUR UN TABLEAU AVEC PAGINATION ET BASE DE DONNÉES par stormxp
Source avec Zip Source avec une capture GENERATEUR D'ONGLET DE NAVIGATION PHP par pos123
Source avec Zip Source avec une capture PAGINATION + FICHIER CSS par profdi
Source avec Zip Source avec une capture SYSTEME D'AUTHENTIFICATION PHP AVEC PROTÉCTION KEYLOGGER par mtrix000
Source avec Zip Source avec une capture GENERATEUR DE BOUTONS DE PARTAGES POUR RESEAUX SOCIAUX par cod57

 Sources en rapport avec celle ci

RÉCUPÉRER LES MINIATURES D'UNE VIDÉO YOUTUBE par tefa24600
Source avec Zip Source avec une capture WEB MESSENGER par EvildarkEurope
Source avec Zip TÉLÉCHARGER LES VIDEOS DE YOUTUBE AVEC PERMALIEN DEPUIS YOUT... par amteur
Source avec Zip PROXY HTTP : SAUVEZ VOS VIDEOS PREFEREES. par coucou747
Source avec Zip Source avec une capture PCR POSTIT par petitchevalroux

Commentaires et avis

Commentaire de cod57 le 16/11/2011 11:15:59

bonjour

un petit exemple c'est pas du luxe

echo $l=format_url_vdo('http://www.youtube.com/watch?v=1fPmA1hzs3k');
echo lnkShadowbox($l,'toto','http://i2.ytimg.com/vi/yj5UbsHT7Ws/default.jpg','',456987);

ça serait bien si on pouvait récupérer la vignette à la volée en v2 ... et mettre le titre entre <a> ici </a>


++

Commentaire de uaip le 16/11/2011 20:37:16

Salut,
Je trouve ça très mauvais comme source. Non pas que je critique la qualité du code, mais la compréhension du concept.
C'est une bidouille tout à fait foireuse. Si tu veux la jouer à la Facebook en intégrant les médias via leur liens (j'ai bien compris ?), ce ne sont pas les url qu'il faut bidouiller mais les balises meta.
En parsant les balises meta, tu obtiens toutes les infos, y compris la vignette que tu désires.
De plus, ça permet de ne pas limiter à 3 sites, mais à la totalité du web (en admettant que les sites respectent les normes).
J'avais codé une fonction comme ça, "universelle", c'est pas si simple.
Regarde un exemple du rendu : http://winky.fr/!dev_linter-http%3A%252F%252Fwww.youtube.com%252Fwatch%3Fv%3DPgEi9b1EctU
(attention, youtube fait chier parfois (même sur facebook), faut recharger si le lien n'est pas pris en compte)

Bonne continuation

Commentaire de kgb93 le 16/11/2011 21:57:07

Merci coo57, il est vrai que j'aurais dû mettre un exemple pour montrer le champ d'application de mon code. Quant au fait de récupérer la vignette à la volée, j'ai déjà vu des sources ici. De plus, lorsque j'ai codé ces deux fonctions, c'était dans le cadre d'un projet où l'utilisateur voulait choisir sa vignette et non pas la vignette par défaut de ces sites qui ne reflète pas toujours le contenu de la vidéo.

UAIP, dans ta critique (constructive et que je prends bien), je vais commencer par prendre le compliment quant à la qualité du code. Merci ^^.
Sinon, il est vrai qu'il y a plusieurs façon de faire, notamment en parsant mais je vais argumenter pourquoi ce code et pourquoi 3 sites de vidéo.
Pourquoi ce code? Comme je l'ai dit, c'est un code pour un projet précis. L'utilisateur, dans son back-office n'aura simplement qu'à copier/coller l'adresse de la vidéo. Cela vise donc un public large et parfois peu averti.
Pourquoi ces 3 sites? Comme je l'ai mis dans le titre, c'est uniquement pour shadowbox qui, sur tous les hébergeurs de vidéo, ne propose que ces 3 là (du moins dans leur doc et leur présentation sur le site).

C'est la première fois que je poste un code sur le site et je me pose maintenant la question :  Faut il attendre de faire un code ultra généraliste pour en mettre un ou peut-on mettre un code qui ne conviendra que dans des cas bien précis (sans pour autant que ce soit pour usage unique)? Moi même j'ai des arguments en faveur et en défaveur. J'aurais peut être dû le poster sur le forum de ShadowBox me direz vous ^^
Mais je ferais plus attention pour le(s) prochain(s) code(s) que je posterai.

Merci.

Commentaire de uaip le 16/11/2011 22:59:17

Etant donné ta présentation, je pensais que tu voulais poster un code généraliste, et non pas un code issu d'un projet perso. Si tel est le cas, je ne peux pas t'en vouloir ^^
Je n'ai pas dit que cette source n'avait pas sa place ici, au contraire. Et je pensais que shadowbox était un plugin jQuery (comme lightbox & co) pour simplement afficher un média en grisant l'écran, sans savoir qu'il n'acceptait que ces 3 sites.
Par contre je rectifie ton commentaire : le parsing des balises meta fonctionne aussi en filant simplement le lien du média (cf Facebook dont 90% sont des néophytes en matière d'informatique).
Ne te pose pas de question et continue de poster, c'est un exemple de code tout à fait utile. J'avais simplement mal compris l'initiative.
Par contre, même si le code est issu d'un projet perso, pense à la rendre généraliste (en supprimant par exemple "../storage/pics/" qui n'est valide que pour toi).
Enfin, le code fonctionne-t-il pour les liens youtube du genre http://www.youtube.com/user/Julielovesmac07#p/a/2E772BA2A73FD4AA/1/N3M5lG6QJK0 ? (lien pris au hasard sur google)

Commentaire de camillagaiaschicherie le 18/11/2011 02:37:10

bonjour

une autre methode compatible avec beaucoup de ce genre de site :

$url = 'http://www.youtube.com/watch?v=DLZpJqi3M0k';
$url = 'http://www.dailymotion.com/video/x2lv3k_vincent-tim-burton-vostfr_creation';
$url = 'http://www.metacafe.com/watch/1085944/tim_burtons_vincent_featuring_edgar_alan_poes_the_raven/';
$url = 'http://vimeo.com/1771867';

$content = file_get_contents($url);

$pattern['title'] = '/<meta property="og:title" content="(.+?)"/smi';
$pattern['description'] = '/<meta property="og:description" content="(.+?)"/smi';
$pattern['video'] = '/<meta property="og:video" content="(.+?)"/smi';
$pattern['videoWidth'] = '/<meta property="og:video:width" content="(.+?)"/smi';
$pattern['videoHeight'] = '/<meta property="og:video:height" content="(.+?)"/smi';
$pattern['image'] = '/<meta property="og:image" content="(.+?)"/smi';
$pattern['site_name'] = '/<meta property="og:site_name" content="(.+?)"/smi';

$title = (preg_match($pattern['title'],$content,$match)) ? $match[1] : '';
$description = (preg_match($pattern['description'],$content,$match)) ? $match[1] : '';
$video = (preg_match($pattern['video'],$content,$match)) ? $match[1] : '';
$videoWidth = (preg_match($pattern['videoWidth'],$content,$match)) ? $match[1] : '';
$videoHeight = (preg_match($pattern['videoHeight'],$content,$match)) ? $match[1] : '';
$image = (preg_match($pattern['image'],$content,$match)) ? $match[1] : '';
$site_name = (preg_match($pattern['site_name'],$content,$match)) ? $match[1] : '';

apres la partie html ... voila quoi ...

Commentaire de uaip le 18/11/2011 03:59:56

1 seule regex suffit, donc 7fois plus rapide

Commentaire de cod57 le 18/11/2011 09:49:45

bonjour

@camillagaiaschicherie
$content = file_get_contents($url);
il y a http://php.net/manual/en/function.get-meta-tags.php

++

Commentaire de camillagaiaschicherie le 18/11/2011 12:03:50

COD57

http://php.net/manual/en/function.get-meta-tags.php

"Note:

Seules les balises méta avec un attribut name seront parsées. "

Commentaire de cod57 le 18/11/2011 14:57:03

@camillagaiaschicherie

oui tu as raison ma méthode est pas bonne
on ne récupère pas tout avec get-meta-tags
$content = file_get_contents($url); c'est mieux

++

Commentaire de cod57 le 18/11/2011 15:03:48

ex

<?php
echo '<pre>';
var_dump(get_meta_tags('http://www.youtube.com/watch?v=DLZpJqi3M0k'));
echo '</pre>';


function meta($url){

$content = file_get_contents($url);

$pattern['title'] = '/<meta property="og:title" content="(.+?)"/smi';
$pattern['description'] = '/<meta property="og:description" content="(.+?)"/smi';
$pattern['video'] = '/<meta property="og:video" content="(.+?)"/smi';
$pattern['videoWidth'] = '/<meta property="og:video:width" content="(.+?)"/smi';
$pattern['videoHeight'] = '/<meta property="og:video:height" content="(.+?)"/smi';
$pattern['image'] = '/<meta property="og:image" content="(.+?)"/smi';
$pattern['site_name'] = '/<meta property="og:site_name" content="(.+?)"/smi';

$title = (preg_match($pattern['title'],$content,$match)) ? $match[1] : '';
$description = (preg_match($pattern['description'],$content,$match)) ? $match[1] : '';
$video = (preg_match($pattern['video'],$content,$match)) ? $match[1] : '';
$videoWidth = (preg_match($pattern['videoWidth'],$content,$match)) ? $match[1] : '';
$videoHeight = (preg_match($pattern['videoHeight'],$content,$match)) ? $match[1] : '';
$image = (preg_match($pattern['image'],$content,$match)) ? $match[1] : '';
$site_name = (preg_match($pattern['site_name'],$content,$match)) ? $match[1] : '';

return(array($title,$description,$video,$videoWidth,$videoHeight,$image,$site_name));

}

echo '<pre>';
var_dump(meta('http://www.youtube.com/watch?v=DLZpJqi3M0k'));
echo '</pre>';


?>

Commentaire de uaip le 18/11/2011 16:48:04

cod57, 7 regexp pour parser un lien, c'est BEAUCOUP trop lourd. 1 regexp suffit (tu as des centaines de tutos là dessus).

Imagine un mec qui écrit 10 liens = 10 appels à la fonction = 70 regexp (en sachant qu'une regexp est recompilée à chaque fois), c'est bien trop gourmand.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Formualire saisie d'URL vidéo : comment faire ? [ par aloisio11 ] Bonjour à tous,Je développe un site en PHP/MySQL sur lequel j'ai un formulaire dans lequel le visiteur pourra saisir un lien vers une vidéo (Youtube, Parse error: syntax error, unexpected T_OBJECT_OPERATOR in /home/sites/.../public_html/demo/web/youtube.php on line 32 [ par khalidovs ] j'ai un problème j'ai installer un script php, mais ça ne marche pas, un message d'erreur s'affiche : Parse error: syntax error, unexpected T_OBJECT_ Formulaire pour ajouter des vidéos YouTube [ par abdellah1505 ] Bonjour, J'aimerai créer une page qui permet aux membres d'ajouter des vidéos hébergé sur Youtube, alors pour ça j'ai pensé a faire un formulaire avec feed atom youtube et attributs [ par bj33 ] salutles feeds atom, jamais je ne m'y serait intéréssé sans l'essai d'accès avec php à mes playlistes youtube, donc, je n'y connais rien ou peu.je ne Script youtube download [ par mulx ] Bonjour, j'essaie actuellement de tester un script de téléchargement youtube trouvé sur ce site et je n'arrive qu'a le faire marcher en local ? Lorsqu partage de liens Youtube/DM/Viméo... [ par deathsign ] Salut, J'aimerai savoir si quelqu'un pourrait m'aiguiller sur la création d'une partie de formulaire avec laquelle je pourrais poster des liens "embe Cree une playliste pour films youtube sur mon site. [ par philhelper ] Bonjours à tous! Je suis à la recherche d'une truc qui va pouvoir crée des playlist pour mes membres. Tout mon site es en base de donnés (SQL) Tou Récupérer le lien absolu d'une vidéo youtube, dailymotion et autres? [ par mat77400 ] Bonjour, j'essaye depuis hier de comprendre comment récupérer un lien absolu vers une vidéo flash (flv, mp4...) lorsqu'on la visionne avec des balises video youtube sur mon site mais juste par le lien [ par vegetalain ] Salut, j'espère être dans la bonne catégorie... bon alors voilà, j'aimerais faire en php une sorte de mini gallerie video, genre on clique sur une min probleme ecriture fichier TXT avec ce qu'on récupére comme code integrer de youtube [ par fredflash9999 ] Bonjour a tous j'essaye d'entrer dans un fichier texte via un formulaire ce qu'on peut récupérer sur youtube Exemple :</par


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
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,655 sec (3)

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