x

Greasemonkey Script für OSMCha, achavi Links auf Changeset-Seiten


  1. Greasemonkey Script für OSMCha, achavi Links auf Changeset-Seiten · Strubbl (Gast) · 07.04.2021 21:25 · [flux]

    Hallo,
    falls noch jemand Greasemonkey nutzt: ich habe ein kleines Script zusammengeschrieben, dass die Links zu OSMCha und achavi zur jeweiligen Changeset-Webseite auf osm.org hinzufügt. Das spart ein bisschen copy&paste von der CS ID und das manuelle ansurfen der Tools mit Eingabe der ID.

    ohne Script:

    mit Script:

    Falls sich jemand dafür interessiert, anbei die Links:

    Link zum Quellcode

    Link zum Installieren


    • Re: Greasemonkey Script für OSMCha, achavi Links auf Changeset-Seiten · Rainero (Gast) · 08.04.2021 08:49 · [flux]

      ... Greasemonkey ... ach, da war doch mal was.
      Das Skript kann auch im Vivaldi Browser eingebunden werden. Super Sache, das ist echt nützlich. Danke!

      Falls den jemand benutzt:
      1. Skript runterladen
      2. im Browser vivaldi://extensions als URL eingeben (oder Menü: Extras -> Erweiterungen)
      3. evtl. Entwicklermodus einschalten (Schalter rechts oben); ich hatte ihn an, weiß nicht, ob es notwendig ist
      4. das heruntergeladene Skript ins Browserfenster ziehen
      5. Installation bestätigen

      😎


    • Re: Greasemonkey Script für OSMCha, achavi Links auf Changeset-Seiten · smootheFiets (Gast) · 08.04.2021 09:54 · [flux]

      Dafür gibt es auch eine andere Extension, die ich sowieso empfehlen kann: OSM start menu https://addons.mozilla.org/en-US/firefo … mart-menu/ (gibts auch für Chrome, scheinbar)
      Die kann auch von Changeset nach Achavi und etlichen anderen Seiten umschalten. Baut keine direkten Links ein (kein Greasemonkey), sondern man muss auf den Menü-Button klicken. Das geht aber auch sehr schnell.

      Genauso, und das ist noch nützlicher, kann man so von einem Kartenservice zu einem anderen wechseln mit gleichen Koordinaten (OSM, Google, Mapillary, Osmose, ...). Schnell mal nachschauen: gibt es hier Mapillary-Bilder: klick. Nominatim findet mein Ziel nicht, Google schon? Klick, und ich bin auf OSM. Usw.


    • Re: Greasemonkey Script für OSMCha, achavi Links auf Changeset-Seiten · Strubbl (Gast) · 09.04.2021 14:14 · [flux]

      smootheFiets wrote:

      Dafür gibt es auch eine andere Extension, die ich sowieso empfehlen kann: OSM start menu

      Wirklich eine interessantes Addon. Danke für den Tipp. Das werde ich zusätzlich auch noch nutzen.

      Aber es ersetzt mir nicht die Greasemonkey Script Funktionalität, weil ich einen Klick auf ein fitzeliges kleines Icon am anderen Ende des Browserfensters mehr machen müsste. Habe mir das Script extra geschrieben, um eine schnelle und einfach erreichbare Verknüpfung zu haben. Dabei ging es darum Klicks und Mausweg zu sparen. Da ich beim Betrachten von einem Changeset meist sowieso in dem linken Bereich der Website scrolle, sind die beiden Links dann nicht allzu fern und schnell mit dem Mausrad geklickt.


    • Re: Greasemonkey Script für OSMCha, achavi Links auf Changeset-Seiten · miche101 (Gast) · 09.04.2021 18:07 · [flux]

      Strubbl wrote:

      dass die Links zu OSMCha und achavi zur jeweiligen Changeset-Webseite auf osm.org hinzufügt

      Wow... Danke dass fehlt mir schon lange 😎 😎 🙂


    • Re: Greasemonkey Script für OSMCha, achavi Links auf Changeset-Seiten · mmd (Gast) · 09.04.2021 19:53 · [flux]

      Es gibt sogar ein Ticket, OSMCha offiziell in osm.org zu integrieren: https://github.com/openstreetmap/openst … ssues/2629. Analog dazu dasselbe für Achavi: https://github.com/openstreetmap/openst … ssues/1376

      Wie viele Vorschläge dümpelt das Zeug erstmal sehr lange rum, weil es diverse Herausforderungen gibt, die zunächst ausräumt werden müssen. Naja, vielleicht in ein paar Jahren.


    • Re: Greasemonkey Script für OSMCha, achavi Links auf Changeset-Seiten · miche101 (Gast) · 10.04.2021 08:57 · [flux]

      Hi Strubbl,

      ich hab mir jetzt das Stript installiert, dabei ist mir aufgefallen das dass Skript nur funktioniert wenn man eingeloggt ist... was ich nicht immer automatisch bin 😉

      Ich hab mir das Skript um eine Funktion erweitert, um auch wenn ich nicht eingeloggt bin es funktioniert:

      Bei Zeile 29 hab ich das noch eingefügt:

      //https://www.openstreetmap.org/changeset/56501044#map=16/48.1818/11.7873
      if(!cs_id)␣{
      var␣href␣=␣window.location.href
      let␣regex␣=␣/.*changeset\//g;
      let␣result␣=␣href.replace␣(regex,"");
      
      let␣regexx␣=␣/#.*/g;
      let␣resultx␣=␣result.replace␣(regexx,"");
      
      cs_id␣=␣resultx;
      }
      

      Wenn du willst kannst es übernehmen 😎

      Gruß Miche


    • Re: Greasemonkey Script für OSMCha, achavi Links auf Changeset-Seiten · Jakob48 (Gast) · 11.04.2021 08:42 · [flux]

      Btw. Für die, die beim Firefox keinen Greasemonkey nutzen oder nutzen wollen, gibt es auch das Addon https://github.com/tankaru/JumpToOSMChangesetAnalyzer 😎


    • Re: Greasemonkey Script für OSMCha, achavi Links auf Changeset-Seiten · Strubbl (Gast) · 11.04.2021 09:34 · [flux]

      miche101 wrote:

      Ich hab mir das Skript um eine Funktion erweitert, um auch wenn ich nicht eingeloggt bin es funktioniert:
      […]
      Wenn du willst kannst es übernehmen

      Danke. Das werde ich machen. An den Fall hatte ich nicht gedacht. Ich fand es super, dass die CS ID im HTML-Quelltext ohne große Regexes erreichbar ist, weil sich so Quelltext gerne ändert und der Regex dann nicht mehr passt. Aber die URL sollte stabil bleiben. Gute Idee.

      Jakob48 wrote:

      Btw. Für die, die beim Firefox keinen Greasemonkey nutzen oder nutzen wollen, gibt es auch das Addon https://github.com/tankaru/JumpToOSMChangesetAnalyzer cool

      Leider ist bei diesem Addon das Problem, dass es scheinbar nicht mehr gepflegt wird. Die Abhängigkeiten sind veraltet. Man muss das Addon selbst bauen und dafür irgendwie nodejs installieren. Und schließlich wäre da noch der Extraklick auf ein kleines Icon irgendwo am anderen Ende des Browserfensters. Ich bin da sehr faul und treffe so kleine Icons nicht so schnell. Und ich würde auch gerne mal Achavi in einem neuen Tab oder im selben Tab öffnen. Das soll ohne große Klickerei möglich sein.


    • Re: Greasemonkey Script für OSMCha, achavi Links auf Changeset-Seiten · mmd (Gast) · 11.04.2021 15:54 · [flux]

      By the way... Grossflächige Changesets klappen normalerweise nicht (so gut) mit achavi. Wer will kann gerne mal folgende Alternative austesten: achavi Beispiel 1 oder achavi Beispiel 2 (aktuell nur Changesets ab 2021). Weitere viele gute Beispiele zum Testen gibt's auch hier.

      In meinem Script sieht das dann so aus:

      analyze_names␣=␣["achavi",␣"achavi(test)",␣"OSMCha"]
      analyze_urls␣=␣["https://overpass-api.de/achavi/?changeset=",␣"https://dev.overpass-api.de/achavi/?changeset=",␣"https://osmcha.org/changesets/"]
      

    • Re: Greasemonkey Script für OSMCha, achavi Links auf Changeset-Seiten · Strubbl (Gast) · 13.04.2021 20:52 · [flux]

      mmd wrote:

      Wer will kann gerne mal folgende Alternative austesten

      Hallo mmd, ich habe das mal getestet.

      https://www.openstreetmap.org/changeset/56501044
      https://overpass-api.de/achavi/?changeset=56501044
      https://dev.overpass-api.de/achavi/?changeset=56501044

      Beim achavi dev sehe ich die Änderungen nicht. Weißt du, woran es da hakt?


    • Re: Greasemonkey Script für OSMCha, achavi Links auf Changeset-Seiten · Strubbl (Gast) · 13.04.2021 20:54 · [flux]

      Für die Version 1.1 von dem Script habe ich die Erweiterung von miche101 eingefügt.


    • Re: Greasemonkey Script für OSMCha, achavi Links auf Changeset-Seiten · mmd (Gast) · 13.04.2021 21:07 · [flux]

      Leider ist die SSD auf dem System zu klein, um auch die letzten Jahre in kurzer Zeit zu laden. Dazu bräuchte es wohl ~600GB. Verfügbar sind nur 430GB, davon sind allerdings schon 390GB belegt. Vor ein paar Jahren war irgendwie noch nicht absehbar, dass jeden Monat mal 100 bis 140 Mio. Änderungen neu dazukommen.

      Der Planet für die Datenbank war vom 4.1.2021 + alles was danach kommt. Dein Changeset ist von 2018, ist also 3 Jahre zu alt.


    • Re: Greasemonkey Script für OSMCha, achavi Links auf Changeset-Seiten · Strubbl (Gast) · 13.04.2021 21:09 · [flux]

      Danke. Das hatte ich überlesen bei deinem vorigen Post.


    • Re: Greasemonkey Script für OSMCha, achavi Links auf Changeset-Seiten · mmd (Gast) · 13.04.2021 21:23 · [flux]

      Gedacht war das auch eher als Technologie-Demo für Changesets, die mit Achavi oder OSMCha nicht mehr funktionieren oder wo das Laden eher länger dauert, wie z.B. https://www.openstreetmap.org/changeset/101749337


    • Re: Greasemonkey Script für OSMCha, achavi Links auf Changeset-Seiten · miche101 (Gast) · 14.04.2021 06:42 · [flux]

      mmd wrote:

      Technologie-Demo für Changesets, die mit Achavi oder OSMCha nicht mehr funktionieren

      Ja coole Sache, dass hab ich schon manchmal 😎 Aber da muss ich mich auch selbst an der Nase fassen und öffters hochladen 😄


    • Re: Greasemonkey Script für OSMCha, achavi Links auf Changeset-Seiten · ikonor (Gast) · 15.04.2021 20:08 · [flux]

      Es gibt auch noch die "Changeset by Comparison Visualization" von Pascal:

      https://resultmaps.neis-one.org/osm-cha … =101749337

      Die scheint auch mit großflächigen Changesets umgehen zu können (vermutlich leider nicht Open Source, wie immer).


    • Re: Greasemonkey Script für OSMCha, achavi Links auf Changeset-Seiten · miche101 (Gast) · 15.04.2021 20:17 · [flux]

      ikonor wrote:

      Changeset by Comparison Visualization" von Pascal:

      Das hab ich auch schon probiert... Aber, des geht nur, glaub..., Zwei Monate darf der Changeset sein... Das ist oft blöd.. außer des wurde erst vor kurzem geändert


    • Re: Greasemonkey Script für OSMCha, achavi Links auf Changeset-Seiten · mmd (Gast) · 15.04.2021 21:06 · [flux]

      Sieht mir eher nach 1 Monat aus: "Contains changesets after 2021-03-15". Die Changesets sind wahrscheinlich alle im voraus berechnet und als GeoJSON abgelegt. Das benötigt für einen längeren Zeitraum doch einiges an Platz. Im Fall von OSMCha ist das inzwischen deutlich im Terabyte-Bereich.


    • Re: Greasemonkey Script für OSMCha, achavi Links auf Changeset-Seiten · mmd (Gast) · 16.05.2021 12:07 · [flux]

      mmd wrote:

      Leider ist die SSD auf dem System zu klein, um auch die letzten Jahre in kurzer Zeit zu laden. Dazu bräuchte es wohl ~600GB. Verfügbar sind nur 430GB, davon sind allerdings schon 390GB belegt. Vor ein paar Jahren war irgendwie noch nicht absehbar, dass jeden Monat mal 100 bis 140 Mio. Änderungen neu dazukommen.

      Dazu noch ganz kurz: ich habe einen Problem entdeckt, das dafür sorgt, dass Teile der Datenbank in bestimmten Situationen nicht komprimiert werden. Weiterhin habe ich die Ablage der Way nodes etwas geändert, so dass sich jetzt immerhin die letzten 5 Jahre in 385GB unterbringen lassen. 😎

      Dummerweise scheint ein Daily file aus dem April 2016 kaputt/unvollständig zu sein, was ein Laden von noch älteren Daten im Moment etwas im Weg steht. Diese Daily Diffs beötige ich für die Konvertierung nach PBF und anschließendem Laden in Overpass, weil alles andere einfach zu langsam ist.


    • Re: Greasemonkey Script für OSMCha, achavi Links auf Changeset-Seiten · AB-inf-x-chg-AB (Gast) · 16.05.2021 14:00 · [flux]

      Wäre so ein ähnliches Skript für Node-/Way-/Relation-Seiten auf osm.org mit Link zu https://wiki.openstreetmap.org/wiki/OSM … _(by_PeWu) möglich?


    • Re: Greasemonkey Script für OSMCha, achavi Links auf Changeset-Seiten · miche101 (Gast) · 16.05.2021 15:52 · [flux]

      AB-inf-x-chg-AB wrote:

      Wäre so ein ähnliches Skript für Node-/Way-/Relation-Seiten auf osm.org mit Link zu https://wiki.openstreetmap.org/wiki/OSM … _(by_PeWu) möglich?

      Die Ansicht ist auch ganz cool 😎 ich versuch mal das zu integrieren 🙂


    • Re: Greasemonkey Script für OSMCha, achavi Links auf Changeset-Seiten · miche101 (Gast) · 16.05.2021 17:12 · [flux]

      Hi,

      ich hab mal erweitert.

      Kurz dazu was ich gemacht hab:
      - @include erweitert auf "https://www.openstreetmap.org/*"
      - Dann schau ich im href= ob es ein Way/Node/Relation oder Changeset ist..
      - Wenn Changeset dann die Funktion wie bisher, wenn Way/Node/Relation eine eigene Funktion auf Basis von der Changeset Funktion nur abgewandelt.
      - achavi(test) hab ich hinzugefügt

      Code kann integriert werden 😉 verbessert usw. hab es jetzt nach meinem Coding vermögen gemacht.. auf die schnelle 😉 😄

      //␣==UserScript==
      //␣@author␣␣␣␣␣␣␣␣Strubbl
      //␣@name␣␣␣␣␣␣␣␣␣␣OpenStreetMap␣Changeset␣Analyze␣URLs
      //␣@description␣␣␣adds␣links␣to␣achavi␣and␣OSMCha␣to␣every␣OSM␣changeset␣page
      //␣@include␣␣␣␣␣␣␣https://www.openstreetmap.org/*
      //␣@grant␣␣␣␣␣␣␣␣␣none
      //␣@version␣␣␣␣␣␣␣1.1
      //␣@updateURL␣␣␣␣␣https://gitlab.com/Strubbl/userscripts/raw/master/osm_changeset_analyze_urls.user.js
      //␣==/UserScript==
      
      var␣hrefstr␣=␣window.location.href
      
      var␣n␣=␣hrefstr.search("/changeset/");
      
      if␣(␣n␣>␣0␣)
      {
      console.log("changeset");
      osmpage="changeset";
      }
      
      var␣n␣=␣hrefstr.search("/node/");
      if␣(␣n␣>␣0␣)
      {
      console.log("node");
      osmpage="objekt";
      osmobj="node";
      
      }
      
      var␣n␣=␣hrefstr.search("/way/");
      if␣(␣n␣>␣0␣)
      {
      console.log("way");
      osmpage="objekt";
      osmobj="way";
      }
      
      var␣n␣=␣hrefstr.search("/relation/");
      if␣(␣n␣>␣0␣)
      {
      console.log("relation");
      osmpage="objekt";
      osmobj="relation";
      }
      
      //␣Funktionen␣für␣Changeset␣Seite
      if␣(␣osmpage␣==␣"changeset"␣)␣{
      
      analyze_names␣=␣["achavi",␣"achavi(test)",␣"OSMCha"]
      analyze_urls␣=␣["https://overpass-api.de/achavi/?changeset=",␣"https://dev.overpass-api.de/achavi/?changeset=",␣"https://osmcha.org/changesets/"]
      
      var␣cs_headline␣=␣document.getElementById("sidebar_content").getElementsByTagName('h2')[0]
      var␣cs_id␣=␣0
      var␣i;
      var␣input_fields␣=␣document.getElementsByTagName('input')
      var␣stop_execution␣=␣false
      
      //␣get␣changeset␣id
      for␣(i␣=␣0;␣i␣<␣input_fields.length;␣i++)␣{
      var␣check_for_cs_id␣=␣input_fields[i].getAttribute("data-changeset-id")
      if(check_for_cs_id)␣{
      cs_id␣=␣check_for_cs_id
      break
      }
      }
      
      //␣copied␣from␣post␣of␣miche101␣https://forum.openstreetmap.org/viewtopic.php?pid=825651#p825651
      //␣https://www.openstreetmap.org/changeset/56501044#map=16/48.1818/11.7873
      if(!cs_id)␣{
      var␣href␣=␣window.location.href
      let␣regex␣=␣/.*changeset\//g;
      let␣result␣=␣href.replace␣(regex,"");
      let␣regexx␣=␣/#.*/g;
      let␣resultx␣=␣result.replace␣(regexx,"");
      cs_id␣=␣resultx;
      }
      
      if(!cs_id)␣{
      console.log("osm_changeset_analyze_urls:␣no␣changeset␣id␣found")
      stop_execution␣=␣true
      }
      
      if(analyze_names.length␣!=␣analyze_urls.length)␣{
      console.log("osm_changeset_analyze_urls:␣analyze_names␣and␣analyze_urls␣have␣different␣length")
      stop_execution␣=␣true
      }
      
      if(!stop_execution)␣{
      //␣generate␣links␣html␣code
      var␣links_html␣=␣""
      for␣(i␣=␣0;␣i␣<␣analyze_names.length;␣i++)␣{
      links_html␣+=␣"<a␣href=\""␣+␣analyze_urls[i]␣+␣cs_id␣+␣"\"␣target=\"_blank\">"␣+␣analyze_names[i]␣+␣"</a>␣"
      }
      //␣append␣links␣to␣website
      cs_headline.insertAdjacentHTML('afterend',␣"<div␣id=\"osm_changeset_analyze_urls\"␣style=\"color:␣#f00;␣padding-left:␣20px;\">"␣+␣links_html␣+␣"</div>")
      }
      
      }
      
      //␣Funktionen␣für␣Objekt␣Seite␣(node/way/relation)
      
      if␣(␣osmpage␣==␣"objekt"␣)␣{
      
      analyze_names␣=␣["OSM␣History␣Viewer"]
      //␣%OBJ%␣==␣node,␣way,␣relation␣␣␣␣%ID%␣==␣OSM-ID
      analyze_urls␣=␣["https://pewu.github.io/osm-history/#/%OBJ%/%ID%"]
      
      var␣cs_headline␣=␣document.getElementById("sidebar_content").getElementsByTagName('h2')[0]
      var␣cs_id␣=␣0;
      var␣stop_execution␣=␣false;
      
      //␣Link␣Example␣OSM␣History␣Viewer
      //␣https://pewu.github.io/osm-history/#/node/54154220
      //␣https://pewu.github.io/osm-history/#/way/683125725
      //␣https://pewu.github.io/osm-history/#/relation/9767454
      
      console.log("OSM-Objekt␣mit␣dem␣Typ:␣"␣+␣osmobj);
      
      var␣href␣=␣window.location.href
      let␣regex␣=␣/.*openstreetmap.org\/[^\/]*\//g;
      let␣result␣=␣href.replace␣(regex,"");
      let␣regexx␣=␣/#.*/g;
      let␣resultx␣=␣result.replace␣(regexx,"");
      cs_id␣=␣resultx;
      
      console.log("OSM-Objekt␣mit␣der␣ID:␣"␣+␣cs_id);
      
      if(!cs_id)␣{
      console.log("osm_objekt_analyze_urls:␣no␣objekt␣id␣found")
      stop_execution␣=␣true
      }
      
      if(analyze_names.length␣!=␣analyze_urls.length)␣{
      console.log("osm_objekt_analyze_urls:␣analyze_names␣and␣analyze_urls␣have␣different␣length")
      stop_execution␣=␣true
      }
      
      if(!stop_execution)␣{
      
      //␣generate␣links␣html␣code
      var␣links_html␣=␣""
      for␣(i␣=␣0;␣i␣<␣analyze_names.length;␣i++)␣{
      
      var␣url␣=␣analyze_urls[i];
      var␣url2␣=␣url.replace("%OBJ%",␣osmobj␣);
      var␣url3␣=␣url2.replace("%ID%",␣cs_id␣);
      
      links_html␣+=␣"<a␣href=\""␣+␣url3␣+␣"\"␣target=\"_blank\">"␣+␣analyze_names[i]␣+␣"</a>␣"
      }
      
      //␣append␣links␣to␣website
      cs_headline.insertAdjacentHTML('afterend',␣"<div␣id=\"osm_changeset_analyze_urls\"␣style=\"color:␣#f00;␣padding-left:␣20px;\">"␣+␣links_html␣+␣"</div>")
      }
      
      }
      

      PS: und ganz vergessen bei URL hab ich ein target="_blank" hinzugefügt... damit beim klicken ein neues Fenster auf geht... fänd ich praktisch, weiß nicht wie ihr das findet?


    • Re: Greasemonkey Script für OSMCha, achavi Links auf Changeset-Seiten · miche101 (Gast) · 16.05.2021 17:56 · [flux]

      Was ich bis jetzt nicht verstehe... wenn ich einen Changeset offen habe.. und dann aus einen Way im Changeset klicke.. dann wird das Skript nicht nochmal ausgeführt.. 🤔 nur wenn ich in einem Neuen Fenster öffne bzw. neu lade (F5)

      Und jetzt hab ich noch gesehen man könnte auch mehrere // @include .. angeben 🙂 wäre "Sauberer" 😉

      https://wiki.greasespot.net/Include_and_exclude_rules


    • Re: Greasemonkey Script für OSMCha, achavi Links auf Changeset-Seiten · miche101 (Gast) · 21.05.2021 12:35 · [flux]

      Hi,

      hab noch einen Bug gefunden wenn man z.B. eine history Seite aufmacht von einer Node/Way/rel. dann wird es nicht richtig verarbeitet.. ist gefixt.

      und jetzt hab ich mehrere @include gemacht..

      //␣==UserScript==
      //␣@author␣␣␣␣␣␣␣␣Strubbl
      //␣@name␣␣␣␣␣␣␣␣␣␣OpenStreetMap␣Changeset␣Analyze␣URLs
      //␣@description␣␣␣adds␣links␣to␣achavi␣and␣OSMCha␣to␣every␣OSM␣changeset␣page
      //␣@include␣␣␣␣␣␣␣https://www.openstreetmap.org/changeset/*
      //␣@include␣␣␣␣␣␣␣https://www.openstreetmap.org/node/*
      //␣@include␣␣␣␣␣␣␣https://www.openstreetmap.org/way/*
      //␣@include␣␣␣␣␣␣␣https://www.openstreetmap.org/relation/*
      //␣@grant␣␣␣␣␣␣␣␣␣none
      //␣@version␣␣␣␣␣␣␣1.1
      //␣@updateURL␣␣␣␣␣https://gitlab.com/Strubbl/userscripts/raw/master/osm_changeset_analyze_urls.user.js
      //␣==/UserScript==
      
      var␣hrefstr␣=␣window.location.href
      
      var␣n␣=␣hrefstr.search("/changeset/");
      
      if␣(␣n␣>␣0␣)
      {
      console.log("changeset");
      osmpage="changeset";
      }
      
      var␣n␣=␣hrefstr.search("/node/");
      if␣(␣n␣>␣0␣)
      {
      console.log("node");
      osmpage="objekt";
      osmobj="node";
      
      }
      
      var␣n␣=␣hrefstr.search("/way/");
      if␣(␣n␣>␣0␣)
      {
      console.log("way");
      osmpage="objekt";
      osmobj="way";
      }
      
      var␣n␣=␣hrefstr.search("/relation/");
      if␣(␣n␣>␣0␣)
      {
      console.log("relation");
      osmpage="objekt";
      osmobj="relation";
      }
      
      //␣Funktionen␣für␣Changeset␣Seite
      if␣(␣osmpage␣==␣"changeset"␣)␣{
      
      analyze_names␣=␣["achavi",␣"achavi(test)",␣"OSMCha"]
      analyze_urls␣=␣["https://overpass-api.de/achavi/?changeset=",␣"https://dev.overpass-api.de/achavi/?changeset=",␣"https://osmcha.org/changesets/"]
      
      var␣cs_headline␣=␣document.getElementById("sidebar_content").getElementsByTagName('h2')[0]
      var␣cs_id␣=␣0
      var␣i;
      var␣input_fields␣=␣document.getElementsByTagName('input')
      var␣stop_execution␣=␣false
      
      //␣get␣changeset␣id
      for␣(i␣=␣0;␣i␣<␣input_fields.length;␣i++)␣{
      var␣check_for_cs_id␣=␣input_fields[i].getAttribute("data-changeset-id")
      if(check_for_cs_id)␣{
      cs_id␣=␣check_for_cs_id
      break
      }
      }
      
      //␣copied␣from␣post␣of␣miche101␣https://forum.openstreetmap.org/viewtopic.php?pid=825651#p825651
      //␣https://www.openstreetmap.org/changeset/56501044#map=16/48.1818/11.7873
      if(!cs_id)␣{
      var␣href␣=␣window.location.href
      let␣regex␣=␣/.*changeset\//g;
      let␣result␣=␣href.replace␣(regex,"");
      let␣regexx␣=␣/#.*/g;
      let␣resultx␣=␣result.replace␣(regexx,"");
      cs_id␣=␣resultx;
      }
      
      if(!cs_id)␣{
      console.log("osm_changeset_analyze_urls:␣no␣changeset␣id␣found")
      stop_execution␣=␣true
      }
      
      if(analyze_names.length␣!=␣analyze_urls.length)␣{
      console.log("osm_changeset_analyze_urls:␣analyze_names␣and␣analyze_urls␣have␣different␣length")
      stop_execution␣=␣true
      }
      
      if(!stop_execution)␣{
      //␣generate␣links␣html␣code
      var␣links_html␣=␣""
      for␣(i␣=␣0;␣i␣<␣analyze_names.length;␣i++)␣{
      links_html␣+=␣"<a␣href=\""␣+␣analyze_urls[i]␣+␣cs_id␣+␣"\"␣target=\"_blank\">"␣+␣analyze_names[i]␣+␣"</a>␣"
      }
      //␣append␣links␣to␣website
      cs_headline.insertAdjacentHTML('afterend',␣"<div␣id=\"osm_changeset_analyze_urls\"␣style=\"color:␣#f00;␣padding-left:␣20px;\">"␣+␣links_html␣+␣"</div>")
      }
      
      }
      
      //␣Funktionen␣für␣Objekt␣Seite␣(node/way/relation)
      
      if␣(␣osmpage␣==␣"objekt"␣)␣{
      
      analyze_names␣=␣["OSM␣History␣Viewer"]
      //␣%OBJ%␣==␣node,␣way,␣relation␣␣␣␣%ID%␣==␣OSM-ID
      analyze_urls␣=␣["https://pewu.github.io/osm-history/#/%OBJ%/%ID%"]
      
      var␣cs_headline␣=␣document.getElementById("sidebar_content").getElementsByTagName('h2')[0]
      var␣cs_id␣=␣0;
      var␣stop_execution␣=␣false;
      
      //␣Link␣Example␣OSM␣History␣Viewer
      //␣https://pewu.github.io/osm-history/#/node/54154220
      //␣https://pewu.github.io/osm-history/#/way/683125725
      //␣https://pewu.github.io/osm-history/#/relation/9767454
      
      console.log("OSM-Objekt␣mit␣dem␣Typ:␣"␣+␣osmobj);
      
      var␣href␣=␣window.location.href
      let␣regex␣=␣/.*openstreetmap.org\/[^\/]*\//g;
      let␣result␣=␣href.replace␣(regex,"");
      let␣regexx␣=␣/#.*/g;
      let␣resultx␣=␣result.replace␣(regexx,"");
      let␣regexxx␣=␣/\/.*/g;
      let␣resulty␣=␣resultx.replace␣(regexxx,"");
      cs_id␣=␣resulty;
      
      console.log("OSM-Objekt␣mit␣der␣ID:␣"␣+␣cs_id);
      
      if(!cs_id)␣{
      console.log("osm_objekt_analyze_urls:␣no␣objekt␣id␣found")
      stop_execution␣=␣true
      }
      
      if(analyze_names.length␣!=␣analyze_urls.length)␣{
      console.log("osm_objekt_analyze_urls:␣analyze_names␣and␣analyze_urls␣have␣different␣length")
      stop_execution␣=␣true
      }
      
      if(!stop_execution)␣{
      
      //␣generate␣links␣html␣code
      var␣links_html␣=␣""
      for␣(i␣=␣0;␣i␣<␣analyze_names.length;␣i++)␣{
      
      var␣url␣=␣analyze_urls[i];
      var␣url2␣=␣url.replace("%OBJ%",␣osmobj␣);
      var␣url3␣=␣url2.replace("%ID%",␣cs_id␣);
      
      links_html␣+=␣"<a␣href=\""␣+␣url3␣+␣"\"␣target=\"_blank\">"␣+␣analyze_names[i]␣+␣"</a>␣"
      }
      
      //␣append␣links␣to␣website
      cs_headline.insertAdjacentHTML('afterend',␣"<div␣id=\"osm_changeset_analyze_urls\"␣style=\"color:␣#f00;␣padding-left:␣20px;\">"␣+␣links_html␣+␣"</div>")
      }
      
      }
      

    • Re: Greasemonkey Script für OSMCha, achavi Links auf Changeset-Seiten · miche101 (Gast) · 21.05.2021 15:05 · [flux]

      Hi, ich schon wieder 😉

      so hab eine Lösung für das nicht erneute ausführen des Codes gefunden bei Seitenwechsel. Mit "setInterval" überprüfen ich alle 1000ms ob es die ID = "osm_changeset_analyze_urls" vorhanden ist, wenn nicht werden die Funktionen aufgerufen 🙂 Hab dazu den Code neu Organisieren müssen.. aber dafür funktioniert es jetzt so wie ich es mir vorstelle 😎

      Gruß Miche 🙂

      //␣==UserScript==
      //␣@author␣␣␣␣␣␣␣␣Strubbl,␣Miche101
      //␣@name␣␣␣␣␣␣␣␣␣␣OpenStreetMap␣Changeset,␣Objekt␣Analyze
      //␣@description␣␣␣adds␣links␣to␣achavi␣and␣OSMCha␣to␣every␣OSM␣changeset␣page␣and␣OSM␣Objekt␣History
      //␣@include␣␣␣␣␣␣␣https://www.openstreetmap.org/changeset/*
      //␣@include␣␣␣␣␣␣␣https://www.openstreetmap.org/node/*
      //␣@include␣␣␣␣␣␣␣https://www.openstreetmap.org/way/*
      //␣@include␣␣␣␣␣␣␣https://www.openstreetmap.org/relation/*
      //␣@grant␣␣␣␣␣␣␣␣␣none
      //␣@version␣␣␣␣␣␣␣1.2
      //␣@updateURL␣␣␣␣␣https://gitlab.com/Strubbl/userscripts/raw/master/osm_changeset_analyze_urls.user.js
      //␣==/UserScript==
      
      setInterval(function(){
      if␣(␣!␣document.getElementById("osm_changeset_analyze_urls"))␣{␣myFunction()␣};
      },␣1000);
      
      function␣myFunction()␣{
      
      var␣href␣=␣window.location.href;
      
      var␣n␣=␣href.search("/changeset/");
      
      if␣(␣n␣>␣0␣)
      {
      console.log("changeset");
      changeset(href);
      }
      
      var␣n␣=␣href.search("/node/");
      if␣(␣n␣>␣0␣)
      {
      console.log("node");
      Objekt("node",␣href);
      }
      
      var␣n␣=␣href.search("/way/");
      if␣(␣n␣>␣0␣)
      {
      console.log("way");
      Objekt("way",␣href);
      }
      
      var␣n␣=␣href.search("/relation/");
      if␣(␣n␣>␣0␣)
      {
      console.log("relation");
      Objekt("relation",␣href);
      }
      
      }
      
      //␣Funktionen␣für␣Changeset␣Seite
      function␣changeset(href)␣{
      
      analyze_names␣=␣["achavi",␣"achavi(test)",␣"OSMCha"]
      analyze_urls␣=␣["https://overpass-api.de/achavi/?changeset=",␣"https://dev.overpass-api.de/achavi/?changeset=",␣"https://osmcha.org/changesets/"]
      
      var␣cs_headline␣=␣document.getElementById("sidebar_content").getElementsByTagName('h2')[0]
      var␣cs_id␣=␣0
      var␣i;
      var␣input_fields␣=␣document.getElementsByTagName('input')
      var␣stop_execution␣=␣false
      
      //␣get␣changeset␣id
      for␣(i␣=␣0;␣i␣<␣input_fields.length;␣i++)␣{
      var␣check_for_cs_id␣=␣input_fields[i].getAttribute("data-changeset-id")
      if(check_for_cs_id)␣{
      cs_id␣=␣check_for_cs_id
      break
      }
      }
      
      //␣copied␣from␣post␣of␣miche101␣https://forum.openstreetmap.org/viewtopic.php?pid=825651#p825651
      //␣https://www.openstreetmap.org/changeset/56501044#map=16/48.1818/11.7873
      if(!cs_id)␣{
      let␣regex␣=␣/.*changeset\//g;
      let␣result␣=␣href.replace␣(regex,"");
      let␣regexx␣=␣/#.*/g;
      let␣resultx␣=␣result.replace␣(regexx,"");
      cs_id␣=␣resultx;
      }
      
      if(!cs_id)␣{
      console.log("osm_changeset_analyze_urls:␣no␣changeset␣id␣found")
      stop_execution␣=␣true
      }
      
      if(analyze_names.length␣!=␣analyze_urls.length)␣{
      console.log("osm_changeset_analyze_urls:␣analyze_names␣and␣analyze_urls␣have␣different␣length")
      stop_execution␣=␣true
      }
      
      if(!stop_execution)␣{
      //␣generate␣links␣html␣code
      var␣links_html␣=␣""
      for␣(i␣=␣0;␣i␣<␣analyze_names.length;␣i++)␣{
      links_html␣+=␣"<a␣href=\""␣+␣analyze_urls[i]␣+␣cs_id␣+␣"\"␣target=\"_blank\">"␣+␣analyze_names[i]␣+␣"</a>␣"
      }
      //␣append␣links␣to␣website
      cs_headline.insertAdjacentHTML('afterend',␣"<div␣id=\"osm_changeset_analyze_urls\"␣style=\"color:␣#f00;␣padding-left:␣20px;\">"␣+␣links_html␣+␣"</div>")
      }
      
      }
      
      //␣Funktionen␣für␣Objekt␣Seite␣(node/way/relation)
      function␣Objekt(osmobj,␣href)␣{
      
      analyze_names␣=␣["OSM␣History␣Viewer"]
      //␣%OBJ%␣==␣node,␣way,␣relation␣␣␣␣%ID%␣==␣OSM-ID
      analyze_urls␣=␣["https://pewu.github.io/osm-history/#/%OBJ%/%ID%"]
      
      var␣cs_headline␣=␣document.getElementById("sidebar_content").getElementsByTagName('h2')[0]
      var␣cs_id␣=␣0;
      var␣stop_execution␣=␣false;
      
      //␣Link␣Example␣OSM␣History␣Viewer
      //␣https://pewu.github.io/osm-history/#/node/54154220
      //␣https://pewu.github.io/osm-history/#/way/683125725
      //␣https://pewu.github.io/osm-history/#/relation/9767454
      
      console.log("OSM-Objekt␣mit␣dem␣Typ:␣"␣+␣osmobj);
      
      let␣regex␣=␣/.*openstreetmap.org\/[^\/]*\//g;
      let␣result␣=␣href.replace␣(regex,"");
      let␣regexx␣=␣/#.*/g;
      let␣resultx␣=␣result.replace␣(regexx,"");
      let␣regexxx␣=␣/\/.*/g;
      let␣resulty␣=␣resultx.replace␣(regexxx,"");
      cs_id␣=␣resulty;
      
      console.log("OSM-Objekt␣mit␣der␣ID:␣"␣+␣cs_id);
      
      if(!cs_id)␣{
      console.log("osm_objekt_analyze_urls:␣no␣objekt␣id␣found")
      stop_execution␣=␣true
      }
      
      if(analyze_names.length␣!=␣analyze_urls.length)␣{
      console.log("osm_objekt_analyze_urls:␣analyze_names␣and␣analyze_urls␣have␣different␣length")
      stop_execution␣=␣true
      }
      
      if(!stop_execution)␣{
      
      //␣generate␣links␣html␣code
      var␣links_html␣=␣""
      for␣(i␣=␣0;␣i␣<␣analyze_names.length;␣i++)␣{
      
      var␣url␣=␣analyze_urls[i];
      var␣url2␣=␣url.replace("%OBJ%",␣osmobj␣);
      var␣url3␣=␣url2.replace("%ID%",␣cs_id␣);
      
      links_html␣+=␣"<a␣href=\""␣+␣url3␣+␣"\"␣target=\"_blank\">"␣+␣analyze_names[i]␣+␣"</a>␣"
      }
      
      //␣append␣links␣to␣website
      cs_headline.insertAdjacentHTML('afterend',␣"<div␣id=\"osm_changeset_analyze_urls\"␣style=\"color:␣#f00;␣padding-left:␣20px;\">"␣+␣links_html␣+␣"</div>")
      }
      
      }
      

    • Re: Greasemonkey Script für OSMCha, achavi Links auf Changeset-Seiten · Strubbl (Gast) · 24.05.2021 23:59 · [flux]
      1. edit:

      Hallo miche101, vielen Dank für deine Arbeit.

      Ich wollte das in zwei separate Scripte packen, aber es scheint Probleme zu geben, wenn man beide Scripte hat. das muss ich nochmal debuggen. Er lädt entweder nur das eine oder das andere Script und wenn man sich zB. von Changeset zu Way klickt, wird auf der Way-Seite das Changeset-Script ausgeführt. Das sollte Greasemonkey eigentlich anhand der URL schon nicht erlauben. Aber nun ja…


    • Re: Greasemonkey Script für OSMCha, achavi Links auf Changeset-Seiten · miche101 (Gast) · 25.05.2021 08:05 · [flux]

      Strubbl wrote:

      , aber es scheint Probleme zu geben, wenn man beide Scripte hat.

      Ich glaub der Firefox verarbeitet hier nicht alles neu, sondern nur die Änderungen an der Seite... und darum werden auch die Skripte nicht neu ausgeführt. Wie der Firefox dann das Greasemonkey verarbeitet bzw. Skript wechselt ist die Frage.. eventuell muss man alles in eine Skript packen 🤔


    • Re: Greasemonkey Script für OSMCha, achavi Links auf Changeset-Seiten · miche101 (Gast) · 25.05.2021 08:47 · [flux]

      und mir ist aufgefallen dass du eine Regex weg gemacht hast 🤔 des war um z.B. diesen Link zu verarbeiten:

      https://www.openstreetmap.org/way/4776904/history

      let regexxx = /\/.*/g;

      Gruß Miche


    • Re: Greasemonkey Script für OSMCha, achavi Links auf Changeset-Seiten · AB-inf-x-chg-AB (Gast) · 25.05.2021 13:39 · [flux]

      miche101 wrote:

      AB-inf-x-chg-AB wrote:

      Wäre so ein ähnliches Skript für Node-/Way-/Relation-Seiten auf osm.org mit Link zu https://wiki.openstreetmap.org/wiki/OSM … _(by_PeWu) möglich?

      Die Ansicht ist auch ganz cool 😎 ich versuch mal das zu integrieren 🙂

      Gerade ausprobiert (Eure letzte Version, alles in einem). Funktioniert gut - Dankeschön!


    • Re: Greasemonkey Script für OSMCha, achavi Links auf Changeset-Seiten · mmd (Gast) · 28.06.2021 18:53 · [flux]

      Strubbl wrote:

      https://www.openstreetmap.org/changeset/56501044
      https://overpass-api.de/achavi/?changeset=56501044
      https://dev.overpass-api.de/achavi/?changeset=56501044

      Beim achavi dev sehe ich die Änderungen nicht. Weißt du, woran es da hakt?

      Ich habe jetzt mal alle Daten seit 2012 geladen, dabei noch 3 Probleme in Overpass entdeckt, die in einem Fall dafür sorgen, dass der Update unter bestimmten Bedingungen abstützt und die Daten dann nicht mehr aktualisiert werden. Bleibt zu hoffen, dass ich bei der Aktion nicht noch weitere schlafende Bugs geweckt habe.

      Auf der SSD sind jetzt noch 58 GB frei, die 9 Jahre passten in 380GB hinein. Die Daten sollten theoretisch jede Minute aktualisiert werden. Wie bei Testinstanzen üblich gibt es jedoch keinerlei Garantien für Verfügbarkeit der Instanz oder Aktualität der Daten.

      Jetzt klappt auch mein Testbeispiel aus 2015 wieder: https://dev.overpass-api.de/achavi/inde … t=28764270

      Alternativ auch mit der OSMCha Changetset-Map: https://dev.overpass-api.de/changeset-map/#28764270