BikeControl (SwiftControl)
使用 Zwift Click、Zwift Play、Shimano Di2 或任何藍牙控制器,搭配 MyWhoosh、Rouvy、Zwift 等。iOS、Android、Windows、macOS 均可免費試用。
AI 翻译
Steigungsprofile von 26 Marathonstrecken: New York, London, Paris, Chicago, Berlin, Tokio, Valencia, Mexiko-Stadt, Osaka, Boston, Amsterdam, Rom, Barcelona, Athen, Stockholm, Wien, Médoc, Great Wall u
翻译准备中
运动与健身HTML · PythonGitHub @luperttrading-lab在线运营者未确认
试用过了吗? 点一下就好,无需登录。
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证Steigungsprofile von 26 Marathonstrecken: New York, London, Paris, Chicago, Berlin, Tokio, Valencia, Mexiko-Stadt, Osaka, Boston, Amsterdam, Rom, Barcelona, Athen, Stockholm, Wien, Médoc, Great Wall und mehr.
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗Steigungsprofile von Marathonstrecken als Web-Apps für den Home-Bildschirm, ausgeliefert über GitHub Pages. Inoffiziell, kein Angebot der Veranstalter.
Startseite mit Auswahl: https://luperttrading-lab.github.io/marathon-strecken/ – in Safari öffnen, Teilen → Zum Home-Bildschirm, dann liegen alle Strecken in einer App.
Das Pace-Modell (1,0 s je Höhenmeter bei 4:00 /km, bergab die Hälfte) ist an 3 Mio. echten Zwischenzeiten geprüft:
werkzeuge/eichung/ (30.10.2026).
Besprochene, noch nicht gebaute Ideen und offene Punkte: werkzeuge/VORGEMERKT.md.
Offline (seit 2.3): Die Startseite speichert beim Öffnen mit Netz alle Strecken ohne Karten (≈ 1,8 MB) und frischt
gespeicherte auf (version.json vergleichen). Die Karte einer Strecke kommt beim Öffnen der Strecke dazu, alle Karten per Knopf
auf der Startseite nach Rückfrage mit der Datenmenge (karten.json aus kern.py). Offline steht oben ein orangener Hinweis mit
der Nummer, im Kartenfeld ohne Kartenbilder „Offline: Karte nicht gespeichert“.
sw.js)
und ihren Feldern (Texte zur Strecke, const D, const SHORT, Präfixe, Kartenliste). Den Kern nur in hamburg/index.html
bzw. hamburg/sw.js ändern, dann python3 werkzeuge/kern/kern.py --version 2.N --schreiben: Das setzt ihn in alle
Strecken ein. Felder einer Strecke direkt in <strecke>/index.html ändern (oder über ihre Werkzeuge), danach
python3 werkzeuge/kern/kern.py (prüft nur, muss „Alle gleich“ melden). Änderungen am Kern stehen in
werkzeuge/kern/AENDERUNGEN.md. Die Startseite (index.html) wird direkt bearbeitet;
die übrigen Skripte unter werkzeuge/ sind nur die Herkunft der Daten.const D), den Texten zur
Strecke und den Speicherschlüsseln (hhm-…, bln-…, ffm-…, nyc-…, ldn-…, par-…, chi-…, syd-…, tyo-…, vlc-…, mex-…, osa-…, bos-…, ams-…, rom-…, bcn-…, ath-…, sth-…, cpt-…, vie-…, med-…, gwm-…, kln-…, muc-…, oem-…, rsl-…; Hamburg hhm-…, aber Cache hh-). Eine Änderung am Verhalten oder Aussehen nur in Hamburg machen; kern.py zieht sie in allen Dateien nach.version.json im
Wurzelordner. Bei jeder Änderung, auch an Daten einer einzelnen Strecke, : Das schreibt
dieselbe Nummer in alle , alle , beide Versionsknöpfe und die Startseite. Sonst kommt
das Update auf dem iPhone nicht an. Nummern nur nach oben (Zahlvergleich, 2.10 > 2.9), auch beim Zurücknehmen. Jede Seite
prüft weiter die im eigenen Ordner; „Version X ist geladen“ kommt einmal für die ganze App ().kern.py --version 2.N --schreiben<strecke>/version.jsonAPP_VERSIONversion.jsonmarathon.gesehenhh-, bln-, ffm-, nyc-, ldn-, par-, chi-, syd-, tyo-, vlc-, mex-, osa-, bos-, ams-, rom-, bcn-, ath-, sth-, cpt-, vie-, med-, gwm-, kln-, muc-, oem-, rsl-, start-). Ein Service Worker löscht
nur Caches mit seinem eigenen Präfix, weil sich alle Apps unter luperttrading-lab.github.io denselben Speicher teilen.data-termine an jeder Karte (ISO-Daten, durch Leerzeichen getrennt, ? = vom
Veranstalter noch nicht bestätigt, angezeigt als „ca. 31. Oktober 2027“). Die Seite zeigt selbst den nächsten Termin ab heute
mit Countdown; ist keiner mehr bekannt, nur den üblichen Monat (data-monat). Einmal im Jahr neue Termine nachtragen,
auch in jeder Strecke in D.termine (gleiche Schreibweise, steuert „Live nach Plan“ am Renntag). Dort stehen außerdem
D.lage (seit Hamburg 1.65, nur für hoch gelegene Strecken, bisher Mexiko-Stadt: mittlere Höhe in m; dann nennt die Tabelle
„Ohne Höhenmeter“ die Höhe und das Info-Fenster sagt, dass die Zeiten für diese Höhe gelten), D.mauer, D.mauerEmpf, D.mauerQ, D.tor, D.zielschluss, D.ziel (Voreinstellung der Zielzeit in s statt 4:00 /km im Flachen)
(seit Hamburg 1.68, bisher Great Wall: Stücke auf Mauer und Treppen [[von, bis, Name, Minuten], …] in Streckenmetern kosten
feste Minuten statt Steigung, seit 1.69 je Durchgang ein Rad; ohne eigenes Drehen gilt die Empfehlung D.mauerEmpf = [[Minuten bei 5 h, je Stunde mehr], …] für die Zielzeit, D.mauerQ erklärt sie; D.tor = {m, uhr, name} ist ein Cut-off,
die Einstellungen nennen Ankunft und Reserve, D.zielschluss in Minuten ab Mitternacht), D.tz (Zeitzone der Uhrzeiten; D.ort/D.ortKurz nennen den Ort dazu, wenn die Zeitzone ihn nicht verrät, z. B. Boston) D.start (Startzeit der ersten Welle in Minuten ab Mitternacht) und D.wellen (Wellen mit Uhrzeit und Quelle, siehe Hamburg-Übergabe).python3 werkzeuge/kern/kern.py --neu <ordner> <felder.json>
(Format: kern.py --felder tokio), Karte auf der Startseite ergänzen. Reihenfolge: New York als Highlight oben
(Klasse card top), danach London, Paris, Chicago, Sydney, Tokio, Valencia, Mexiko-Stadt, Osaka, Boston, Honolulu, Shanghai, Amsterdam, Rom, Barcelona, Athen, Stockholm, Kapstadt, Wien, Médoc, Zürich, Jungfrau, Luzern, Salzburg, Graz, Great Wall, Zermatt und Liechtenstein (nach Teilnehmerzahl), dann die deutschen Strecken alphabetisch. Alle Strecken liegen in einer App: installiert wird
die Startseite, ihr Scope umfasst alle Unterordner. Die Strecken haben kein eigenes Manifest und Symbol, sie verweisen auf
../manifest.webmanifest, ../apple-touch-icon.png und ../icon-192.png; Zum Home-Bildschirm aus einer Strecke
installiert so ebenfalls die ganze App..pf, SVG), nicht als Textzeichen ↑: das saß auf dem iPhone klein und tief (seit Startseite 1.16).data-such an der Karte plus Veranstaltername
(weitere Namen, Land, Region, Sponsor: „USA“, „Cape Town“, „Dresden“, „TCS“; „Marathon“, „of“, „de“, „by“, „city“ zählen
nicht), sonst irgendwo im Kartentext. Umlaute egal („muen“, „koeln“). Enter öffnet den Treffer in der Radmitte. Das Rad ist
alphabetisch, steht auf der zuletzt geöffneten Strecke (start.zuletzt), Antippen einer Zeile dreht hin, Antippen der Mitte
öffnet. Neue Strecke: data-such an ihrer Karte ergänzen. Während man tippt, lädt ein Update nicht von selbst neu.
Seit 1.28 flacher (Nutzer: zu prominent): Rad 84 px statt 120, Mittelzeile 28 px, Nachbarn 15 px im Abstand von 30 px.div.hinweis direkt nach dem <a class="card">, Überschrift in .kopf): seit Startseite 1.18
für Paris (neuer Veranstalter ab 2027, neue Strecke erst Anfang 2027; die App zeigt den Kurs 2025). Entfernen bzw. neu
schreiben, sobald die Strecke 2027 da ist..spark.hoch New York 112 px,
.spark.berg Rennsteig 240 px, .spark.boston 208 px, .spark.london 80 px, .spark.sydney 124 px, .spark.mexiko 94 px, .spark.wien 70 px; Great Wall .spark.mauer 230 px und Athen .spark.athen 174 px im halben Maßstab, dazu „Bild halber Maßstab“ in der Zeile darüber). Pfad: 200 Punkte, je Punkt das Maximum der letzten 100 m.
Übersichtskarte: cd werkzeuge && python3 tiles_z11.py <strecke>, Ergebnis in D.tiles["11"] und in die Kartenliste von sw.js.
Danach python3 tiles_rand.py <strecke> (New York, London, Paris, Chicago, Sydney, Tokio, Valencia, Mexiko-Stadt, Osaka, Boston, Amsterdam, Rom, Barcelona, Kapstadt, Athen, Wien, Stockholm, Médoc, Honolulu, Shanghai, Düsseldorf, Hannover, Zürich, Luzern, Münster, Freiburg, Brocken, Jungfrau, Zermatt, Salzburg, Graz und Liechtenstein: tiles_rand.py <strecke> 2; Great Wall nicht: dort baut work/tiles.py ein dunkles Relief aus
Copernicus mit OSM-Linien, tiles_z11.py und tiles_rand.py würden es durch die fast leere OSM-Karte ersetzen): baut z11–z13 mit einem Kachelrand entlang der Strecke
neu, damit die mitlaufende Karte an Start, Ziel und Außenkurven nicht ins Graue schaut, und trägt D.tiles und sw.js selbst ein.