Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
internetradio [2020/11/24 15:54] admin |
internetradio [2020/11/24 16:34] (aktuell) admin |
||
---|---|---|---|
Zeile 165: | Zeile 165: | ||
sudo python3 -m pip install Mopidy-Podcast | sudo python3 -m pip install Mopidy-Podcast | ||
sudo python3 -m pip install Mopidy-Podcast-iTunes | sudo python3 -m pip install Mopidy-Podcast-iTunes | ||
- | # Last.FM scrobbling support\\ | + | # Last.FM scrobbling support |
- | sudo python3 -m pip install Mopidy-Scrobbler\\ \\ | + | sudo python3 -m pip install Mopidy-Scrobbler |
# Soundcloud support\\ | # Soundcloud support\\ | ||
- | sudo python3 -m pip install Mopidy-SoundCloud\\ \\ | + | sudo python3 -m pip install Mopidy-SoundCloud |
# TuneIn support\\ | # TuneIn support\\ | ||
- | sudo python3 -m pip install Mopidy-TuneIn\\ \\ | + | sudo python3 -m pip install Mopidy-TuneIn |
- | # YouTube support\\ | + | # YouTube support |
- | sudo python3 -m pip install Mopidy-YouTube\\ \\ '' | + | sudo python3 -m pip install Mopidy-YouTube |
Wenn alle gewünschten Addons installiert sind bearbeiten wir nun die Konfigurationsdatei //mopidy.conf//. Diese liegt für den angemeldeten User im Ordner ///home/user/.config/mopidy// (Beispiel für pi: ///home/pi/.config/mopidy/mopidy.conf//). Soll Mopidy später als Service unter dem User //mopidy// laufen gilt der Pfad ///etc/mopidy/mopidy.conf//. | Wenn alle gewünschten Addons installiert sind bearbeiten wir nun die Konfigurationsdatei //mopidy.conf//. Diese liegt für den angemeldeten User im Ordner ///home/user/.config/mopidy// (Beispiel für pi: ///home/pi/.config/mopidy/mopidy.conf//). Soll Mopidy später als Service unter dem User //mopidy// laufen gilt der Pfad ///etc/mopidy/mopidy.conf//. | ||
Zeile 178: | Zeile 178: | ||
Egal für welche Variante ihr Euch entscheidet - in der mopidy.conf werden alle zentralen Einstellungen und die der Addons verwaltet. Wir öffnen die Datei mit | Egal für welche Variante ihr Euch entscheidet - in der mopidy.conf werden alle zentralen Einstellungen und die der Addons verwaltet. Wir öffnen die Datei mit | ||
- | ''sudo nano /etc/mopidy/mopidy.conf'' bzw. \\ | + | sudo nano /etc/mopidy/mopidy.conf |
+ | |||
+ | bzw. | ||
- | ''sudo nano /home/pi/.config/mopidy/mopidy.conf'' | + | sudo nano /home/pi/.config/mopidy/mopidy.conf |
Im Abschnitt [core] werden die benutzen Verzeichnisse definiert | Im Abschnitt [core] werden die benutzen Verzeichnisse definiert | ||
Zeile 186: | Zeile 188: | ||
Wer Mopidy als Service laufen lassen möchte verwendet folgende Einstellung, | Wer Mopidy als Service laufen lassen möchte verwendet folgende Einstellung, | ||
- | ''[core]\\ | + | [core] |
- | cache_dir = /var/cache/mopidy\\ | + | cache_dir = /var/cache/mopidy |
- | config_dir = /etc/mopidy\\ | + | config_dir = /etc/mopidy |
- | data_dir = /var/lib/mopidy\\ '' | + | data_dir = /var/lib/mopidy |
wer Mopidy als User pi startet verwendet stattdessen | wer Mopidy als User pi startet verwendet stattdessen | ||
- | ''[core]\\ | + | [core] |
- | cache_dir = $XDG_CACHE_DIR/mopidy\\ | + | cache_dir = $XDG_CACHE_DIR/mopidy |
- | config_dir = $XDG_CONFIG_DIR/mopidy\\ | + | config_dir = $XDG_CONFIG_DIR/mopidy |
- | data_dir = $XDG_DATA_DIR/mopidy\\ '' | + | data_dir = $XDG_DATA_DIR/mopidy |
in beiden Varianten gefolgt von | in beiden Varianten gefolgt von | ||
- | ''max_tracklist_length = 10000\\ | + | max_tracklist_length = 10000 |
- | restore_state = false\\ '' | + | restore_state = false |
Alle weiteren Einstellungen am besten so wie bei mir übernehmen. | Alle weiteren Einstellungen am besten so wie bei mir übernehmen. | ||
- | ''[logging]\\ | + | [logging] |
- | verbosity = 1\\ | + | verbosity = 1 |
- | format = %(levelname)-8s %(asctime)s [%(process)d:%(threadName)s] %(name)s\n %(message)s\\ | + | format = %(levelname)-8s %(asctime)s [%(process)d:%(threadName)s] %(name)s\n %(message)s |
- | color = true\\ '' | + | color = true |
+ | |||
+ | [audio] | ||
+ | mixer = software | ||
+ | mixer_volume = 90 | ||
+ | output = autoaudiosink | ||
+ | buffer_time = 1000 | ||
+ | |||
+ | Wer später den Sound von Mopidy zusätzlich noch an einen Streamingserver (z.B. Icecast) ausgeben will verwendet in der Zeile //output = // folgende Parameter: | ||
- | ''[audio]\\ | + | output = tee name=t ! queue ! audioresample ! autoaudiosink t. ! queue ! lamemp3enc ! shout2send async=false mount=mopidy ip=127.0.0.1 port=8000 password=yxasqw123EDC |
- | mixer = software\\ | + | |
- | mixer_volume = 90\\ | + | |
- | output = autoaudiosink\\ | + | |
- | buffer_time = 1000\\ '' | + | |
- | ''[local]\\ | ||
- | media_dir = /music\\ '' | ||
- | ''[file]\\ | + | [local] |
- | enabled = true\\ | + | media_dir = /music |
- | media_dirs = /music\\ | + | |
- | excluded_file_extensions =\\ | + | [file] |
- | .directory\\ | + | enabled = true |
- | .html\\ | + | media_dirs = /music |
- | .jpeg\\ | + | excluded_file_extensions = |
- | .jpg\\ | + | .directory |
- | .log\\ | + | .html |
- | .nfo\\ | + | .jpeg |
- | .pdf\\ | + | .jpg |
- | .png\\ | + | .log |
- | .txt\\ | + | .nfo |
- | .zip\\ | + | |
- | show_dotfiles = false\\ | + | .png |
- | follow_symlinks = false\\ | + | .txt |
- | metadata_timeout = 1000\\ '' | + | .zip |
+ | show_dotfiles = false | ||
+ | follow_symlinks = false | ||
+ | metadata_timeout = 1000 | ||
+ | |||
+ | [http] | ||
+ | enabled = true | ||
+ | hostname = 0.0.0.0 | ||
+ | port = 6680 | ||
+ | zeroconf = Mopidy HTTP server on $hostname | ||
+ | csrf_protection = true | ||
+ | default_app = mopidy | ||
+ | |||
+ | [mpd] | ||
+ | enabled = true | ||
+ | hostname = 0.0.0.0 | ||
+ | port = 6600 | ||
+ | password = | ||
+ | max_connections = 20 | ||
+ | connection_timeout = 60 | ||
+ | zeroconf = Mopidy MPD server on $hostname | ||
+ | command_blacklist = | ||
+ | listall | ||
+ | listallinfo | ||
+ | default_playlist_scheme = m3u | ||
- | ''[http]\\ | + | [m3u] |
- | enabled = true\\ | + | enabled = true |
- | hostname = 0.0.0.0\\ | + | base_dir = /music |
- | port = 6680\\ | + | default_encoding = latin-1 |
- | zeroconf = Mopidy HTTP server on $hostname\\ | + | default_extension = .m3u8 |
- | csrf_protection = true\\ | + | playlists_dir = /music/playlists |
- | default_app = mopidy\\ '' | + | |
- | ''[mpd]\\ | + | [softwaremixer] |
- | enabled = true\\ | + | enabled = true |
- | hostname = 0.0.0.0\\ | + | |
- | port = 6600\\ | + | |
- | password =\\ | + | |
- | max_connections = 20\\ | + | |
- | connection_timeout = 60\\ | + | |
- | zeroconf = Mopidy MPD server on $hostname\\ | + | |
- | command_blacklist =\\ | + | |
- | listall\\ | + | |
- | listallinfo\\ | + | |
- | default_playlist_scheme = m3u\\ '' | + | |
- | ''[m3u]\\ | + | [tunein] |
- | enabled = true\\ | + | enabled = true |
- | base_dir = /music\\ | + | timeout = 5000 |
- | default_encoding = latin-1\\ | + | |
- | default_extension = .m3u8\\ | + | |
- | playlists_dir = /music/playlists\\ '' | + | |
- | + | ||
- | ''[softwaremixer]\\ | + | |
- | enabled = true\\ '' | + | |
- | + | ||
- | ''[tunein]\\ | + | |
- | enabled = true\\ | + | |
- | timeout = 5000\\ '' | + | |
Um Mopidy-Spotify nutzen zu können benötigen wir API Zugriff auf Spotify. Die //client_id// und das //client_secret// bekommt ihr [[https://auth.mopidy.com/spotify/|hier]]. | Um Mopidy-Spotify nutzen zu können benötigen wir API Zugriff auf Spotify. Die //client_id// und das //client_secret// bekommt ihr [[https://auth.mopidy.com/spotify/|hier]]. | ||
- | ''[spotify]\\ | + | [spotify] |
- | enabled = true\\ | + | enabled = true |
- | username = DEIN_SPOTIFY_USERNAME\\ | + | username = DEIN_SPOTIFY_USERNAME |
- | password = DEIN_SPOTIFY_PASSWORT\\ | + | password = DEIN_SPOTIFY_PASSWORT |
- | client_id = xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\\ | + | client_id = xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx |
- | client_secret = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\\ | + | client_secret = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
- | bitrate = 160\\ | + | bitrate = 160 |
- | volume_normalization = true\\ | + | volume_normalization = true |
- | private_session = false\\ | + | private_session = false |
- | timeout = 10\\ | + | timeout = 10 |
- | allow_cache = true\\ | + | allow_cache = true |
- | allow_network = true\\ | + | allow_network = true |
- | allow_playlists = true\\ | + | allow_playlists = true |
- | search_album_count = 20\\ | + | search_album_count = 20 |
- | search_artist_count = 10\\ | + | search_artist_count = 10 |
- | search_track_count = 50\\ | + | search_track_count = 50 |
- | toplist_countries =\\ '' | + | toplist_countries = |
Ähnlich ist es bei SoundCloud. Hier benötigen wir einen auth_token welchen wir [[https://secure.soundcloud.com/connect?client_id=93e33e327fd8a9b77becd179652272e2&scope=non-expiring&response_type=code_and_token&redirect_uri=https://www.mopidy.com/soundcloud_callback|hier]] bekommen. | Ähnlich ist es bei SoundCloud. Hier benötigen wir einen auth_token welchen wir [[https://secure.soundcloud.com/connect?client_id=93e33e327fd8a9b77becd179652272e2&scope=non-expiring&response_type=code_and_token&redirect_uri=https://www.mopidy.com/soundcloud_callback|hier]] bekommen. | ||
- | ''[soundcloud]\\ | + | [soundcloud] |
- | enabled = true\\ | + | enabled = true |
- | explore_songs = 25\\ | + | explore_songs = 25 |
- | auth_token = x-xxxxx-xxxxxxxxx-xxxxxxxxxxxxxxx\\ '' | + | auth_token = x-xxxxx-xxxxxxxxx-xxxxxxxxxxxxxxx |
Für den Zugriff auf Last.FM genügen Benutzername und Passwort. | Für den Zugriff auf Last.FM genügen Benutzername und Passwort. | ||
- | ''[scrobbler]\\ | + | [scrobbler] |
- | enabled = true\\ | + | enabled = true |
- | username = DEIN_LASTFM_USERNAME\\ | + | username = DEIN_LASTFM_USERNAME |
- | password = DEIN_LASTFM_PASSWORT\\ '' | + | password = DEIN_LASTFM_PASSWORT |
Etwas komplizierter wird es bei Youtube. Hierfür benötigen wir einen //youtube_api_key//. Eine einfaches Videotutorial wie man diesen erstellt bzw. bekommt gibt es [[https://youtu.be/ozOmQGDVwKQ|hier]]. | Etwas komplizierter wird es bei Youtube. Hierfür benötigen wir einen //youtube_api_key//. Eine einfaches Videotutorial wie man diesen erstellt bzw. bekommt gibt es [[https://youtu.be/ozOmQGDVwKQ|hier]]. | ||
- | ''[youtube]\\ | + | [youtube] |
- | enabled = true\\ | + | enabled = true |
- | youtube_api_key = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\\ | + | youtube_api_key = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
- | api_enabled = false\\ | + | api_enabled = false |
- | threads_max = 16\\ | + | threads_max = 16 |
- | search_results = 15\\ | + | search_results = 15 |
- | playlist_max_videos = 20\\ '' | + | playlist_max_videos = 20 |
Nun werden noch die Podcast-Quellen eingerichtet. Die Datei //podcasts.opml// ist eine XML-Datei welche in meinem Beispiel im Ordner ///music/podcasts// liegt. Diese kann man ganz leicht selbst erstellen oder z.B. in iTunes erzeugen. | Nun werden noch die Podcast-Quellen eingerichtet. Die Datei //podcasts.opml// ist eine XML-Datei welche in meinem Beispiel im Ordner ///music/podcasts// liegt. Diese kann man ganz leicht selbst erstellen oder z.B. in iTunes erzeugen. | ||
- | ''[podcast]\\ | + | [podcast] |
- | enabled = true\\ | + | enabled = true |
- | browse_root = /music/podcasts/podcasts.opml\\ | + | browse_root = /music/podcasts/podcasts.opml |
- | browse_order = desc\\ | + | browse_order = desc |
- | lookup_order = asc\\ | + | lookup_order = asc |
- | cache_size = 64\\ | + | cache_size = 64 |
- | cache_ttl = 86400\\ | + | cache_ttl = 86400\\ |
- | timeout = 10\\ '' | + | timeout = 10\\ '' |
Noch einfacher geht es bei diesem Addon. Hier übernimmt Apple die Verwaltung des Podcast-Verzeichnisse und sortiert dieses für uns nach Genres. Da das Verzeichnis öffentlich ist wird auch keine weitere Authentifizierung benötigt. | Noch einfacher geht es bei diesem Addon. Hier übernimmt Apple die Verwaltung des Podcast-Verzeichnisse und sortiert dieses für uns nach Genres. Da das Verzeichnis öffentlich ist wird auch keine weitere Authentifizierung benötigt. | ||
- | ''[podcast-itunes]\\ | + | [podcast-itunes] |
- | enabled = true\\ | + | enabled = true |
- | base_url = http://itunes.apple.com/\\ | + | base_url = http://itunes.apple.com/ |
- | country = DE\\ | + | country = DE |
- | explicit = Yes\\ | + | explicit = Yes |
- | charts = audioPodcasts\\ | + | charts = audioPodcasts |
- | charts_limit = 20\\ | + | charts_limit = 20 |
- | search_limit = 20\\ | + | search_limit = 20 |
- | timeout = 10\\ | + | timeout = 10 |
- | retries = 3\\ '' | + | retries = 3 |
Wurde Mopidy für einen User z.B. pi eingerichtet so lässt sich Mopidy durch einfach durch Eingabe von | Wurde Mopidy für einen User z.B. pi eingerichtet so lässt sich Mopidy durch einfach durch Eingabe von | ||
- | ''mopidy'' | + | mopidy |
starten. Möchtet ihr Mopidy als Service starten bzw. später beim Hochfahren des RaspberryPis starten lassen so müssen wir es zunächst in die Liste der Systemdienste aufnehmen. Das geschieht ganz einfach mit | starten. Möchtet ihr Mopidy als Service starten bzw. später beim Hochfahren des RaspberryPis starten lassen so müssen wir es zunächst in die Liste der Systemdienste aufnehmen. Das geschieht ganz einfach mit | ||
- | ''sudo systemctl enable mopidy'' | + | sudo systemctl enable mopidy |
Danach können wir Mopidy mit | Danach können wir Mopidy mit | ||
- | ''sudo systemctl start mopidy'' | + | sudo systemctl start mopidy |
starten. Das Programm läuft nun als Prozess im Hintergrund. | starten. Das Programm läuft nun als Prozess im Hintergrund. | ||
Zeile 376: | Zeile 383: | ||
Die Installation wird mit | Die Installation wird mit | ||
- | ''sudo apt-get install ncmpcpp'' | + | sudo apt-get install ncmpcpp |
gestartet und das war es auch schon. Wichtig ist, dass //Mopidy-MPD// installiert und der entsprechende Konfigurationsabschnitt in der //mopidy.conf// vorhanden ist. Eine Übersicht der Tastaturbelegung findet ihr {{ :ncmpcpp_cheat_sheet.pdf | hier}}. | gestartet und das war es auch schon. Wichtig ist, dass //Mopidy-MPD// installiert und der entsprechende Konfigurationsabschnitt in der //mopidy.conf// vorhanden ist. Eine Übersicht der Tastaturbelegung findet ihr {{ :ncmpcpp_cheat_sheet.pdf | hier}}. | ||
+ | |||
+ | ==== Voreingestellte Playlist beim Start ==== | ||
+ | |||
+ | Betreibt man seine Mopidy-Server "headless", also ohne angeschlossene Tastatur oder Monitor, so lässt sich mit diesem Plugin eine Default-Playlist setzen. Diese wird beim Start automatisch abgespielt. In meinem Fall ist es eine Playlist vordefinierter Radiosender mit dem Namen //Radio-Favoriten//. | ||
+ | |||
+ | Installiert wird das Plugin mit | ||
+ | |||
+ | sudo python3 -m pip install Mopidy-DefaultPlaylist | ||
+ | | ||
+ | Der entsprechende Abschnitt in der mopidy.conf sieht dann so aus | ||
+ | |||
+ | [defaultplaylist] | ||
+ | enabled = true | ||
+ | defaultplaylist_name = Radio-Favoriten | ||
+ | autoplay = true | ||
+ | shuffle = true | ||
+ | |||
+ | Die Option //shuffle =// sorgt dafür das bei jedem Neustart ein anderer Sender abgespielt wird. | ||
Zeile 385: | Zeile 410: | ||
Um noch weitere Clients im LAN (oder wahlweise auch weltweit) mit Musik zu versorgen kann man zusätzlich noch einen Streamingserver aufsetzen. Dieser läuft parallel zu //Mopidy// und stellt für angeschlossene Geräte einen MP3-Stream bereit. | Um noch weitere Clients im LAN (oder wahlweise auch weltweit) mit Musik zu versorgen kann man zusätzlich noch einen Streamingserver aufsetzen. Dieser läuft parallel zu //Mopidy// und stellt für angeschlossene Geräte einen MP3-Stream bereit. | ||
- | ''sudo apt-get install icecast2'' | + | sudo apt-get install icecast2 |