]> git.mxchange.org Git - friendica.git/commitdiff
Optional parameter for parseurl to only fetch data from meta information
authorMichael Vogel <icarus@dabo.de>
Mon, 2 Dec 2013 19:24:41 +0000 (20:24 +0100)
committerMichael Vogel <icarus@dabo.de>
Mon, 2 Dec 2013 19:24:41 +0000 (20:24 +0100)
include/oembed.php
mod/parse_url.php

index bc127b5c3515f61cd061bcb63f9fa2710dc2f426..d598b41ce31c405275d2d2bf8916c975e713e884 100755 (executable)
@@ -21,21 +21,21 @@ function oembed_fetch_url($embedurl){
 
        $noexts = array("mp3","mp4","ogg","ogv","oga","ogm","webm");
        $ext = pathinfo(strtolower($embedurl),PATHINFO_EXTENSION);
-       
-                               
+
+
        if(is_null($txt)){
                $txt = "";
-               
+
                if (!in_array($ext, $noexts)){
                        // try oembed autodiscovery
                        $redirects = 0;
-                       $html_text = fetch_url($embedurl, false, $redirects, 15, "text/*");
+                       $html_text = fetch_url($embedurl, false, $redirects, 15, "text/*"); /**/
                        if($html_text){
                                $dom = @DOMDocument::loadHTML($html_text);
                                if ($dom){
                                        $xpath = new DOMXPath($dom);
                                        $attr = "oembed";
-                               
+
                                        $xattr = oe_build_xpath("class","oembed");
                                        $entries = $xpath->query("//link[@type='application/json+oembed']");
                                        foreach($entries as $e){
@@ -46,29 +46,29 @@ function oembed_fetch_url($embedurl){
                                }
                        }
                }
-               
+
                if ($txt==false || $txt==""){
                        // try oohembed service
                        $ourl = "http://oohembed.com/oohembed/?url=".urlencode($embedurl).'&maxwidth=' . $a->videowidth;  
                        $txt = fetch_url($ourl);
                }
-               
+
                $txt=trim($txt);
                if ($txt[0]!="{") $txt='{"type":"error"}';
-       
+
                //save in cache
                Cache::set($a->videowidth . $embedurl,$txt);
 
        }
-       
+
        $j = json_decode($txt);
        $j->embedurl = $embedurl;
        return $j;
 }
-       
+
 function oembed_format_object($j){
        $a = get_app();
-    $embedurl = $j->embedurl;
+       $embedurl = $j->embedurl;
        $jhtml = oembed_iframe($j->embedurl,(isset($j->width) ? $j->width : null), (isset($j->height) ? $j->height : null) );
        $ret="<span class='oembed ".$j->type."'>";
        switch ($j->type) {
@@ -78,7 +78,7 @@ function oembed_format_object($j){
                                $th = (isset($j->thumbnail_height) && intval($j->thumbnail_height)) ? $j->thumbnail_height:180;
                                // make sure we don't attempt divide by zero, fallback is a 1:1 ratio
                                $tr = (($th) ? $tw/$th : 1);
-                               
+
                                $th=120; $tw = $th*$tr;
                                $tpl=get_markup_template('oembed_video.tpl');
                                $ret.=replace_macros($tpl, array(
@@ -89,7 +89,7 @@ function oembed_format_object($j){
                                        '$th'=>$th,
                                        '$turl'=>$j->thumbnail_url,
                                ));
-                               
+
                        } else {
                                $ret=$jhtml;
                        }
@@ -99,22 +99,24 @@ function oembed_format_object($j){
                        $ret.= "<img width='".$j->width."' src='".$j->url."'>";
                        //$ret.= "<img width='".$j->width."' height='".$j->height."' src='".$j->url."'>";
                        $ret.="<br>";
-               }; break;  
+               }; break;
                case "link": {
                        //$ret = "<a href='".$embedurl."'>".$j->title."</a>";
-               }; break;  
+               }; break;
                case "rich": {
-                       // not so safe.. 
+                       // not so safe..
                        $ret.= $jhtml;
                }; break;
        }
 
        // add link to source if not present in "rich" type
-       if (  $j->type!='rich' || !strpos($j->html,$embedurl) ){
+       if ($j->type!='rich' || !strpos($j->html,$embedurl) ){
+               if (isset($j->provider_name)) $ret .= $j->provider_name.": ";
                $embedlink = (isset($j->title))?$j->title:$embedurl;
                $ret .= "<a href='$embedurl' rel='oembed'>$embedlink</a>";
-               if (isset($j->author_name)) $ret.=" by ".$j->author_name;
-               if (isset($j->provider_name)) $ret.=" on ".$j->provider_name;
+               if (isset($j->author_name)) $ret.=" (".$j->author_name.")";
+               //if (isset($j->author_name)) $ret.=" by ".$j->author_name;
+               //if (isset($j->provider_name)) $ret.=" on ".$j->provider_name;
        } else {
                // add <a> for html2bbcode conversion
                $ret .= "<a href='$embedurl' rel='oembed'></a>";
@@ -128,14 +130,14 @@ function oembed_iframe($src,$width,$height) {
                $width = '640';
        if(! $height || strstr($height,'%'))
                $height = '300';
-       // try and leave some room for the description line. 
+       // try and leave some room for the description line.
        $height = intval($height) + 80;
        $width  = intval($width) + 40;
 
        $a = get_app();
 
        $s = $a->get_baseurl()."/oembed/".base64url_encode($src);
-       return '<iframe height="' . $height . '" width="' . $width . '" src="' . $s . '" frameborder="no" >' . t('Embedded content') . '</iframe>'; 
+       return '<iframe height="' . $height . '" width="' . $width . '" src="' . $s . '" frameborder="no" >' . t('Embedded content') . '</iframe>';
 
 }
 
@@ -162,7 +164,7 @@ function oe_get_inner_html( $node ) {
         $innerHTML .= $child->ownerDocument->saveXML( $child );
     }
     return $innerHTML;
-} 
+}
 
 /**
  * Find <span class='oembed'>..<a href='url' rel='oembed'>..</a></span>
@@ -171,17 +173,17 @@ function oe_get_inner_html( $node ) {
 function oembed_html2bbcode($text) {
        // start parser only if 'oembed' is in text
        if (strpos($text, "oembed")){
-               
+
                // convert non ascii chars to html entities
                $html_text = mb_convert_encoding($text, 'HTML-ENTITIES', mb_detect_encoding($text));
-               
+
                // If it doesn't parse at all, just return the text.
                $dom = @DOMDocument::loadHTML($html_text);
                if(! $dom)
                        return $text;
                $xpath = new DOMXPath($dom);
                $attr = "oembed";
-               
+
                $xattr = oe_build_xpath("class","oembed");
                $entries = $xpath->query("//span[$xattr]");
 
@@ -193,8 +195,5 @@ function oembed_html2bbcode($text) {
                return oe_get_inner_html( $dom->getElementsByTagName("body")->item(0) );
        } else {
                return $text;
-       } 
+       }
 }
-
-
-
index e7481a252ab70d9d082588c2cc7f3f56880d8aa2..3e172862565237f5a9219551b3ec82d508fcb708 100644 (file)
@@ -50,7 +50,7 @@ function completeurl($url, $scheme) {
         return($complete);
 }
 
-function parseurl_getsiteinfo($url) {
+function parseurl_getsiteinfo($url, $no_guessing = false) {
        $siteinfo = array();
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
@@ -184,7 +184,7 @@ function parseurl_getsiteinfo($url) {
                }
        }
 
-       if (@$siteinfo["image"] == "") {
+       if ((@$siteinfo["image"] == "") AND !$no_guessing) {
             $list = $xpath->query("//img[@src]");
             foreach ($list as $node) {
                 $attr = array();
@@ -223,7 +223,7 @@ function parseurl_getsiteinfo($url) {
                                                        "height"=>$photodata[1]);
        }
 
-       if (@$siteinfo["text"] == "") {
+       if ((@$siteinfo["text"] == "") AND (@$siteinfo["title"] != "") AND !$no_guessing) {
                $text = "";
 
                $list = $xpath->query("//div[@class='article']");