100
100
data = g_new (xmms_lastfmeta_data_t, 1);
101
101
data->handles = 0;
103
xmms_xform_private_data_set (xform, data);
105
104
/* seek over the first 4 bytes (SYNC) */
106
105
xmms_xform_read (xform, buf, 4, &err);
108
session = xmms_xform_metadata_get_str (xform, "session");
107
if (!xmms_xform_metadata_get_str (xform, "session", &session)) {
108
xmms_log_error ("No session for lastfmeta to use!");
113
xmms_xform_private_data_set (xform, data);
109
115
g_snprintf (data->url, sizeof (data->url), np_fmt, session);
111
117
data->curl_easy = curl_easy_init ();
153
161
curl_easy_cleanup (data->curl_easy);
154
162
curl_multi_cleanup (data->curl_multi);
164
val = xmms_xform_config_lookup (xform, "recordtoprofile");
165
xmms_config_property_callback_remove (val, xmms_lastfm_config_changed, xform);
213
224
split = g_strsplit (ptr, "\n", 0);
214
225
for (i = 0; split && split[i]; i++) {
226
const gchar *metakey;
215
228
if (g_str_has_prefix (split[i], "error=")) {
218
231
} else if (g_str_has_prefix (split[i], "artist=")) {
219
xmms_xform_metadata_set_str (xform,
220
XMMS_MEDIALIB_ENTRY_PROPERTY_ARTIST,
232
metakey = XMMS_MEDIALIB_ENTRY_PROPERTY_ARTIST,
233
xmms_xform_metadata_set_str (xform, metakey, split[i] + 7);
222
234
} else if (g_str_has_prefix (split[i], "track=")) {
223
xmms_xform_metadata_set_str (xform,
224
XMMS_MEDIALIB_ENTRY_PROPERTY_TITLE,
235
metakey = XMMS_MEDIALIB_ENTRY_PROPERTY_TITLE;
236
xmms_xform_metadata_set_str (xform, metakey, split[i] + 6);
226
237
} else if (g_str_has_prefix (split[i], "album=")) {
227
xmms_xform_metadata_set_str (xform,
228
XMMS_MEDIALIB_ENTRY_PROPERTY_ALBUM,
238
metakey = XMMS_MEDIALIB_ENTRY_PROPERTY_ALBUM;
239
xmms_xform_metadata_set_str (xform, metakey, split[i] + 6);
230
240
} else if (g_str_has_prefix (split[i], "station=")) {
231
xmms_xform_metadata_set_str (xform,
232
XMMS_MEDIALIB_ENTRY_PROPERTY_CHANNEL,
241
metakey = XMMS_MEDIALIB_ENTRY_PROPERTY_CHANNEL;
242
xmms_xform_metadata_set_str (xform, metakey, split[i] + 8);
236
245
g_strfreev (split);
256
265
data = xmms_xform_private_data_get (xform);
257
266
g_return_val_if_fail (data, 0);
259
session = xmms_xform_metadata_get_str (xform, "session");
268
if (!xmms_xform_metadata_get_str (xform, "session", &session)) {
269
xmms_log_error ("No session for lastfmeta to use!");
261
273
buffer = g_string_new (NULL);