From 4c5e091b784574337c7124b7763bbd19f4bc810f Mon Sep 17 00:00:00 2001 From: Friendika Date: Mon, 4 Apr 2011 20:40:31 -0700 Subject: [PATCH] better twitter follow support --- include/Scrape.php | 34 +++++++++++++++++++++++++++------- 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()));