3
3
#include "sj-structures.h"
4
4
#include "sj-metadata.h"
5
#include "sj-metadata-musicbrainz.h"
5
#include "sj-metadata-getter.h"
8
source_to_str (MetadataSource source)
10
const char * strs[] = {
21
release_type_to_id (const char *type)
23
/* CD 2 of a multi-CD set
24
* Beastie Boys - Anthology: The Sounds of Science (disc 2)
25
* http://musicbrainz.org/release/0f15fc15-9538-44b6-aa19-4074934fc5ba.html */
26
if (g_str_equal (type, "commercial"))
27
return "rg4F4Od5EgOwfDaI0niQ2TnCaxk-";
29
* http://musicbrainz.org/bare/cdlookup.html?discid=aaaaaaaaaaaaaaaaaaaaaaaaaaaa */
30
if (g_str_equal (type, "fake"))
31
return "aaaaaaaaaaaaaaaaaaaaaaaaaaaa";
33
* Harry Potter and the Sorcerer's Stone (feat. narrator: Jim Dale) (disc 1)
34
* http://musicbrainz.org/release/947c6cdd-1188-4e3e-a53b-21bb3a49b79e.html */
35
if (g_str_equal (type, "audiobook"))
36
return "VJ0lpdqHGE7r8wr.N8D6Q0G.pCs-";
8
metadata_cb (SjMetadata *metadata, GList *albums, GError *error)
42
metadata_cb (SjMetadataGetter *metadata, GList *albums, GError *error)
10
46
if (error != NULL) {
11
47
g_print ("Error: %s\n", error->message);
13
48
g_object_unref (metadata);
52
url = sj_metadata_getter_get_submit_url (metadata);
53
g_print ("Submit URL: %s\n", url);
18
57
AlbumDetails *album;
19
58
album = (AlbumDetails*)albums->data;
20
g_print ("'%s', by %s\n", album->title, album->artist);
60
g_print ("Source: %s\n", source_to_str(album->metadata_source));
61
if (album->metadata_source == SOURCE_MUSICBRAINZ)
62
g_print ("Album ID: %s\n", album->album_id);
63
if (album->asin != NULL)
64
g_print ("ASIN: %s\n", album->asin);
65
if (album->discogs != NULL)
66
g_print ("Discogs: %s\n", album->discogs);
67
if (album->wikipedia != NULL)
68
g_print ("Wikipedia: %s\n", album->wikipedia);
69
if (album->is_spoken_word)
70
g_print ("Is spoken word\n");
71
disc_number = g_strdup_printf (" (Disc %d)", album->disc_number);
72
g_print ("'%s', by %s%s\n", album->title, album->artist, album->disc_number ? disc_number : "");
21
74
while (album->tracks) {
22
75
TrackDetails *track = (TrackDetails*)album->tracks->data;
23
76
g_print (" Track %d; Title: %s; Artist: %s Duration: %d sec\n", track->number, track->title, track->artist, track->duration);
33
86
int main (int argc, char** argv)
88
SjMetadataGetter *metadata;
39
93
g_thread_init (NULL);
41
metadata = (SjMetadata*)sj_metadata_musicbrainz_new ();
95
metadata = sj_metadata_getter_new ();
44
sj_metadata_set_cdrom (metadata, argv[1]);
98
sj_metadata_getter_set_cdrom (metadata, argv[1]);
99
} else if (argc == 3) {
101
sj_metadata_getter_set_cdrom (metadata, argv[1]);
102
id = release_type_to_id (argv[2]);
103
g_message ("argv %s id %s", argv[2], id);
105
g_print ("The faked type of disc must be one of: commercial, fake, audiobook\n");
108
g_setenv ("MUSICBRAINZ_FORCE_DISC_ID", id, TRUE);
46
g_print ("Usage: %s [CD device]\n", argv[0]);
110
g_print ("Usage: %s [CD device] [commercial|fake|audiobook]\n", argv[0]);
50
114
g_signal_connect (G_OBJECT (metadata), "metadata",
51
115
G_CALLBACK (metadata_cb), NULL);
52
sj_metadata_list_albums (metadata, NULL);
116
if (sj_metadata_getter_list_albums (metadata, &error) == FALSE) {
117
g_warning ("Couldn't list tracks on album: %s", error->message);
118
g_error_free (error);
54
122
loop = g_main_loop_new (NULL, FALSE);
55
123
g_main_loop_run (loop);