Можно превратить домашний Raspberry в отличный медиацентр при помощи дополнительной звуковой карты, например такой как на фото. Стоимость такого устройства на aliexpress.com около 15 долларов с доставкой.
Итак
Устанавливаем звуковую карты на свой Raspberry.
Активируем I2C интерфейс:
sudo raspi-config
>interfacing options > I2C > enable > yes
Редактируем файл /boot/config.txt like this
#dtparam=audio=on
dtparam=i2c_arm=on
dtparam=i2s=on
dtoverlay=hifiberry-dacplus
Перегружаем Raspberry
sudo reboot
Тестируем
mplayer <ваш музыкальный файл>
или интернет радио
mplayer http://streams.calmradio.com:7328/stream
Вам нравится Моцарт?:)
или переходим в каталог с вашими музыкальными записями с воспроизводим их в случайном порядке
cd /mnt/music/2006Relax
mplayer -shuffle *
Открываем еще один терминал и вводим команду alsamixer
alsamixer
Так можно регулировать громкость воспроизведения
Теперь отредактируем код нашего простейшего эхо-бота для управления интернет-радио через Telegram. Код под спойлером.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
import settings from telegram.ext import * from telegram import * import re import sys, os, subprocess def radio_keyboard(): radio_keyboard = [['RADIO','MUSIC'],['>1','>2','>3','>4','>5'],['vol_down','vol_up'],['media_off']] return radio_keyboard def start(update, context): if not update.message.chat_id == <your chat_id> : return update.message.reply_text("please select media",reply_markup=ReplyKeyboardMarkup(radio_keyboard(), resize_keyboard=True)) def media(update, context): if not update.message.chat_id == <your chat_id>: return text = '' if update.message.text == '>1': text = 'Mozart? A good choice!' cmd = 'sudo killall -v mplayer ; amixer -c 0 sset Digital,0 50% ; mplayer http://streams.calmradio.com:7328/stream &' elif update.message.text == '>2': text = 'Radio atmosphere' cmd = 'sudo killall -v mplayer ; amixer -c 0 sset Digital,0 50% ; mplayer http://185.53.169.117:8000/320 &' elif update.message.text == '>3': text = 'Evening breeze' cmd = 'sudo killall -v mplayer ; amixer -c 0 sset Digital,0 50% ; mplayer http://server.rpr.dp.ua:8000/live &' elif update.message.text == '>4': text = 'Calm radio' cmd = 'sudo killall -v mplayer ; amixer -c 0 sset Digital,0 50% ; mplayer http://listen1.myradio24.com:9000/6262 &' elif update.message.text == '>5': text = 'Visual neoclassical music for creative people' cmd = 'sudo killall -v mplayer ; amixer -c 0 sset Digital,0 50% ; mplayer https://magicscope.s02.radio-tochka.com:4635/stream &' ################################# #add your radio here like radio example ################################# elif update.message.text == 'RADIO': text = 'Select a radio station using the buttons below.' cmd = '' elif update.message.text == 'MUSIC': text = 'Relaxing music on this pleasant evening' cmd = 'sudo killall -v mplayer ; mkfifo /home/pi/bot/mplayer-control ; cd /mnt/music/2006Relax/ ; \ mplayer -slave -input file=/home/pi/scripts/mplayer-control -idle -shuffle * &' elif update.message.text == 'vol_up': text = '+3db' cmd = 'amixer -c 0 sset Digital,0 3db+' elif update.message.text == 'vol_down': text = '-3db' cmd = 'amixer -c 0 sset Digital,0 3db-' elif update.message.text == 'media_off': text = 'media_off' cmd = 'sudo killall -v mplayer&' update.message.reply_text(text, reply_markup=ReplyKeyboardMarkup(radio_keyboard(), resize_keyboard=True)) subprocess.Popen(cmd, shell = True) def main(): updater = Updater(settings.TELEGRAM_API_KEY, use_context=True) dp = updater.dispatcher dp.add_handler(CommandHandler("start", start)) dp.add_handler(MessageHandler(Filters.regex('^(>1)|(>2)|(>3)|(>4)|(>5)|(vol_)|(media_off)|(MUSIC)|(RADIO)'),media)) # Start the Bot updater.start_polling() updater.idle() if __name__ == '__main__': main() |