Beispiel #1
0
static lyrics_t *handle_lyrics_page(const char *page_name)
{
  char *url, *page, *lyrics;
  lyrics_t *result;

  url = url_escape_location("http://lyrics.wikia.com", page_name);
  page = url_fetch(url);
  if (!page) {
    musicd_log(LOG_ERROR, "lyrics", "can't fetch lyrics page");
    free(url);
    return NULL;
  }
  
  lyrics = parse_lyrics_page(page);
  free(page);

  if (!lyrics) {
    free(url);
    return NULL;
  }

  result = lyrics_new();
  result->lyrics = lyrics;
  result->provider = strcopy("LyricWiki");
  result->source = url;
  return result;
}
Beispiel #2
0
GList * lyrics_lyrixat_parse (cb_object * capo)
{
    /* lyrix.at does not offer any webservice -> use the searchfield to get some results */
    GList * result_list = NULL;
    gchar * search_begin_tag = capo->cache->data;
    gint ctr = 0;

    while (continue_search (g_list_length (result_list),capo->s) && (search_begin_tag = strstr (search_begin_tag+1,SEARCH_START_TAG) ) && MAX_TRIES >= ctr++)
    {
        gchar * url_tag = search_begin_tag;
        url_tag = strstr (url_tag,URL_TAG_BEGIN);
        if (url_tag != NULL)
        {
            gchar * title_tag = strstr (url_tag,URL_TAG_ENDIN);
            if (title_tag)
            {
                gchar * title_end = strstr (title_tag,TITLE_END);
                if (title_end != NULL)
                {
                    gsize tag_end_len = (sizeof URL_TAG_ENDIN) - 1;
                    gchar * title = copy_value (title_tag + tag_end_len,title_end);
                    if (title != NULL)
                    {
                        if (levenshtein_strnormcmp (capo->s,title,capo->s->title) <= capo->s->fuzzyness)
                        {
                            gchar * url_part = copy_value (url_tag+strlen (URL_TAG_BEGIN),title_tag);
                            if (url_part != NULL)
                            {
                                gchar * url = g_strdup_printf ("http://lyrix.at/de%s",url_part);
                                parse_lyrics_page (url,&result_list,capo);
                                g_free (url);
                                g_free (url_part);
                            }
                        }
                        g_free (title);
                    }
                }
            }
        }
    }
    return result_list;
}