comparison src/scrobbler/plugin.c @ 553:269841b8fb31 trunk

[svn] - submit gerpok tracks on immediate playback begin
author nenolod
date Sat, 27 Jan 2007 06:35:52 -0800
parents d124034ebea3
children 7deaaa08706a
comparison
equal deleted inserted replaced
552:91bc67e7800b 553:269841b8fb31
33 #define XS_SLEEP 1 33 #define XS_SLEEP 1
34 #define HS_SLEEP 10 34 #define HS_SLEEP 10
35 35
36 typedef struct submit_t 36 typedef struct submit_t
37 { 37 {
38 int dosubmit, pos_c, len; 38 int dosubmit, pos_c, len, gerpok;
39 } submit_t; 39 } submit_t;
40 40
41 static void init(void); 41 static void init(void);
42 static void cleanup(void); 42 static void cleanup(void);
43 static void *xs_thread(void *); 43 static void *xs_thread(void *);
246 submit_t dosubmit; 246 submit_t dosubmit;
247 247
248 struct timeval timetmp; 248 struct timeval timetmp;
249 249
250 /* clear dosubmit */ 250 /* clear dosubmit */
251 dosubmit.dosubmit = dosubmit.pos_c = dosubmit.len = 0; 251 dosubmit.dosubmit = dosubmit.pos_c = dosubmit.len = dosubmit.gerpok = 0;
252 252
253 /* current music number */ 253 /* current music number */
254 pos_c = xmms_remote_get_playlist_pos(XS_CS); 254 pos_c = xmms_remote_get_playlist_pos(XS_CS);
255 /* current file name */ 255 /* current file name */
256 file_c = xmms_remote_get_playlist_file(XS_CS, pos_c); 256 file_c = xmms_remote_get_playlist_file(XS_CS, pos_c);
275 } 275 }
276 276
277 /* repeat setting */ 277 /* repeat setting */
278 repeat = xmms_remote_is_repeat(XS_CS); 278 repeat = xmms_remote_is_repeat(XS_CS);
279 279
280 /*
281 #ifdef MAKE_XMMS
282 // advance setting (required xmms-1.2.11 or over)
283 advance = xmms_remote_is_advance(XS_CS);
284 #else
285 advance = 1;
286 #endif
287 */
288
289 if( ps_p == ps_stop && ps_c == ps_stop ) playstate = stopping; 280 if( ps_p == ps_stop && ps_c == ps_stop ) playstate = stopping;
290 else if( ps_p == ps_stop && ps_c == ps_play ) playstate = start; 281 else if( ps_p == ps_stop && ps_c == ps_play ) playstate = start;
291 /* else if( ps_p == ps_stop && ps_c == ps_pause ) ; */ 282 /* else if( ps_p == ps_stop && ps_c == ps_pause ) ; */
292 else if( ps_p == ps_play && ps_c == ps_play ) playstate = playing; 283 else if( ps_p == ps_play && ps_c == ps_play ) playstate = playing;
293 else if( ps_p == ps_play && ps_c == ps_stop ) playstate = stop; 284 else if( ps_p == ps_play && ps_c == ps_stop ) playstate = stop;
322 seeked = 0; 313 seeked = 0;
323 314
324 switch( playstate ){ 315 switch( playstate ){
325 case start: 316 case start:
326 pdebug("*** START ***", SUB_DEBUG); 317 pdebug("*** START ***", SUB_DEBUG);
318 dosubmit.gerpok = 1;
327 break; 319 break;
328 case stop: 320 case stop:
329 pdebug("*** STOP ***", SUB_DEBUG); 321 pdebug("*** STOP ***", SUB_DEBUG);
330 len = 0; 322 len = 0;
331 break; 323 break;
435 dosubmit.len = len; 427 dosubmit.len = len;
436 } 428 }
437 } 429 }
438 } 430 }
439 431
432 if (playstate != start)
433 dosubmit.gerpok = 0;
434
440 g_free(file_p); 435 g_free(file_p);
441 436
442 /* keep current value for next iteration */ 437 /* keep current value for next iteration */
443 ps_p = ps_c; 438 ps_p = ps_c;
444 file_p = file_c; 439 file_p = file_c;
475 hatena_sc_clear_error(); 470 hatena_sc_clear_error();
476 } 471 }
477 472
478 /* Check for ability to submit */ 473 /* Check for ability to submit */
479 dosubmit = get_song_status(); 474 dosubmit = get_song_status();
475
476 if(dosubmit.gerpok) {
477 TitleInput *tuple;
478
479 pdebug("Submitting song.", DEBUG);
480
481 tuple = playlist_get_tuple(playlist_get_active(), dosubmit.pos_c);
482
483 if (ishttp(tuple->file_name))
484 continue;
485
486 if(tuple->performer != NULL && tuple->track_name != NULL)
487 {
488 pdebug(fmt_vastr(
489 "submitting artist: %s, title: %s",
490 tuple->performer, tuple->track_name), DEBUG);
491 gerpok_sc_addentry(m_scrobbler, tuple,
492 dosubmit.len/1000);
493 }
494 else
495 pdebug("tuple does not contain an artist or a title, not submitting.", DEBUG);
496 }
480 497
481 if(dosubmit.dosubmit) { 498 if(dosubmit.dosubmit) {
482 TitleInput *tuple; 499 TitleInput *tuple;
483 500
484 pdebug("Submitting song.", DEBUG); 501 pdebug("Submitting song.", DEBUG);
493 pdebug(fmt_vastr( 510 pdebug(fmt_vastr(
494 "submitting artist: %s, title: %s", 511 "submitting artist: %s, title: %s",
495 tuple->performer, tuple->track_name), DEBUG); 512 tuple->performer, tuple->track_name), DEBUG);
496 sc_addentry(m_scrobbler, tuple, 513 sc_addentry(m_scrobbler, tuple,
497 dosubmit.len/1000); 514 dosubmit.len/1000);
498 gerpok_sc_addentry(m_scrobbler, tuple,
499 dosubmit.len/1000);
500 hatena_sc_addentry(m_scrobbler, tuple, 515 hatena_sc_addentry(m_scrobbler, tuple,
501 dosubmit.len/1000); 516 dosubmit.len/1000);
502 } 517 }
503 else 518 else
504 pdebug("tuple does not contain an artist or a title, not submitting.", DEBUG); 519 pdebug("tuple does not contain an artist or a title, not submitting.", DEBUG);