/[cvs]/nfo/perl/scripts/giantdisc/bin/gdgentools_extended.pm
ViewVC logotype

Contents of /nfo/perl/scripts/giantdisc/bin/gdgentools_extended.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (show annotations)
Fri Apr 1 02:14:50 2005 UTC (19 years, 3 months ago) by joko
Branch: MAIN
CVS Tags: HEAD
+ Feature: Activate specified playlist (via gdkeypad.pl)

1 #!/usr/bin/perl -w
2 #
3 ##################################################
4 #
5 # GiantDisc mp3 Jukebox, Extended Tool Functions:
6 # Activate Playlist by ID
7 #
8 # 2005 Andreas Motl
9 # Functions stolen from gdlircclient.pl
10 #
11 ##################################################
12
13
14 package gdgentools_extended;
15
16 use strict;
17 use warnings;
18
19
20 my $pl_list = 0; # playlist type
21
22 #my $digitL = 0; # low digit of playlist number
23 #my $digitH = 0; # high digit of playlist number
24
25
26 sub empty_tracklist {
27 my ($dbh, $playerid, $audiochannel) = @_; #parameters: database handle, player id, sound out it
28 # stop playing
29 gdgentools::stop_play_processes($dbh, $playerid, $audiochannel);
30 # reset list+state
31 gdgentools::tracklist_delete($dbh, $playerid, 0);
32 gdgentools::pll_write_playstate($dbh, $playerid, $audiochannel, 0, "st");
33 gdgentools::pll_write_playtime($dbh, $playerid, $audiochannel, 0, 0);
34 #gdgentools::pll_write_shuffleparameters($dbh, $playerid, $audiochannel, "", "");
35 }
36
37 sub playlist_to_tracklist {
38 my ($dbh, $playerid, $audiochannel, $playlist_id) = @_; #parameters: database handle, player id, sound out it
39 my $row;
40 my @tracklist;
41
42 # load all track ids for this playlist
43 my $stmt = $dbh->prepare(
44 "SELECT trackid FROM playlistitem "
45 ."WHERE playlist=$playlist_id ORDER BY tracknumber" );
46
47 $stmt->execute;
48
49 while( $row = $stmt->fetchrow_hashref) {
50 push( @tracklist, $row->{trackid});
51 }
52
53 $stmt->finish;
54
55 if( @tracklist) {
56 #debug( "New Tracklist\n@tracklist\n\n");
57
58 # Stop playing and drop tracklist
59 empty_tracklist($dbh, $playerid, $audiochannel);
60 # Set new tracklist
61 gdgentools::tracklist_append_list($dbh, $playerid, $pl_list, @tracklist);
62 }
63 else {
64 print( "Seems like the playlist is empty!\n");
65 }
66 }
67
68
69 sub cmd_call_playlist {
70 # I replace the current tracklist with a playlist.
71 # The name of the playlist is "x Some Text". Where x is a number
72 # between 0 and 99. It comes from $digitH$digitL.
73 # The number must be followed by a blank!!!
74 # E.g. "5 Greatest Hits 1889-2003"
75 # It's the same as with cmd_random_tracklist. I may confuse the palm...
76
77 my ($dbh, $playerid, $audiochannel, $plnum) = @_; #parameters: database handle, player id, sound out it
78
79 my $id;
80 my $title;
81 my $row;
82
83 #my $plnum = 10*$digitH + $digitL;
84 #$digitL = 0;
85 #$digitH = 0;
86
87 if (!$plnum) {
88 print "Error: Playlist ID not specified!", "\n";
89 return;
90 }
91
92 if( $plnum == 99) { # 99 is a special case. It loads random tracks.
93 print( "call cmd_call_random\n");
94 #cmd_call_random;
95 print( "Error: out-of-order!\n");
96 }
97 else {
98 # TODO: also query by title
99 my $stmt = $dbh->prepare( "SELECT id,title FROM playlist WHERE id=$plnum" );
100
101 $stmt->execute;
102
103 if( $row = $stmt->fetchrow_hashref){
104 # Playlist found
105 $id = $row->{id};
106 $title = $row->{title};
107 print( "Playlist $title Id $id\n");
108 # replace current tracklist with playlist.
109 playlist_to_tracklist($dbh, $playerid, $audiochannel, $id);
110
111 # automatically randomize the playlist
112 #if( $lircparms{"auto_random"} == 1)
113 #{
114 # cmd_random_tracklist();
115 #}
116 }
117 else {
118 print( "Playlist not found!\n");
119 }
120
121 $stmt->finish;
122 }
123 }
124
125 1;

MailToCvsAdmin">MailToCvsAdmin
ViewVC Help
Powered by ViewVC 1.1.26 RSS 2.0 feed