Jquery - Url Checker (RSS, аудио или видео подкаст) - PullRequest
0 голосов
/ 01 октября 2011

Я пытаюсь создать средство проверки URL с помощью API Google Feed.

Мои проблемы: 1: проверка if(result) не работает.Может быть асинхронная проблема? 2: есть идеи для проверки подкаста rss, аудио / видео?Я уверен, я получаю в ответ URL-адрес аудио / видео файла (но я сейчас слеп).Моя идея проверить этот URL.

// somthing like that
if(typeof xxxx == 'undefined') -> rss feed
if xxxx.match(/mp3|wav|XXX/gi) -> audio feed
if xxxx.match(/mpg|avi|flv/gi) -> video feed

JS

$(document).ready(function()
{
    // valid rss feed
    var result = urlCheck('http://www.bild.de/rssfeeds/vw-home/vw-home-16725562,short=1,sort=1,view=rss2.bild.xml');
    if(result){ console.warn('result1 is a '+result.urlIsA+' '); console.dir(result); }

    // valid video podcast
    var result = urlCheck('http://www.tagesschau.de/export/video-podcast/webl/tagesschau/');
    if(result){ console.warn('result1 is a '+result.urlIsA+' '); console.dir(result); }

    // valid audio podcast
    var result = urlCheck('http://chaosradio.ccc.de/chaosradio-latest.rss');
    if(result){ console.warn('result1 is a '+result.urlIsA+' '); console.dir(result); }

});
function urlCheck(url)
{
    var feed = new google.feeds.Feed(url);
    feed.setResultFormat(google.feeds.Feed.MIXED_FORMAT);
    feed.setNumEntries('1');
    feed.load(function(result)
    {
        if (!result.error)
        {
            var allEntries = result.feed.entries;
            console.info(url);
            console.dir(allEntries);

            /* if(XXX.match(/XXXX/,gi)) {
                allEntries.urlIsA = 'rss feed';
                return allEntries;
            }
            if(XXX.match(/XXXX/,gi)) {
                allEntries.urlIsA = 'audio podcast';
                return allEntries;
            }
            if(XXX.match(/XXXX/,gi)) {
                allEntries.urlIsA = 'video podcast';
                return allEntries;
            } */

            return false;
        }
        else { return false; }
    });
}

Рабочий пример http://jsbin.com/unikak/edit#javascript,html примечание: вы должны скопировать код в файл * .html, в противном случае вы получите ошибку от jsBin

google.feeds.Feed is not a constructor

1 Ответ

1 голос
/ 01 октября 2011

Измените ваши RegExps, чтобы соответствовать только mpg в конце строки: /(mpg|avi|flv/)$/gi

Вместо использования return используйте функции обратного вызова:

function urlCheck(url, callback){

....
//Insread of return false:
callback(false);
//Instead of return true:
callback(true);

В вашем результате проверки:

urlCheck("http://....", function(result){
    if(result){
         console.warn(...);
    } else {
       //..
    }
})
...