All pastes #104769 Raw Edit

Stuff

public text v1 · immutable
#104769 ·published 2006-07-29 06:09 UTC
rendered paste body
alias player { dialog -md player player }

alias -l p.stop { splay stop }

alias -l p.resume { splay resume }

alias -l p.pause { splay pause }

alias -l ms2min { return $calc($$1 / 1000 / 60) }

alias  n.song { return $read(playlist.txt, w, * $+ $did(player, 1).seltext)) }

alias -l songinfo {
  var %song  $gettok($read(playlist.txt, $readn), 1-, 32)
  did -a player 16 $remove($gettok($nopath($n.song), 2, 45), $right($n.song, 4))
  did -a player 18 $gettok($nopath($n.song), 1, 45)
  did -a player 14 $sound(%song).bitrate

  var %s.len $sound(%song).length
  var %s.min $gettok($ms2min(%s.len), 1, 46) 
  var %s.sec $calc(($floor($calc(%s.len / 1000)) - $calc($gettok($ms2min(%s.len), 1, 46) * 60)))
  if ($gettok(%s.min, 1, 46) < 10) { did -a $dname 13 0 $+ %s.min $+ : $+ %s.sec }
  else { did -a $dname 13 %s.min $+ : $+ %s.sec }
}

dialog player {
  title "mIRC Player"
  size -1 -1 175 195
  option dbu
  list 1, 3 52 169 126, size extsel
  button ">>", 2, 161 2 13 12
  button "|>", 3, 148 2 13 12
  button "[ ]", 4, 135 2 13 12
  button "<<", 5, 122 2 13 12
  button "Mute", 6, 123 34 25 9
  text "Song:", 7, 2 7 15 8
  box "Song info", 8, 1 -1 121 44
  text "Bitrate:", 9, 2 25 18 8
  text "Played:", 10, 2 34 20 8
  text "00:00", 11, 26 34 15 8
  text "/", 12, 40 34 5 8, center
  text "00:00", 13, 45 34 15 8
  text "", 14, 21 25 11 8, center
  text "kbps", 15, 33 25 25 8
  text "", 16, 20 7 99 8
  text "Artist:", 17, 2 16 17 8
  text "", 18, 22 16 97 8
  button "Add Song", 19, 2 180 37 12
  button "Del  Song", 20, 42 180 37 12
  box "Playlist", 21, 1 44 173 136
  check "Loop Playlist", 22, 123 15 42 10
  check "Repeat Song", 23, 123 24 43 10
}

on *:MP3END: {
  if (%r.song == on) {
    splay $read(playlist.txt, $readn)
    halt
  }
  if ($lines(playlist.txt) == $readn) { 
    did -c player 1 1
    splay $read(playlist.txt, 1)
    halt
  }
  else {
    did -c player 1 $calc($readn + 1)
    splay $read(playlist.txt, $calc($readn + 1))
    songinfo
  }

}

on *:dialog:player:init:0: {
  if ($insong == $true) { 
    songinfo
  }
  if ($read(playlist.txt) != $null) {
    var %i 1
    while (%i <= $lines(playlist.txt)) {
      did -a $dname 1 $nopath($read(playlist.txt, %i))
      inc %i
    }
  }
  else { halt }
}


on *:dialog:player:dclick:1: {
  var %song  $gettok($read(playlist.txt, w, * $+ $did(player, 1).seltext), 1-, 32)
  splay %song
  var %sl.sec  $calc($floor($calc($insong.pos / 1000)) - $calc($gettok($ms2min($insong.pos), 1, 46) * 60))
  var %s.len $sound(%song).length
  var %s.min $gettok($ms2min(%s.len), 1, 46) 
  var %s.sec $calc(($floor($calc(%s.len / 1000)) - $calc($gettok($ms2min(%s.len), 1, 46) * 60)))

  if ($gettok(%s.min, 1, 46) < 10) { did -a $dname 13 0 $+ %s.min $+ : $+ %s.sec }
  else { did -a $dname 13 %s.min $+ : $+ %s.sec }

  did -a $dname 16 $remove($gettok($nopath($n.song), 2, 45), $right($n.song, 4))
  did -a $dname 18 $gettok($nopath($n.song), 1, 45)
  did -a $dname 14 $sound(%song).bitrate

}

on *:dialog:player:sclick:2: {
  did -c player 1 $calc($did($dname, 1).sel + 1)
  splay stop
  splay $read(playlist.txt, w, * $+ $did($dname, 1).seltext)
  songinfo

}

on *:dialog:player:sclick:5: {
  did -c player 1 $calc($did($dname, 1).sel - 1)
  splay stop
  splay $read(playlist.txt, w, * $+ $did($dname, 1).seltext)
  songinfo 
}

on *:dialog:player:sclick:3: { 

  if ($did($dname, 3) == |>) {
    did -r $dname 3 
    did -a $dname 3 $chr(124) $+ $chr(124) 
  p.resume }
  else {
    did -r $dname 3
    did -a $dname 3 $chr(124) $+ >
    p.pause
  }
}

on *:dialog:player:sclick:4: { p.stop }

on *:dialog:player:sclick:6: { 
  if ($did($dname, 6) == Mute) { 
    did -r $dname 6 
    did -a $dname 6 Unmute 
  vol -vu1 } 
  else {
    did -r $dname 6
    did -a $dname 6 Mute
  vol -vu2 }
}

on *:dialog:player:sclick:19: {
  var %s.file $sfile(C:\, Select Audio File (.mp3))
  write playlist.txt %s.file
  did -a $dname 1 $nopath(%s.file)
}

on *:dialog:player:sclick:20: {
  write -ds $+ $gettok($read(playlist.txt, w, * $+ $did(player, 1).seltext), 1, 32) playlist.txt
  did -d $dname 1 $did($dname, 1).sel
}

on *:dialog:player:sclick:23: {
  if ($did($dname, 23).state == on) { set %r.song on }
  else { unset %r.song }
}