diff options
Diffstat (limited to 'plugins/leoslyrics/lyrics_leoslyrics.c')
-rw-r--r-- | plugins/leoslyrics/lyrics_leoslyrics.c | 162 |
1 files changed, 0 insertions, 162 deletions
diff --git a/plugins/leoslyrics/lyrics_leoslyrics.c b/plugins/leoslyrics/lyrics_leoslyrics.c deleted file mode 100644 index 5bcb32242..000000000 --- a/plugins/leoslyrics/lyrics_leoslyrics.c +++ /dev/null @@ -1,162 +0,0 @@ -#include "src_lyrics.h" -#include "easy_download.h" -#include <expat.h> -#include <string.h> -#include "options.h" - -#define LEOSLYRICS_SEARCH_URL "http://api.leoslyrics.com/api_search.php?auth=ncmpc&artist=%s&songtitle=%s" -#define LEOSLYRICS_CONTENT_URL "http://api.leoslyrics.com/api_lyrics.php?auth=ncmpc&hid=%s" -#define CREDITS "Lyrics provided by www.LeosLyrics.com" - -char *hid; -XML_Parser parser, contentp; - -int check_dl_progress(void *clientp, double dltotal, double dlnow, - double ultotal, double ulnow) -{ - if(g_timer_elapsed(dltime, NULL) >= options.lyrics_timeout || lock == 4) - { - formed_text_init(&lyr_text); - return -1; - } - - return 0; -} - - - -static void check_content(void *data, const char *name, const char **atts) -{ - if(strstr(name, "text") != NULL) - { - - result |= 16; - } -} - - -static void check_search_response(void *data, const char *name, - const char **atts) -{ - if(strstr(name, "response") != NULL) - { - result |=2; - return; - } - - if(result & 4) - { - if(strstr(name, "result") != NULL) - { - if(strstr(atts[2], "hid") != NULL) - { - hid = strdup (atts[3]); - } - - if(strstr(atts[2], "exactMatch") != NULL) - { - result |= 8; - } - } - } - -} - -static void end_tag(void *data, const char *name) -{ - //hmmmmmm -} - - static void check_search_success(void *userData, const XML_Char *s, int len) - { - if(result & 2) //lets first check whether we're right - { //we don't really want to search in the wrong string - if(strstr((char*) s, "SUCCESS")) - { - result |=4; - } - } - } - -static void fetch_text(void *userData, const XML_Char *s, int len) -{ - if(result & 16) - { - if (s[0] == 13 ) return; //ignore any single carriage returns - add_text_line(&lyr_text, s, len); - } -} - -/*int deregister_lyr_leoslyrics () -{ - -}*/ - -int check_lyr_leoslyrics(char *artist, char *title, char *url) -{ - char url_avail[256]; - - //this replacess the whitespaces with '+' - g_strdelimit(artist, " ", '+'); - g_strdelimit(title, " ", '+'); - - //we insert the artist and the title into the url - snprintf(url_avail, 512, LEOSLYRICS_SEARCH_URL, artist, title); - - //download that xml! - easy_download_struct lyr_avail = {NULL, 0,-1}; - - g_timer_start(dltime); - if(!easy_download(url_avail, &lyr_avail, check_dl_progress)) return -1; - g_timer_stop(dltime); - - //we gotta parse that stuff with expat - parser = XML_ParserCreate(NULL); - XML_SetUserData(parser, NULL); - - XML_SetElementHandler(parser, check_search_response, end_tag); - XML_SetCharacterDataHandler(parser, check_search_success); - XML_Parse(parser, lyr_avail.data, strlen(lyr_avail.data), 0); - XML_ParserFree(parser); - - if(!(result & 4)) return -1; //check whether lyrics found - - CURL *curl = curl_easy_init (); - char *esc_hid = curl_easy_escape (curl, hid, 0); - free (hid); - - snprintf(url, 512, LEOSLYRICS_CONTENT_URL, hid); - - return 0; -} - -int get_lyr_leoslyrics(char *artist, char *title) -{ - char url_hid[256]; - if(dltime == NULL) dltime = g_timer_new(); - - if(check_lyr_leoslyrics(artist, title, url_hid) != 0) return -1; - - easy_download_struct lyr_content = {NULL, 0,-1}; - g_timer_continue(dltime); - if(!(easy_download(url_hid, &lyr_content, check_dl_progress))) return -1; - g_timer_stop(dltime); - - contentp = XML_ParserCreate(NULL); - XML_SetUserData(contentp, NULL); - XML_SetElementHandler(contentp, check_content, end_tag); - XML_SetCharacterDataHandler(contentp, fetch_text); - XML_Parse(contentp, lyr_content.data, strlen(lyr_content.data), 0); - XML_ParserFree(contentp); - - return 0; - -} -int register_me (src_lyr *source_descriptor) -{ - source_descriptor->check_lyr = check_lyr_leoslyrics; - source_descriptor->get_lyr = get_lyr_leoslyrics; - - source_descriptor->name = "Leoslyrics"; - source_descriptor->description = "powered by http://www.leoslyrics.com"; -} |