Поиск текста песни

  1. ///autor HoldFast
  2. function ucwords(str) {
  3.     return str.replace(/^(.)|\s(.)/g, function ($1) {
  4.         return $1.toUpperCase();
  5.     });
  6. }
  7. function empty(mixed_var) {
  8.     return (mixed_var === "" || mixed_var === 0 || mixed_var === "0" || mixed_var === null || mixed_var === false || (is_array(mixed_var) && mixed_var.length === 0));
  9. }
  10. var lyrics = {
  11.     text: function (data) {
  12.         var keys = [];
  13.         for (var key in data.query.pages) keys.push(key);
  14.         if ('revisions' in data.query.pages[keys[0]]) {
  15.             try {
  16.                 var text = data.query.pages[keys[0]].revisions['0']['*'];
  17.                 text = text.split('<lyrics>');
  18.                 text = text[1].split('</lyrics>');
  19.                 return $.trim(text[0]);
  20.             } catch (err) {
  21.                 return '';
  22.             }
  23.         } else return '';
  24.     },
  25.     getartist: function (artist, func) {
  26.         $.getJSON('http://lyrics.wikia.com/api.php?action=query&prop=revisions&rvprop=content&format=json&titles=' + ucwords(artist) + '&callback=?', func);
  27.     },
  28.     redirect: function (data) {
  29.         var keys = [];
  30.         for (var key in data.query.pages) keys.push(key);
  31.         try {
  32.             var text = data.query.pages[keys[0]].revisions['0']['*'];
  33.             text = text.match(/#REDIRECT \[\[(.*)\]\]/)[1];
  34.         } catch (err) {
  35.             text = '';
  36.         }
  37.         return text;
  38.     },
  39.     get: function (artist, title, func) {
  40.         $.getJSON('http://lyrics.wikia.com/api.php?action=query&prop=revisions&rvprop=content&format=json&titles=' + ucwords(artist) + ':' + ucwords(title) + '&callback=?', func);
  41.     },
  42.     gets: function (string, func) {
  43.         $.getJSON('http://lyrics.wikia.com/api.php?action=query&prop=revisions&rvprop=content&format=json&titles=' + string + '&callback=?', func);
  44.     }
  45. }
  46.  
  47. function getTextWikia(artist, title, func) {
  48.     lyrics.get(artist, title, function (data) {
  49.         var redirect = lyrics.redirect(data);
  50.         var text = "";
  51.         if (redirect != "") {
  52.             lyrics.gets(redirect, function (data) {
  53.                 text = lyrics.text(data);
  54.                 if (!empty(text)) func(text);
  55.                 else func('');                
  56.             })
  57.         } else {
  58.             text = lyrics.text(data);
  59.             if (empty(text)) {
  60.                 lyrics.getartist(artist, function (data) {
  61.                     var redirect = lyrics.redirect(data);
  62.                     if (redirect != "") {
  63.                         lyrics.get(redirect, title, function (data) {
  64.                             text = lyrics.text(data);
  65.                             if (!empty(text)) func(text);
  66.                             else func('');                            
  67.                         });
  68.                     } else func('');                    
  69.                 });
  70.             } else func(text);
  71.  
  72.         }
  73.     });
  74. }
Для работы необходим jquery.
Пример:
  1. getTextWikia('Ария','Штиль',function(data) {
  2.     console.log(data);
  3.     });

Реклама

Мы в соцсетях

tw tg yt gt