source: spip-zone/_plugins_/plugins_seenthis/autoembed/autoembed.php @ 79085

Last change on this file since 79085 was 79085, checked in by fil@…, 6 years ago

en fait, juste une image, ca suffit pour les prezi

File size: 5.9 KB
RevLine 
[50766]1<?php
2
3
4function embed_url($url) {
5        $max_w = 440;
6        $max_i = 300;
7
[51864]8        $url = str_replace("/#/", "/", $url);
9        $url = str_replace("/#!/", "/", $url);
[50766]10
[51864]11
[50766]12        $p = parse_url($url);
13        $host = $p["host"];
14        $host = preg_replace(",^www\.,", "", $host);
15        $host = str_replace(".", "-", $host);
16
17        $fichier = md5($url).".php";
18        $dossier = substr(md5($url), 0, 3);
[68974]19
[50766]20        // Si l'embed a deja été sauvegardé
[59079]21        if (file_exists(_DIR_CACHE."$host/$dossier/$fichier")) {
22                $html = implode("", file(_DIR_CACHE."$host/$dossier/$fichier"));
23                if (strlen($html) > 0) return $html;
[50766]24        } else { // Si pas sauvegardé
25                // Gérer les images Flickr à part
26                // car autoembed ne gère que les vidéos de Flickr
[71139]27                // sets
[71140]28                if (preg_match(",^https?\://(www\.)?flickr\.com/+photos/+[^/]*/+sets/[^/]+,i", $url, $r)) {
29                        if ($page = @join("",file($r[0]))) {
[71139]30                                if (preg_match(',<meta property="og:image" content="(.*)" />,', $page, $i1)) {
31                                        $img = $i1[1];
32                                        $code_ae = "<div class='oembed-container oembed-img'><a href='$url'><img src='$img' alt='Flickr' style='max-width: ".$max_w."px; max-height: ".$max_i."px;'/></a></div>";
33                                }
34                        }
35                }
36                if (preg_match("/^https?\:\/\/(www\.)?flickr\.com/i", $url)) {
[50766]37                        $oembed = "http://www.flickr.com/services/oembed/?format=json&url=".$url;
[59117]38                        $json = @join("",file($oembed));
[50766]39                       
[59117]40                        $json = @json_decode($json);
[50766]41                        $img = $json->{'url'};
42                        if ($img) $code_ae = "<div class='oembed-container oembed-img'><a href='$url'><img src='$img' alt='Flickr' style='max-width: ".$max_i."px; max-height: ".$max_i."px;'/></a></div>";     
[50776]43                }
[50790]44                else if (preg_match("/^http\:\/\/(www\.)?pastebin\.com\/(.*)/i", $url, $regs)) {
45                        $val = $regs[2];
[67652]46
47                        $html = "<iframe src='http://pastebin.com/embed_iframe.php?i=".$val."' style='border:none;width:100%;'></iframe>";
48                        //$html = "<script src='http://pastebin.com/embed_js.php?i=".$val."'></script>";
[50790]49                        $code_ae = "<div class='oembed-container oembed-code'>$html</div>";
50                       
51                }
[50818]52                else if (preg_match("/^https?\:\/\/gist\.github\.com\/(.*)/i", $url, $regs)) {
[69512]53                        $html = file_get_contents($url);
54                        $tag = 'pre'; # extraire_balise
55                        if (preg_match(
56                        ",<$tag\b[^>]*(/>|>.*</$tag\b[^>]*>|>),UimsS",
57                        $html, $regs)) {
58                                $pre = $regs[0];
59                                $code_ae = "<div class='oembed-container oembed-code'>$pre</div>";
60                        }
[50818]61                }
[50776]62                else if (preg_match("/^http\:\/\/(www\.)?yfrog\.com/i", $url)) {
63                        $oembed = "http://www.yfrog.com/api/oembed?url?format=json&url=".$url;
64                        $json = join("",file($oembed));
65                        $json = json_decode($json);
66                        $img = $json->{'url'};
67                        if ($img) $code_ae = "<div class='oembed-container oembed-img'><a href='$url'><img src='$img' alt='Flickr' style='max-width: ".$max_i."px; max-height: ".$max_i."px;'/></a></div>";     
68                }
[50766]69                else if (preg_match("/^http\:\/\/(www\.)?soundcloud\.com/i", $url)) {
70                        $oembed = "http://soundcloud.com/oembed/?format=json&url=".$url;
71                        $json = join("",file($oembed));
72                        $json = json_decode($json);
73                        $html = $json->{'html'};
74                        if ($html) $code_ae = "<div class='oembed-container'>$html</div>";     
75                } 
[79085]76                else if (preg_match("/^http\:\/\/(www\.)?prezi\.com\/([^\/]+)\//i", $url, $r)) {
77                        $oembed = "http://prezi.com/api/embed/?id=".$r[2];
78                        $json = join("",file($oembed));
79                        $json = json_decode($json);
80                        $img = $json->{'embed_preview'};
81                        if ($img) $code_ae = "<div class='oembed-container oembed-img'><a href='$url'><img src='$img' /></a><div>".$json->{'presentation'}->{'title'}."</div></div>";   
82                } 
[50766]83                else if (preg_match("/^http\:\/\/(www\.)?slideshare\.net/i", $url)) {
84                        // Le JSON ne se décode pas correction,
85                        // je passe donc en XML
86                        $oembed = "http://www.slideshare.net/api/oembed/2?format=xml&url=".$url."&maxwidth=".$max_w;
87                        $xml = trim(join("",file($oembed)));
88                        if (preg_match(",<html>(.*)</html>,i", $xml, $regs)){
89                                $html = $regs[1];
90                                $html = html_entity_decode($html, ENT_QUOTES, "UTF-8");
[74189]91                                if ($html) $code_ae = "<div class='oembed-container'>$html</div>";
[50766]92                        }
[74189]93                }
[74382]94                else if (preg_match(",^https?://[^\"\'\`\<\>\@\*\$]*?\.mp3$,i", $url)) {
[74189]95
96                        $html = file_get_contents(dirname(__FILE__).'/modeles/mp3.html');
97                        $html = str_replace('{source}', htmlspecialchars($url), $html);
[74382]98                        $url_dewplayer = 'http://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['SCRIPT_NAME']).'/autoembed/modeles/dewplayer.swf';
[74189]99                        $html = str_replace('{dewplayer}', $url_dewplayer, $html);
100                        if ($html) $code_ae = "<div class='oembed-container'>$html</div>";
101                }
[50766]102                else {
[59082]103                        require_once "AutoEmbed.class.php";
[50766]104                        $AE = new AutoEmbed();
105       
[51864]106       
[50766]107                        // load the embed source from a remote url
108                        if (!$AE->parseUrl($url)) {
109                                $code_ae = "";
110                                // No embeddable video found (or supported)
111                        } else {
112                                $AE->setParam('autoplay','false');
113                               
[57991]114                               
[50766]115                                $attributs = $AE->getObjectAttribs();
116                                $w = $attributs["width"];
117                                $h = $attributs["height"];
118                               
[57991]119                                //print_r($attributs);
[50766]120                                if ($w > $max_w) {
121                                        $rapport = $w / $max_w;
122                                       
123                                        $w = round($w / $rapport);
124                                        $h = round($h / $rapport);
125                                       
126                                        $AE->setWidth($w);
127                                        $AE->setHeight($h);
[50887]128                                }       
[50766]129                               
[51714]130
[50887]131                                $embed = $AE->getEmbedCode();
132                                $vignette = $AE->getImageURL();
[51714]133                               
134                                $source = $AE->getStub("title");
135                                                               
136                                if ($source == "YouTube") {
[50887]137                                        $embed = rawurlencode($embed);
138                                        $embed = "<div onclick=\"$(this).html(decodeURIComponent('$embed'));\" style='width: ".$w."px; height: ".$h."px; background: url($vignette) center center; cursor: pointer;'></div>";
[57991]139                                } else if ($source == "Twitpic" OR $source == "500px") {
[51714]140                                        $embed = "<a href='$url'><img src='$vignette' alt='' style='max-width:200px; max-height: 200px;' /></a>";
[50887]141                                }
[70267]142
143                                // inserer une "class=oembed-source-mp3audio"
144                                $src = preg_replace(',[^\w]+,', '', strtolower($source));
145
146                                $code_ae = "<div class='oembed-container oembed-source-$src'>".$embed."</div>";
[50887]147                               
148                               
[50766]149                        }
150                }
151               
[68974]152                if ($code_ae) {
153                        // Créer dossier si nécessaire
154                        if (!is_dir(_DIR_CACHE."$host")) mkdir(_DIR_CACHE."$host");
155                        if (!is_dir(_DIR_CACHE."$host/$dossier")) mkdir(_DIR_CACHE."$host/$dossier");
156               
157                        $f = fopen(_DIR_CACHE."$host/$dossier/$fichier", "w");
[59079]158
[68974]159                        fwrite($f, $code_ae);
160                        fclose($f);
161                }
162
[59079]163                return $code_ae;
[50766]164        }
165}
166
167?>
Note: See TracBrowser for help on using the repository browser.