aboutsummaryrefslogtreecommitdiff
path: root/lib/videolist.php
diff options
context:
space:
mode:
authorSem <sembrestels@riseup.net>2011-11-09 23:26:27 +0100
committerSem <sembrestels@riseup.net>2011-11-09 23:26:27 +0100
commit838229d4ef15607ae60c8fd3e3c37cd4849b376f (patch)
treef0dfdd64f4a3bb5f22072660fda723526f1aa602 /lib/videolist.php
parentf2280654f8aaa33964e62c27a9cab6c96372ba57 (diff)
downloadelgg-838229d4ef15607ae60c8fd3e3c37cd4849b376f.tar.gz
elgg-838229d4ef15607ae60c8fd3e3c37cd4849b376f.tar.bz2
Metacafe and Giss.tv support.
Diffstat (limited to 'lib/videolist.php')
-rw-r--r--lib/videolist.php55
1 files changed, 47 insertions, 8 deletions
diff --git a/lib/videolist.php b/lib/videolist.php
index c62109b77..bb114b298 100644
--- a/lib/videolist.php
+++ b/lib/videolist.php
@@ -56,11 +56,34 @@ function videolist_parseurl_bliptv($url) {
);
}
+function videolist_parseurl_gisstv($url) {
+ $parsed = parse_url($url);
+ $path = explode('/', $parsed['path']);
+
+ if ($parsed['host'] != 'giss.tv' || $path[1] != 'dmmdb') {
+ return false;
+ }
+
+ if($path[2] == 'contents' && isset($path[3])) {
+ $video_id = $path[3];
+ } elseif($path[3] == 'contents' && isset($path[4])) {
+ $video_id = $path[4];
+ } else {
+ return false;
+ }
+
+ return array(
+ 'videotype' => 'gisstv',
+ 'video_id' => $video_id,
+ );
+}
+
function videolist_parseurl($url){
if ($parsed = videolist_parseurl_youtube($url)) return $parsed;
elseif ($parsed = videolist_parseurl_vimeo($url)) return $parsed;
elseif ($parsed = videolist_parseurl_metacafe($url)) return $parsed;
elseif ($parsed = videolist_parseurl_bliptv($url)) return $parsed;
+ elseif ($parsed = videolist_parseurl_gisstv($url)) return $parsed;
else return array();
}
@@ -72,6 +95,7 @@ function videolist_get_data($video_parsed_url) {
case 'vimeo': return videolist_get_data_vimeo($video_id);
case 'metacafe': return videolist_get_data_metacafe($video_id);
case 'bliptv': return videolist_get_data_bliptv($video_id);
+ case 'gisstv': return videolist_get_data_gisstv($video_id);
default: return array();
}
}
@@ -110,15 +134,11 @@ function videolist_get_data_metacafe($video_id){ //FIXME
$buffer = file_get_contents("http://www.metacafe.com/api/item/$video_id");
$xml = new SimpleXMLElement($buffer);
- $children = $xml->children();
- $channel = $children[1];
-
- preg_match('/<img[^>]+src[\\s=\'"]+([^"\'>\\s]+)/is', $channel->description, $matches);
-
return array(
- 'title' => $channel->title,
- 'description' => $channel->description,
- 'thumbnail' => $matches[1],
+ 'title' => current($xml->xpath('/rss/channel/item/title')),
+ 'description' => current($xml->xpath('/rss/channel/item/description')),
+ 'thumbnail' => current($xml->xpath('/rss/channel/item/media:thumbnail/@url')),
+ 'embedurl' => current($xml->xpath('/rss/channel/item/media:content/@url')),
'video_id' => $video_id,
'videotype' => 'metacafe',
);
@@ -137,3 +157,22 @@ function videolist_get_data_bliptv($video_id){
'videotype' => 'bliptv',
);
}
+
+function videolist_get_data_gisstv($video_id){
+ $buffer = file_get_contents('http://giss.tv/dmmdb//rss.php');
+ $xml = new SimpleXMLElement($buffer);
+
+ $data = array();
+ foreach($xml->xpath('/rss/channel/item') as $item){
+ if(sanitize_string($item->link) == 'http://giss.tv/dmmdb//contents/'.$video_id) {
+ $data['title'] = sanitize_string($item->title);
+ $data['description'] = sanitize_string($item->description);
+ $data['thumbnail'] = sanitize_string($item->thumbnail);
+ break;
+ }
+ }
+ return array_merge($data, array(
+ 'video_id' => $video_id,
+ 'videotype' => 'gisstv',
+ ));
+}