{% extends "basis.html" %}{% block weich %} data-weich{% endblock %}{% block inhalt %}{% from "schalter.html" import schalter %} {# Quellen (UX-Paket 1, Teil 2): alles, wodurch Musik in die Library kommt – Onlinespeicher, Analyse unbekannter Dateien, seit 23.10.2026 eine Zeile zum letzten Lauf (Verlauf und Live-Status unter /analysen). Früher im Konto; /konto#speicher und /konto#analysen leiten hierher. Nicht verbunden zeigt der Abschnitt den Assistenten (Wahl des Speichers, Zugang, Testen), verbunden das Cockpit (Kennzahlen, Rückweg in die Library). #} {% set q = t.quellen %}
{{ o.eyebrow }}
{{ t.earlybird.onboard_demo }} {{ t.earlybird.demo_knopf }}
{% endif %}{{ q.eyebrow }}
{% endif %}{{ q.lead | ohne_desktop if store_app else q.lead }}
{% if not store_app %}{% endif %}{{ speicher.benutzer or '' }} · {{ speicher.startordner or '' }}
{{ a.fortschritt }}
{{ a.zustand }}
{# Restzeit des laufenden Abgleichs: dieselbe Zeile wie in der Kopfleiste (status.js, aus `rate`/`rest_s`) #}{{ a.hinweis }}
{{ a.doppelt }}
{{ a.letzter }}
{# Rückweg in die Library: die Zahl zählt Tracks der Library aus dem Speicher (`library`), nicht zugeordnete Dateien #}{{ s.fortschritt_hilfe_analyse if speicher_analyse_an else s.fortschritt_hilfe }}
{{ s.zugang_aendern }}
{{ s.trennen_frage }}
{{ an.zahl if an else '' }}
{{ an.reicht if an else '' }}
{# dieselbe Zeile wie in der Kopfleiste (status.js): „Analyse: 3 von 480 Tracks · noch etwa 4 Stunden“ #}{{ an.stand if an else '' }}
{{ an.hinweis if an else '' }}
{{ x.fehler_titel }}
{{ x.einwilligung }}
{{ x.auto_hilfe }}
{{ an_.q_schritt }}
{{ an_.q_text }}
{{ (an_.q_nur_code_ok | e).replace("{konto}", konto_link) }}
{% endif %} {# Assistent (nicht verbunden): Schritte 1–4, Wahl des Speichers als Radiogruppe – sie setzt nur Platzhalter und Hilfe, die Adressprüfung auf dem Server bleibt dieselbe. #} {% endif %} {# Upload in den eigenen Speicher (09.11.2026, E1): nur mit Schalter/Konto-Freigabe und verbundenem Speicher (static/upload_eigen.js) #} {% if ue %}{% set ux = ue.texte %}{{ ux.schalter_an | replace("{ordner}", ue.stand.ordner or "") if ue.stand.ablegen else ux.schalter_aus }}
{{ ux.zustimmung_am | replace("{datum}", ue.stand.zugestimmt or "") if ue.stand.zustimmung else ux.zustimmung_noch }}
{{ ux.widerruf_text }}
{{ t.speicher.aus }}
{{ r.geloescht }}
{% endif %} {# Anleitung (31.10.2026, Wunsch Maintainer): exportieren, finden, einlesen, aktuell halten, was bei dir bleibt – aufklappbar, in jedem Zustand und ohne JavaScript; dieselben Texte als Strecke #rekordbox-xml in der Hilfe (texte_rekordbox_anleitung.py). #} {% set rka = t.rekordbox.anleitung %}{{ text | ohne_desktop if ios_app else text }}
{{ r.lead }}
{{ r.mobil_text }}
{{ r.xml_text }}
{{ r.tab_offen }}
{{ t.earlybird.rk_playlists if store_app else r.playlists_spaeter }}
{{ r.unklar_viel }}
{{ r.unklar_text }}
{{ r.ersetzt }}
{{ r.nichts_gewaehlt }}
{% if rs.da %}{{ r.fertig_zeile.replace("{zeit}", rekordbox.uebernommen | ortszeit(sprache)) }}{% endif %}
{# Älter als 14 Tage (app._rekordbox_alt_tage): ruhiger Hinweis; nach einem neuen Import blendet rekordbox_seite.js ihn aus #} {% if rekordbox.alt_tage %}{{ rka.alt.replace("{n}", rekordbox.alt_tage | zahl(sprache)) }}
{% endif %}{% if rs.da %}{% set namen = [] %}{% for a in rs.arten %}{% set _ = namen.append(r.loeschen_arten[a]) %}{% endfor %}{{ r.uebernommen_arten.replace("{arten}", namen | join(", ")) }}{% endif %}
{{ r.unklar_nach }}
| {{ k }} | {% endfor %}
|---|
{{ r.aktualisieren_text }}
{{ o.text }}
{{ o.geraet }}
{{ o.beispiel }} {{ bsp }}
{{ o.einfuegen }}
{{ c.lead }}
{{ c.geloescht }}
{% endif %}{{ c.abgleich }}
{% if cl_ and not cl_.ende %}{{ c.nachlesen | replace("{n}", cl_.n | zahl(sprache)) | replace("{m}", cl_.m | zahl(sprache)) }}{% if cl_.rest_s is defined %} · {{ c.nachlesen_rest | replace("{rest}", cl_.rest_s | rest(sprache)) }}{% endif %}
{{ c.nachlesen_pause }}
{% endif %} {% elif cz.offen %}{{ c.nachlesen_offen | replace("{n}", cz.offen | zahl(sprache)) }}
{% elif cl_ %}{{ c.nachlesen_fertig | replace("{m}", cl_.m | zahl(sprache)) }}
{% endif %}{{ c.nur_tags }}
{% if cz.zu_gross %}{{ c.zu_gross | replace("{n}", cz.zu_gross | zahl(sprache)) }}
{% endif %}{{ c.rb_text }}
{{ c.s4 if cz.server else c.s2 | replace("{mb}", "100") }}
{{ schalter(tasten.cover_zeigen, c.zeigen, id="cover-zeigen", an=true, aus=true) }}{{ c.zeigen_hilfe }}
{{ c.loeschen_hinweis }}
{{ c.muster_text }}
{{ t.kontingent_satz.replace("{g}", k.genutzt | zahl(sprache)).replace("{n}", k.grenze | zahl(sprache)).replace("{f}", k.frei | zahl(sprache)) }}
{# Kontingent aufgebraucht (11.11.2026): ruhige Meldung hier, wo Musik hineinkommt; alles andere läuft weiter. Store-Fassungen ohne Kontakt (TP2 0529, Befund 55); im Browser bleibt der Kontakt, für Early-Bird-Konten mit der Zahl. #} {% if k.frei <= 0 %}{% if store_app %}{{ t.earlybird.kontingent_leer }}{% elif earlybird and nutzer.get('kontingent_grenze') is not none %}{{ t.earlybird.kontingent_voll_web | replace("{n}", k.grenze | zahl(sprache)) }}{% else %}{{ t.kontingent_leer }}{% endif %}
{% endif %}{% if letzter_lauf %}{{ (ax.quellen_zeile_eins if letzter_lauf.gemessen == 1 else ax.quellen_zeile) | replace("{datum}", letzter_lauf.ende | kurzdatum(sprache)) | replace("{n}", letzter_lauf.gemessen | zahl(sprache)) }}{% else %}{{ ax.quellen_keiner }}{% endif %} {{ ax.quellen_link }}