{"id":1304,"date":"2018-03-23T22:47:49","date_gmt":"2018-03-23T22:47:49","guid":{"rendered":"http:\/\/blog.datentraeger.li\/?p=1304"},"modified":"2021-04-07T19:21:29","modified_gmt":"2021-04-07T18:21:29","slug":"ncmpcpp","status":"publish","type":"post","link":"https:\/\/blog.datentraeger.li\/?p=1304","title":{"rendered":"ncmpcpp"},"content":{"rendered":"<p>cmus und mocp sind ja ganz ok, aber ncmpcpp wollte ich doch mal anschauen&#8230;also gesagt, getan.<\/p>\n<p><em>[Edit]: habe den Post \u00fcber die Tage einige male revidiert bzw. erg\u00e4nzt&#8230;<\/em><\/p>\n<h3>mpd<\/h3>\n<p>mpd ist schnell eingerichtet. Da nur ich mit meinem Desktop arbeite, habe ich es in der globalen Config gemacht (l\u00e4sst sich aber nat\u00fcrlich auch per User unter ~\/.config\/mpd einrichten). In der globalen Config unter \/etc\/mpd.conf hab ich eigentlich nur zwei Zeilen angepasst &#8211; das Directory mit der Musiklibrary und das Directory f\u00fcr Playlists:<\/p>\n<pre class=\"lang:default decode:true\">music_directory     \"\/export\/daten_internal\/music\"\nplaylist_directory  \"\/export\/daten_internal\/playlists\"<\/pre>\n<p>Damit die Visualisierung funktioniert, muss noch folgender Schnipsel erg\u00e4nzt werden<\/p>\n<pre class=\"lang:default decode:true \">audio_output {\n  type              \"fifo\"\n  name              \"my_fifo\"\n  path              \"\/tmp\/mpd.fifo\"\n  format            \"44100:16:2\"\n}<\/pre>\n<h4><b>normalization<br \/>\n<\/b><\/h4>\n<p>Kann zwar noch nicht best\u00e4tigen, da noch nicht so beachtet, aber diese Option scheint mir sinnvoll:<\/p>\n<pre class=\"lang:default decode:true \">volume_normalization   \"yes\"<\/pre>\n<p>Wenn das dasselbe wie bei wodim ist, dann will ich es ganz klar.<\/p>\n<p>Dann den Service durchstarten, erledigt.<\/p>\n<h4>mpc<\/h4>\n<p><a href=\"https:\/\/github.com\/MusicPlayerDaemon\/mpc\" target=\"_blank\" rel=\"noopener\">mpc<\/a> ist ja eigentlich der &#8220;Standard&#8221;-Client f\u00fcr mpd, und ich muss gestehen, der allein ist schon geil. mpd (zumindest bei Debian) hat autocompletion, also geh ich nicht auf die Details ein. Jedenfalls weiss ich jetzt schon, dass mpc bei mir in gewissen Scripten zum Einsatz kommen wird (starte Playlist xy t\u00e4glich um 8 Uhr etc&#8230;).<br \/>\nFalls via Client (egal was f\u00fcr einer) die Lautst\u00e4rke nicht gesetzt werden kann, muss beim Output lediglich die Zeile mixer_type &#8220;software&#8221; erg\u00e4nzt werden. Notiers jetzt hier einfach noch, man weiss ja nie&#8230;<\/p>\n<pre class=\"lang:default decode:true\">mixer_type \"software\"<\/pre>\n<h3>ncmpcpp<\/h3>\n<p>Mit ncmpcpp (ncurses music player client plus plus) hab ich mich anf\u00e4nglich etwas schwerer getan (beim Namen hab ich immer noch M\u00fche&#8230;). Wenn man&#8217;s dann aber mal geschnallt hat, ist es ein echt geiles Tool.<\/p>\n<p>Beim ersten Start wird man wohl mal die Library updaten wollen &#8211; dazu dr\u00fcckt man einfach &#8220;u&#8221;. Oben rechts wird dies auch durch [U] angezeigt. Je nach Gr\u00f6sse der Library kann das schon etwas dauern.<\/p>\n<p>Es gibt mehrere &#8220;Fenster&#8221; in ncmpcpp, welche mit den Tasten 1 &#8211; 8 ausgew\u00e4hlt werden k\u00f6nnen. Eines der ersten Dinger, die ich gemacht hab war ein Keybinding f\u00fcr die Taste 9 zu setzen, und zwar f\u00fcr die Hilfe. Das ist f\u00fcr einen Anf\u00e4nger sehr hilfreich. Dies ist zwar nicht zwingend n\u00f6tig &#8211; F1 ist der default f\u00fcr die Hilfe. Ich habe aber die F1-Taste bei mir komplett deaktiviert, weil sie nervt \ud83d\ude09<br \/>\nBeispiel-Configs findet man \u00fcbrigens unter \/usr\/share\/doc\/ncmpcpp\/examples. Am besten kopiert man die zu Beginn mal nach ~\/.ncmpcpp.<\/p>\n<pre class=\"lang:default decode:true\">#default help: f1...\ndef_key \"9\" \n  show_help<\/pre>\n<p>zudem &#8211; um sich einfach zuhause zu f\u00fchlen &#8211; hab ich noch diese zwei Bindings erg\u00e4nzt<\/p>\n<pre class=\"lang:default decode:true \">def_key \"j\"\n  scroll_down\ndef_key \"k\"\n  scroll_up<\/pre>\n<h4>Basics<\/h4>\n<h5>Views<\/h5>\n<p><strong>1<\/strong>: Playlist<br \/>\n<strong>2<\/strong>: Browse Library<br \/>\n<strong>3<\/strong>: Search Engine<br \/>\n<strong>4<\/strong>: Media Library<br \/>\n<strong>5<\/strong>: Playlist Editor<br \/>\n<strong>6<\/strong>: Tag Editor<br \/>\n<strong>7<\/strong>: Outputs<br \/>\n<strong>8<\/strong>: Music visualizer<\/p>\n<p>mit &#8216;a&#8217; kann man Lieder oder ganze Alben zur Playlist hinzuf\u00fcgen, Playlists k\u00f6nnen mit &#8216;S&#8217; gespeichert werden.<\/p>\n<h5>weitere Steuerung <strong>(defaults)<\/strong><\/h5>\n<p><strong>q<\/strong> &#8211; Quit<br \/>\n<strong>f<\/strong> &#8211; vorw\u00e4rts suchen<br \/>\n<strong>b<\/strong> &#8211; r\u00fcckw\u00e4rts suchen<br \/>\n<strong>m<\/strong> &#8211; Track nach oben in der Playlist schieben<br \/>\n<strong>n<\/strong> &#8211; Track weiter nach unten in der Playlist schieben<br \/>\n<strong>a<\/strong> &#8211; Track (oder Album, Artist,&#8230;) zur Playlist hinzuf\u00fcgen<br \/>\n<strong>del<\/strong> &#8211; Track aus Playlist l\u00f6schen<br \/>\n<strong>S<\/strong> &#8211; Playlist speichern<br \/>\n<strong>e<\/strong> &#8211; Auswahl im Tag-Editor bearbeiten<br \/>\n<strong>\\<\/strong> &#8211; Zwischen klassicher und alternativer Ansicht wechseln<br \/>\n<strong>P<\/strong> &#8211; Display Mode wechseln (config value: playlist_display_mode)<br \/>\n<strong>#<\/strong> &#8211; Bitrate des Files anzeigen<br \/>\n<strong>i<\/strong> &#8211; Song Informationen anzeigen<br \/>\n<strong>I<\/strong> &#8211; K\u00fcnstler Informationen anzeigen<br \/>\n<strong>L<\/strong> &#8211; Shuffle between available lyric databases<br \/>\n<strong>l<\/strong> &#8211; Song-Text anzeigen \/ wieder verstecken<br \/>\n<strong>&gt;<\/strong> &#8211; n\u00e4chster Track<br \/>\n<strong>&lt;<\/strong> &#8211; vorheriger Track<br \/>\n<strong>p<\/strong> &#8211; Play\/Pause<br \/>\n<strong>+<\/strong> &#8211; Lautst\u00e4rke 2% erh\u00f6hen<br \/>\n<strong>&#8211;<\/strong> &#8211; Lautst\u00e4rke 2% verringern<br \/>\n<strong>=<\/strong> &#8211; Uhr anzeigen (tmux-like)<\/p>\n<p>Im Netz findet man aber gen\u00fcgend <a href=\"https:\/\/pkgbuild.com\/~jelle\/ncmpcpp\/\" target=\"_blank\" rel=\"noopener\">Cheat-Sheets<\/a> und Beschreibungen, bringts jetzt nicht, alles zu erkl\u00e4ren. (Eigentlich hab ich&#8217;s ja nur f\u00fcr mich gepostet, solange ich die Keybindings noch nicht voll &#8216;intus&#8217; hab&#8230;)<\/p>\n<h5>Modes<\/h5>\n<p><strong>r<\/strong> &#8211; repeat mode<em> [r&#8212;&#8211;]<\/em><br \/>\n<strong>z<\/strong> &#8211; random mode <em>[-z&#8212;-]<\/em><br \/>\n<strong>y<\/strong> &#8211; single mode <em>[&#8211;s&#8212;]<\/em> (Wiederholt den aktuellen Track, wenn das Ende erreicht wurde)<br \/>\n<strong>R<\/strong> &#8211; consume mode <em>[&#8212;c&#8211;]<\/em> (entfernt den aktuellen Track von der Playlist, wenn das Ende erreicht wurde)<br \/>\n<strong>y<\/strong> &#8211; single mode <em>[&#8211;s&#8212;] <\/em>(wiederholt den aktuellen Track, wenn Ende erreicht wurde)<br \/>\n<strong>x<\/strong> &#8211; crossfade mode <em>[&#8212;-x-]<\/em><\/p>\n<p><em>\u00a0<\/em><\/p>\n<ul>\n<li><code>R<\/code> &#8211; consume mode<\/li>\n<\/ul>\n<p><em>\u00a0<\/em><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1309\" src=\"http:\/\/blog.datentraeger.li\/wp-content\/uploads\/2018\/03\/ncmpcpp_playlist.png\" alt=\"\" width=\"1030\" height=\"422\" srcset=\"https:\/\/blog.datentraeger.li\/wp-content\/uploads\/2018\/03\/ncmpcpp_playlist.png 1030w, https:\/\/blog.datentraeger.li\/wp-content\/uploads\/2018\/03\/ncmpcpp_playlist-300x123.png 300w, https:\/\/blog.datentraeger.li\/wp-content\/uploads\/2018\/03\/ncmpcpp_playlist-768x315.png 768w, https:\/\/blog.datentraeger.li\/wp-content\/uploads\/2018\/03\/ncmpcpp_playlist-1024x420.png 1024w\" sizes=\"auto, (max-width: 1030px) 100vw, 1030px\" \/><\/p>\n<p>und so sieht dann etwa der Visualizer (8) aus (im Screenshot mit visualizer_in_stereo = no, erst danach umgestellt). Den Stil der Visualisierung kann man \u00fcbrigens mit der Leertaste &#8220;on the fly&#8221; \u00e4ndern:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1310\" src=\"http:\/\/blog.datentraeger.li\/wp-content\/uploads\/2018\/03\/ncmpcpp_visualizer.png\" alt=\"\" width=\"1032\" height=\"426\" srcset=\"https:\/\/blog.datentraeger.li\/wp-content\/uploads\/2018\/03\/ncmpcpp_visualizer.png 1032w, https:\/\/blog.datentraeger.li\/wp-content\/uploads\/2018\/03\/ncmpcpp_visualizer-300x124.png 300w, https:\/\/blog.datentraeger.li\/wp-content\/uploads\/2018\/03\/ncmpcpp_visualizer-768x317.png 768w, https:\/\/blog.datentraeger.li\/wp-content\/uploads\/2018\/03\/ncmpcpp_visualizer-1024x423.png 1024w\" sizes=\"auto, (max-width: 1032px) 100vw, 1032px\" \/><\/p>\n<h4>Tagging<\/h4>\n<p>Was mir auch sehr gut gef\u00e4llt, dass ein ziemlich brauchbarer Tag Editor (6) bei ncmpcpp mitkommt. Nur leider hat der beim Ersten Versuch nicht wirklich was schreiben wollen &#8211; es gab nur &#8216;error whilte writing tags&#8230;.file not found). Damit das ganze klappt, muss man ncmpcpp in der Config das mpd-Music-Directory mitgeben, danach klappts tadellos:<\/p>\n<pre class=\"lang:default decode:true\">mpd_music_dir = \/export\/daten_internal\/music<\/pre>\n<h4>Theming<\/h4>\n<p>ncmpcpp l\u00e4sst sich beliebig anpassen, darauf gehe ich jetzt aber nicht ein &#8211; hier findet man gen\u00fcgend Beispiele auf <a href=\"http:\/\/dotshare.it\/category\/mpd\/ncmpcpp\/\" target=\"_blank\" rel=\"noopener\">DotShare<\/a> und Github&#8230;<\/p>\n<h4>Sonos<\/h4>\n<p>Und endlich habe ich eine M\u00f6glichkeit, den Sound meines Rechners auf die Sonos zu streamen! (ja, ich weiss es gibt z.B. <a href=\"https:\/\/github.com\/pascalopitz\/unoffical-sonos-controller-for-linux\">Sonos-Controller unofficial<\/a>, der auch ganz gut klappt, aber eben mit GUI)&#8230;<br \/>\nDazu muss man in mpd einen neuen Output f\u00fcr einen HTTP-Stream definieren:<\/p>\n<pre class=\"lang:default decode:true \">audio_output {\n  type          \"httpd\"\n  name          \"HTTP Stream\"\n  encoder       \"lame\"\n  port          \"8000\"\n  quality       \"5.0\"\n  format        \"44100:16:1\"\n}<\/pre>\n<p>oder via Shoutcast (ich hab das ganze auch via Icecast probiert, konnte aber keinen Unterschied feststellen):<\/p>\n<pre class=\"lang:default decode:true \">audio_output {\n  type          \"shout\"\n  encoding      \"mp3\"\n  name          \"Shout Stream (mp3)\"\n  host          \"icecast\"\n  port          \"8000\"\n  mount         \"\/mpd.mp3\"\n  password      \"hackme\"\n  quality       \"0\" # highest\n  format        \"44100:16:1\"\n}\n<\/pre>\n<p>Ich habe die erste Variante &#8211; via HTTP-Stream &#8211; verwendet, <del>denn ich w\u00fcsste nicht, wie man bei Sonos ein Passwort mitgeben k\u00f6nnte.<\/del> (wie erw\u00e4hnt konnte ich keinen Unterschied mit Icecast feststellen, also dann doch gleich mit der &#8220;in-house&#8221; L\u00f6sung&#8230;.<del><br \/>\n<\/del><\/p>\n<p>Wenn das alles erledigt ist, muss man im Sonos-Programm (wohl oder \u00fcbel in der Desktopversion der Software, da es nur dort m\u00f6glich ist) eine neue <a href=\"https:\/\/sonos.custhelp.com\/app\/answers\/detail\/a_id\/264\/~\/how-to-add-an-internet-radio-station-to-sonos\" target=\"_blank\" rel=\"noopener\">Radiostation hinzuf\u00fcgen<\/a>. Na gut, dann hab ich das halt schnell auf der Kiste vom Vater gemacht:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1319\" src=\"http:\/\/blog.datentraeger.li\/wp-content\/uploads\/2018\/03\/sonos_radiostation01.png\" alt=\"\" width=\"231\" height=\"139\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1320\" src=\"http:\/\/blog.datentraeger.li\/wp-content\/uploads\/2018\/03\/sonos_radiostation02.png\" alt=\"\" width=\"396\" height=\"303\" srcset=\"https:\/\/blog.datentraeger.li\/wp-content\/uploads\/2018\/03\/sonos_radiostation02.png 396w, https:\/\/blog.datentraeger.li\/wp-content\/uploads\/2018\/03\/sonos_radiostation02-300x230.png 300w\" sizes=\"auto, (max-width: 396px) 100vw, 396px\" \/><\/p>\n<p>Und nun kann man die eigene Playlist via ncmpcpp auf die Sonos streamen. Damit&#8217;s aber nicht auf dem Rechner und dem Sonos abgespielt wird, muss der ALSA-Output deaktiviert und der HTTP-Stream aktiviert werden. Das macht man, indem man den entsprechenden Output markiert und Enter dr\u00fcckt..<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1321\" src=\"http:\/\/blog.datentraeger.li\/wp-content\/uploads\/2018\/03\/ncmpcpp_output.png\" alt=\"\" width=\"1035\" height=\"140\" srcset=\"https:\/\/blog.datentraeger.li\/wp-content\/uploads\/2018\/03\/ncmpcpp_output.png 1035w, https:\/\/blog.datentraeger.li\/wp-content\/uploads\/2018\/03\/ncmpcpp_output-300x41.png 300w, https:\/\/blog.datentraeger.li\/wp-content\/uploads\/2018\/03\/ncmpcpp_output-768x104.png 768w, https:\/\/blog.datentraeger.li\/wp-content\/uploads\/2018\/03\/ncmpcpp_output-1024x139.png 1024w\" sizes=\"auto, (max-width: 1035px) 100vw, 1035px\" \/><\/p>\n<p>Outputs k\u00f6nnen aber auch in der <a href=\"https:\/\/www.musicpd.org\/doc\/user\/config_audio_outputs.html\" target=\"_blank\" rel=\"noopener\">Config &#8220;by default&#8221;<\/a> aktiviert \/ deaktivert werden beim Start von mpd:<\/p>\n<pre>enabled yes|no<\/pre>\n<p>Wenn ich einen Track wechsle, hat es eine kurze (mehrere Sekunden&#8230;) Verz\u00f6gerung (Anzeige in ncmpcpp ist schneller als Sonos), aber damit kann ich gut leben. Vielleicht auch einfach ein lokales WLAN-Problem, das nix damit zu tun hat&#8230; Das ganze konnte ich jedoch in mpd mit einem buffer von 0% etwas verbessern:<\/p>\n<pre class=\"lang:default decode:true \"># This setting controls the percentage of the buffer which is filled before\n# beginning to play. Increasing this reduces the chance of audio file skipping,\n# at the cost of increased time prior to audio playback.\nbuffer_before_play              \"0%\"\n<\/pre>\n<h4>Probleme<\/h4>\n<p>Das einzige, das ich nicht via ncmpcpp machen kann ist die Lautst\u00e4rke anpassen. Hierzu hab ich aber bisher noch keine L\u00f6sung, verwende derzeit einfach den <a href=\"https:\/\/github.com\/pascalopitz\/unoffical-sonos-controller-for-linux\" target=\"_blank\" rel=\"noopener\">Sonos-Controller-unofficial<\/a> oder die Android-App (unter Android ist \u00fcbrigens <a href=\"https:\/\/f-droid.org\/en\/packages\/com.namelessdev.mpdroid\/\" target=\"_blank\" rel=\"noopener\">MPDroid<\/a> zu empfehlen&#8230;). Ist jetzt nicht ganz so tragisch, da der Stream ja sowieso irgendwo &#8220;gestartet&#8221; werden muss. Sch\u00f6n w\u00e4r&#8217;s aber trotzdem direkt via ncmpcpp (Volume n\/a kann man durch ein dummy-Ger\u00e4t (<a href=\"https:\/\/www.musicpd.org\/doc\/user\/client_hacks.html#external_mixer\" target=\"_blank\" rel=\"noopener\">mixer_type &#8220;null&#8221;<\/a>) beheben, aber das ist dann wirklich halt nur ein dummy und das bringt ja auch nicht viel&#8230;)<\/p>\n<h5>Notifications<\/h5>\n<p>Anfangs hab ich mir mit notify-send eine Notiication mit einem 5 Sekunden Timeout gesendet, was grad l\u00e4uft. Das klappt auch ganz gut, jedoch wenn ich ne Weile nicht am Rechner bin und dieser gelockt ist, stauen sich die Meldungen an (nehme an, dass das bewusst so ist, weil ja niemand die Notifications sieht, wenn der Rechner gelockt ist):<\/p>\n<pre class=\"lang:default decode:true \">execute_on_song_change = \/usr\/bin\/notify-send -t 5000 \"Now Playing \u266b\" \"$(mpc current)\"<\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1457\" src=\"http:\/\/blog.datentraeger.li\/wp-content\/uploads\/2018\/03\/ncmpcpp_libnotify.png\" alt=\"\" width=\"300\" height=\"211\" \/><\/p>\n<p>Da ich den Status aber sowieso in der i3bar anzeige, ist es eigentlich auch sinnlos, deswegen hab ich die Notification deaktiviert&#8230;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1458\" src=\"http:\/\/blog.datentraeger.li\/wp-content\/uploads\/2018\/03\/i3bar_mpc.png\" alt=\"\" width=\"694\" height=\"23\" srcset=\"https:\/\/blog.datentraeger.li\/wp-content\/uploads\/2018\/03\/i3bar_mpc.png 694w, https:\/\/blog.datentraeger.li\/wp-content\/uploads\/2018\/03\/i3bar_mpc-300x10.png 300w\" sizes=\"auto, (max-width: 694px) 100vw, 694px\" \/><\/p>\n<p>Mein Blocks-Script schaut folgendermassen aus<\/p>\n<pre>#!\/bin\/bash                                                                                                      \nNCMP=$(mpc | grep \"^\\\\[playing\\\\]\" | awk '{print $1}')\n#falls Internet Radio laeuft - Sender interessiert mich nicht\nS_NCMP=$(mpc current -f '%artist% - %title%')\nNUM_NCMP=$($S_NCMP | wc -c)\n\nif [ \"$NCMP\" = \"[playing]\" ];then\n  if [ \"$NUM_NCMP\" -lt 30 ];then\n    echo -e \" $S_NCMP\"\n  else\n    echo -e \" $S_NCMP...\"\n  fi  \nfi\n\nif [[ $BLOCK_BUTTON == '1' ]]; then\n  if [ \"$(command -v ncmpcpp)\" ]; then\n    xterm -e ncmpcpp\n  fi  \nfi\n<\/pre>\n<p><i>EDIT 18.5.2018:<\/i><\/p>\n<h4>USB-Speaker anstatt Sonos\/HTTP-Stream<\/h4>\n<p>Das mit dem Sonos ist mir mit der Zeit doch immer mehr auf den Wecker gegangen, erstens wegen der Verz\u00f6gerung (10 Sekunden ganz normal), zweitens wegen des Volumes (Lautst\u00e4rke kann logischerweise im HTTP-Stream nicht angepasst werden) und drittens war&#8217;s scheisse, wenn ich zum Filme schauen andere Lautsprecher nutzen musste als zum Musik h\u00f6ren.<br \/>\nAlso hab ich mir einen Subwoofer zugelegt (<a href=\"https:\/\/www.logitechg.com\/en-gb\/product\/g560-rgb-gaming-speakers\" target=\"_blank\" rel=\"noopener\">Logitech G560<\/a>).<\/p>\n<p>Da ich die Speaker mit USB am Rechner verbunden hab, musste also die MPD-Config entsprechend angepasst werden:<\/p>\n<pre>audio_output {\n  type \"alsa\"\n  name \"G560 USB Speaker\"\n  device \"hw:3,0\"\n  format \"44100:16:2\"\n  mixer_type \"software\"\n}\n<\/pre>\n<p>Das richtige Device zeigt aplay -l an. Testen l\u00e4sst sich das ganze, bevor man es in der Config anpasst, folgendermassen:<\/p>\n<pre>aplay -D plughw:,0 \/usr\/share\/sounds\/alsa\/Front_Center.wav<\/pre>\n<p>Et voila, alles funktioniert und endlich reagiert MPD instant ohne lange Verz\u00f6gerung und ich ben\u00f6tige nur noch einen Lautsprecher f\u00fcr alles.<\/p>\n","protected":false},"excerpt":{"rendered":"cmus und mocp sind ja ganz ok, aber ncmpcpp wollte ich doch mal anschauen&#8230;also gesagt, getan. [Edit]: habe den Post \u00fcber die Tage einige male revidiert bzw. erg\u00e4nzt&#8230; mpd mpd ist schnell eingerichtet. Da nur ich mit meinem Desktop arbeite, habe ich es in der globalen Config gemacht (l\u00e4sst sich&hellip;\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[36,14],"tags":[],"class_list":["post-1304","post","type-post","status-publish","format-standard","hentry","category-cli","category-multimedia"],"_links":{"self":[{"href":"https:\/\/blog.datentraeger.li\/index.php?rest_route=\/wp\/v2\/posts\/1304","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.datentraeger.li\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.datentraeger.li\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.datentraeger.li\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.datentraeger.li\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1304"}],"version-history":[{"count":59,"href":"https:\/\/blog.datentraeger.li\/index.php?rest_route=\/wp\/v2\/posts\/1304\/revisions"}],"predecessor-version":[{"id":2664,"href":"https:\/\/blog.datentraeger.li\/index.php?rest_route=\/wp\/v2\/posts\/1304\/revisions\/2664"}],"wp:attachment":[{"href":"https:\/\/blog.datentraeger.li\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1304"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.datentraeger.li\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1304"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.datentraeger.li\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1304"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}