All pastes #368395 Raw Edit

Unnamed

public text v1 · immutable
#368395 ·published 2007-02-23 01:26 UTC
rendered paste body
dialog player {
  title "Player"
  size -1 -1 147 230
  option dbu
  button "|>", 1, 120 2 12 12
  button "<<", 2, 94 2 12 12
  button ">>", 3, 133 2 12 12
  button "[ ]", 4, 107 2 12 12
  box "Playlist", 5, 1 47 145 150
  list 6, 3 65 140 111, size extsel
  button "Add Song", 7, 3 180 30 12
  button "Del Song", 8, 64 180 30 12
  button "Import Playlist", 9, 107 180 37 12
  check "Shuffle", 10, 94 15 51 10, push
  check "Repeat", 11, 94 26 51 10, push
  box "Now Playing", 12, 1 1 91 45
  text "Song Artist", 13, 3 8 87 8
  text "bitrate", 14, 3 26 87 8
  text "0:00", 15, 3 35 25 8, right
  text "/", 16, 29 35 2 8
  text "0:00", 17, 32 35 25 8
  text "played", 18, 58 35 16 8
  button "Add Dir", 19, 33 180 30 12
  button "New Playlist", 20, 74 193 35 12
  edit "", 21, 23 194 50 10
  text "Playlist:", 22, 3 195 19 8
  button "Load Playlist", 23, 109 193 35 12
  box "Advertise Song", 24, 1 208 145 21
  edit "", 25, 21 217 120 10, autohs
  text "Format", 26, 3 218 17 8
  text "Song Title", 27, 3 17 87 8
  button "-", 28, 126 37 10 12
  button "+", 29, 136 37 10 12
  edit "", 30, 104 38 21 10, read center
  button "M", 31, 93 37 10 12
  text "Quick Find:", 32, 4 55 27 8
  edit "", 33, 31 54 112 10
}
on *:DIALOG:player:edit:33: {
  var %player_find = $read(%player.pl,w,$+(*,$did($dname,33),*))
  .did -c player 6 $iif($readn == 0,1,$readn)
}
alias -l player.vcalc {
  if (!$dialog(player)) { .timerpvol off | halt }
  .did -ra player 30 $round($calc($vol(master) / 655.35),0) $+ %
}
alias -l player.vol.mute {
  if (%player.mute) { .vol -v %player.mute.vol | .set %player.mute $false }
  else { .set %player.mute.vol $vol(master) | .vol -v 0 | .set %player.mute $true }
}
alias -l player.vol.up {
  if (!$1 || $1 !isnum) { var %vol = $calc($vol(master) + 3276.75) }
  elseif ($1 > 100) { var %vol = 65535 }
  else { var %vol = $calc($1 * 655.35) }
  if (%vol > 65535) { %vol = 65535 }
  .vol -v %vol
}
alias -l player.vol.down {
  if (!$1 || $1 !isnum) { var %vol = $calc($vol(master) - 3276.75) }
  elseif ($1 < 0) { var %vol = 0 }
  else { var %vol = $calc($1 * 655.35) }
  if (%vol < 0) { %vol = 0 }
  .vol -v %vol
}
alias -l player.addsong {
  .write %player.pl  $1-
  .did -a player 6 $gettok($1-,-1,92)
}
alias -l player.pbtn {
  if (!$dialog(player)) { halt }
  if (!$insong.pause) { .did -ra player 1 $+($chr(124),$chr(124)) }
  if ($insong.pause || !$insong) { .did -ra player 1 $+($chr(124),>) }
}
alias -l song.pos {
  if (!$insong) { .timersongpos off | halt }
  if (!$dialog(player)) { .timersongpos off | halt }
  var %min,%sec,%time
  %time = $calc(($insong.pos /1000) /60)
  %min = $gettok(%time,1,46)
  %sec = $calc($gettok(%time,2,46) *.6)
  %sec = $iif($len(%sec) <= 4,$+(0,$left(%sec,1)),$left(%sec,2))
  %time = $+(%min,:,%sec)
  .did -ra player 15 %time
}
alias player {
  if ($dialog(player)) {
    .dialog -v player
  }
  else {
    .dialog -md player player
  }
}
alias -l player.prev {
  .playsong %player.prev
}
alias -l player.next {
  if (%player.shuffle) { set %nt $r(1,$lines(%player.pl)) }
  else { set %nt $calc(%player.np +1) }
  if (%nt > $lines(%player.pl)) && (!%player.repeat) { halt }
  elseif (%nt > $lines(%player.pl)) && (%player.repeat) { set %nt 1 }
  .set %player.prev %player.np
  .playsong %nt
}
alias player.show {
  if (!$insong) { echo 4 -a No song playing. | halt }
  var %song = $insong.fname,%title,%artist,%br,%min,%sec,%time,%pl_show,%ct
  if ($left($sound(%song).id3,2) == v2) {
    var %a = 1
    while (%a <= $sound(%song,0).tag) {
      .dll WhileFix.dll WhileFix .
      var %tokn = $left($sound(%song,%a).tag,255)
      if ($gettok(%tokn,1,32) == TIT2) { %title = $gettok(%tokn,2-,32) }
      if ($gettok(%tokn,1,32) == TPE1) { %artist = $gettok(%tokn,2-,32) }
      inc %a
    }
  }
  else {
    %title = $sound(%song).title
    %artist = $sound(%song).artist
  }
  %ct = $gettok($read(%player.pl,%player.np),-1,92)
  %br = $iif($sound(%song).vbr, VBR -,) BitRate $sound(%song).bitrate kbps
  %time = $calc($sound(%song).length /1000 /60)
  %min = $gettok(%time,1,46)
  %sec = $left($calc($gettok(%time,2,46) *.6),2)
  %time = $+(%min,:,%sec)
  %pl_show = %player.op
  %pl_show = $replace(%pl_show,&ctr&,%player.np,&ttr&,$lines(%player.pl))
  if (%title) { %pl_show = $replace(%pl_show,&title&,%title) }
  else { %pl_show = $replace(%pl_show,&title&,) }
  if (%artist) { %pl_show = $replace(%pl_show,&artist&,%artist) }
  else { %pl_show = $replace(%pl_show,&artist&,) }
  %pl_show = $replace(%pl_show,&fn&,%ct)
  %pl_show = $replace(%pl_show,&length&,%time)
  %pl_show = $replace(%pl_show,&br&,%br)
  var %cmin,%csec,%ctime
  %ctime = $calc(($insong.pos /1000) /60)
  %cmin = $gettok(%ctime,1,46)
  %csec = $calc($gettok(%ctime,2,46) *.6)
  %csec = $iif($len(%csec) <= 4,$+(0,$left(%csec,1)),$left(%csec,2))
  %ctime = $+(%cmin,:,%csec)
  %pl_show = $replace(%pl_show,&tpos&,%ctime)
  $iif($isid, return,$iif(!$chan && !$active,echo -a,msg $active)) %pl_show
}
alias -l playsong {
  if ($insong) { .splay stop }
  var %song = $shortfn($read(%player.pl,$1)),%title,%artist,%br,%min,%sec,%time
  var %chk = $right(%song,4)
  if (%chk != .mp3 && %chk != .mid && %chk != .wav) { .player.next | halt }
  if (!$exists(%song)) { .player.next | halt }
  if ($left($sound(%song).id3,2) == v2) {
    var %a = 1
    while (%a <= $sound(%song,0).tag) {
      .dll WhileFix.dll WhileFix .
      var %tokn = $left($sound(%song,%a).tag,255)
      if ($gettok(%tokn,1,32) == TIT2) { %title = $gettok(%tokn,2-,32) }
      if ($gettok(%tokn,1,32) == TPE1) { %artist = $gettok(%tokn,2-,32) }
      inc %a
    }
    %br = $iif($sound(%song).vbr, VBR -,) BitRate $sound(%song).bitrate kbps
  }
  else {
    %title = $sound(%song).title
    %artist = $sound(%song).artist
    %br = $iif($sound(%song).vbr, VBR -,) BitRate $sound(%song).bitrate kbps
  }
  if ($dialog(player)) {
    .did -ra player 13 %artist
    .did -ra player 27 %title
    .did -ra player 14 %br
    %time = $calc($sound(%song).length /1000 /60)
    %min = $gettok(%time,1,46)
    %sec = $left($calc($gettok(%time,2,46) *.6),2)
    %time = $+(%min,:,%sec)
    .did -ra player 17 %time
    .did -ra player 15 0:00
    .did -c player 6 $1
  }
  .splay $iif($right(%file,4) == .mp3,-p,$iif($right(%file,4) == .wav,-w,-m)) %song
  .set %player.np $1
  .timersongpos 0 1 /song.pos
}
on *:DIALOG:player:sclick:10,11: {
  if ($did($dname,$did).state == 0) { .set $+(%,player.,$iif($did == 10,shuffle,repeat)) $false }
  else { .set $+(%,player.,$iif($did == 10,shuffle,repeat)) $true }
}
on *:DIALOG:player:init:*: {
  if (%player.shuffle) { .did -c $dname 10 }
  if (%player.repeat) { .did -c $dname 11 }
  .did -a $dname 21 %player.pl
  .did -a $dname 25 %player.op
  var %a = 1
  while (%a <= $lines(%player.pl)) {
    .dll WhileFix.dll WhileFix .
    .did -a $dname 6 $gettok($read(%player.pl,%a),-1,92)
    inc %a
  }
  .player.pbtn
  .player.vcalc
  .timerpvol 0 1 player.vcalc
  .timersongpos 0 1 .song.pos
  if ($insong) {
    var %song = $shortfn($read(%player.pl,%player.np)),%title,%artist,%br,%min,%sec,%time
    if ($left($sound(%song).id3,2) == v2) {
      var %a = 1
      while (%a <= $sound(%song,0).tag) {
        .dll WhileFix.dll WhileFix .
        var %tokn = $left($sound(%song,%a).tag,255)
        if ($gettok(%tokn,1,32) == TIT2) { %title = $gettok(%tokn,2-,32) }
        if ($gettok(%tokn,1,32) == TPE1) { %artist = $gettok(%tokn,2-,32) }
        inc %a
      }
      %br = $iif($sound(%song).vbr, VBR -,) BitRate $sound(%song).bitrate kbps
    }
    else {
      %title = $sound(%song).title
      %artist = $sound(%song).artist
      %br = $iif($sound(%song).vbr, VBR -,) BitRate $sound(%song).bitrate kbps
    }
    .did -ra $dname 13 %artist
    .did -ra $dname 27 %title
    .did -ra $dname 14 %br
    %time = $calc($sound(%song).length /1000 /60)
    %min = $gettok(%time,1,46)
    %sec = $left($calc($gettok(%time,2,46) *.6),2)
    %time = $+(%min,:,%sec)
    .did -ra $dname 17 %time
    .did -ra $dname 15 0:00
    .did -c $dname 6 %player.np
  }
}
on *:DIALOG:player:dclick:6: {
  if (!$did($dname,6).seltext) { halt }
  if ($insong) { .splay stop }
  .playsong $did($dname,6).sel
  player.pbtn
}
on *:DIALOG:player:sclick:7: {
  var %loc = $sfile(C:\,Player Audio Selecter)
  if (!%loc) { halt }
  .write %player.pl %loc
  .did -a $dname 6 $gettok(%loc,-1,92)
}
on *:DIALOG:player:sclick:19: {
  var %loc = $sdir(C:\,Player Audio Directory Selecter)
  if (!%loc) { halt }
  var %file = $findfile(%loc,*.mp3;*.mid;*.wav,0,//player.addsong $1-)
}
on *:DIALOG:player:sclick:8: {
  if (!$did($dname,6).seltext) { halt }
  var %a = $did($dname,6,0).sel
  while (%a) {
    .dll WhileFix.dll WhileFix .
    .write $+(-dl,$did($dname,6,%a).sel) %player.pl
    .did -d $dname 6 $did($dname,6,%a).sel
    dec %a
  }
}
on *:DIALOG:player:sclick:1: {
  if (!$insong) && (!$did($dname,6).seltext) { halt }
  if (!$insong) && ($did($dname,6).seltext) { .playsong $did($dname,6).sel | halt }
  if (!$insong.pause) {
    .splay pause
    .player.pbtn
  }
  else {
    .splay resume
    .player.pbtn
  }
}
on *:DIALOG:player:edit:25: {
  .set %player.op $did($dname,25).text
}
on *:DIALOG:player:sclick:23: {
  var %ldir = $sfile($mircdir,Player PlayList Loader)
  if (!%ldir) { halt }
  .set %player.pl $nopath(%ldir)
  .did -ra $dname 21 %player.pl
  .did -r $dname 6
  var %a = 1
  while (%a <= $lines(%player.pl)) {
    .dll WhileFix.dll WhileFix .
    .did -a $dname 6 $gettok($read(%player.pl,%a),-1,92)
    inc %a
  }
}
on *:DIALOG:player:sclick:20: {
  var %npl = $$?="Enter the name of your new playlist"
  if (!%npl) { halt }
  if ($insong) { .splay stop }
  .did -r $dname 6
  .did -ra $dname 21 %npl
  .set %player.pl %npl
  var %a = 1
  while (%a <= $lines(%npl)) {
    .dll WhileFix.dll WhileFix .
    .did -a $dname 6 $gettok($read(%npl,%a),-1,92)
    inc %a
  }
}
on *:DIALOG:player:sclick:9: {
  var %pl = $shortfn($sfile(C:,Player Playlist Import))
  if ($right(%pl,4) != .m3u) { halt }
  var %a = 1
  while (%a <= $lines(%pl)) {
    .dll WhileFix.dll WhileFix .
    var %pl_red = $read(%pl,%a)
    if ($left(%pl_red,1) == $chr(35)) { inc %a }
    else {
      if (!%pl_red) { inc %a }
      .write %player.pl %pl_red
      .did -a $dname 6 $gettok(%pl_red,-1,92)
      inc %a
    }
  }
}
on *:DIALOG:player:sclick:31: { .player.vol.mute }
on *:DIALOG:player:sclick:28: { .player.vol.down }
on *:DIALOG:player:sclick:29: { .player.vol.up }
on *:DIALOG:player:sclick:2: { .player.prev }
on *:DIALOG:player:sclick:3: { .player.next }
on *:DIALOG:player:sclick:4: { if ($insong) { .splay stop | .player.pbtn } }
on *:MP3END: { .player.next }
on *:WAVEEND: { .player.next }
on *:MIDIEND: { .player.next }
alias p.pause { if (!$insong.pause) { splay pause } }
alias p.resume { if ($insong.pause) { splay resume } }
alias p.show { player.show }
alias p.next { player.next }
alias p.prev { player.prev }
alias p.stop { if ($insong) { splay stop | .player.pbtn } }
alias p.play { .playsong 1 }
alias p.volup { .player.vol.up $1 }
alias p.voldown { .player.vol.down $1 }
alias p.mute { .player.vol.mute }
alias p.shuffle {
  if (!%player.shuffle) { .set %player.shuffle $true | $iif($dialog(player),.did -c player 10) | echo -a Enabled Shuffle }
  else { .set %player.shuffle $false | $iif($dialog(player),.did -u player 10) | echo -a Disabled Shuffle }
}
alias p.repeat {
  if (!%player.repeat) { .set %player.repeat $true | $iif($dialog(player),.did -c player 11) | echo -a Enabled Repeat }
  else { .set %player.repeat $false | $iif($dialog(player),.did -u player 11) | echo -a Disabled Repeat }
}
menu * {
  Player
  .Open Player:/player
  .Show Song:/player.show
}
on *:LOAD: {
  if (!%player.pl) { .set %player.pl pl.mar }
  if (!%player.op) { .set %player.op Player - Currently listening to track #&ctr&/&ttr& &title& by &artist& (&length&) @ &br& }
  echo -a Player loaded.