2 changed files with 53 additions and 0 deletions
@ -0,0 +1,52 @@ |
|||||||
|
#!/usr/bin/env tclsh |
||||||
|
|
||||||
|
#Создан: пт 19 июн 2020 15:42:10 |
||||||
|
#Изменён: Сб 10 окт 2020 18:20:25 |
||||||
|
|
||||||
|
# Сценарий удаления треков с указанной оценкой из mpd |
||||||
|
|
||||||
|
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] |
||||||
|
|
||||||
|
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] 6] {}] |
||||||
|
|
||||||
|
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}] |
||||||
|
|
Loading…
Reference in new issue