File Coverage

blib/lib/DCOP/Amarok/Player.pm
Criterion Covered Total %
statement 18 183 9.8
branch 0 6 0.0
condition 1 3 33.3
subroutine 5 75 6.6
pod 69 70 98.5
total 93 337 27.6


line stmt bran cond sub pod time code
1             package DCOP::Amarok::Player;
2              
3 1     1   25496 use 5.008001;
  1         4  
  1         42  
4 1     1   6 use strict;
  1         2  
  1         38  
5 1     1   5 use warnings;
  1         7  
  1         42  
6 1     1   5 use Carp;
  1         2  
  1         3234  
7             require DCOP::Amarok;
8              
9             our @ISA = qw(DCOP::Amarok);
10              
11             our $VERSION = '0.037';
12              
13             =head1 NAME
14              
15             DCOP::Amarok::Player - Perl extension to speak to an amaroK player object via system's DCOP.
16              
17             =head1 SYNOPSIS
18              
19             use DCOP::Amarok::Player;
20             $player = DCOP::Amarok::Player->new();
21              
22             $player->playPause();
23             print $player->getRandom();
24              
25             =head1 DESCRIPTION
26              
27             This module is a quick hack to get an interface between perl and Kde's DCOP,
28             since Kde3.4's perl bindings are disabled. This suite talks to 'dcop'.
29             DCOP::Amarok::Player talks directly to the player object of amaroK.
30              
31             =head1 EXPORT
32              
33             None by default.
34              
35             =head1 METHODS
36              
37             =cut
38              
39             =item new()
40              
41             Constructor. No arguments needed. If the program will be run remotely, the
42             need for 'user => "myusername"' arises.
43              
44             =cut
45              
46             sub new() {
47 1     1 1 7121 my $proto = shift;
48 1   33     19 my $class = ref( $proto ) || $proto;
49 1         9 my %params = @_;
50 1         20 my $self = $class->SUPER::new( %params, control => "player" );
51 1         3585 bless( $self, $class );
52 1         29 return $self;
53             }
54              
55             =item album()
56              
57             Returns the album name of currently playing song.
58              
59             =cut
60              
61             sub album() {
62 0     0 1   my $self = shift;
63 0           return $self->run( "album" );
64             }
65              
66             =item artist()
67              
68             Returns the artist performing currently playing song.
69              
70             =cut
71              
72             sub artist() {
73 0     0 1   my $self = shift;
74 0           return $self->run( "artist" );
75             }
76              
77             =item title()
78              
79             Returns the title of currently playing song.
80              
81             =cut
82              
83             sub title() {
84 0     0 1   my $self = shift;
85 0           return $self->run( "title" );
86             }
87              
88             =item playPause()
89              
90             =cut
91              
92             sub playPause() {
93 0     0 1   my $self = shift;
94 0           $self->run( "playPause" );
95             }
96              
97             =item play()
98              
99              
100             =cut
101              
102             sub play() {
103 0     0 1   my $self = shift;
104 0           $self->run( "play" );
105             }
106              
107             =item pause()
108              
109             =cut
110              
111             sub pause() {
112 0     0 1   my $self = shift;
113 0           $self->run( "pause" );
114             }
115              
116             =item stop()
117              
118             =cut
119              
120             sub stop() {
121 0     0 1   my $self = shift;
122 0           $self->run( "stop" );
123             }
124              
125             =item next()
126              
127             =cut
128              
129             sub next() {
130 0     0 1   my $self = shift;
131 0           $self->run( "next" );
132             }
133              
134             =item prev()
135              
136             =cut
137              
138             sub prev() {
139 0     0 1   my $self = shift;
140 0           $self->run( "prev" );
141             }
142              
143             =item getRandom()
144              
145             Returns the status of the Shuffle play mode.
146              
147             =cut
148              
149             sub getRandom() {
150 0     0 1   my $self = shift;
151 0           return $self->run( "randomModeStatus" );
152             }
153              
154             =item toggleRandom()
155              
156             Toggles the Random play mode. Returns the new state.
157              
158             =cut
159              
160             sub toggleRandom() {
161              
162             # returns new status of randomness
163 0     0 1   my $self = shift;
164 0           chomp( $_ = $self->getRandom() );
165 0 0         if ( $_ =~ /true/ ) {
166 0           $self->run( "enableRandomMode", "0" );
167             } else {
168 0           $self->run( "enableRandomMode", "1" );
169             }
170 0           return $self->getRandom();
171             }
172              
173             =item mute()
174              
175             =cut
176              
177             sub mute() {
178 0     0 1   my $self = shift;
179 0           $self->run( "mute" );
180             }
181              
182             =item volumeUp()
183              
184             =cut
185              
186             sub volumeUp() {
187 0     0 1   my $self = shift;
188 0           $self->run( "volumeUp" );
189             }
190              
191             =item volumeDown()
192              
193             =cut
194              
195             sub volumeDown() {
196 0     0 1   my $self = shift;
197 0           $self->run( "volumeDown" );
198             }
199              
200             =item getVolume()
201              
202             Returns the volume level.
203              
204             =cut
205              
206             sub getVolume() {
207 0     0 1   my $self = shift;
208 0           return $self->run( "getVolume" );
209             }
210              
211             =item status()
212              
213             Returns the playing status of amaroK.
214             0: Stopped, 1: Paused, 2: Playing
215              
216             =cut
217              
218             sub status() {
219 0     0 1   my $self = shift;
220 0           return $self->run( "status" );
221             }
222              
223             =item track()
224              
225             Returns the track number of the song that is currently being played.
226              
227             =cut
228              
229             sub track() {
230 0     0 1   my $self = shift;
231 0           return $self->run( "track" );
232             }
233              
234             =item totalTime()
235              
236             Returns in MM:SS the total playing time of the song that is currently being played.
237              
238             =cut
239              
240             sub totalTime() {
241 0     0 1   my $self = shift;
242 0           return $self->run( "totalTime" );
243             }
244              
245             =item currentTime()
246              
247             Returns in MM:SS the elapsed time of the song that is currently being played.
248              
249             =cut
250              
251             sub currentTime() {
252 0     0 1   my $self = shift;
253 0           return $self->run( "currentTime" );
254             }
255              
256             =item totaltimesecs()
257              
258             Returns in seconds the total playing time of the song that is currently being played.
259              
260             =cut
261              
262             sub trackTotalTime() {
263 0     0 0   my $self = shift;
264 0           return $self->run( "trackTotalTime" );
265             }
266              
267             =item trackCurrentTime()
268              
269             Returns in seconds the elapsed time of the song that is currently being played.
270              
271             =cut
272              
273             sub trackCurrentTime() {
274 0     0 1   my $self = shift;
275 0           return $self->run( "trackCurrentTime" );
276             }
277              
278             sub _mins() {
279 0     0     my $self = shift;
280 0           my $totsecs = shift;
281 0           my $secs = $totsecs % 60;
282 0           my $mins = ( $totsecs - $secs ) / 60;
283 0 0         $secs = '0' . $secs if ( $secs < 10 );
284 0           return "${mins}:${secs}";
285             }
286              
287             =item fwd()
288              
289             Fast forwards 5 seconds the song.
290              
291             =cut
292              
293             sub fwd() {
294 0     0 1   my $self = shift;
295 0           $self->run( "seekRelative", "+5" );
296             }
297              
298             =item rew()
299              
300             Rewinds 5 seconds the song.
301              
302             =cut
303              
304             sub rew() {
305 0     0 1   my $self = shift;
306 0           $self->run( "seekRelative", "-5" );
307             }
308              
309             =item lyrics()
310              
311             Returns the lyrics of the song that is currently being played.
312              
313             =cut
314              
315             sub lyrics() {
316 0     0 1   my $self = shift;
317 0           return $self->run( "lyrics" );
318             }
319              
320             =item interfaces()
321              
322             Returns the interfaces registered with amaroK.
323              
324             =cut
325              
326             sub interfaces() {
327 0     0 1   my $self = shift;
328 0           return $self->run( "interfaces" );
329             }
330              
331             =item functions()
332              
333             Returns functions available to amaroK.
334              
335             =cut
336              
337             sub functions() {
338 0     0 1   my $self = shift;
339 0           return $self->run( "functions" );
340             }
341              
342             =item dynamicModeStatus()
343              
344             Returns status.
345              
346             =cut
347              
348             sub dynamicModeStatus() {
349 0     0 1   my $self = shift;
350 0           return $self->run( "dynamicModeStatus" );
351             }
352              
353             =item equalizerEnabled()
354              
355             Returns whether it is enabled or not.
356              
357             =cut
358              
359             sub equalizerEnabled() {
360 0     0 1   my $self = shift;
361 0           return ->run( "equalizerEnabled" );
362             }
363              
364             =item isPlaying()
365              
366              
367             =cut
368              
369             sub isPlaying() {
370 0     0 1   my $self = shift;
371 0           return $self->run( "isPlaying" );
372             }
373              
374             =item randomModeStatus()
375              
376             =cut
377              
378             sub randomModeStatus() {
379 0     0 1   my $self = shift;
380 0           return $self->run( "randomModeStatus" );
381             }
382              
383             =item repeatPlaylistStatus()
384              
385             =cut
386              
387              
388             sub repeatPlaylistStatus() {
389 0     0 1   my $self = shift;
390 0           return $self->run( "repeatPlaylistStatus" );
391             }
392              
393             =item repeatTrackStatus()
394              
395              
396              
397             =cut
398              
399             sub repeatTrackStatus() {
400 0     0 1   my $self = shift;
401 0           return $self->run( "repeatTrackStatus" );
402             }
403              
404             =item sampleRate()
405              
406              
407              
408             =cut
409              
410             sub sampleRate() {
411 0     0 1   my $self = shift;
412 0           return $self->run( "sampleRate" );
413             }
414              
415             =item score()
416              
417              
418              
419             =cut
420              
421             sub score() {
422 0     0 1   my $self = shift;
423 0           return $self->run( "score" );
424             }
425              
426             =item trackPlayCounter()
427              
428              
429              
430             =cut
431              
432             sub trackPlayCounter() {
433 0     0 1   my $self = shift;
434 0           return $self->run( "trackPlayCounter" );
435             }
436              
437             =item bitrate()
438              
439              
440              
441             =cut
442              
443              
444             sub bitrate() {
445 0     0 1   my $self = shift;
446 0           return $self->run( "bitrate" );
447             }
448              
449             =item comment()
450              
451              
452              
453             =cut
454              
455             sub comment() {
456 0     0 1   my $self = shift;
457 0           return $self->run( "comment" );
458             }
459              
460             =item coverImage()
461              
462             Returns the encoded image url.
463              
464             =cut
465              
466             sub coverImage() {
467 0     0 1   my $self = shift;
468 0           return $self->run( "coverImage" );
469             }
470              
471             =item encodedURL()
472              
473             Returns the encoded URL of the currently playing track.
474              
475             =cut
476              
477             sub encodedURL() {
478 0     0 1   my $self = shift;
479 0           return $self->run( "encodedURL" );
480             }
481              
482             =item engine()
483              
484             Returns which engine is being used.
485              
486             =cut
487              
488             sub engine() {
489 0     0 1   my $self = shift;
490 0           return $self->run( "engine" );
491             }
492              
493             =item genre()
494              
495              
496              
497             =cut
498              
499             sub genre() {
500 0     0 1   my $self = shift;
501 0           return $self->run( "genre" );
502             }
503              
504             =item lyricsByPath()
505              
506              
507              
508             =cut
509              
510             sub lyricsByPath() {
511 0     0 1   my $self = shift;
512 0           my $path = shift;
513 0           return $self->run( "lyricsByPath", "$path" );
514             }
515              
516             =item nowPlaying()
517              
518             Returns the title.
519              
520             =cut
521              
522             sub nowPlaying() {
523 0     0 1   my $self = shift;
524 0           return $self->run( "nowPlaying" );
525             }
526              
527             =item path()
528              
529              
530              
531             =cut
532              
533             sub path() {
534 0     0 1   my $self = shift;
535 0           return $self->run( "path" );
536             }
537              
538             =item setContextStyle($style)
539              
540             =cut
541              
542             sub setContextStyle() {
543 0     0 1   my $self = shift;
544 0           my $style = shift;
545 0           return $self->run( "setContextStyle", "$style" );
546             }
547              
548             =item type()
549              
550             =cut
551              
552             sub type() {
553 0     0 1   my $self = shift;
554 0           return $self->run( "type" );
555             }
556              
557             =item year()
558              
559              
560              
561             =cut
562              
563             sub year() {
564 0     0 1   my $self = shift;
565 0           return $self->run( "year" );
566             }
567              
568             =item configEqualizer()
569              
570              
571              
572             =cut
573              
574             sub configEqualizer() {
575 0     0 1   my $self = shift;
576 0           $self->run( "configEqualizer" );
577             }
578              
579             =item enableDynamicMode($enable)
580              
581             Bool.
582              
583             =cut
584              
585             sub enableDynamicMode() {
586 0     0 1   my $self = shift;
587 0           my $enable = shift;
588 0           $self->run( "enableDynamicMode", "$enable" );
589             }
590              
591             =item enableOSD($enable)
592              
593             Bool.
594              
595             =cut
596              
597             sub enableOSD() {
598 0     0 1   my $self = shift;
599 0           my $enable = shift;
600 0           $self->run( "enableOSD", "$enable" );
601             }
602              
603             =item enableRepeatPlaylist($enable)
604              
605             Bool.
606              
607             =cut
608              
609             sub enableRepeatPlaylist() {
610 0     0 1   my $self = shift;
611 0           my $enable = shift;
612 0           $self->run( "enableRepeatPlaylist", "$enable" );
613             }
614              
615             =item enableRandomMode($enable)
616              
617             Bool.
618              
619             =cut
620              
621             sub enableRandomMode() {
622 0     0 1   my $self = shift;
623 0           my $enable = shift;
624 0           $self->run( "enableRandomMode", "$enable" );
625             }
626              
627             =item enableRepeatTrack($enable)
628              
629             Bool.
630              
631             =cut
632              
633             sub enableRepeatTrack() {
634 0     0 1   my $self = shift;
635 0           my $enable = shift;
636 0           $self->run( "enableRepeatTrack", "$enable" );
637             }
638              
639             =item mediaDeviceMount()
640              
641              
642              
643             =cut
644              
645             sub mediaDeviceMount() {
646 0     0 1   my $self = shift;
647 0           $self->run( "mediaDeviceMount" );
648             }
649              
650             =item mediaDeviceUmount()
651              
652              
653              
654             =cut
655              
656             sub mediaDeviceUmount() {
657 0     0 1   my $self = shift;
658 0           $self->run( "mediaDeviceUmount" );
659             }
660              
661             =item queueForTransfer()
662              
663              
664              
665             =cut
666              
667             sub queueForTransfer() {
668 0     0 1   my $self = shift;
669 0           my $url = shift;
670 0           $self->run( "queueForTransfer", "$url" );
671             }
672              
673             =item seek($secs)
674              
675              
676              
677             =cut
678              
679             sub seek() {
680 0     0 1   my $self = shift;
681 0           my $secs = shift;
682 0           $self->run( "seek", "$secs" );
683             }
684              
685             =item seekRelative($secs)
686              
687              
688              
689             =cut
690              
691             sub seekRelative() {
692 0     0 1   my $self = shift;
693 0           my $location = shift;
694 0           $self->run( "seekRelative", "$location" );
695             }
696              
697             =item setEqualizer(@args)
698              
699             11 values.
700              
701             =cut
702              
703             sub setEqualizer() {
704 0     0 1   my $self = shift;
705 0 0         $self->run( "setEqualizer", @_ ) or croak("Arguments must be 11.");
706             }
707              
708             =item setEqualizerEnabled($enable)
709              
710             Bool.
711              
712             =cut
713              
714             sub setEqualizerEnabled() {
715 0     0 1   my $self = shift;
716 0           my $enable = shift;
717 0           $self->run( "setEqualizerEnabled", "$enable" );
718             }
719              
720             =item setEqualizerPreset($url)
721              
722              
723              
724             =cut
725              
726             sub setEqualizerPreset() {
727 0     0 1   my $self = shift;
728 0           my $url = shift;
729 0           $self->run( "setEqualizerPreset", "$url" );
730             }
731              
732             =item setLyricsByPath($url, $lyrics)
733              
734              
735              
736             =cut
737              
738             sub setLyricsByPath() {
739 0     0 1   my $self = shift;
740 0           my ($url, $lyrics) = @_;
741 0           $self->run( "setLyricsByPath", "$url", "$lyrics" );
742             }
743              
744             =item setScore($score)
745              
746              
747              
748             =cut
749              
750             sub setScore() {
751 0     0 1   my $self = shift;
752 0           my $score = shift;
753 0           $self->run( "setScore", "$score" );
754             }
755              
756             =item setScoreByPath($url, $score)
757              
758              
759              
760             =cut
761              
762             sub setScoreByPath() {
763 0     0 1   my $self = shift;
764 0           my ($url, $score) = @_;
765 0           $self->run( "setScoreByPath", "$url", "$score" );
766             }
767              
768             =item setVolume($volume)
769              
770             =cut
771              
772              
773             sub setVolume() {
774 0     0 1   my $self = shift;
775 0           my $volume = shift;
776 0           $self->run( "setVolume", "$volume" );
777             }
778              
779             =item showBrowser($enable)
780              
781             =cut
782              
783              
784             sub showBrowser() {
785 0     0 1   my $self = shift;
786 0           my $show = shift;
787 0           $self->run( "showBrowser", "$show" );
788             }
789              
790             =item showOSD()
791              
792             =cut
793              
794              
795             sub showOSD() {
796 0     0 1   my $self = shift;
797 0           $self->run( "showOSD" );
798             }
799              
800             =item transferDeviceFiles()
801              
802              
803              
804             =cut
805              
806             sub transferDeviceFiles() {
807 0     0 1   my $self = shift;
808 0           $self->run( "transferDeviceFiles" );
809             }
810              
811             =item transferCliArgs(@args)
812              
813             =cut
814              
815             sub transferCliArgs() {
816 0     0 1   my $self = shift;
817 0           $self->run( "transferCliArgs", join(" ", @_) );
818             }
819              
820             *elapsedsecs = \&trackCurrentTime,
821             *elapsed = \¤tTime,
822             *totaltimesecs = \&trackTotalTime,
823             *totaltime = \&totalTime,
824             *vol = \&getVolume,
825             *volUp = \&volumeUp,
826             *volDn = \&volumeDown;
827              
828             =item elapsedsecs()
829              
830             Provided for backwards compatibility. Use trackCurrentTime().
831              
832             =item elapsed()
833              
834             Provided for backwards compatibility. Use currentTime().
835              
836             =item totaltimesecs()
837              
838             Provided for backwards compatibility. Use trackTotalTime().
839              
840             =item totaltime()
841              
842             Provided for backwards compatibility. Use totalTime().
843              
844             =cut
845              
846             =item vol()
847              
848             Provided for backwards compatibility. Use getVolume().
849              
850             =item volUp()
851              
852             Provided for backwards compatibility. Use volumeUp().
853              
854             =item volDn()
855              
856             Provided for backwards compatibility. Use volumeDown().
857              
858             =cut
859              
860             1;
861             __END__