2 changed files with 53 additions and 0 deletions
@ -0,0 +1,52 @@
@@ -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