7688外接USB音效卡,並加上喇叭,如果用自製的喇叭音箱,把板子都藏在音箱裡就更棒了
也可以把喇叭換成耳機的型式
準備MicroSD卡,建立music資料夾,並放入幾首歌曲
1.在/root/app下,建立一個執行檔,檔名叫做stopMp3,這個指令檔是要給python呼叫的外部指令,用來停止目前播放的mp3用的,檔案內容如下:
ps | grep 'playMp3 ' | grep -v grep | awk '{print$1}' | xargs kill -9ps | grep 'aplay -D' | grep -v grep | awk '{print$1}' | xargs kill -9ps | grep 'madplay ' | grep -v grep | awk '{print$1}' | xargs kill -92.建立完成後要記得將這個檔案變成可執行,指令:chmod 744 stopMp3
1.在/root/app下,建立一個執行檔,檔名叫做playMp3,這個指令檔是要給python呼叫的外部指令,用來停止目前播放的mp3歌曲,並換過新選取的歌曲並播放,檔案內容如下:
ps | grep 'aplay -D' | grep -v grep | awk '{print$1}' | xargs kill -9ps | grep 'madplay ' | grep -v grep | awk '{print$1}' | xargs kill -9madplay ${1} -o wave:- | aplay -D plughw:1,0 &2.建立完成後要記得將這個檔案變成可執行,指令:chmod 744 playMp3
# coding=utf-8import requests,osimport subprocess,timefrom flask import Flask, request, abortfrom linebot import (    LineBotApi, WebhookHandler)from linebot.exceptions import (    InvalidSignatureError)from linebot.models import (    MessageEvent, TextMessage, TextSendMessage,)#這邊的port可以修改成你要想run的portmyPort=8090myPath='/tmp/run/mountd/mmcblk0p1/music/'myFilesStr=''mp3_counts=0for file in os.listdir(myPath):    if file.endswith(".mp3"):       myFilesStr+=(file+'\n')       mp3_counts+=1app = Flask(__name__)#請修改以下的程式,加入自己Line的channelAccessToken以及channelSecretline_bot_api = LineBotApi('這裡改成自己Line的channelAccessToken')handler = WebhookHandler('這裡改成自己Line的channelSecret')@app.route("/", methods=['POST'])def index():    # get X-Line-Signature header value    signature = request.headers['X-Line-Signature']    # get request body as text    body = request.get_data(as_text=True)    app.logger.info("Request body: " + body)    # handle webhook body    try:        handler.handle(body, signature)    except InvalidSignatureError:        abort(400)    return 'OK'@handler.add(MessageEvent, message=TextMessage)def handle_message(event):    myText=event.message.text;    global myFilesStr    global mp3_counts    if myText=='stop':       subprocess.call(os.getcwd()+'/stopMp3 &' ,shell=True)       line_bot_api.reply_message(event.reply_token,TextSendMessage(text=u'已停止播放歌曲!'))    elif myText.startswith('http://') or myText.startswith('https://'):       r = requests.get(myText, stream=True)       userId=event.source.user_id       line_bot_api.reply_message(event.reply_token,TextSendMessage(text=u'正在下載MP3,請耐心等候,並在下載結束前勿執行其他指令!'))       with open(myPath+str(mp3_counts+1)+'.mp3', 'wb') as f:          try:             for block in r.iter_content(1024):                 f.write(block)             f.close()             mp3_counts+=1             myFilesStr+=(str(mp3_counts)+'.mp3\n')             line_bot_api.push_message(userId, TextSendMessage(text=(u'已下載完畢,儲存為'+str(mp3_counts)+'.mp3')))          except KeyboardInterrupt:             pass    elif myText.isdigit()!=True:       line_bot_api.reply_message(event.reply_token,TextSendMessage(text=(myFilesStr+u'輸入歌名數字,即可遠端播放MP3!\n輸入stop可停止播放歌曲!')))    else:       if os.path.exists(myPath+myText+'.mp3'):          line_bot_api.reply_message(event.reply_token,TextSendMessage(text=u'正在播放'+myText+'.mp3'))          subprocess.call(os.getcwd()+'/playMp3 '+myPath+myText+'.mp3 &',shell=True)       else:          line_bot_api.reply_message(event.reply_token,TextSendMessage(text=u'沒有'+myText+u'.mp3這首音樂!'))if __name__ == "__main__":    app.run(host='0.0.0.0', port= myPort)