#!/usr/bin/perl # # Author: # Wojciech Baranski # E-mail: # wojciech_baranski@yahoo.com # Wojciech.Baranski@informix.com # # This program may be distributed under the GPL (GNU Public License). # THIS SOFTWARE COMES WITH ABSOLUTELY NO WARRANTY! USE IT AT YOUR OWN RISK ! # I only gently ask that You notify me of changes You made, so I can improve # it further. Thank You. # # # mp3play is a frontend for mpg123 version 0.59r and above (having the control # keys mode capability), so if You don't have it You must download it from # http://mpg.123.org/ or this frontend won't be useful for You. # # # use POSIX; use Term::Cap; use Ioctl qw/TIOCGWINSZ TIOCSWINSZ/; $0=~s/^.*\///; # remove path from program name $0=~s/$/: /; # add ": " to the end of program # name select(STDOUT); $|=1; # make STDOUT unbuffered open(ERROR_STREAM,">&STDERR"); # define STDERR for default # error output stream select(ERROR_STREAM); $|=1; # make ERROR_STREAM unbuffered setpgrp(0,0); # set process group $Width=80; # terminal width $Height=25; # terminal height $WindowSize=''; ioctl(STDIN,&TIOCGWINSZ,$WindowSize); ($Height,$Width,$XPixel,$YPixel)=unpack("S4",$WindowSize); print(ERROR_STREAM $0."Terminal is too small. Quit.\n"),MyExit(1) if(($Width<80)||($Height<25)); $OldWindowSize=$WindowSize; $TermCap=Tgetent Term::Cap { OSPEED => 9600 }; # read termcap capabilities eval {$TermCap->Trequire(qw/cm cl/)}; print(ERROR_STREAM $0.$@),MyExit(1) if($@); # require "cm" and "cl" eval {$TermCap->Trequire(qw/vi/)}; if(!$@) { # if "vi" supported then # require "ve" eval {$TermCap->Trequire(qw/vi ve/)}; print(ERROR_STREAM $0.$@),MyExit(1) if($@); } $Terminal=POSIX::Termios->new(); $Terminal->getattr(fileno(STDIN)); # get terminal attributes $OldTerminalSettings=$Terminal->getlflag(); # store terminal attributes $SIG{QUIT}=\&SignalHandler; # set signal handling routine $SIG{STOP}=\&SignalHandler; $SIG{ABRT}=\&SignalHandler; $SIG{KILL}=\&SignalHandler; $SIG{HUP}=\&SignalHandler; $SIG{TERM}=\&SignalHandler; $SIG{INT}=\&SignalHandler; $SIG{TSTP}=\&SignalHandler; $SIG{WINCH}=\&WinCHSignalHandler; # set used keys $TermcapEntry{"kd"}=$TermCap->{'_kd'} if($TermCap->{'_kd'} ne ""); $TermcapEntry{"ku"}=$TermCap->{'_ku'} if($TermCap->{'_ku'} ne ""); $TermcapEntry{"kN"}=$TermCap->{'_kN'} if($TermCap->{'_kN'} ne ""); $TermcapEntry{"kP"}=$TermCap->{'_kP'} if($TermCap->{'_kP'} ne ""); $TermcapEntry{"kH"}=$TermCap->{'_kH'} if($TermCap->{'_kH'} ne ""); $TermcapEntry{"kh"}=$TermCap->{'_kh'} if($TermCap->{'_kh'} ne ""); $TermcapEntry{"kl"}=$TermCap->{'_kl'} if($TermCap->{'_kl'} ne ""); $TermcapEntry{"kr"}=$TermCap->{'_kr'} if($TermCap->{'_kr'} ne ""); $TermcapEntry{"kD"}=$TermCap->{'_kD'} if($TermCap->{'_kD'} ne ""); $TermcapEntry{"kI"}=$TermCap->{'_kI'} if($TermCap->{'_kI'} ne ""); $TermcapEntryReadingLine{"kb"}=$TermCap->{'_kb'} if($TermCap->{'_kb'} ne ""); $TermcapEntryReadingLine{"kD"}=$TermCap->{'_kD'} if($TermCap->{'_kD'} ne ""); $TermcapEntryReadingLine{"bs"}=pack("C",8); # ASCII "Ctrl-H" $OGON="\033(U"; # sequence to put terminal into # PC keys mode $OGOFF="\033(B"; # sequence to put terminal out # of PC keys mode # definition of varius special # characters used for display. # the second argument 0 or 1 is # defines characters for 8-bit # and 7-bit mode respectively. $Display{"hline",0}=$TermCap->{'_as'}."q".$TermCap->{'_ae'}; $Display{"hline",1}="-"; $Display{"ulcorner",0}=$TermCap->{'_as'}."l".$TermCap->{'_ae'}; $Display{"ulcorner",1}="+"; $Display{"urcorner",0}=$TermCap->{'_as'}."k".$TermCap->{'_ae'}; $Display{"urcorner",1}="+"; $Display{"llcorner",0}=$TermCap->{'_as'}."m".$TermCap->{'_ae'}; $Display{"llcorner",1}="+"; $Display{"lrcorner",0}=$TermCap->{'_as'}."j".$TermCap->{'_ae'}; $Display{"lrcorner",1}="+"; $Display{"vline",0}=$TermCap->{'_as'}."x".$TermCap->{'_ae'}; $Display{"vline",1}="|"; $Display{"ltitle",0}=$TermCap->{'_as'}."u".$TermCap->{'_ae'}; $Display{"ltitle",1}="|"; $Display{"rtitle",0}=$TermCap->{'_as'}."t".$TermCap->{'_ae'}; $Display{"rtitle",1}="|"; $Display{"stop",0}=$TermCap->{'_as'}."i".$TermCap->{'_ae'}." "; $Display{"stop",1}="[]"; $Display{"pause",0}="||"; $Display{"pause",1}="||"; $Display{"play",0}=" ".$OGON."\020".$OGOFF; $Display{"play",1}=" >"; $Display{"previous",0}="|".$OGON."\021".$OGOFF; $Display{"previous",1}="|<"; $Display{"begin",0}=$OGON."\036\036".$OGOFF; $Display{"begin",1}="^^"; $Display{"next",0}=$OGON."\020".$OGOFF."|"; $Display{"next",1}=">|"; $Display{"rewind",0}=$OGON."\021\021".$OGOFF; $Display{"rewind",1}="<<"; $Display{"forward",0}=$OGON."\020\020".$OGOFF; $Display{"forward",1}=">>"; $Display{"checked",0}=$TermCap->{'_as'}."\`".$TermCap->{'_ae'}; $Display{"checked",1}="x"; $Display{"vbar_bg",0}=$TermCap->{'_as'}."h".$TermCap->{'_ae'}; $Display{"vbar_bg",1}="@"; $Display{"vbar_fg",0}=$TermCap->{'_as'}."0".$TermCap->{'_ae'}; $Display{"vbar_fg",1}=":"; $Display{"hbar_bg",0}=$TermCap->{'_as'}."h".$TermCap->{'_ae'}; $Display{"hbar_bg",1}="@"; $Display{"hbar_fg",0}=$TermCap->{'_as'}."0".$TermCap->{'_ae'}; $Display{"hbar_fg",1}=":"; $Display{"current",0}=$TermCap->{'_as'}."\`".$TermCap->{'_ae'}; $Display{"current",1}="*"; $Display{"lselected",0}=$OGON."\020".$OGOFF; $Display{"lselected",1}=">"; $Display{"rselected",0}=$OGON."\021".$OGOFF; $Display{"rselected",1}="<"; $MusicT{pack("C","0")}="Blues"; # definitions of music type $MusicT{pack("C","1")}="Classic Rock"; # in MP3 tag $MusicT{pack("C","2")}="Country"; $MusicT{pack("C","3")}="Dance"; $MusicT{pack("C","4")}="Disco"; $MusicT{pack("C","5")}="Funk"; $MusicT{pack("C","6")}="Grunge"; $MusicT{pack("C","7")}="Hip-Hop"; $MusicT{pack("C","8")}="Jazz"; $MusicT{pack("C","9")}="Metal"; $MusicT{pack("C","10")}="New Age"; $MusicT{pack("C","11")}="Oldies"; $MusicT{pack("C","12")}="Other"; $MusicT{pack("C","13")}="Pop"; $MusicT{pack("C","14")}="R&B"; $MusicT{pack("C","15")}="Rap"; $MusicT{pack("C","16")}="Reggae"; $MusicT{pack("C","17")}="Rock"; $MusicT{pack("C","18")}="Techno"; $MusicT{pack("C","19")}="Industrial"; $MusicT{pack("C","20")}="Alternative"; $MusicT{pack("C","21")}="Ska"; $MusicT{pack("C","22")}="Death Metal"; $MusicT{pack("C","23")}="Pranks"; $MusicT{pack("C","24")}="Soundtrack"; $MusicT{pack("C","25")}="Euro-Techno"; $MusicT{pack("C","26")}="Ambient"; $MusicT{pack("C","27")}="Trip-Hop"; $MusicT{pack("C","28")}="Vocal"; $MusicT{pack("C","29")}="Jazz+Funk"; $MusicT{pack("C","30")}="Fusion"; $MusicT{pack("C","31")}="Trance"; $MusicT{pack("C","32")}="Classical"; $MusicT{pack("C","33")}="Instrumental"; $MusicT{pack("C","34")}="Acid"; $MusicT{pack("C","35")}="House"; $MusicT{pack("C","36")}="Game"; $MusicT{pack("C","37")}="Sound Clip"; $MusicT{pack("C","38")}="Gospel"; $MusicT{pack("C","39")}="Noise"; $MusicT{pack("C","40")}="Alternative Rock"; $MusicT{pack("C","41")}="Bass"; $MusicT{pack("C","42")}="Soul"; $MusicT{pack("C","43")}="Punk"; $MusicT{pack("C","44")}="Space"; $MusicT{pack("C","45")}="Meditative"; $MusicT{pack("C","46")}="Instrumental Pop"; $MusicT{pack("C","47")}="Instrumental Rock"; $MusicT{pack("C","48")}="Ethnic"; $MusicT{pack("C","49")}="Gothic"; $MusicT{pack("C","50")}="Darkwave"; $MusicT{pack("C","51")}="Techno-Industrial"; $MusicT{pack("C","52")}="Electronic"; $MusicT{pack("C","53")}="Pop-Folk"; $MusicT{pack("C","54")}="Eurodance"; $MusicT{pack("C","55")}="Dream"; $MusicT{pack("C","56")}="Southern Rock"; $MusicT{pack("C","57")}="Comedy"; $MusicT{pack("C","58")}="Cult"; $MusicT{pack("C","59")}="Gangsta"; $MusicT{pack("C","60")}="Top 40"; $MusicT{pack("C","61")}="Christian Rap"; $MusicT{pack("C","62")}="Pop/Funk"; $MusicT{pack("C","63")}="Jungle"; $MusicT{pack("C","64")}="Native US"; $MusicT{pack("C","65")}="Cabaret"; $MusicT{pack("C","66")}="New Wave"; $MusicT{pack("C","67")}="Psychadelic"; $MusicT{pack("C","68")}="Rave"; $MusicT{pack("C","69")}="Showtunes"; $MusicT{pack("C","70")}="Trailer"; $MusicT{pack("C","71")}="Lo-Fi"; $MusicT{pack("C","72")}="Tribal"; $MusicT{pack("C","73")}="Acid Punk"; $MusicT{pack("C","74")}="Acid Jazz"; $MusicT{pack("C","75")}="Polka"; $MusicT{pack("C","76")}="Retro"; $MusicT{pack("C","77")}="Musical"; $MusicT{pack("C","78")}="Rock & Roll"; $MusicT{pack("C","79")}="Hard Rock"; $MusicT{pack("C","80")}="Folk"; $MusicT{pack("C","81")}="Folk-Rock"; $MusicT{pack("C","82")}="National Folk"; $MusicT{pack("C","83")}="Swing"; $MusicT{pack("C","84")}="Fast Fusion"; $MusicT{pack("C","85")}="Bebob"; $MusicT{pack("C","86")}="Latin"; $MusicT{pack("C","87")}="Revival"; $MusicT{pack("C","88")}="Celtic"; $MusicT{pack("C","89")}="Bluegrass"; $MusicT{pack("C","90")}="Avantgarde"; $MusicT{pack("C","91")}="Gothic Rock"; $MusicT{pack("C","92")}="Progressive Rock"; $MusicT{pack("C","93")}="Psychedelic Rock"; $MusicT{pack("C","94")}="Symphonic Rock"; $MusicT{pack("C","95")}="Slow Rock"; $MusicT{pack("C","96")}="Big Band"; $MusicT{pack("C","97")}="Chorus"; $MusicT{pack("C","98")}="Easy Listening"; $MusicT{pack("C","99")}="Acoustic"; $MusicT{pack("C","100")}="Humour"; $MusicT{pack("C","101")}="Speech"; $MusicT{pack("C","102")}="Chanson"; $MusicT{pack("C","103")}="Opera"; $MusicT{pack("C","104")}="Chamber Music"; $MusicT{pack("C","105")}="Sonata"; $MusicT{pack("C","106")}="Symphony"; $MusicT{pack("C","107")}="Booty Bass"; $MusicT{pack("C","108")}="Primus"; $MusicT{pack("C","109")}="Porn Groove"; $MusicT{pack("C","110")}="Satire"; $MusicT{pack("C","111")}="Slow Jam"; $MusicT{pack("C","112")}="Club"; $MusicT{pack("C","113")}="Tango"; $MusicT{pack("C","114")}="Samba"; $MusicT{pack("C","115")}="Folklore"; $MusicT{pack("C","116")}="Ballad"; $MusicT{pack("C","117")}="Power Ballad"; $MusicT{pack("C","118")}="Rythmic Soul"; $MusicT{pack("C","119")}="Freestyle"; $MusicT{pack("C","120")}="Duet"; $MusicT{pack("C","121")}="Punk Rock"; $MusicT{pack("C","122")}="Drum Solo"; $MusicT{pack("C","123")}="Acapella"; $MusicT{pack("C","124")}="Euro-House"; $MusicT{pack("C","125")}="Dance Hall"; $MusicT{pack("C","126")}="Goa"; $MusicT{pack("C","127")}="Drum & Bass"; $MusicT{pack("C","128")}="Club-House"; $MusicT{pack("C","129")}="Hardcore"; $MusicT{pack("C","130")}="Terror"; $MusicT{pack("C","131")}="Indie"; $MusicT{pack("C","132")}="BritPop"; $MusicT{pack("C","133")}="Negerpunk"; $MusicT{pack("C","134")}="Polsk Punk"; $MusicT{pack("C","135")}="Beat"; $MusicT{pack("C","136")}="Christian Gangsta Rap"; $MusicT{pack("C","137")}="Heavy Metal"; $MusicT{pack("C","138")}="Black Metal"; $MusicT{pack("C","139")}="Crossover"; $MusicT{pack("C","140")}="Contemporary Christian"; $MusicT{pack("C","141")}="Christian Rock"; $MusicT{pack("C","142")}="Marengue"; $MusicT{pack("C","143")}="Salsa"; $MusicT{pack("C","144")}="Trash Metal"; $MusicT{pack("C","145")}="Anime"; $MusicT{pack("C","146")}="Jpop"; $MusicT{pack("C","147")}="Synthpop"; $MusicT{pack("C","148")}="Unknown"; $MusicT{pack("C","149")}="Unknown"; $MusicT{pack("C","150")}="Unknown"; $MusicT{pack("C","151")}="Unknown"; $MusicT{pack("C","152")}="Unknown"; $MusicT{pack("C","153")}="Unknown"; $MusicT{pack("C","154")}="Unknown"; $MusicT{pack("C","155")}="Unknown"; $MusicT{pack("C","156")}="Unknown"; $MusicT{pack("C","157")}="Unknown"; $MusicT{pack("C","158")}="Unknown"; $MusicT{pack("C","159")}="Unknown"; $MusicT{pack("C","160")}="Unknown"; $MusicT{pack("C","161")}="Unknown"; $MusicT{pack("C","162")}="Unknown"; $MusicT{pack("C","163")}="Unknown"; $MusicT{pack("C","164")}="Unknown"; $MusicT{pack("C","165")}="Unknown"; $MusicT{pack("C","166")}="Unknown"; $MusicT{pack("C","167")}="Unknown"; $MusicT{pack("C","168")}="Unknown"; $MusicT{pack("C","169")}="Unknown"; $MusicT{pack("C","170")}="Unknown"; $MusicT{pack("C","171")}="Unknown"; $MusicT{pack("C","172")}="Unknown"; $MusicT{pack("C","173")}="Unknown"; $MusicT{pack("C","174")}="Unknown"; $MusicT{pack("C","175")}="Unknown"; $MusicT{pack("C","176")}="Unknown"; $MusicT{pack("C","177")}="Unknown"; $MusicT{pack("C","178")}="Unknown"; $MusicT{pack("C","179")}="Unknown"; $MusicT{pack("C","180")}="Unknown"; $MusicT{pack("C","181")}="Unknown"; $MusicT{pack("C","182")}="Unknown"; $MusicT{pack("C","183")}="Unknown"; $MusicT{pack("C","184")}="Unknown"; $MusicT{pack("C","185")}="Unknown"; $MusicT{pack("C","186")}="Unknown"; $MusicT{pack("C","187")}="Unknown"; $MusicT{pack("C","188")}="Unknown"; $MusicT{pack("C","189")}="Unknown"; $MusicT{pack("C","190")}="Unknown"; $MusicT{pack("C","191")}="Unknown"; $MusicT{pack("C","192")}="Unknown"; $MusicT{pack("C","193")}="Unknown"; $MusicT{pack("C","194")}="Unknown"; $MusicT{pack("C","195")}="Unknown"; $MusicT{pack("C","196")}="Unknown"; $MusicT{pack("C","197")}="Unknown"; $MusicT{pack("C","198")}="Unknown"; $MusicT{pack("C","199")}="Unknown"; $MusicT{pack("C","200")}="Unknown"; $MusicT{pack("C","201")}="Unknown"; $MusicT{pack("C","202")}="Unknown"; $MusicT{pack("C","203")}="Unknown"; $MusicT{pack("C","204")}="Unknown"; $MusicT{pack("C","205")}="Unknown"; $MusicT{pack("C","206")}="Unknown"; $MusicT{pack("C","207")}="Unknown"; $MusicT{pack("C","208")}="Unknown"; $MusicT{pack("C","209")}="Unknown"; $MusicT{pack("C","210")}="Unknown"; $MusicT{pack("C","211")}="Unknown"; $MusicT{pack("C","212")}="Unknown"; $MusicT{pack("C","213")}="Unknown"; $MusicT{pack("C","214")}="Unknown"; $MusicT{pack("C","215")}="Unknown"; $MusicT{pack("C","216")}="Unknown"; $MusicT{pack("C","217")}="Unknown"; $MusicT{pack("C","218")}="Unknown"; $MusicT{pack("C","219")}="Unknown"; $MusicT{pack("C","220")}="Unknown"; $MusicT{pack("C","221")}="Unknown"; $MusicT{pack("C","222")}="Unknown"; $MusicT{pack("C","223")}="Unknown"; $MusicT{pack("C","224")}="Unknown"; $MusicT{pack("C","225")}="Unknown"; $MusicT{pack("C","226")}="Unknown"; $MusicT{pack("C","227")}="Unknown"; $MusicT{pack("C","228")}="Unknown"; $MusicT{pack("C","229")}="Unknown"; $MusicT{pack("C","230")}="Unknown"; $MusicT{pack("C","231")}="Unknown"; $MusicT{pack("C","232")}="Unknown"; $MusicT{pack("C","233")}="Unknown"; $MusicT{pack("C","234")}="Unknown"; $MusicT{pack("C","235")}="Unknown"; $MusicT{pack("C","236")}="Unknown"; $MusicT{pack("C","237")}="Unknown"; $MusicT{pack("C","238")}="Unknown"; $MusicT{pack("C","239")}="Unknown"; $MusicT{pack("C","240")}="Unknown"; $MusicT{pack("C","241")}="Unknown"; $MusicT{pack("C","242")}="Unknown"; $MusicT{pack("C","243")}="Unknown"; $MusicT{pack("C","244")}="Unknown"; $MusicT{pack("C","245")}="Unknown"; $MusicT{pack("C","246")}="Unknown"; $MusicT{pack("C","247")}="Unknown"; $MusicT{pack("C","248")}="Unknown"; $MusicT{pack("C","249")}="Unknown"; $MusicT{pack("C","250")}="Unknown"; $MusicT{pack("C","251")}="Unknown"; $MusicT{pack("C","252")}="Unknown"; $MusicT{pack("C","253")}="Unknown"; $MusicT{pack("C","254")}="Unknown"; $MusicT{pack("C","255")}="Unknown"; $MPG123="mpg123"; # command to run mpg123 push @MPG123_OPTIONS,"--aggressive"; # try to get higher priority push @MPG123_OPTIONS,"-C"; # enable control keys $DontReadMP3InfoOnLoad=0; # whether to read MP3 file info # on startup or not. If this # varaible is set to 0 then all # MP3 info is read at the # program startup, so it may # take a while before any song # will start playing. $MusicType=0; # whether to display music type $Year=0; # whether to display year $Directory=0; # whether to display directory $Filename=0; # whether to display filename $Title=1; # whether to display title $Album=0; # whether to display ablum $Artist=1; # whether to display artist $Random=0; # whether to play in random # order $Loop=0; # whether to loop playlist $LoopTrack=0; # whether to loop current track $Numbers=1; # whether to display track # number $SortBy=""; # what to sort by $DescendingSort=0; # whether to sort in descending # order $CaseSensitive=0; # whether sort is case sensitive $_7BitAsciiDisplay=0; # whether to display using ASCII # only characters $DisplaySequence="IATEDYU"; $DisplayParameter{"I"}=\$Artist; $DisplayParameter{"A"}=\$Album; $DisplayParameter{"T"}=\$Title; $DisplayParameter{"E"}=\$Filename; $DisplayParameter{"D"}=\$Directory; $DisplayParameter{"Y"}=\$Year; $DisplayParameter{"U"}=\$MusicType; $ListWidth=$Width-2; # play list area width $ListHeight=$Height-14; # play list area height $TrackTextMaxLength=1; # length of the longest text # in play list $Help=0; # whether to display help $LongHelp=0; # whether to display long # version of help $ProcessOptions=1; # whether to process options or # treat all arguments as # filenames for($x=0;$x<=$#ARGV;$x++) { # read all arguments $arg=$ARGV[$x]; if($ProcessOptions) { # decode options $Loop=1,next if(($arg eq "--loop")||($arg eq "-l")); $Random=1,next if(($arg eq "--random")||($arg eq "-r")); $Artist=1,next if(($arg eq "--artist")||($arg eq "-i")); $Artist=0,next if(($arg eq "--no-artist")||($arg eq "-ni")); $Album=1,next if(($arg eq "--album")||($arg eq "-a")); $Album=0,next if(($arg eq "--no-album")||($arg eq "-na")); $Title=1,next if(($arg eq "--title")||($arg eq "-t")); $Title=0,next if(($arg eq "--no-title")||($arg eq "-nt")); $Filename=1,next if(($arg eq "--filename")||($arg eq "-e")); $Filename=0,next if(($arg eq "--no-filename")||($arg eq "-ne")); $Directory=1,next if(($arg eq "--directory")||($arg eq "-d")); $Directory=0,next if(($arg eq "--no-directory")||($arg eq "-nd")); $Year=1,next if(($arg eq "--year")||($arg eq "-y")); $Year=0,next if(($arg eq "--no-year")||($arg eq "-ny")); $MusicType=1,next if(($arg eq "--music-type")||($arg eq "-u")); $MusicType=0,next if(($arg eq "--no-music-type")||($arg eq "-nu")); $DontReadMP3InfoOnLoad=1,next if(($arg eq "--dont-read-mp3info-on-load")||($arg eq "-dri")); $DontChangePriority=1, next if(($arg eq "--dont-change-priority")||($arg eq "-dp")); $DontRingTheBell=1,next if(($arg eq "--dont-ring-bell")||($arg eq "-drb")); if(($arg eq "--display-sequence")||($arg eq "-s")) { # display sequence must be # checked for errors and # duplicated characters $x++; $_=$ARGV[$x]; tr/[a-z]/[A-Z]/; # uppercase all characters s/[^IATEDYU]//g; # remove wrong characters while(s/(I[^I]*)I/$1/g){} # remove duplicated characters while(s/(A[^A]*)A/$1/g){} while(s/(T[^T]*)T/$1/g){} while(s/(E[^E]*)E/$1/g){} while(s/(D[^D]*)D/$1/g){} while(s/(Y[^Y]*)Y/$1/g){} while(s/(U[^U]*)U/$1/g){} if($_ eq "") { print ERROR_STREAM $0."Empty display sequence. Ignored.\n"; } else { $DisplaySequence=$_; } next; } $Numbers=1,next if(($arg eq "--numbers")||($arg eq "-n")); $Numbers=0,next if(($arg eq "--no-numbers")||($arg eq "-nn")); $SortBy="artist",next if(($arg eq "--sort-by-artist")||($arg eq "-si")); $SortBy="album",next if(($arg eq "--sort-by-album")||($arg eq "-sa")); $SortBy="title",next if(($arg eq "--sort-by-title")||($arg eq "-st")); $SortBy="filename",next if(($arg eq "--sort-by-filename")||($arg eq "-se")); $SortBy="directory",next if(($arg eq "--sort-by-directory")||($arg eq "-sd")); $SortBy="year",next if(($arg eq "--sort-by-year")||($arg eq "-sy")); $SortBy="musictype",next if(($arg eq "--sort-by-music-type")||($arg eq "-su")); $DescendingSort=1,next if(($arg eq "--descending-sort")||($arg eq "-ds")); $SortBy="random",next if(($arg eq "--random-order")||($arg eq "-ro")); $WrapSearch=1,next if(($arg eq "--wrap-search")||($arg eq "-ws")); $_7BitAsciiDisplay=1,next if(($arg eq "--7-bit-ascii-display")||($arg eq "-7")); $Help=1,next if(($arg eq "--help")||($arg eq "-h")||($arg eq "-?")); $LongHelp=1,next if($arg eq "--long-help"); if(($arg eq "--mpg123")||($arg eq "-m")) { $x++; if($ARGV[$x] eq "") { print ERROR_STREAM $0."Empty command for mpg123. Ignored.\n"; } else { $MPG123=$ARGV[$x]; } next; } if(($arg eq "--mpg123-option")||($arg eq "-mo")) { $x++; if($ARGV[$x] eq "") { print ERROR_STREAM $0."Empty mpg123 option. Ignored.\n"; } else { push @MPG123_OPTIONS,$ARGV[$x]; } next; } $DebugMPG123=1,next if($arg eq "--debug-mpg123"); $ProcessOptions=0,next if($arg eq "--"); } if($arg=~/^\@/) { # a playlist was given $PlayListFile=$arg; $PlayListFile=~s/^\@//; push @PlayList,$PlayListFile; next; } push @File,$arg; # a file or directory was given } if(($Help)||($#ARGV==-1)) { print STDOUT < ] [ --numbers | -n ] [ --no-numbers | -nn ] [ --sort-by-artist | -si ] [ --sort-by-album | -sa ] [ --sort-by-title | -st ] [ --sort-by-filename | -se ] [ --sort-by-directory | -sd ] [ --sort-by-year | -sy ] [ --sort-by-music-type | -su ] [ --descending-sort | -ds ] [ --random-order | -ro ] [ --wrap-search | -ws ] [ --dont-read-mp3info-on-load | -dri ] [ --dont-change-priority, -dp] [ --dont-ring-bell, -drb ] [ --mpg123 | -m ] [ --mpg123-option | -mo