function wikipedia_search($procd_descr) { profiling_start('wikipedia_search'); $TERMS = wikipedia_process_term($procd_descr); $url = wikipedia_url($TERMS); $data = cached_file_get_contents($url); Error::setPrepend($data); Error::generate('debug', 'WIKIPEDIA'); eval('$arr = ' . $data . ';'); foreach ($arr['query']['pages'] as $k => $v) { $title = urlencode($v['title']); $url = urlencode($v['fullurl']); // https://dgl.cx/2008/10/wikipedia-summary-dns if ($k == -1) { // not found return array(); } break; } // this is probably a topic from a random unintended field like "frequency analysis (cryptoanalysis)" if (strlen($title) < strlen($TERMS) - 5 || strlen($title) > strlen($TERMS) + 5 || strrchr($title, '%28')) { return array(); } $store = array('title' => urldecode(str_replace('+', ' ', $title)), 'link' => urldecode($url), 'source' => 'wikipedia'); profiling_end('wikipedia_search'); return array($store); }
function google_search($procd_descr) { $TERMS = urlencode($procd_descr . " Lecture Notes"); $USERIP = $_SERVER['REMOTE_ADDR']; $url = "http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q={$TERMS}&rsz=small"; $data = cached_file_get_contents($url); $arr = json_decode($data, true); $results = $arr['responseData']['results']; $store = array(); foreach ($results as $elem) { $link = $elem['url']; $title = $elem['titleNoFormatting']; array_push($store, array($title, $link)); } return $store; }
function itunesu_search($procd_descr) { $TERMS = urlencode($procd_descr); $USERIP = $_SERVER['REMOTE_ADDR']; ini_set('user_agent', 'iTunes/8.1'); $url = "http://ax.search.itunes.apple.com/WebObjects/MZSearch.woa/wa/advancedSearch?descriptionTerm={$TERMS}&media=iTunesU"; $data = cached_file_get_contents($url); $parser = xml_parser_create(); xml_parse_into_struct($parser, $data, $xml); xml_parser_free($parser); $store = array(); foreach ($xml as $key => $elem) { if ($elem['tag'] == 'GOTOURL' && $elem['level'] == 21 && $elem['type'] == 'open') { array_push($store, array('url' => $elem['attributes']['URL'], 'title' => $elem['attributes']['DRAGGINGNAME'], 'art' => $xml[$key + 2]['attributes']['URL'])); } } return $store; }
function youtube_query($TERMS, $srch) { $str = $TERMS . "+" . implode("+", $srch); $url = "http://gdata.youtube.com/feeds/api/videos?q={$str}&orderby=relevance&start-index=1&max-results=2&v=2&format=5"; $data = cached_file_get_contents($url); $parser = xml_parser_create(); xml_parse_into_struct($parser, $data, $xml); xml_parser_free($parser); $store = array(); foreach ($xml as $elem) { //if($elem['tag'] == "MEDIA:THUMBNAIL") { // echo "<img src=\"".$elem['attributes']['URL']."\" /><br/>"; //} //print_r($elem); $content = ""; if ($elem['tag'] == "CONTENT") { $content = $elem['attributes']['SRC']; //$content .= "(".$str.")"; array_push($store, $content); } } return $store; }
function get_news_from_feed($feedurl) { $xml = cached_file_get_contents($feedurl); try { libxml_use_internal_errors(true); $xml = new SimpleXMLElement($xml); } catch (Exception $ex) { $xml = false; } $cnewstemplate = file_get_contents('templates/cnewsitem.html'); $cnews = ""; $cnewskeys = array('#HEADLINE#', '#LINK#'); if ($xml) { foreach ($xml->xpath('/rss/channel/item') as $item) { $newsdata = array((string) $item->title, (string) $item->link); $cnews .= str_replace($cnewskeys, $newsdata, $cnewstemplate); } } if ($cnews == '') { // hack to hide community news altogether if an error occurs $cnews = "<style>.cnews{display:none}</style>"; } return $cnews; }
function youtube_query($TERMS, $srch, $crs) { global $CONFIG; profiling_start('youtube_query'); $TAGS = $srch; $rtags = get_full_tags($crs); $str = urlencode($TERMS); //."+".implode("+", $srch); $url = "http://gdata.youtube.com/feeds/api/videos?q={$str}&orderby=relevance&start-index=1&max-results=2&v=2&format=5"; $data = cached_file_get_contents($url); $parser = xml_parser_create(); xml_parse_into_struct($parser, $data, $xml); xml_parser_free($parser); $store = array(); foreach ($xml as $elem) { switch ($elem['tag']) { case 'MEDIA:THUMBNAIL': $content['thumbnail_url'] = $elem['attributes']['URL']; $content['thumbnail_width'] = $elem['attributes']['WIDTH']; $content['thumbnail_height'] = $elem['attributes']['HEIGHT']; break; case 'MEDIA:PLAYER': $content['link'] = $elem['attributes']['URL']; break; case 'CONTENT': if ($elem['attributes']['TYPE'] == 'application/x-shockwave-flash') { $val = $elem['attributes']['SRC']; } else { continue 2; } $content['src'] = $val; break; case 'MEDIA:CATEGORY': if ($val != 'Howto' && $val != 'Education' && $val != 'News' && $val != 'Tech') { continue 2; } else { if ($val == 'Education') { $content['rating'] += 5; } } $val = $elem['value']; $content[strtolower($elem['tag'])] = $val; break; case 'CATEGORY': if ($elem['attributes']['SCHEME'] != 'http://gdata.youtube.com/schemas/2007/categories.cat') { continue 2; } else { $val = $elem['attributes']['TERM']; if ($val != 'Howto' && $val != 'Education' && $val != 'News' && $val != 'Tech') { continue 2; } else { if ($val == 'Education') { $content['rating'] += 5; } } $content[strtolower($elem['tag'])] = $val; } break; case 'MEDIA:KEYWORDS': $val = $elem['value']; if (!$val) { continue 2; } if ($rtags) { $matches = count_matches(explode(', ', $val), explode(',', $rtags)); } else { $matches = false; } if ($matches > 0) { $content[strtolower($elem['tag'])] = $val; $content['rating'] += 5; } else { $content['rating'] -= 5; continue 2; } break; case 'MEDIA:DESCRIPTION': // YT:RATING : attributes : NUMDISLIKES, NUMLIKES $val = $elem['value']; if ($rtags) { $matches = count_matches(explode(' ', $val), explode(',', $rtags)); } else { $matches = false; } if ($matches && $matches > 0) { $content[strtolower($elem['tag'])] = $val; $content['rating'] += 2; } else { $content['rating'] -= 2; continue 2; } break; case 'TITLE': $val = $elem['value']; $content[strtolower($elem['tag'])] = $val; break; case 'ENTRY': if ($elem['type'] == 'open') { $content = array('src' => false, 'title' => false, 'media:keywords' => false, 'media:description' => false, 'category' => false, 'rating' => 10, 'thumbnail_url' => false, 'thumbnail_width' => false, 'thumbnail_height' => false, 'link' => false, 'source' => 'youtube'); } else { if ($elem['type'] == 'close') { if ($content['rating'] > 8) { if ($CONFIG['debug']) { $content['title'] .= ' - rating=' . $content['rating']; } array_push($store, $content); } } } default: } } profiling_end('youtube_query'); return $store; }