Skip to content

Instantly share code, notes, and snippets.

@ravikiranj
Created May 6, 2011 16:19
Show Gist options
  • Save ravikiranj/959271 to your computer and use it in GitHub Desktop.
Save ravikiranj/959271 to your computer and use it in GitHub Desktop.
Extract news items from Google news API via YQL
<?php
public function displayHTML(){
try {
$uid = $this->fb->getUser();
$me = $this->fb->api('/me');
$musicInterests = $this->fb->api('/me/music');
$musicArr = null;
if(!empty($musicInterests['data'])){
foreach($musicInterests['data'] as $item){
$musicArr[] = $item["name"];
}
}
if(!empty($musicArr)){
$this->displayRecoNews($musicArr);
}else {
echo "No recommended news could be retrieved as your music interests are not declared/present in Facebook";
}
}catch(FacebookApiException $e) {
error_log($e);
echo $e;
//Session expired or user de-authenticated the app
$this->showConnectToFB(true);
}
}
public function displayRecoNews($musicArr){
$musicStr = "'" . implode(" music','", $musicArr) . "'"; // "'string1 music','string2 music','string3 music'"
//echo "<pre>";var_dump($musicStr); echo "</pre>";
//Code to access YQL using PHP
$yql_base_url = "http://query.yahooapis.com/v1/public/yql";
$yql_query = "select * from google.news where (q in ({$musicStr}))"; //YQL query to retrieve search results
$yql_query_url = $yql_base_url . "?q=" . urlencode($yql_query) . "&env=store://datatables.org/alltableswithkeys&format=json";
//echo "<pre>";var_dump($yql_query_url); echo "</pre>";
$result = $this->getResultFromYQL($yql_query_url);
if(!empty($result["query"]["results"]["results"])){
$this->parseAndDisplayNewsResults($result["query"]["results"]["results"], $musicArr);
}
}
public function getResultFromYQL($yql_query) {
$session = curl_init($yql_query);
curl_setopt($session, CURLOPT_RETURNTRANSFER, true);
$json = curl_exec($session);
curl_close($session);
return json_decode($json, true);
}
public function parseAndDisplayNewsResults($results, $musicArr){
$musicInterests = '<ul><h3>Music Interests</h3>';
foreach($musicArr as $item){
$musicInterests .= <<<MARKUP
<li>{$item}</li>
MARKUP;
}
$musicInterests .= '</ul>';
$articles = '';
foreach($results as $r){
$title = $r['title'];
$content = $r['content'];
$url = $r['unescapedUrl'];
$publisher = $r['publisher'];
$pubDate = $r['publishedDate'];
$articles .= <<<MARKUP
<div class="article">
<div class="article-hd"><h2><a href="{$url}" target="_blank">{$title}</a><h5> - {$pubDate} by {$publisher}</h5></h2></div>
<p>{$content}</p>
</div>
MARKUP;
}
// .... followed by HTML markup generation ....
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment