Сценарий Python, управляющий mpd с помощью набора символов utf-8, не работает - PullRequest
0 голосов
/ 03 января 2019

Я установил MPD на Raspberry Pi и написал скрипт на Python для воспроизведения списка воспроизведения при сканировании карты RFID.

Моя проблема в том, что скрипт работает нормально, когда я вызываю его в консоли. Он играет каждый плейлист. Но когда он запускается как сервис, я могу воспроизводить только плейлисты без äöüß utf8-charset.

Теперь у меня вопрос, как мне заставить скрипт работать для списков воспроизведения utf-8 как службы?

Вот мой сценарий:

#!/usr/bin/python
# coding=utf-8
import io
import os
import serial
from mpd import MPDClient

with io.open("/var/lib/mpd/mnt/playlists/liste.txt", "r", encoding="utf8") as f:
        list = f.read()
list = list.strip()
list = list.replace("\n","")
list = list[:-1].split(";")

while True:
        ser = serial.Serial("/dev/serial0", baudrate=9600)
        rfid = ser.read(14)

        try:
                tag = { "raw" : rfid,
                        "mfr" : int(rfid[1:5], 16),
                        "id" : int(rfid[5:11], 16),
                        "chk" : int(rfid[11:13], 16)}

                print "Read Card : %s" % tag['id']

                cardnr = str(tag['id'])
                listid = list.index(cardnr)

                print(cardnr)

                plist = list[listid-1]

                print(plist)

                client = MPDClient()
                client.timeout = 10
                client.idletimeout = None
                client.connect("localhost", 6600)
                client.update()

                print "Connected..."

                client.clear()
                print "cleared"
                client.load(plist)
                print(client.playlist())
                print "Playlist geladen"
                client.play(0)
                print "Abspielen"
                client.close()
                client.disconnect()

        except:
                print "error"

systemd service:

[Unit]
Description=Listen to RFID-reader and play mopidy playlists
Requires=mpd.service networking.service
After=mpd.service networking.service

[Service]
Type=idle
Restart=always
ExecStart=/usr/bin/python /var/lib/mpd/mnt/scripts/play.py

[Install]
WantedBy=multi-user.target

вывод локали:

LANG=de_DE.UTF-8
LANGUAGE=de_DE.UTF-8
LC_CTYPE="de_DE.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
LC_TIME="de_DE.UTF-8"
LC_COLLATE="de_DE.UTF-8"
LC_MONETARY="de_DE.UTF-8"
LC_MESSAGES="de_DE.UTF-8"
LC_PAPER="de_DE.UTF-8"
LC_NAME="de_DE.UTF-8"
LC_ADDRESS="de_DE.UTF-8"
LC_TELEPHONE="de_DE.UTF-8"
LC_MEASUREMENT="de_DE.UTF-8"
LC_IDENTIFICATION="de_DE.UTF-8"
LC_ALL=

1 Ответ

0 голосов
/ 05 января 2019

Запуск скрипта с ExecStart=/usr/bin/**python3** /var/lib/mpd/mnt/scripts/play.py помог.

...