Пример #1
0
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);
}
Пример #2
0
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;
}
Пример #3
0
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;
}
Пример #4
0
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;
}
Пример #5
0
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;
}
Пример #6
0
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;
}