The Arcive of Official vBulletin Modifications Site.It is not a VB3 engine, just a parsed copy! |
|
Digg API to RSS 2.0 Proxy Details »» | |||||||||||||||||||||||||
I created this to use with the RSS Features in vBulletin. It uses the DiggAPI to connect to Digg and returns data as a RSS 2.0 feed. You can then use that in the RSS feeds in vbulletin to be posted in what ever forum you like.
Why did I not use the regular Digg RSS feeds? Mainly because you get more control this way, and because those feeds link to Digg, not the article submitted. So how does it work? Just copy the code below into a php file (I call mine digg.php). It takes several arguments.
so, an example? http://www.mydomain.com/digg.php?container=gaming will return the latest popular 10 in the gaming container. Customisations: Inside the code, there is user_agent and AKEY that will need to be changed. user_agent should be Your-Site/1.0 (it just identifies your request) AKEY is your appkey and needs to be in the form of http%3A%2F%2Fwww.yoursite.com So here is the code, be nice if your gonna critique it, I just threw it together to scratch and itch. I plan to do it as a plugin eventually and allow tweaking all the options through the adminCP and have it post the responses itself, instead of using the vbulletin RSS system. This will allow using of more elements of the diggapi instead of just what the item tag in RSS 2.0 lets me use. Demo Demo2 (Upcoming 20 Articles in Gaming sorted by submit date from latest) Code:
<?php ini_set("user_agent", "Change-Me/1.0"); define("AKEY", "http%3A%2F%2Fwww.CHANGEME.com"); $url = "http://services.digg.com/stories?appkey=".AKEY; //this url works if ($_GET['container']) { $url = "http://services.digg.com/stories/container/". htmlentities($_GET['container'])."/"; if ($_GET['status']) { $status = $_GET['status']; switch($status) { case 'upcoming' : $url .= "upcoming"; break; } } else { $url .= "popular"; } $url .= "?appkey=".AKEY; if ($_GET['num']) { $url .= "&count=".htmlentities($_GET['num']); } if ($_GET['sort']) { $sort = htmlentities($_GET['sort']); switch($sort) { case 'promote_date-desc': $url .= "&sort=".$sort; break; case 'promote_date-asc': $url .= "&sort=".$sort; break; case 'submit_date-desc': $url .= "&sort=".$sort; break; case 'submit_date-asc': $url .= "&sort=".$sort; break; } } } if ($_GET['topic']) { $url = "http://services.digg.com/stories/topic/". htmlentities($_GET['topic'])."/"; if ($_GET['status']) { $status = $_GET['status']; $status = $_GET['status']; switch($status) { case 'upcoming' : $url .= "upcoming"; break; } } else { $url .= "popular"; } $url .= "?appkey=".AKEY; if ($_GET['num']) { $url .= "&count=".htmlentities($_GET['num']); } if ($_GET['sort']) { $sort = htmlentities($_GET['sort']); switch($sort) { case 'promote_date-desc': $url .= "&sort=".$sort; break; case 'promote_date-asc': $url .= "&sort=".$sort; break; case 'submit_date-desc': $url .= "&sort=".$sort; break; case 'submit_date-asc': $url .= "&sort=".$sort; break; } } } $data = open_url($url); $diggData = new SimpleXMLElement($data); $html = '<?xml version="1.0" encoding="windows-1252" ?> <rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"> <channel> <title>Digg Proxy Feed</title> <link>http://www.tampagamers.com/digg.php</link> <description>Latest Articles - '.xmlencode($url).'</description> '; foreach ($diggData->story as $story) { $desc = $story->description; $author = $story->user['name']; $html .= '<item> <title>'.xmlencode($story->title).'</title> <link>'.xmlencode($story["link"]).'</link> <description>'.xmlencode($desc).'</description> <guid>'.xmlencode($story["link"]).'</guid> <category>'.xmlencode($story->container["name"]).' - '.xmlencode($story->topic["name"]).'</category> <dc:creator>'.xmlencode($author).'</dc:creator> </item> '; } $html .= ' </channel> </rss>'; header("Content-Type: application/rss+xml"); echo $html; function changeencoding (&$item1, $key) { $item1 = "&#".Ord($key).";"; } function xmlencode ($s) { if (empty($xmltrans)) { // do this only once $xmltrans = get_html_translation_table(HTML_ENTITIES); array_walk ($xmltrans, 'changeencoding'); reset ($xmltrans); } return strtr($s, $xmltrans); } function open_url($url) { global $data; $stream = @fopen($url, 'r'); if (!$stream) { die("There was a problem connecting to Digg.com with $url"); } while (!feof($stream)) { $data .= fgets($stream); } fclose($stream); return $data; } ?> Supporters / CoAuthors Show Your Support
|
Comments |
#2
|
|||
|
|||
is there any demo how does it works?
|
#3
|
|||
|
|||
Sure, I just added 2 Demo's. Please dont link to them with your live site, they are for demo purposes only.
|
#4
|
||||
|
||||
Sounds pretty cool. I might check this out. Thanks for sharing.
|
#5
|
|||
|
|||
you can see this in action actually on tampagamers.com where I have it posting digg articles through vbulletins RSS system into several diff forums as different users.
|
#6
|
||||
|
||||
very cool mod, wish I saw it earlier.
|
Thread Tools | |
|
|
X vBulletin 3.8.12 by vBS Debug Information | |
---|---|
|
|
More Information | |
Template Usage:
Phrase Groups Available:
|
Included Files:
Hooks Called:
|