diff options
-rw-r--r-- | include/Scrape.php | 34 | ||||
-rw-r--r-- | mod/follow.php | 5 |
2 files changed, 31 insertions, 8 deletions
diff --git a/include/Scrape.php b/include/Scrape.php index 21820ddaf..002fdfb35 100644 --- a/include/Scrape.php +++ b/include/Scrape.php @@ -227,16 +227,36 @@ function scrape_feed($url) { if(! $dom) return $ret; + + $items = $dom->getElementsByTagName('img'); + + // get img elements (twitter) + + if($items) { + foreach($items as $item) { + $x = $item->getAttribute('id'); + if($x === 'profile-image') { + $ret['photo'] = $item->getAttribute('src'); + } + } + } + $items = $dom->getElementsByTagName('link'); - // get Atom link elements + // get Atom/RSS link elements, take the first one of either. - foreach($items as $item) { - $x = $item->getAttribute('rel'); - if(($x === 'alternate') && ($item->getAttribute('type') === 'application/atom+xml')) - $ret['feed_atom'] = $item->getAttribute('href'); - if(($x === 'alternate') && ($item->getAttribute('type') === 'application/rss+xml')) - $ret['feed_rss'] = $item->getAttribute('href'); + if($items) { + foreach($items as $item) { + $x = $item->getAttribute('rel'); + if(($x === 'alternate') && ($item->getAttribute('type') === 'application/atom+xml')) { + if(! x($ret,'feed_atom')) + $ret['feed_atom'] = $item->getAttribute('href'); + } + if(($x === 'alternate') && ($item->getAttribute('type') === 'application/rss+xml')) { + if(! x($ret,'feed_rss')) + $ret['feed_rss'] = $item->getAttribute('href'); + } + } } return $ret; diff --git a/mod/follow.php b/mod/follow.php index 06e81ceed..48ad66747 100644 --- a/mod/follow.php +++ b/mod/follow.php @@ -112,6 +112,8 @@ function follow_post(&$a) { if(count($ret) && ($ret['feed_atom'] || $ret['feed_rss'])) { $poll = ((x($ret,'feed_atom')) ? unamp($ret['feed_atom']) : unamp($ret['feed_rss'])); $vcard = array(); + if(x($ret,'photo')) + $vcard['photo'] = $ret['photo']; require_once('simplepie/simplepie.inc'); $feed = new SimplePie(); $xml = fetch_url($poll); @@ -120,7 +122,8 @@ function follow_post(&$a) { $feed->init(); - $vcard['photo'] = $feed->get_image_url(); + if(! x($vcard,'photo')) + $vcard['photo'] = $feed->get_image_url(); $author = $feed->get_author(); if($author) { $vcard['fn'] = unxmlify(trim($author->get_name())); |