Various Linux scripts.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

57 lines
1.3 KiB

#!/usr/bin/env tclsh
#Создан: пт 19 июн 2020 15:42:10
#Изменён: Чт 04 мар 2021 19:22:24
# Сценарий удаления треков с указанной оценкой из mpd
# TODO: фильтр по указанной оценке
# TODO: не удалять проигрываемый сейчас файл
proc mpd {args} {
set mpd [socket 127.0.0.1 6600]
foreach command $args {
puts $mpd $command
}
puts $mpd close
flush $mpd
set mpd_answer [split [read $mpd] "\n"]
set mpd_status [lindex $mpd_answer 0]
set answer_code [lindex $mpd_answer 1]
close $mpd
if {[string match "OK MPD *" $mpd_status]} {
if {![string match "ACK*" $answer_code]} {
return [lrange $mpd_answer 1 end-2]
} else {
return [list 1 $answer_code]
}
} else {
return [list 1 $mpd_answer]
}
}
set playlistlength [regsub {^[^:]*:\s+} [lindex [mpd status] [lsearch [mpd status] "playlistlength*"]] {}]
set commented {}
for {set pos 0} {$pos <= $playlistlength} {incr pos} {
array unset song
set info [mpd "playlistinfo $pos"]
foreach metadata $info {
regexp -expanded {^([^:]+):\s+(.*)$} $metadata match key value
set song([string tolower $key]) $value
}
if {[info exists song(comment)] && [regexp {^[1-5]\+?$} $song(comment)]} {
lappend commented $song(id)
}
}
mpd {*}[lmap id $commented {list deleteid $id}]