int main (int argc, char **argv)
{
	GMainLoop *loop;
	RBPodcastSearch *itunes;
	RBPodcastSearch *miroguide;
	char *text;

	g_type_init ();
	setlocale (LC_ALL, "");
	bindtextdomain (GETTEXT_PACKAGE, GNOMELOCALEDIR);
	bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");

	text = argv[1];
	if (argv[2] != NULL && strcmp (argv[2], "--debug") == 0) {
		debug = TRUE;
	}

	loop = g_main_loop_new (NULL, FALSE);

	itunes = RB_PODCAST_SEARCH (g_object_new (rb_podcast_search_itunes_get_type (), NULL));
	miroguide = RB_PODCAST_SEARCH (g_object_new (rb_podcast_search_miroguide_get_type (), NULL));

	g_signal_connect (itunes, "result", G_CALLBACK (result_cb), NULL);
	g_signal_connect (miroguide, "result", G_CALLBACK (result_cb), NULL);
	g_signal_connect (itunes, "finished", G_CALLBACK (finished_cb), loop);
	g_signal_connect (miroguide, "finished", G_CALLBACK (finished_cb), loop);

	rb_podcast_search_start (itunes, text, 10);
	rb_podcast_search_start (miroguide, text, 10);

	g_main_loop_run (loop);

	return 0;
}
Example #2
0
static void
search_cb (RBSearchEntry *entry, const char *text, RBPodcastAddDialog *dialog)
{
	GList *searches;
	GList *s;
	int i;

	/* remove previous feeds */
	remove_all_feeds (dialog);
	rhythmdb_entry_delete_by_type (dialog->priv->db, RHYTHMDB_ENTRY_TYPE_PODCAST_SEARCH);
	rhythmdb_commit (dialog->priv->db);

	gtk_widget_hide (dialog->priv->info_bar);

	if (text == NULL || text[0] == '\0') {
		return;
	}

	/* if the entered text looks like a feed URL, parse it directly */
	for (i = 0; i < G_N_ELEMENTS (podcast_uri_prefixes); i++) {
		if (g_str_has_prefix (text, podcast_uri_prefixes[i])) {
			parse_in_thread (dialog, text, FALSE, TRUE);
			return;
		}
	}

	/* not really sure about this one */
	if (g_path_is_absolute (text)) {
		parse_in_thread (dialog, text, FALSE, TRUE);
		return;
	}

	/* otherwise, try podcast searches */
	dialog->priv->search_successful = FALSE;
	searches = rb_podcast_manager_get_searches (dialog->priv->podcast_mgr);
	for (s = searches; s != NULL; s = s->next) {
		RBPodcastSearch *search = s->data;

		g_signal_connect_object (search, "result", G_CALLBACK (podcast_search_result_cb), dialog, 0);
		g_signal_connect_object (search, "finished", G_CALLBACK (podcast_search_finished_cb), dialog, 0);
		rb_podcast_search_start (search, text, PODCAST_SEARCH_LIMIT);
		dialog->priv->running_searches++;
	}
}