{"id":3357,"date":"2023-12-12T11:15:00","date_gmt":"2023-12-12T10:15:00","guid":{"rendered":"https:\/\/ictknow-how.ch\/blog\/?p=3357"},"modified":"2023-12-12T12:14:45","modified_gmt":"2023-12-12T11:14:45","slug":"lidarr-wie-nimmt-man-aenderungen-am-frontend-vor","status":"publish","type":"post","link":"https:\/\/ictknow-how.ch\/blog\/2023\/12\/12\/lidarr-wie-nimmt-man-aenderungen-am-frontend-vor\/","title":{"rendered":"Lidarr \u2013 wie nimmt man \u00c4nderungen am Frontend vor?"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Im <a href=\"https:\/\/ictknow-how.ch\/blog\/2023\/12\/10\/wie-kann-man-bei-lidarr-beitragenein-ausfuehrlicheres-how-to-contribute\/\">ersten Teil<\/a> wird erkl\u00e4rt, wie man das Backend (<code>C#<\/code>-Code) f\u00fcr Lidarr ver\u00e4ndert.<br>Im <a href=\"https:\/\/ictknow-how.ch\/blog\/2023\/12\/10\/lidarr-wie-stellt-man-das-frontend-bereit\/\">zweiten Teil<\/a> wird erkl\u00e4rt, wie man das unver\u00e4nderte Frontend (<code>HTML<\/code> und <code>JS<\/code>-Code) bereitstellt, damit \u00c4nderungen am Backend getestet werden k\u00f6nnen und keine <code>404-Not Found<\/code>-Fehlermeldung beim Kompilieren des C#-Codes erscheint.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In diesem dritten Teil wird erkl\u00e4rt, wie man \u00c4nderungen am Frontend-Code selber vornimmt.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Leider gibt die <a href=\"https:\/\/wiki.servarr.com\/lidarr\/contributing\" data-type=\"link\" data-id=\"https:\/\/wiki.servarr.com\/lidarr\/contributing\" target=\"_blank\" rel=\"noreferrer noopener\">offizielle Lidarr-Wiki<\/a> f\u00fcr das Frontend keinerlei Hinweise, wie man Code-Anpassungen vornehmen soll. Die folgende M\u00f6glichkeit ist nur eine von verschiedenen Vorgehensweisen. Es gibt z.B. <a href=\"https:\/\/www.jetbrains.com\/de-de\/webstorm\/\" data-type=\"link\" data-id=\"https:\/\/www.jetbrains.com\/de-de\/webstorm\/\" target=\"_blank\" rel=\"noreferrer noopener\">teure<\/a> und vermutlich umfangreichere L\u00f6sungen. Die hier erkl\u00e4rte Variante ist kostenlos und relativ einfach zu installieren und zu verwenden.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Was braucht man um in Lidarr Anpassungen am Frontend-Code machen zu k\u00f6nnen?<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Wenn man den Backend-Sourcecode z.B. in \u00abVisual Studio\u00bb ausf\u00fchrt, wird automatisch ein Browser mit dem sicht- und benutzbaren Frontend gestartet. Um diesen Code debuggen und analysieren zu k\u00f6nnen, ben\u00f6tigen wir die <a href=\"https:\/\/react.dev\/learn\/react-developer-tools\" data-type=\"link\" data-id=\"https:\/\/react.dev\/learn\/react-developer-tools\" target=\"_blank\" rel=\"noreferrer noopener\">React-Developer-Tools<\/a>. Diese Browser-Erweiterung gibt es kostenlos f\u00fcr \u00abGoogle Chrome\u00ab, \u00abMozilla Firefox\u00bb und \u00abMicrosoft Edge\u00bb.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Wenn man aus dem entsprechenden Online-Addon-\/Web-Store diese Erweiterung im eigenen Browser auf der Entwicklungsmaschine installiert hat, bekommt man zwei zus\u00e4tzliche M\u00f6glichkeiten zu den bestehenden Entwicklertools namens <strong>Components<\/strong> und <strong>Profiler<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2023\/12\/image-9.png\"><img loading=\"lazy\" decoding=\"async\" width=\"957\" height=\"282\" src=\"https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2023\/12\/image-9.png\" alt=\"\" class=\"wp-image-3360\" srcset=\"https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2023\/12\/image-9.png 957w, https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2023\/12\/image-9-300x88.png 300w, https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2023\/12\/image-9-768x226.png 768w\" sizes=\"auto, (max-width: 957px) 100vw, 957px\" \/><\/a><figcaption class=\"wp-element-caption\">Die Entwicklertools in Google Chrome ruft man \u00fcber Ctrl + Shift + I oder die rechte Maustaste &#8222;Untersuchen&#8220; auf<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Beispiel um die Verwendung der React-Developer-Tools im Browser zu erkl\u00e4ren:<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In \u00abVisual Studio 2022\u00bb habe ich den backend-Code \u00fcber die <code>Lidarr.sln<\/code> im Verzeichnis <code>\\src<\/code> geladen und gestartet. Das Lidarr-Frontend startet nach ein paar Sekunden automatisch im lokalen Browser. <br>\u00dcber das Lidarr-GUI wurde ein K\u00fcnstler gesucht und hinzugef\u00fcgt.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">F\u00e4hrt man nun mit der Maus \u00fcber den Button <strong>Links<\/strong> (#1), poppen alle vorhandenen Detail-Links auf, die f\u00fcr diesen K\u00fcnstler bei der Datenquelle &#8222;MusicBrainz&#8220; gespeichert sind. Dann \u00f6ffnet man die Browser-Entwickler-Tools mit <kbd class=\"keyboard-key nowrap KeybKey\">Ctrl + Shift + I<\/kbd> und klickt oben im Menu dieser Entwickler-Tools auf den neu verf\u00fcgbaren Eintrag <strong>Components<\/strong> (#3). Das zeigt einem sehr viele Details zur aktuell ausgew\u00e4hlten Cursor-Position an. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Im Beispiel wurde dann auf den Link f\u00fcr &#8222;Facebook&#8220; geklickt (#2). Das zeigt in den <strong>Components<\/strong> (#3) unter <strong>props<\/strong> z.B. den kleingeschriebenen und im GUI sichtbaren Namen <em>facebook<\/em>. <br>F\u00fcr die Frage &#8222;wie \u00e4ndere ich nun den Frontend-Code?&#8220; ist der unterste Eintrag <strong>source<\/strong> (#4) entscheidend: <code>ArtistDetailsLinks.js<\/code><br>In dieser JavaScript-Datei steckt also der Code, der diese Links im Browser-GUI bereitstellt. <br>Wir finden die Datei <code>ArtistDetailsLinks.js<\/code> im Verzeichnis <code>\\frontend\\src\\Artist\\Details\\<\/code><br>Dort k\u00f6nnen wir diese Datei z.B. im Texteditor \u00ab<a href=\"https:\/\/notepad-plus-plus.org\/\" data-type=\"link\" data-id=\"https:\/\/notepad-plus-plus.org\/\" target=\"_blank\" rel=\"noreferrer noopener\">Notepad++<\/a>\u00bb \u00f6ffnen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In <strong>Components<\/strong> unter <strong>source<\/strong> sehen wir weiter auch die Zahl <code>37<\/code>. Das gibt uns die Zeilenzahl im Sourcecode an. Wir suchen im Notepad++ also die Zeile <code>37<\/code>, die mit <code>&lt;Label<\/code> beginnt. Damit und mit den folgenden 6 Zeilen wird in <code>React<\/code> der vom Backend \u00fcbergebene Inhalt als aufpoppender Link dargestellt.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2023\/12\/2023.12.11-16-35-00-Lidarr-aus-Visual-Studio-debug-gestartet-im-Chrome-mit-ReactJS-Erweiterung-untersucht-in-Components-Details-gefunden.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"517\" src=\"https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2023\/12\/2023.12.11-16-35-00-Lidarr-aus-Visual-Studio-debug-gestartet-im-Chrome-mit-ReactJS-Erweiterung-untersucht-in-Components-Details-gefunden-1024x517.png\" alt=\"\" class=\"wp-image-3366\" srcset=\"https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2023\/12\/2023.12.11-16-35-00-Lidarr-aus-Visual-Studio-debug-gestartet-im-Chrome-mit-ReactJS-Erweiterung-untersucht-in-Components-Details-gefunden-1024x517.png 1024w, https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2023\/12\/2023.12.11-16-35-00-Lidarr-aus-Visual-Studio-debug-gestartet-im-Chrome-mit-ReactJS-Erweiterung-untersucht-in-Components-Details-gefunden-300x152.png 300w, https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2023\/12\/2023.12.11-16-35-00-Lidarr-aus-Visual-Studio-debug-gestartet-im-Chrome-mit-ReactJS-Erweiterung-untersucht-in-Components-Details-gefunden-768x388.png 768w, https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2023\/12\/2023.12.11-16-35-00-Lidarr-aus-Visual-Studio-debug-gestartet-im-Chrome-mit-ReactJS-Erweiterung-untersucht-in-Components-Details-gefunden-1536x776.png 1536w, https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2023\/12\/2023.12.11-16-35-00-Lidarr-aus-Visual-Studio-debug-gestartet-im-Chrome-mit-ReactJS-Erweiterung-untersucht-in-Components-Details-gefunden-2048x1035.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Wenn man nun beispielsweise statt dem Begriff <em>facebook<\/em> lieber die URL im GUI sichtbar machen m\u00f6chte, dann w\u00fcrde man im Notepad++ die Zeile 42 von <code>{link.name}<\/code> auf <code>{link.url}<\/code> (#6) \u00e4ndern.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2023\/12\/2023.12.11-16-23-39-Lidarr-aus-Visual-Studio-debug-gestartet-im-Chrome-mit-ReactJS-Erweiterung-untersucht-in-Components-Details-gefunden.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"512\" src=\"https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2023\/12\/2023.12.11-16-23-39-Lidarr-aus-Visual-Studio-debug-gestartet-im-Chrome-mit-ReactJS-Erweiterung-untersucht-in-Components-Details-gefunden-1024x512.png\" alt=\"\" class=\"wp-image-3381\" srcset=\"https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2023\/12\/2023.12.11-16-23-39-Lidarr-aus-Visual-Studio-debug-gestartet-im-Chrome-mit-ReactJS-Erweiterung-untersucht-in-Components-Details-gefunden-1024x512.png 1024w, https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2023\/12\/2023.12.11-16-23-39-Lidarr-aus-Visual-Studio-debug-gestartet-im-Chrome-mit-ReactJS-Erweiterung-untersucht-in-Components-Details-gefunden-300x150.png 300w, https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2023\/12\/2023.12.11-16-23-39-Lidarr-aus-Visual-Studio-debug-gestartet-im-Chrome-mit-ReactJS-Erweiterung-untersucht-in-Components-Details-gefunden-768x384.png 768w, https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2023\/12\/2023.12.11-16-23-39-Lidarr-aus-Visual-Studio-debug-gestartet-im-Chrome-mit-ReactJS-Erweiterung-untersucht-in-Components-Details-gefunden-1536x768.png 1536w, https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2023\/12\/2023.12.11-16-23-39-Lidarr-aus-Visual-Studio-debug-gestartet-im-Chrome-mit-ReactJS-Erweiterung-untersucht-in-Components-Details-gefunden-2048x1024.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Wenn man das Lidarr-GUI nach dem Speichern der Code-\u00c4nderung in Notepad++ mit F5 aktualisiert, passiert aber leider sichtbar gar nichts. Der Grund daf\u00fcr wurde im zweiten Teil erkl\u00e4rt: S\u00e4mtliche Frontend-Code-\u00c4nderungen m\u00fcssen mit <code>Yarn<\/code> zuerst kompiliert und bereitgestellt werden.<br>Da das ein ziemlich m\u00fchsamer Ablauf w\u00e4re, wenn man bei jeder noch so kleinen Frontend Code-\u00c4nderung jedesmal manuell einen Kompilierungsaufruf starten m\u00fcsste, kann man wie folgt vorgehen:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Wir lassen <code>Yarn<\/code> das <code>\\frontend<\/code>-Verzeichnis auf Ver\u00e4nderungen \u00fcberwachen:<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Man wechselt wie im zweiten Teil erkl\u00e4rt in der Node.JS-Kommandozeile (mit Administratorrechten ausgef\u00fchrt) in das Sourcecode-Verzeichnis wo alle <code>\\frontend<\/code> Dateien liegen, z.B. <code>CD %USERPROFILE%\\Documents\\Visual Studio 2022\\Code Snippets\\Visual CS\\Lidarr-develop\\frontend<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Darin startet man <code>Yarn<\/code> mit<br><code>yarn start<\/code><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2023\/12\/2023.12.11-17-11-14-FrontEnd-und-YARN-sollte-NICHT-im-Visual-C-Verzeichnis-stehen-scheint-Probleme-zu-machen-Visual-CS-nicht.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"830\" src=\"https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2023\/12\/2023.12.11-17-11-14-FrontEnd-und-YARN-sollte-NICHT-im-Visual-C-Verzeichnis-stehen-scheint-Probleme-zu-machen-Visual-CS-nicht-1024x830.png\" alt=\"\" class=\"wp-image-3383\" srcset=\"https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2023\/12\/2023.12.11-17-11-14-FrontEnd-und-YARN-sollte-NICHT-im-Visual-C-Verzeichnis-stehen-scheint-Probleme-zu-machen-Visual-CS-nicht-1024x830.png 1024w, https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2023\/12\/2023.12.11-17-11-14-FrontEnd-und-YARN-sollte-NICHT-im-Visual-C-Verzeichnis-stehen-scheint-Probleme-zu-machen-Visual-CS-nicht-300x243.png 300w, https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2023\/12\/2023.12.11-17-11-14-FrontEnd-und-YARN-sollte-NICHT-im-Visual-C-Verzeichnis-stehen-scheint-Probleme-zu-machen-Visual-CS-nicht-768x622.png 768w, https:\/\/ictknow-how.ch\/blog\/wp-content\/uploads\/2023\/12\/2023.12.11-17-11-14-FrontEnd-und-YARN-sollte-NICHT-im-Visual-C-Verzeichnis-stehen-scheint-Probleme-zu-machen-Visual-CS-nicht.png 1439w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Damit wird ab sofort &#8211; bis zum manuellen Abbrechen mit Ctrl + C &#8211; das gesamte <code>\\frontend<\/code>-Verzeichnis auf Ver\u00e4nderungen \u00fcberwacht. Sobald man eine \u00c4nderung an einer beliebigen Code-Datei macht, wird <code>Yarn<\/code> dies erkennen und sofort vollautomatisch aktualisieren.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Falls man \u00fcbrigens fehlerhaften JS-Code einf\u00fcgt oder ver\u00e4ndert, sieht man im Node.JS-Konsolenfenster im Detail, welcher Fehler erkannt wurde und wieso der Code allenfalls nicht erfolgreich kompiliert werden konnte.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Wenn wir im Notepad++ die Zeile 42 nochmal leicht ver\u00e4ndern und neu speichern, kann man im offenen Node.JS-Konsolenfenster beobachten, wie diese Ver\u00e4nderung sofort &#8222;\u00fcbersetzt&#8220; wird. Das dauert nur wenige Sekunden. Dann endlich sieht man nach der Aktualisierung des GUI im Browser mit F5 auch die vorgenommene Ver\u00e4nderung.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Damit haben wir nun eine M\u00f6glichkeit, die verantwortlichen JS-Dateien dank den React-Entwicklertools zu erkennen und darin Code-\u00c4nderungen an den entsprechenden Stellen durchzuf\u00fchren.<br>Sinngem\u00e4ss wird das auch f\u00fcr die anderen *arr-Projekte wie <a href=\"https:\/\/radarr.video\/\" data-type=\"link\" data-id=\"https:\/\/radarr.video\/\" target=\"_blank\" rel=\"noreferrer noopener\">Radarr<\/a>, <a href=\"https:\/\/sonarr.tv\/\" target=\"_blank\" rel=\"noreferrer noopener\">Sonarr<\/a>, <a href=\"https:\/\/readarr.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">Readarr<\/a> oder <a href=\"https:\/\/whisparr.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">Whisparr<\/a> funktionieren.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Zusammenfassung aller 3 Anleitungs-Teile und wie man Lidarr-Code ver\u00e4ndert:<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Um den <strong><a href=\"https:\/\/ictknow-how.ch\/blog\/2023\/12\/10\/wie-kann-man-bei-lidarr-beitragenein-ausfuehrlicheres-how-to-contribute\/\" data-type=\"link\" data-id=\"https:\/\/ictknow-how.ch\/blog\/2023\/12\/10\/wie-kann-man-bei-lidarr-beitragenein-ausfuehrlicheres-how-to-contribute\/\">Backend<\/a><\/strong>-Code in C# zu ver\u00e4ndern, m\u00fcssen wir ihn in einer IDE laden, kompilieren und ausf\u00fchren.<br>Um den <strong><a href=\"https:\/\/ictknow-how.ch\/blog\/2023\/12\/10\/lidarr-wie-stellt-man-das-frontend-bereit\/\" data-type=\"link\" data-id=\"https:\/\/ictknow-how.ch\/blog\/2023\/12\/10\/lidarr-wie-stellt-man-das-frontend-bereit\/\">Frontend<\/a><\/strong>-Code zu ver\u00e4ndern, brauchen wir den laufenden Backend-Code, zus\u00e4tzlich <code>Yarn<\/code>, die <code>React<\/code>-Entwicklertools im Browser und einen Code-Editor wie Notepad++.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Allgemeiner Hinweis zum Schluss<br>Dies alles l\u00e4sst uns den Lidarr-Code ausschliesslich lokal ver\u00e4ndern und testen. <br>Wer vor hat seine \u00c4nderungen dem Opensource-Projekt Lidarr zur Verf\u00fcgung zu stellen, der muss sich zwingend mit <a href=\"https:\/\/git-scm.com\/downloads\" target=\"_blank\" rel=\"noreferrer noopener\">Git<\/a>\/<a href=\"https:\/\/github.com\/Lidarr\/Lidarr\" data-type=\"link\" data-id=\"https:\/\/github.com\/Lidarr\/Lidarr\" target=\"_blank\" rel=\"noreferrer noopener\">Github<\/a> und den f\u00fcr dieses Projekt geltenden <a href=\"https:\/\/wiki.servarr.com\/lidarr\/contributing#contributing-code\" data-type=\"link\" data-id=\"https:\/\/wiki.servarr.com\/lidarr\/contributing#contributing-code\" target=\"_blank\" rel=\"noreferrer noopener\">Contribute-Regeln<\/a> vertraut machen.<br><strong>Es gibt keine Garantie, dass solche Ver\u00e4nderungen akzeptiert werden.<\/strong><br>Bevor man sehr viel Zeit und Herzblut in \u00c4nderungen steckt, sollte man <strong>unbedingt VORHER abkl\u00e4ren<\/strong>, ob eine solche Anpassung erw\u00fcnscht ist und in welcher Form sie akzeptiert wird. Auch bei Opensource-Projekten entscheiden schlussendlich ein paar wenige Verantwortliche, was an Code und Ver\u00e4nderungen oder Erweiterungen in das Projekt aufgenommen wird.<\/p>\n\n\n<div class=\"kk-star-ratings kksr-auto kksr-align-left kksr-valign-bottom\"\n    data-payload='{&quot;align&quot;:&quot;left&quot;,&quot;id&quot;:&quot;3357&quot;,&quot;slug&quot;:&quot;default&quot;,&quot;valign&quot;:&quot;bottom&quot;,&quot;ignore&quot;:&quot;&quot;,&quot;reference&quot;:&quot;auto&quot;,&quot;class&quot;:&quot;&quot;,&quot;count&quot;:&quot;0&quot;,&quot;legendonly&quot;:&quot;&quot;,&quot;readonly&quot;:&quot;&quot;,&quot;score&quot;:&quot;0&quot;,&quot;starsonly&quot;:&quot;&quot;,&quot;best&quot;:&quot;5&quot;,&quot;gap&quot;:&quot;5&quot;,&quot;greet&quot;:&quot;Rate this post&quot;,&quot;legend&quot;:&quot;0\\\/5 - (0 votes)&quot;,&quot;size&quot;:&quot;24&quot;,&quot;title&quot;:&quot;Lidarr \u2013 wie nimmt man \u00c4nderungen am Frontend vor?&quot;,&quot;width&quot;:&quot;0&quot;,&quot;_legend&quot;:&quot;{score}\\\/{best} - ({count} {votes})&quot;,&quot;font_factor&quot;:&quot;1.25&quot;}'>\n            \n<div class=\"kksr-stars\">\n    \n<div class=\"kksr-stars-inactive\">\n            <div class=\"kksr-star\" data-star=\"1\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"2\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"3\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"4\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"5\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n    <\/div>\n    \n<div class=\"kksr-stars-active\" style=\"width: 0px;\">\n            <div class=\"kksr-star\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n    <\/div>\n<\/div>\n                \n\n<div class=\"kksr-legend\" style=\"font-size: 19.2px;\">\n            <span class=\"kksr-muted\">Rate this post<\/span>\n    <\/div>\n    <\/div>\n","protected":false},"excerpt":{"rendered":"<p>Im ersten Teil wird erkl\u00e4rt, wie man das Backend (C#-Code) f\u00fcr Lidarr ver\u00e4ndert.Im zweiten Teil wird erkl\u00e4rt, wie man das unver\u00e4nderte Frontend (HTML und JS-Code) bereitstellt, damit \u00c4nderungen am Backend getestet werden k\u00f6nnen und keine 404-Not Found-Fehlermeldung beim Kompilieren des C#-Codes erscheint. In diesem dritten Teil wird erkl\u00e4rt, wie man \u00c4nderungen am Frontend-Code selber vornimmt. &#8230; <a title=\"Lidarr \u2013 wie nimmt man \u00c4nderungen am Frontend vor?\" class=\"read-more\" href=\"https:\/\/ictknow-how.ch\/blog\/2023\/12\/12\/lidarr-wie-nimmt-man-aenderungen-am-frontend-vor\/\" aria-label=\"Mehr Informationen \u00fcber Lidarr \u2013 wie nimmt man \u00c4nderungen am Frontend vor?\">Weiterlesen<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[28,278],"tags":[283,282,284,285,277,280,281],"class_list":["post-3357","post","type-post","status-publish","format-standard","hentry","category-software","category-visual-studio","tag-c","tag-c-sharp","tag-html","tag-javascript","tag-lidarr","tag-node-js","tag-yarn"],"_links":{"self":[{"href":"https:\/\/ictknow-how.ch\/blog\/wp-json\/wp\/v2\/posts\/3357","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ictknow-how.ch\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ictknow-how.ch\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ictknow-how.ch\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ictknow-how.ch\/blog\/wp-json\/wp\/v2\/comments?post=3357"}],"version-history":[{"count":0,"href":"https:\/\/ictknow-how.ch\/blog\/wp-json\/wp\/v2\/posts\/3357\/revisions"}],"wp:attachment":[{"href":"https:\/\/ictknow-how.ch\/blog\/wp-json\/wp\/v2\/media?parent=3357"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ictknow-how.ch\/blog\/wp-json\/wp\/v2\/categories?post=3357"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ictknow-how.ch\/blog\/wp-json\/wp\/v2\/tags?post=3357"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}