61 lines
1.7 KiB
Ruby
61 lines
1.7 KiB
Ruby
require 'cgi'
|
|
|
|
class Radio
|
|
include Cinch::Plugin
|
|
|
|
match /radio play (.*)$/, :method => :on_play
|
|
match /radio pialla/, :method => :on_pialla
|
|
match /radio help/, :method => :on_help
|
|
match /radio info/, :method => :on_info
|
|
match /radio next/, :method => :on_next
|
|
|
|
def on_play(m, link)
|
|
if link =~ /http(s):\/\/(?:www\.)?youtu(?:be\.com\/watch\?v=|\.be\/)([\w\-]+)(&(amp;)?[\w\?=]*)?/
|
|
File.open('/tmp/radio', 'w') do |f|
|
|
f.puts(link)
|
|
f.flush
|
|
end
|
|
if open(link).read =~ /<title>(.*?) - YouTube<\/title>/
|
|
m.reply "New song \""+CGI.unescapeHTML($1)+"\""
|
|
File.open('/tmp/notify-send', 'w') do |f|
|
|
f.puts($1)
|
|
f.flush
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
def on_help(m)
|
|
m.reply 'curl "http://utvghefxggihh5ts.onion/listen" | play -q - 2>/dev/null'
|
|
m.reply 'http://soyuz.labr.xyz:8000 - qua sta l\'interfaccia webbosa - poi ritorna'
|
|
m.reply 'comandi: '
|
|
m.reply ' info - ti dice la canzone che stai sentendo'
|
|
m.reply ' pialla - cancella la canzone che stai sentendo'
|
|
m.reply ' play <linkdiyoutube> - mette una canzone in playlist'
|
|
m.reply ' next - ti fa sentire un altra roba'
|
|
end
|
|
|
|
def on_pialla(m)
|
|
File.open('/tmp/notify-send', 'w') do |f|
|
|
f.puts("Sto piallando")
|
|
f.flush
|
|
end
|
|
system("mpc del $(mpc -f %position% | head -n 1)")
|
|
end
|
|
|
|
def on_info(m)
|
|
info = `mpc`.split("\n")
|
|
return if info.empty? || info.count <3
|
|
title = Base64.decode64(info[0].split('#').last).chomp
|
|
songs,time = "0"
|
|
if info[1] =~ /.* #[0-9]+\/([0-9]+)\s(.*)/
|
|
songs = $1
|
|
time = $2.strip
|
|
end
|
|
m.reply CGI.unescapeHTML(title)+" ["+time+"] "+songs+" songs in playlist"
|
|
end
|
|
|
|
def on_next(m)
|
|
`mpc next`
|
|
end
|
|
end
|