uaip
Messages postés1466Date d'inscriptionmardi 20 février 2007StatutMembreDernière intervention 7 février 2011 18 nov. 2011 à 16:48
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.
cod57
Messages postés1653Date d'inscriptiondimanche 7 septembre 2008StatutMembreDernière intervention11 septembre 201319 18 nov. 2011 à 15:03
uaip
Messages postés1466Date d'inscriptionmardi 20 février 2007StatutMembreDernière intervention 7 février 2011 16 nov. 2011 à 22:59
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)
cs_kgb93
Messages postés1Date d'inscriptionmercredi 29 août 2007StatutMembreDernière intervention16 novembre 2011 16 nov. 2011 à 21:57
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.
uaip
Messages postés1466Date d'inscriptionmardi 20 février 2007StatutMembreDernière intervention 7 février 2011 16 nov. 2011 à 20:37
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
cod57
Messages postés1653Date d'inscriptiondimanche 7 septembre 2008StatutMembreDernière intervention11 septembre 201319 16 nov. 2011 à 11:15
18 nov. 2011 à 16:48
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.
18 nov. 2011 à 15:03
<?php
echo '';
var_dump(get_meta_tags('http://www.youtube.com/watch?v=DLZpJqi3M0k'));
echo '
';
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 '';
var_dump(meta('http://www.youtube.com/watch?v=DLZpJqi3M0k'));
echo '
';
?>
18 nov. 2011 à 14:57
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
++
18 nov. 2011 à 12:03
http://php.net/manual/en/function.get-meta-tags.php
"Note:
Seules les balises méta avec un attribut name seront parsées. "
18 nov. 2011 à 09:49
@camillagaiaschicherie
$content = file_get_contents($url);
il y a http://php.net/manual/en/function.get-meta-tags.php
++
18 nov. 2011 à 03:59
18 nov. 2011 à 02:37
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 ...
16 nov. 2011 à 22:59
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)
16 nov. 2011 à 21:57
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.
16 nov. 2011 à 20:37
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
16 nov. 2011 à 11:15
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 ici
++