今天是国庆节前一天, 好像事不多, 这篇早该完成的博客一直拖到了现在.
<树莓派录音并发送到特定Telegram Group(二)> 相关的第二篇都已经写完了, 哎...
去年媳妇在找工作, 但是由于出租屋内的手机信号不好, 经常接不到电话, 即使接到电话, 通话也是很卡断断续续的.
我公司信号没问题, 于是媳妇就把我号码也写到的简历上了, 这样我在公司经常收到面试电话, 再告诉他们原由,
让他们发面试邀请邮件或者我通知媳妇给他们回电话(主要通过QQ).
有时候媳妇不并总是在电脑前, QQ消息并不能及时回复, 就会出现你明明知道她在那里, 但就是联系不上,
于是就想到了利用树莓派来播放语言, 树莓派插上广播, 使用mplayer播放语音文件, 可以达到这个目的.
现在经常用来把下班行程告诉岳母, 然后根据语音提示合理的安排做饭时间. 一般到家正好开饭. 哈哈
我也由此接触到Telegram, 知道到了telegram bot可以做很多事件,
深入了解后我也加入了有很多开车群(哎, 不说了, 你懂的, 赶紧喝袋牛奶补补, 要不然营养跟不上了, 哈哈).
这里我简单说几点:
消息包括命令, 语音, 文本, 图片, 音频, 视频等
我们做的主要是处理语音, 把收到的语音添加到一个消息队列, 后台再慢慢把语音文件发送到树莓派指定文件夹.
def audio_process(bot, update):
audio = update.message.audio if update.message.audio else update.message.voice
file = bot.get_file(audio.file_id)
filename = '{}-{}.{}'.format(datetime.today().strftime('%Y%m%d-%H%M%S'), audio.file_id, file.file_path.split('.')[-1])
filepath = '{}/{}'.format(common.voice_path, filename)
#print(filepath, file.file_path)
with open(filepath, 'wb') as f:
file.download(out = f)
#sync file
sync_file.enter(filename)
bot.send_message(chat_id= update.message.chat_id, text = 'Thanks, we have received your voice...')
def sync_file(self, filename):
logging.info('start sync file:{}'.format(filename))
localFile = '{}/{}'.format(common.voice_path, filename)
remoteFile = '{}/{}'.format(common.ssh_path, filename)
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy)
client.connect(common.ssh_server, common.ssh_port, common.ssh_username, common.ssh_password)
sftp = client.open_sftp()
sftp.put(localFile, remoteFile)
sftp.close()
client.close()
logging.info('end sync file:{}'.format(filename))
#!/bin/bash
path=~/tmp/*
backup=~/tmp/backup
player=/usr/bin/mplayer
reminder=~/tmp/remind/reminder.mp3
flag=true
for file in $path
do
if [ -f $file ];then
#echo $file
if [ "$flag" ] ; then
$player $reminder
flag=false
fi
$player $file
$player $file
mv $file $backup
fi
done
代码是不是很简单, 完整项目在Github上 https://github.com/i-sync/python-telegram-bot,
这里有详细的代码, 有需要的同学可以仔细看一下. 如果你有什么看法和意见欢迎大家一起讨论学习.
还没有人评论,抢个沙发吧...