私がやりたいのは、Siriproxy を使用して Sky+ ボックスを制御することです (ある程度作業しています)。
Sky はチャンネル番号を使用しますが、理解できる 16 進数に変換します。すべてのチャネル番号、チャネル名、および 16 進コードを含むファイルがあります。私が言うチャンネル番号の 16 進数を検索し、コマンドの一部として bash スクリプトを介してスカイ ボックスに送信する Ruby スクリプトを作成したいと考えています (より簡単な方法がない限り)。
私は現在、.txt ファイルなどを作成する複数の bash スクリプトを含む、非常に大雑把で長い曲がりくねった方法を持っていますが、もっと良い方法があるに違いないと確信しています。
詳細を編集してください:
#demonstrate capturing data from the user (e.x. "Siri proxy number 15")
listen_for /change the channel number ([0-9,]*[0-9])/i do |number|
#say "Changing the Channel to #{number}"
f = File.new("/root/SiriProxy/sky/channel.txt", "w")
f.puts "SKY#{number}"
f.close
#system("echo [Info - Plugin Manager] Channel number #{number} stored to sky/channel.txt")
system("sh /root/SiriProxy/sky/change_channel.sh")
File.open('/root/SiriProxy/sky/channel_name.txt').each_line{ |s|
#puts s
say "I've changed the channel to #{s}"
}
request_completed
end
次に、bash スクリプトがあります。
#!/bin/bash
for line in `cat /root/SiriProxy/sky/channel.txt`
do
cat /root/SiriProxy/sky/channel_numbers.txt | grep $line | cut -d" " -f3 > /root/SiriProxy/sky/hex.txt
done
for line in `cat /root/SiriProxy/sky/channel.txt`
do
cat /root/SiriProxy/sky/channel_numbers.txt | grep $line | cut -d" " -f2 > /root/SiriProxy/sky/channel_name.txt
done
for line in `cat /root/SiriProxy/sky/hex.txt`
do
(echo 'POST /SkyPlay HTTP/1.1
SOAPACTION: "urn:schemas-nds-com:service:SkyPlay:2#SetAVTransportURI"
Content-Type: text/xml; charset=utf-8
Content-Length: 399
<?xml version="1.0" encoding="utf-8"?><s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><u:SetAVTransportURI xmlns:u="urn:schemas-nds-com:service:SkyPlay:2"><InstanceID>0</InstanceID><CurrentURI>xsi://'$line'</CurrentURI><CurrentURIMetaData>NOT_IMPLEMENTED</CurrentURIMetaData></u:SetAVTransportURI></s:Body></s:Envelope>') | nc -n 192.168.1.82 49153
done
助けてくれてありがとう、これは私の初心者のステータスを少し上回っています!