„Wikipedia:Lua/Werkstatt“ – Versionsunterschied

aus Wikipedia, der freien Enzyklopädie
Letzter Kommentar: vor 3 Jahren von Uwe Martens in Abschnitt nachgewiesen in oder URL der Fundstelle als String
Zur Navigation springen Zur Suche springen
Inhalt gelöscht Inhalt hinzugefügt
→‎Test-Botlauf: Auf die Idee kommt Benutzer Leyo offenbar auch nicht, daß dieser Abschnitt, so wie er vorher war, anderweitig verlinkt ist! Aber scheinbar muß man hier erst mal noch in einem gesonderten Abschnitt darüber diskutieren, ob ich einen Test-Botlauf durchführe oder den Botlauf teste! 🤦‍♂️
Zeile 1.277: Zeile 1.277:
::: Bezüglich deines Verwurfs, ich würde mich widersprechen, möchte ich auf meinen ersten Satz verweisen. --[[Benutzer:Leyo|Leyo]] 00:21, 15. Mai 2021 (CEST)
::: Bezüglich deines Verwurfs, ich würde mich widersprechen, möchte ich auf meinen ersten Satz verweisen. --[[Benutzer:Leyo|Leyo]] 00:21, 15. Mai 2021 (CEST)
::::Macht es jetzt wirklich Sinn, an zwei Orten über den gleichen Sachverhalt zu erörtern? Die Vorlage:CASRN ist die von Dir besagte Untervorlage. Ob der Quelltext nun innerhalb der Wikipedia unter einem anderen Namen gespeichert ist und somit projektweit aufgerufen werden kann, oder nur innerhalb der Vorlage:Infobox irgendwo steht, spielt für die Infobox sowie für das Endergebnis absolut keinerlei Rolle. Von daher bin ich es, der in der Tat nicht im Mindesten versteht, warum Du Dich gegen den sich abzeichnenden Konsens stemmst, es auf die einfachste Weise zu erledigen. Und nein, in der EN:WP wird nicht auf Existenz des CAS-Webeintrages geprüft. Vielmehr warst Du selber es, der bemängelte, [[Spezial:Diff/211649583|daß gerade nicht geprüft wird, ob die Fundstelle mit einer CAS-Nummer belegt ist]]. Ein weiteres Mal widersprichst Du Dir selber. -- [[Benutzer:Uwe Martens|Uwe Martens]] ([[Benutzer Diskussion:Uwe Martens|Diskussion]]) 00:50, 15. Mai 2021 (CEST)
::::Macht es jetzt wirklich Sinn, an zwei Orten über den gleichen Sachverhalt zu erörtern? Die Vorlage:CASRN ist die von Dir besagte Untervorlage. Ob der Quelltext nun innerhalb der Wikipedia unter einem anderen Namen gespeichert ist und somit projektweit aufgerufen werden kann, oder nur innerhalb der Vorlage:Infobox irgendwo steht, spielt für die Infobox sowie für das Endergebnis absolut keinerlei Rolle. Von daher bin ich es, der in der Tat nicht im Mindesten versteht, warum Du Dich gegen den sich abzeichnenden Konsens stemmst, es auf die einfachste Weise zu erledigen. Und nein, in der EN:WP wird nicht auf Existenz des CAS-Webeintrages geprüft. Vielmehr warst Du selber es, der bemängelte, [[Spezial:Diff/211649583|daß gerade nicht geprüft wird, ob die Fundstelle mit einer CAS-Nummer belegt ist]]. Ein weiteres Mal widersprichst Du Dir selber. -- [[Benutzer:Uwe Martens|Uwe Martens]] ([[Benutzer Diskussion:Uwe Martens|Diskussion]]) 00:50, 15. Mai 2021 (CEST)
::::: Welch ein dummdreister Vorwurf! Die Infos aus dem verlinkten Diff sind für die Chembox nicht mehr aktuell.
::::: Welch ein dreister und inkorrekter Vorwurf! Die Infos aus dem verlinkten Diff sind für die Chembox nicht mehr aktuell.
::::: „Die Vorlage:CASRN ist die von [m]ir besagte Untervorlage“, wenn die Infobox Chemikalie diese aufrufen würde. Eine Einbindung im Artikelquelltext innerhalb der Infobox Chemikalie ist natürlich nicht, wovon ich spreche. Aber das weisst du ja selbst. --[[Benutzer:Leyo|Leyo]] 01:17, 15. Mai 2021 (CEST)
::::: „Die Vorlage:CASRN ist die von [m]ir besagte Untervorlage“, wenn die Infobox Chemikalie diese aufrufen würde. Eine Einbindung im Artikelquelltext innerhalb der Infobox Chemikalie ist natürlich nicht, wovon ich spreche. Aber das weisst du ja selbst. --[[Benutzer:Leyo|Leyo]] 01:17, 15. Mai 2021 (CEST)
::::::Naja, vielen Dank für die Bestätigung, auf was für einem Niveau wir bereits angelangt sind! Es ist hier an dieser Stelle mit Dir definitiv EOD! Weitere Beiträge Deinerseits werde ich ignorieren. -- [[Benutzer:Uwe Martens|Uwe Martens]] ([[Benutzer Diskussion:Uwe Martens|Diskussion]]) 01:43, 15. Mai 2021 (CEST)
::::::Naja, vielen Dank für die Bestätigung, auf was für einem Niveau wir bereits angelangt sind! Es ist hier an dieser Stelle mit Dir definitiv EOD! Weitere Beiträge Deinerseits werde ich ignorieren. -- [[Benutzer:Uwe Martens|Uwe Martens]] ([[Benutzer Diskussion:Uwe Martens|Diskussion]]) 01:43, 15. Mai 2021 (CEST)


=== Test Botlauf ===
=== Test-Botlauf ===
{{info}} Mein Bot hat also nun [https://de.wikipedia.org/w/index.php?target=Uwe+Martens&namespace=0&tagfilter=&start=2021-05-14&end=2021-05-14&limit=500&title=Spezial%3ABeitr%C3%A4ge eine Hand voll Testedits] gemacht (zu ergänzen war übrigens die Vorlage:CLH-ECHA). Das mit der Prüfung und Ergänzung der Q-Nummern funktioniert auch. Also wenn es denn jetzt Allen genehm ist, stocke ich die Testedits auf 50 auf und beantrage das Botflag. Sollten irgendwann einmal die Vorlagen der Infoboxen geändert werden und die Einbindung der Vorlage:CASRN obsolet werden, dann gelobe ich feierlich, meinen Bot mit den etwaig notwendigen Änderungen zu bemühen! In der Hoffnung, damit dem Fachbereich Chemie zu dienen, 😃 [[Benutzer:Uwe Martens|Uwe Martens]] ([[Benutzer Diskussion:Uwe Martens|Diskussion]]) 16:24, 14. Mai 2021 (CEST)
{{info}} Mein Bot hat also nun [https://de.wikipedia.org/w/index.php?target=Uwe+Martens&namespace=0&tagfilter=&start=2021-05-14&end=2021-05-14&limit=500&title=Spezial%3ABeitr%C3%A4ge eine Hand voll Testedits] gemacht (zu ergänzen war übrigens die Vorlage:CLH-ECHA). Das mit der Prüfung und Ergänzung der Q-Nummern funktioniert auch. Also wenn es denn jetzt Allen genehm ist, stocke ich die Testedits auf 50 auf und beantrage das Botflag. Sollten irgendwann einmal die Vorlagen der Infoboxen geändert werden und die Einbindung der Vorlage:CASRN obsolet werden, dann gelobe ich feierlich, meinen Bot mit den etwaig notwendigen Änderungen zu bemühen! In der Hoffnung, damit dem Fachbereich Chemie zu dienen, 😃 [[Benutzer:Uwe Martens|Uwe Martens]] ([[Benutzer Diskussion:Uwe Martens|Diskussion]]) 16:24, 14. Mai 2021 (CEST)
:Dass [[Spezial:Diff/211947669|hier]] ein Dateiname unter die Räder gekommen ist, hast Du ja gesehen und vermutlich für die Zukunft unterbunden. Ansonsten stehen von meiner Seite die Ampeln auf grün.
:Dass [[Spezial:Diff/211947669|hier]] ein Dateiname unter die Räder gekommen ist, hast Du ja gesehen und vermutlich für die Zukunft unterbunden. Ansonsten stehen von meiner Seite die Ampeln auf grün.

Version vom 15. Mai 2021, 23:39 Uhr

Diese Seite ist eine Diskussionsplattform zu zwei Themen:

  • Unterstützung bei der Lua-Programmierung in einem konkreten Modul und Hilfe bei der Fehlersuche
  • Wünsche für die Implementierung neuer Lua-Funktionen

Die Anforderungen an eine zielführende Fragestellung mögen sinngemäß den Intros der Schwesterwerkstätten entnommen werden:

Zu allgemeinen Gepflogenheiten siehe Wikipedia:Werkstätten.

Sachdienliche Antworten können von allen gegeben werden.


45 Skriptfehler im Projekt!
Auf dieser Seite werden Abschnitte ab Überschriftenebene 2 automatisch archiviert, die seit 3 Tagen mit dem Baustein {{Erledigt|1=--~~~~}} versehen sind.
Zum Archiv
Wie wird ein Archiv angelegt?

Längerfristige Baustellen

Template:Module rating

Hallo. Brauchen wir denn eine Übersetzungen der Vorlage en:Template:Module rating? Wenn ja, wie soll die Vorlage denn heißen? --Tlustulimu (Diskussion) Wikipedia:Lua/Werkstatt#c-Tlustulimu-2013-05-15T17:00:00.000Z-Template:Module rating11Beantworten

Danke, sehr lieb, aber da werden wir keine agency für ausstatten können.
Mit offenem Modul (ohne Benutzer:) hat man sich erst dann von de.wikipedia.beta.wmflabs.org aus hier im Namensraum blicken zu lassen, wenn es beta erreicht hat.
Ansonsten kriegt man das auch freihändig hin: Spezial:Permalink/118063050
Einen Hinweis auf 10.000-fach eingebundenes Modul als Kriterum für eine vorwiegend einzuhaltende Vollsperrung eines ausgereiften Moduls habe ich schon in der Schublade.
Eine administrative agency, die ein Review macht und unausgereiften Schrott verhindert, bevor er produktiv eingebunden wird, sehe ich auch noch nicht patroullieren.
Besten Dank --PerfektesChaos Wikipedia:Lua/Werkstatt#c-PerfektesChaos-2013-05-15T18:37:00.000Z-Tlustulimu-2013-05-15T17:00:00.000Z11Beantworten

Module für vielgenutzte Vorlagen

Vorlage:Internetquelle hat ein Datumsproblem, vgl. Jeff Walker abgerufen am 1 v. Chr. Gruß, Siechfred Cradle of Filz Wikipedia:Lua/Werkstatt#c-Siechfred-2013-06-02T14:34:00.000Z-Module für vielgenutzte Vorlagen11Beantworten

Und wieder ein Fall, in dem eine neues Lua Modul überhastet und ungetestet eingeführt wurde... Wie währe es zur Abwechslung mal damit, andere über das Modul drüberschauen zu lassen, als es sofort zu benutzen AS?
Das Problem ist laut seiner Disk jetzt behoben.--Steef 389 Wikipedia:Lua/Werkstatt#c-Steef389-2013-06-02T15:08:00.000Z-Siechfred-2013-06-02T14:34:00.000Z11Beantworten
Erstmal revert. --Steef 389 Wikipedia:Lua/Werkstatt#c-Steef389-2013-06-02T15:11:00.000Z-Steef389-2013-06-02T15:08:00.000Z11Beantworten
Danke, bei über 70.000 Einbindungen sollte man in der Tat ein wenig mehr Fingerspitzengefühl walten lassen. Gruß, Siechfred Cradle of Filz Wikipedia:Lua/Werkstatt#c-Siechfred-2013-06-02T15:13:00.000Z-Steef389-2013-06-02T15:11:00.000Z11Beantworten
Du solltest mal überlegen, was du da erwartest: Bei über 100.000 Einbindungen der Vorlage:FormatDate (um deren Modul geht es hier) als Untervorlage von mehrere Hundert verschiedenen, anderen Vorlagen ist es völlig ausgeschlossen, jeden nur erdenklichen Fall zu testen, insbesondere dann nicht, wenn eine Vorlage bisher gezielt einen fehlerhaften Aufruf ausnutzt. Ohne die Umstellung der Vorlage:FormatDate auf das Modul ist das Modul ja nicht in den anderen Vorlagen - darunter auch Vorlage:Internetquelle - eingebaut und damit nicht feststellbar, ob alles funktioniert. Das geht also nur durch ausprobieren direkt in der Vorlage. ÅñŧóñŜûŝî (Ð) Wikipedia:Lua/Werkstatt#c-Antonsusi-2013-06-02T16:11:00.000Z-Siechfred-2013-06-02T15:13:00.000Z11Beantworten
<ironie>Nein, testen ist natürlich nicht möglich, ohne das Modul einzubauen.</ironie> Wenn man eine Vorlage mit mehr als 10000 Einbindungen duch ein Modul ersetzt, so muss es möglich sein, möglichst viele Einbindungen zu überprüfen. 40 ist hier definitiv zu wenig, dann muss man sich mehr Zeit nehmen. Desweiteren könnte man das Modul auch erstmal hier erwähnen, damit sich andere Benutzer mit Lua-Kenntnissen sich das ganze anschauen. Dies würde auch endlich mal zu einer vernünftigen Doku führen! Erklär also nicht deine eigene Faulheit damit, dass das Testen nicht möglich ist. Es gibt auch die Möglichkeit des Testwikis, wenn du ohne die Vorlage zu ersetzen des Testens nicht mächtig bist. Ist ja leider nicht zum ersten mal geschehen... --Steef 389 Wikipedia:Lua/Werkstatt#c-Steef389-2013-06-02T18:20:00.000Z-Antonsusi-2013-06-02T16:11:00.000Z11Beantworten
Ergänzung: Vor allem, wenn ich dann sowas sehe, innerhalb von 8 Minuten schicken wir 4 mal ca 200000 Seiten (!) zum neu rendern. Warum auch nicht? --Steef 389 Wikipedia:Lua/Werkstatt#c-Steef389-2013-06-02T18:25:00.000Z-Antonsusi-2013-06-02T16:11:00.000Z11Beantworten
(BK)
  • Ein Testwiki nützt nichts. Nur hier auf de:WP befinden sich die 500 Vorlagen, welche auf FormatDate zugreifen.
  • Für die Kontrolle einer Seite braucht man 1/2 bis 1 Minute. Da wären bereits 100 Seiten eine ganze Stunde Arbeit, und das ist dann immer noch ein marginaler Teil aller Einbindungen. Es bleibt bei der Tatsache, dass nur alle Leser zusammen genug Augen haben, um zuverlässig Fehler zu finden. Dein Vorwurf der Faulheit ist deshalb schlicht eine Freschheit.
  • Deinem "Ironie-Kommentar" entnehme ich, dass du entweder nicht über die notwendige Sachkompetenz verfügst zu erkennen, dass man sowas hier im Modulbereich testen muss, oder dass du schlicht die Freschheit besitzt, diesen Kommentar wider besseres Wissen zu verfassen. Ich gehe gem. WP:AGF zu deinen Gunsten von Ersterem aus.
Hier erwähnen ist etwas, dass ich machen könnte. In dem Punkt gebe ich dir Recht. Die anderen Einwände sind unberechtigt.
Zum Thema Server: Solange keine Seiten auf Kategorie:Wikipedia:Seite mit Skriptfehlern auftauchen, ist das nicht so dramatisch. Die Kat wird nur aktualisiert (wieder geleert), wenn der Server viel Zeit hat oder eine Seite editiert wird. Ansonsten fliegen die Seiten nur aus dem Cache und werden bei Lesezugriff neu gerendert, und zwar nur dann mehrmals, wenn zwischendurch (also in den 8 Minuten) schonmal zugegriffen wurde. Außerdem ist es nunmal so, dass hier kein brauchbarer (!) Debugger existiert. Das bewirkt zusätzliche Edits. Was sind denn darüber hinaus 200.000 Renderungen, wenn die Vorlage danach schneller ist und für die Zukunft weniger Serverzeit braucht? ÅñŧóñŜûŝî (Ð) Wikipedia:Lua/Werkstatt#c-Antonsusi-2013-06-02T18:56:00.000Z-Steef389-2013-06-02T15:11:00.000Z11Beantworten
"Ohne die Umstellung der Vorlage:FormatDate auf das Modul ist das Modul ja nicht in den anderen Vorlagen - darunter auch Vorlage:Internetquelle - eingebaut und damit nicht feststellbar, ob alles funktioniert.": Die Aussage ist falsch. Unter Wikipedia:Lua wird explizit die Vorlagenspielwiese erwähnt mit der genau so eine Überprüfung möglich ist. --Mps、かみまみたDisk. Wikipedia:Lua/Werkstatt#c-Mps-2013-06-02T18:46:00.000Z-Antonsusi-2013-06-02T18:56:00.000Z11Beantworten
Du verstehst das Problem nicht. Es ist nicht möglich, die Einbindungen einer vorhandenen Vorlage (im ANR) mit einem Modul in der eigenen Spielwiese zu testen. Das geht nur mit einer manipulierten Version dieser Vorlage selbst und dem Übertragen der Einbindungen von einzelnen Artikeln in die Vorlagenspielwiese. Allenfalls kann man noch von der umzustellenden Untervorlage (hier also FormatDate) eine Duplikat mit Moduleinbindung im Vorlagen-NR platzieren, dann die Obervorlagen einzeln( "Infobox für Infobox") auf dieses Duplikat umstellen und jedesmal in den Artikeln nachschauen, ob was negatives passiert. Das stößt aber an die gleiche Zeitgrenze wie direktes Umstellen. ÅñŧóñŜûŝî (Ð) Wikipedia:Lua/Werkstatt#c-Antonsusi-2013-06-02T18:56:00.000Z-Antonsusi-2013-06-02T18:56:00.000Z11Beantworten
Doch genau das geht. Man erstellt eine Kopie einer bereits vorhandenen Vorlage/Modul und dann kann man sich die Auswirkungen auf bestehende Artikel anzeigen lassen, so als wäre die Originalvorlage verändert worden. Es müssen dabei weder Artikel noch Obervorlagen geändert werden; es reicht die Kopie der Untervorlage. --Mps、かみまみたDisk. Wikipedia:Lua/Werkstatt#c-Mps-2013-06-02T19:55:00.000Z-Antonsusi-2013-06-02T18:56:00.000Z11Beantworten
Hallo, soweit ich das sehe ist die Lua-Version von FormatDate aktiv und die Formatierungen von Vorlage:Internetquelle sind ok. Besteht denn derzeit noch ein Problem? --Cepheiden (Diskussion) Wikipedia:Lua/Werkstatt#c-Cepheiden-2013-06-02T19:35:00.000Z-Siechfred-2013-06-02T14:34:00.000Z11Beantworten
  • (BK) [...] Ein Testwiki nützt nichts [...]: Ja, nur hier sind die Vorlagen. Diese geben aber irgendwie das Datum an Vorlage:FormatDate weiter. Dies ist durch einen Blick in den Vorlagenquelltext und die Einbindungen nachvollziehbar. Damit lassen sich fast alle übergebenen Werte feststellen, wenn man genug Seiten überprüft.
  • [...] Da wären bereits 100 Seiten eine ganze Stunde Arbeit [...]: es ist mir durchaus bewusst, dass sich das nicht in 5 Minuten erledigen lässt. Dies ist allerdings bei 10000 und mehr Einbindungen durchaus angebracht. Außerdem verlangt niemand, dass es du allein machst, du kannst auf dieser Seite gerne um Hilfe bitten. Oder du machst innerhalb einer Woche jeden Tag 25 Einbindungen, brauchst dazu 15 Minuten pro Tag, hast allerdings dann schon einige Einbindungen getestet. Niemand zwingt dich, ein Modul innerhalb von einer Stunde zu entwickeln und einzubauen.
  • Thema Server: Bei 200000 Seiten ist es nicht unwahrscheinlich, dass ein nicht kleiner Teil zwischen deinen Edits aufgerufen wurde.
  • Kein brauchbarer Debugger: Eine lokale MediaWiki-Installation sollte hierbei gute Dienste leisten.
  • Ich weiß sehr wohl, dass man im Modulbereich testen muss. Wer zwingt dich allerdings, das Modul selbst zu bearbeiten? Lege eine neues, temporäres Modul an, teste dort und entsorge es dann per SLA. Es wird sich niemand beschweren.
  • Duplikat umstellen und jedesmal in den Artikeln nachschauen, ob was negatives passiert. Das stößt aber an die gleiche Zeitgrenze wie direktes Umstellen.: Der Zeitaufwand ist der selbe, ja, aber der Aufschrei von den anderen Wikipedianern wird deutlich kleiner ausfallen (es wird nämlich keinen geben).
Fazit: Module auf einer temporären Seite erstellen, nicht überhastet produktiv nutzen, auf dieser Seite vorstellen und von anderen Benutzern überprüfen und testen lassen. Eine Vorlage, die jahrelang funktioniert hat, muss nicht innerhalb von 2 Tagen ersetzt werden. Dies wurde dir allerdings schon an anderer Stelle nahegelegt. --Steef 389 Wikipedia:Lua/Werkstatt#c-Steef389-2013-06-02T19:37:00.000Z-Cepheiden-2013-06-02T19:35:00.000Z11Beantworten
Lassen wir es so stehen. Das Modul scheint ja zu laufen. ÅñŧóñŜûŝî (Ð) Wikipedia:Lua/Werkstatt#c-Antonsusi-2013-06-02T19:57:00.000Z-Cepheiden-2013-06-02T19:35:00.000Z11Beantworten


  • Das ist jetzt das dritte Mal innerhalb weniger Wochen, dass du funktionierende Vorlagen ohne eine akute Notwendigkeit zerschossen hat. Ich will kein viertes Mal mehr sehen. Die Vorlagen (Str*, MinMax, FormatDate) sind auf rund 150.000, 100.000, 70.000 Seiten eingebunden. Deine Aktionen haben etliche Benutzer über Stunden beschäftigt und es jeweils bis auf die FzW und in diverse Werkstätten geschafft.
  • Selbstverständlich kann man vorher testen.
    1. Kategorie:Wikipedia:Lua/Modul/Testseite
      • Eine Testseite kann alle Typen erwarteter richtiger Parameter durchspielen, die zulässigen Varianten (Leerzeichen usw.) und die typischen Anwendungsfehler. Zumindest in diesen Fällen, die 99,999 % der Einbindungen abdecken, hat es ordnungsgemäß zu funktionieren.
      • Die Testseite kann man sich in der Seitenvorschau vor dem ersten und bei jedem Abspeichern des Moduls anzeigen lassen. Da muss es immer passen.
      • Auch noch nicht umgestellte Vorlagen kann man sich als Dummies vorab zeigen lassen. Beispiel: test/Vorlage:Max für Expr/test #Vorlagenprogrammierung.
    2. β-dewiki
  • Es kann immer mal eine unglückliche Konstellation wirrer Einbindungsparameter auftreten, die nicht vorhersehbar war. Dann sagt auch niemand etwas, und ein Bug kann jedem mal passieren. Die hier aufgetretenen Fehler wären jedoch sämtlich durch vorheriges Testen vermeidbar gewesen und hatten auf Tausenden von Seiten Bockmist ausgelöst.
  • @Zeitbedarf: Es besteht keine Notwendigkeit, hastig gut funktionierende und hinreichende Vorlagen umzuschreiben. @Serverlast: Die Schnipsel der Vorlagensyntax schlummern im Cache und machen keine Arbeit. Serverbelastung entsteht durch jede Veränderung an einer Vorlage/Modul; vermeidbar ist dies, wenn alle paar Stunden alle gerade aufgebauten Seiten erneut zusammengestellt werden müssen.

--PerfektesChaos Wikipedia:Lua/Werkstatt#c-PerfektesChaos-2013-06-02T20:49:00.000Z-Module für vielgenutzte Vorlagen11Beantworten

Deinen arroganten herablassenden Stil ("Ich will kein viertes Mal mehr sehen") kannst du dir schenken. Du bist hier nicht der große Lehrmeister! Dir selbst fehlt doch der Mut, die WP durch Umstellen vorhandener vielbenutzter Vorlagen zu verbessern, weil du da bei einem Fehler ebenfalls verbal Prügel kassieren könntest! Deshalb weichst du lieber auf Neuentwicklungen aus, bei denen niemand motzen kann weil eine vorhandene Vorlage mal für eine Stunde auf bestimmten Seiten nicht richtig funktioniert. Von der Freschheit, hinterher immer alles besser gewusst zu haben, obwohl das nur teilweise stimmen dürfte, mal ganz abgsehen.
Unverschämt ist auch deine Übertreibung ich hätte "etliche Benutzer über Stunden beschäftigt". Es gab ein paar Meldungen und ich war online und habe darauf reagiert. Das ist alles und hat gewiss nicht etliche Userstunden gekostet.
Es wird Zeit, dass wir hier mal alle Aspekte richtig zusammenstellen, was läuft:
  1. Es gibt sehr wohl einen Bedarf, solche Vorlagen umzustellen. Jede Umstellung bewirkt, wenn sie mal richtig läuft und die Seiten aktualisiert sind, eine Verbesserung der Performance. Das wird durch Korrekturen bei der Umstellung nicht verhindert. Also sind solche Module notwendig.
  2. Je häufiger eine Vorlage eingebunden ist, umso mehr fällt die Verbesserung der Performance ins Gewicht. Deshalb sind diese bevorzugt umzustellen.
  3. Alle Besucher der WP profitieren von schnellerem Seitenaufbau. Bei den zigtausend Zugriffen pro Tag macht jede Sekunde schnellerer Aufbau zusammen mehrere Tage (teure!) Serverzeit aus!
  4. Es bleibt also die Feststellung, dass das Endergebnis aller durch mich vorgenommenen Umstellungen eine Verbesserung der WP ist.
Außer mir gibt es hier niemand, der sich an diese Vorlagen bisher herangewagt hat (@PerfektesChaos: auch du - bisher - nicht). Das hat auch einen naheliegenden Grund: Es ist zwar jeder froh, wenn die WP schneller wird, aber noch größer ist die Lust, auf Benutzer, welche sich hier die Arbeit machen und für die WP Zeit investieren, herumzuhacken, wenn es (marginale) Fehler gibt, indem man aus einer Mücke einen Elefant macht ("und es jeweils bis auf die FzW und in diverse Werkstätten geschafft" - Was für eine Katastrophe). Ein paar Minuten erkennbar fehlende Datumsangaben auf einem Teil der WP-Seiten sind im Verhältnis zur gesamten WP marginal. Es ist für einige Benutzer hier wohl einfach zu geil, auf Leute, denen man ja nicht ins Gesicht schauen muss, draufzuhauen. Die aggressiven Reaktionen hier stehen also im krassen Missverhältnis zum positiven Endergebnis meiner Arbeit.
  1. Wer direkt perfekte Umstellungen haben will, der soll der WMF gewerbliche Programmierer bezahlen.
  2. Wer motzt, soll es selbst besser machen.
Zu den mir gemachten Vorschlägen:
  1. Alle mir hier vorgestellten Testmöglichkeiten, Wikis u.Ä. können, soweit hier dargestellt, doch nur dazu genutzt werden, den Aufruf eines Moduls zu testen (Stichwort: Aufrufkombinationen durchgehen), eine parallel erstellte Testvorlage zu prüfen und Syntax- oder Logikfehler zu finden. Das Kernproblem ist aber, dass bei 500 Obervorlagen niemand genau weiß, welche abstrusen Aufrufe es z.T. gibt. Wenn beispielsweise eine Vorlage, welche FormatDate mit Buchstaben aufruft, obwohl diese ein ISO-Datum verlangt, nach der Umstellung nicht richtig funktioniert, dann ist das in erster Linie ein Fehler in dieser Vorlage, und nicht in FormatDate. Es ist doch unsinnig, dass die Vorlage FormatDate keine erhöhte Fehlertoleranz bekommen und nicht auf die Verarbeitung weiterer Formate erweitert werden kann, weil schlecht geschriebene Vorlagen sich darauf verlassen, dass sie nicht verbessert wird. Genau dies war nämlich die Ursache für das Problem mit Vorlage:Internetquelle: Es gab bei bestimmten unsinnigen Aufrufen eine Fehlermeldung weniger.
  2. @PerfektesChaos: Du könntest deine unter 1 geäußerten Vorschläge nochmal genauer erklären. Evtl. meinst du etwas anderes als ich herausgelesen habe. ÅñŧóñŜûŝî (Ð) Wikipedia:Lua/Werkstatt#c-Antonsusi-2013-06-02T23:06:00.000Z-PerfektesChaos-2013-06-02T20:49:00.000Z11Beantworten

Neues Modul InfoboxImage

Moinsen. Es gibt seit gestern Modul:InfoboxImage, Modul:K22b/Baukasten/InfoboxImage sowie dazu gehörige Kategorien. Ich meine, dass da strukturell was ziemlich vor den Baum geht, habe aber keine Ahnung von der Materie. Könnte sich da bitte mal jemand mit technischem Sachverstand drum kümmern? Dank & Gruß, Siechfred (Diskussion) Wikipedia:Lua/Werkstatt#c-Siechfred-2016-01-14T14:47:00.000Z-Neues Modul InfoboxImage11Beantworten

url-converter in LUA programmieren?

Im Rahmen der Spam-Blacklist wird das Tool http://tools.wmflabs.org/url-converter/index.pl verlinkt. Die Funktionatlität lässt sich vermutlich auch per LUA umsetzen, dann könnte man in dem Spam-Blacklist-Meldungen die umgewandelte URL direkt anbieten, anstatt auf das Tool zu verlinken. (Hintergrund sind die Arbeiten an der Meldung, siehe WP:FzW/Archiv#So genannter "Spamfilter" zum Vergraulen von Autoren)

Sollte sich auf jedem Fall user:lustiger seth noch zu äußern. Er hat auch den Perl-Quelltext und weiß, welche schwierigen Fälle es da so geben könnte. Der Umherirrende Wikipedia:Lua/Werkstatt#c-Umherirrender-2016-03-05T11:24:00.000Z-url-converter in LUA programmieren?11Beantworten

gudn tach!
da steckt nicht viel gehirnschmalz dahinter, siehe [1]. -- seth Wikipedia:Lua/Werkstatt#c-Lustiger seth-2016-03-05T14:34:00.000Z-Umherirrender-2016-03-05T11:24:00.000Z11Beantworten
LG --PerfektesChaos Wikipedia:Lua/Werkstatt#c-PerfektesChaos-2016-03-05T20:17:00.000Z-Lustiger seth-2016-03-05T14:34:00.000Z11Beantworten
gudn tach!
es geht darum: phab:T130506. falls das dort abgelehnt wird, koennte man evtl. versuchen, das hier umzusetzen. wobei ich keine ahnung habe, wie man diese lua-scripts dann in die software einbindet. -- seth Wikipedia:Lua/Werkstatt#c-Lustiger seth-2016-03-20T14:29:00.000Z-PerfektesChaos-2016-03-05T20:17:00.000Z11Beantworten
  • Lua kann nur dort tätig werden, wo eine Vorlage aufgerufen wird.
    • In einigen Jahren könnte Vorlage:Internetquelle ihren URL-Parameter ad hoc umschreiben, falls in dieser oder jener Weise unerwünscht.
  • Hinsichtlich deines Phab-Wunsches sehe ich schwarz; zumindest in dieser Form.
    • Man wird garantiert nicht in den MW-Core irgendwelche URL-Regeln für Google schreiben, zumal die Software ja auch außerhalb der WMF-Wikis genutzt wird.
    • Vielmehr wäre die Entwicklung einer nagelneuen Extension (oder gab es schon einen verendeten Versuch?) fällig, die aus einem in MediaWiki: lokal konfigurierbaren Regelsatz mit regulären Ausdrücken für verschiedene URL-Muster jeweils die statt dessen in die Seitengenerierung einfließende URL generiert.
    • Mit einem solchen Regelsatz würden auch Lua-unterstützte Vorlagen arbeiten.
  • Die Verwendung einer SBL (wie auch des BF) für URL, deren Zielseite enzyklopädisch konform ist, die bloß eine unglückliche URL-Formatierung haben, halte ich für grenzwertig bis missbräuchlich.
    • In den FZW war korrekt von „Vergraulen“ in der Abschnittsüberschrift die Rede.
    • Es funktioniert grundsätzlich nicht, einem womöglich nicht sehr erfahrenen Benutzer den SBL-Quatsch oder ein paar Zeilen des BF um die Ohren zu hauen, weil er eine unerwünschte Syntax für URL oder sonstige Wikisyntax benutzt hat, und dann in wenigen Zeilen Erklärungsversuche hinzudonnern, nach welchem Format man was wie umformatieren solle. Die Geschockten bekommen ihre Bearbeitung nicht abgespeichert, haben etwas Böses gemacht, kapieren die Welt nicht mehr, das Abendessen brennt an; sie geben gefrustet auf. So auch der FZW-Beschwerdeführer. Auch auf Jahrzehnte im BF als Einfüger unerwünschter URL gebrandmarkt zu werden ist unverhältnismäßig.
  • Vielmehr sollten solche URL kommentarlos akzeptiert werden.
    • Alle ein, zwei, vier Wochen kann ein Bot durch den ANR streifen, ggf. auf den Dump gestützt, und die in der Regel zweifels- und verlustfrei konvertierbaren URL nach oben benanntem Regelsatz zurechtrücken.
    • Dazu gehören auch viele Websites, die ein jsessionid oder cHash oder sonstige Sitzungskennzeichnungen, die ebenso ihre Herkunft aus dem deWP-Weblink verraten, für die momentane Session damals sinnvoll in der URL tragen. Sie können in der Regel („Regelsatz“!) folgenlos eliminiert werden. Desgleichen Mobilfunk-Versionen von Seiten wie m.spiegel.de statt www.spiegel.de, weil der Einfügende halt von seinem Smartphone aus editiert hatte. Letztlich auch das beliebte Spielchen von deWP-URL statt Wikilink, wobei es mal als unerwünschte Nur-Syntaxkosmetik galt, hier das de.wikipedia.org/wiki/ rauszuschmeißen – es nach Korrektur aber vollständige Ergebnisse bei den „Links auf diese Seite“ liefert. Schließlich die berüchtigten und nur über Dumps zu ortenden eckigen Klammern in der URL, wobei diese zumindest eine Weile mal von einem Bot alle paar Wochen automatisch escaped wurden.
  • Weil wir grad bei Phabricator waren: Vielleicht magst du dich mal wieder hinter den Fortschritt der „Automatischen Leerzeichen“ klemmen, die in WD:TYP #Leerzeichen: Vorschlag zur Abstimmung jüngst schmerzlich vermisst wurden.
lg --PerfektesChaos Wikipedia:Lua/Werkstatt#c-PerfektesChaos-2016-03-20T17:25:00.000Z-Lustiger seth-2016-03-20T14:29:00.000Z11Beantworten
gudn tach!
zu T130506: ja, so wird das vermutlich nicht umgesetzt. aber problembewusstsein schaffen ist ja schon mal der erste schritt, um auch einen gescheiten loesungsansatz ueberhaupt entwickeln zu koennen. es wird dort ja auch bereits ueber eine extension geredet.
SBL als notloesung: ja, finde ich ja selbst doof, deswegen habe ich ja auch bereits zwei phab-tickets erstellt. aber: ich weiss nicht, ob das zulassen der google-links tor und angel nicht zu weit fuer spammer oeffnet. Der Umherirrende hat diesbzgl. anscheinend sogar noch groessere bedenken als ich. ich denke: vielleicht koennten wir's in dewiki mal probieren, hier wird nicht so viel gespammt. ich vermute jedoch, dass es fuer enwiki nicht funzen wuerde.
Wikipedia:Typografie/Automatische Leerzeichen: oh ja, so viele baustellen... ich aktualisiere da mal. -- seth Wikipedia:Lua/Werkstatt#c-Lustiger seth-2016-03-20T22:03:00.000Z-PerfektesChaos-2016-03-20T17:25:00.000Z11Beantworten
Na, wenn es um die Sorge geht, dass google- oder sonstige Weiterleitungslinks als Vehikel für Spam missbraucht werden könnten, dann kann der Bot sich ja zum Wochenstart mit der aktuellen globalen und lokalen SBL versorgen, und jede gemäß Regelsatz konvertierte URL vor dem Zurückschreiben dagegenlaufen lassen. Bei Treffern wird dann die bisherige URL nicht durch die konvertierte URL ersetzt, sondern mit HTML auskommentiert und eine Vorlage:Spam-Link eingefügt, die eine zunächst unsichtbare class=error-Fehlermeldung und eine Wartungskat auslöst.
A popo Wartungskat: Kategorie:Wikipedia:Defekte Weblinks/Bot/Spam kennt noch 27.
frohe ostern --PerfektesChaos Wikipedia:Lua/Werkstatt#c-PerfektesChaos-2016-03-21T08:10:00.000Z-Lustiger seth-2016-03-20T22:03:00.000Z11Beantworten

Modul:WikidataCheck

Es gibt Module:WikidataCheck (Q15089555), ein Modul zum Vergleichen von lokalen Werten mit Wikidata-Werten. Zwar bin ich mit der Funktionalität beispielsweise in enwiki bei en:Module:WikidataCheck nicht ganz zufrieden, aber ich möchte dennoch hier fragen, ob wir das auch brauchen können und wollen. Kategorie:Wikipedia:Wikidata füllt sich zusehends mit Wartungs- und Beobachtungskategorien, die individuell in Vorlagen gesetzt werden.

Eine zentrale Vergleichsmethode mit diesem Modul könnte helfen, dabei einige Sachen sauber zu gestalten. Insbesondere sollte das auch beim Auftreten mehrerer Werte in Wikidata sinnvolle Ergebnisse liefern, was zurzeit kaum sinnvoll zu machen ist (das fehlt leider auch im verlinkten enwiki-Modul). Wie sehen dazu die Meinungen aus? Viele Grüße, MisterSynergy (Diskussion) Wikipedia:Lua/Werkstatt#c-MisterSynergy-2017-04-29T08:30:00.000Z-Modul:WikidataCheck11Beantworten

Mal vorsichtig nachgefragt: ist diese Werkstatt tot? Wo kann ich stattdessen kompetente Benutzer finden? Viele Grüße, MisterSynergy (Diskussion) Wikipedia:Lua/Werkstatt#c-MisterSynergy-2017-05-08T07:08:00.000Z-MisterSynergy-2017-04-29T08:30:00.000Z11Beantworten
  • Naja, du hast keine programmtechnisch lösbare Frage gestellt, sondern mehr allgemeinstrategische Perspektiven des Wikidata-Abgleichs thematisiert.
    • aka „Lösung auf der Suche nach Problem“.
  • Kontaktiere doch dazu eher die Wikidata-Leute.
  • Es gibt in fremden Wikis Dutzende von Modulen. Ja, wahrscheinlich könnte irgendwer die irgendwozu brauchen; vorausgesetzt, sie wären gut gemacht. Aber wenn niemand sie einsetzen, wirken lassen und pflegen will, dann bevölkern sie hier nur die Leichenhalle.
LG --PerfektesChaos Wikipedia:Lua/Werkstatt#c-PerfektesChaos-2017-05-08T08:25:00.000Z-MisterSynergy-2017-05-08T07:08:00.000Z11Beantworten
Also ich habe schon das Problem, dass ich den Vergleich lokaler Werte mit Wikidata-Werten innerhalb von Datenbanklinkvorlagen nur unzureichend umgesetzt bekomme. Diese generieren ja seit letztem Jahr zusehends die Trackingkategorien zur Wartung der angegebenen IDs (siehe Kategorie:Wikipedia:Seite verwendet Daten von Wikidata). Bisher macht da jede Vorlage ihr eigenes Ding, aber könnte zu einem guten Teil vereinheitlicht und vereinfacht werden.
Ich hatte tatsächlich schon überlegt, selbst was zusammenzubasteln. Aber das Leichenhallenszenario kenne ich auch, und mangels substantieller Lua-Erfahrung und Modul-Erfahrung wäre das Ergebnis vermutlich furchtbare Frickelei nach total ineffizienter Entwicklung. Daher meine Frage hier…
Wie auch immer, wen genau meinst Du mit den „Wikidata-Leuten“? Jemanden bei wikidata.org, oder haben wir hier bei dewiki ’ne spezielle Abteilung dafür? Bei den Lua-Sachen habe ich keinen Überblick, wie die Entwicklung läuft und wer da relevante Kenntnisse hat. Viele Grüße! MisterSynergy (Diskussion) Wikipedia:Lua/Werkstatt#c-MisterSynergy-2017-05-08T09:07:00.000Z-PerfektesChaos-2017-05-08T08:25:00.000Z11Beantworten
LG --PerfektesChaos Wikipedia:Lua/Werkstatt#c-PerfektesChaos-2017-05-08T09:17:00.000Z-MisterSynergy-2017-05-08T09:07:00.000Z11Beantworten

Das hat jetzt etwas rumgelegen, aber der Bedarf für solch ein Modul ist weiter vorhanden. In der {{Normdaten}}-Vorlage werden relativ neuerdings verschiedene Wikidata-Vergleichskategorien geworfen, und das ist mit Vorlagencode allein schwer zu realisieren (u.a. Wikipedia Diskussion:Normdaten#Mehr Wikidata-Vergleichskategorien). Um diesmal nicht wieder mit nichts in diese Werkstatt zu kommen, habe ich einen Modul-Entwurf unter Benutzer:MisterSynergy/Spielwiese/Modul:Wikidata-Vergleich abgelegt, und sehr rudimentär in der Spezial:Vorlagenspielwiese getestet.

Allerdings ist das mein Lua-Erstlingswerk, so dass ich gern Spezialisten drüberschauen lassen möchte. Außerdem: wie geht es nun weiter? Kann ich das einfach in den Modul-Namensraum verschieben, Doku anlegen und dann zum Einsatz bringen? Welche Art von Tests sollte das Modul bestehen, bevor es eingesetzt wird? —MisterSynergy (Diskussion) Wikipedia:Lua/Werkstatt#c-MisterSynergy-2018-10-02T15:48:00.000Z-Modul:WikidataCheck11Beantworten

  • Die Vorlage ist in 560.000 Artikel eingebunden. Jede Bearbeitung daran beschäftigt die Server sichtbar für ein bis zwei Tage, und die Warteschlange für andere Aufgaben leidet offenkundig und staut sich weiter zurück.
    • Heißt: Für eingebundene Seiten darf es nur einen einzigen Edit geben, und der muss vorher bestmöglich ausgetestet sein und auf Anhieb sitzen.
    • Solches Rumprobieren aus der vergangenen Woche am produktiven Bestand bei einer Einbindungszahl von über einer halben Million sehe ich überhaupt nicht gern.
  • Seit 2013 haben wir WP:BETA.
    • Dort kann unter realitätsnaher Simulation gründlich erprobt und rumgespielt und gefrickelt werden.
    • Es gibt dazu auch eine Simulation von Wikidata, so dass eine Verknüpfung von unterschiedlichen Test-Artikeln mit unterschiedlichen Test-Items zum Prüfen der verschiedenen Situationen möglich ist.
    • Heißt: Ein Test-Item enthält beispielsweise zwei gleichgerankte Dingens-Werte, und heißt auch so, und wird mit einem Dummy-Artikel verlinkt, aus dessen Lemma hervorgeht, dass zwei gleichgerankte Werte verknüpft sind, und im Text des „Artikels“ steht drin, was erwartet wird und wie sich was verhalten müsste.
  • Es bedarf ohnehin einer Testsuite von Konstellationen zwischen Artikel und Item, die dauerhaft verfügbar sein muss.
    • Nachdem irgendwo im Lua-Modul irgendwas verändert wurde, muss systematisch nachgeprüft werden können, ob das jetzt in dieser Situation wie erwartet funktioniert und ob alle anderen unbeschädigt blieben.
    • Das ist bei der Wikidata-Verknüpfung besonders schwierig, weil nicht einfach nur ein paar Vorlagenparameter zu ändern sind, und dann sieht man ob es grün oder rot oder groß oder klein wird, sondern weil die Konstellation eines Wikidata-Items das Verhalten der Vorlageneinbindung beeinflusst.
    • Sowas am produktiven Artikelbestand zu erproben hatte man vor zehn Jahren mal gemacht; längst haben wir Testwikis und seit 2013 eine volle deutschsprachige Simulation, wo ohne Gefährdung der echten Artikel bis zur Vollreife entwickelt werden kann.
  • Bereits seit 2013/2014 liegt ein Modul:Vorlage:Normdaten mit Parameteranalyse und verbesserten Features in der Warteschlange, aber das WikiProjekt Normdaten kriegt und kriegt es einfach nicht auf die Reihe. Wenn du dir die jüngste Vorlagendiskussion anguckst, dann wird immer nur behelfsmäßig geflickt und gebastelt und konzeptionslos kurzfristig gemurkst, und die Phrase, die ich absolut nicht mehr sehen will, ist „das können wir ja dann hinterher immer noch“ – das heißt nichts anderes als St.-Nimmerleinstag. Der Berg an unerledigter Weiterentwicklung, den das WikiProjekt Normdaten / Normdaten-Wartung vor sich herschiebt und immer höher auftürmt ist längst nicht mehr zu überschauen.
    • Siehe übrigens ND als die eingeforderte Testsuite zum Modul für die Normdaten-Vorlage (Einbindungsparameter).
    • Deine aktuellen Pläne sind übrigens nicht kompatibel mit der Neukonzeption von Vorlage:Normdaten (besteht nur noch aus einer Zeile).
    • Dein geplantes Modul wäre dann ein Untermodul von Modul:Vorlage:Normdaten und wird von diesem eingebunden, und erfüllt seine Spezialaufgabe in eigener Verantwortung. Rückgabewert wäre entweder nix oder eine Tabelle mit einer oder mehreren Kategorien; mal sehen. Für Experten sichtbare Fehlermeldung vielleicht auch, fügt sich dann mit der sonstigen Fehlermeldung zusammen.
OT: Im vollgeschützten d:Q4026300 hätte ich gern eine deutschsprachige Beschreibung, ungefähr wie „Allgemeines Forum für Fragen zum Wikipedia-Projekt“ oder so.
LG --PerfektesChaos Wikipedia:Lua/Werkstatt#c-PerfektesChaos-2018-10-03T13:31:00.000Z-MisterSynergy-2018-10-02T15:48:00.000Z11Beantworten
Deshalb frage ich ja nach, und baue das da nicht einfach ein. Ich ziehe da mal was (Testartikel und Testitems) im Betawiki hoch, wenn da was aus dem Ruder läuft sag bitte (hier) Bescheid. (Wo ist da das richtige Testwikidata?) Ansonsten:
  • Ich plane nicht, das Modul nur für die Vorlage:Normdaten einzusetzen. Das passt theoretisch mindestens in alle Vorlagen in Kategorie:Vorlage:Datenbanklink mit Wikidata-Eigenschaft, und in einigen ist eine solche Funktionalität mit Vorlagencode auch schon eingebaut (dkategorisiert typischerweise nach Kategorie:Wikipedia:Seite verwendet Daten von Wikidata).
  • Das Problem ist in allen Fällen dasselbe: mit Templatecode allein ist das praktisch nicht richtig hinzubekommen. Das Modul sollte also in jedem Falle neben der von Dir angedeuteten Rückgabe in einer Tabelle (bei Aufruf aus einem anderen Modul) auch direkt wikitext zurückgeben können (bei Aufruf aus einem Template).
  • Gibts eigentlich irgendwelche Namenskonventionen zu beachten, für Modulname, Funktionsnamen, und Parameternamen beim Aufruf?
  • Später erst relevant: bei Wikidata, werden dort Module per vergleichbarer Funktionalität oder „identischem“ Code in einem Objekt gebündelt? Dies hier wird ja sicher kein Klon von Module:WikidataCheck (Q15089555), hat aber praktisch dieselbe Funktionalität.
MisterSynergy (Diskussion) Wikipedia:Lua/Werkstatt#c-MisterSynergy-2018-10-03T17:55:00.000Z-PerfektesChaos-2018-10-03T13:31:00.000Z11Beantworten
  • Leichtes zuerst: https://wikidata.beta.wmflabs.org/wiki/
  • Namenskonventionen
    • Modulname: Würde sich nach der endgültigen Funktion des Moduls richten – da ich diese nicht überschauen kann, kann ich das nicht beantworten.
      • Momentan sähe es aus wie ein Konkurrenzprodukt zum Modul:Wikidata, und weil es dieses nicht verdrängen kann, eine Art Plug-In oder Add-On.
      • Somit wird es bei uns zu einem Unter-Modul von Modul:Wikidata, also mit einem Schrägstrich drangehängt. Vielleicht /check gemäß Q15089555 oder /compare schiene es mir eigentlich zu sein.
      • Wir wollen die Anzahl der Haupt-Listeneinträge in der Liste der Modulfamilien gering halten, also zu einer Thematik nur einen Startpunkt und alle Detailfragen dort intern. Thema ist „Wikidata“, die Einzelheiten dann davon abgeleitet.
      • Weil es aber offenbar sowohl Lua- als auch Vorlagen-Schnittstelle bekommen soll, fällt die Namenskonvention Vorlage: vorangestellt nur für die Unterstützung einer bestimmten Vorlage weg und erhält insgesamt den Status einer Bibliothek.
    • Funktionsnamen:
      • failsafe hat eine Sonderbedeutung, und Lua braucht ein paar Funktionsnamen für sich selbst. Sonst nach Belieben.
      • Das Objekt (table) p trägt bei uns diesen Namen als Exportschnittstelle, weil das am Anfang so war und immer so war.
    • Parameternamen beim Aufruf: Nö, dem Aufrufenden kann es erstmal wurscht sein, wie Lua-Parameter heißen, und benannte Vorlagenparameter halt selbstenträtselnd wie in moderner Vorlagenprogrammierung so üblich. Der frame heißt aber immer frame.
    • Namen von Artikeln (BETA):
      • Hätte ich gern mit ND WD beginnend, und dahinter eine Klarbeschreibung, mit was für einer Art Item verknüpft, also P4711 mit zwei Qualifiern gleichen Rangs oder sowas.
  • Module per vergleichbarer Funktionalität oder „identischem“ Code in einem Objekt gebündelt
    • Das ist sowieso irgendwie Quark.
    • Ein Objekt (Vorlage oder Modul) auf Wikidata muss einer Implementierung zugeordnet sein, die prinzipiell identische Funktionalität hat, bei dem der gleiche Satz an Funktionen mit den gleichen Parameterabfolgen gleicher Bedeutung die gleiche Wirkung hätte.
      • Das kann sich in Nuancen ändern, weil im Lauf der Zeit neue Funktionen und mehr Parameter hinzukommen, obsolete Funktionen wegfallen. Jedoch muss im Kern für eine bestimmte Versionsbezeichnung für alle dem Item zugeordneten lokalen Projekte dieselbe Schnittstellenbeschreibung gelten.
      • Hingegen kann jede lokale Version das in kulturell, sprachlich, projektbezogen spezifischer Weise formatieren, Formate erwarten und für die Ausgabe verwenden, auch Parameternamen bei inhaltlich identischer Bedeutung und identischen Wert-Inhalten übersetzen.
    • Macht es das nicht, muss es ein anderes Objekt und Item sein.
      • Wenn du eine Vorlagenschnittstelle und neue Funktionen hinzuschreibst, ist es kein Klon, bestenfalls ein Fork, sondern ein neues Objekt und Item. Denn alle Q15089555 zugeordneten lokalen Ausprägungen werden niemals deiner Schnittstellenbeschreibung genügen, in keiner Version.
    • Modul:Wikidata (Q12069631) ist völliger Hohn.
      • Tatsächlich sind viele lokalen Implementierungen weit auseindergedriftet.
      • “similar to en:Module:Wikidata” ist ein Feigenblatt für irgendwie so ähnlich, vor fünf Jahren mal von dort kopiert.
      • Viele haben das jedoch lokal aus- und umgebaut. Wir haben beispielsweise eine Extra-Funktion für Belege und ihre Formatierung im Artikel, weil es vor fünf Jahren noch keine ernstzunehmenden Belege in Wikidata gegeben hatte, also auch keine Funktion für solch einen überflüssigen Quatsch.
      • Die erste Implementierung war ziemlich schlecht und dumpf. Sie ging davon aus, dass es immer nur genau eine einzige Zeichenkette geben dürfe, und die immer okay wäre. Nun können aber Eigenschaften und Qualifier mehrfach vorkommen, und können deshalb auch table sein, und manchmal sind die Werte seltsamerweise gar nix. Immer dann stürzte das Modul ab. Also musste es überall lokal irgendwie repariert werden, und wenn man mehr Funktionen brauchte, dann schrieb man die lokal hinzu. Manche Projekte auch nicht.
      • Wikidata hatte es versäumt, sehr frühzeitig eine globale Referenz-Implementierung bereitzustellen, diese zentral für alle zu pflegen und weiterzuentwickeln, und sich ein System für lokal benötigte Plug-Ins oder Add-Ons oder Konfigurationen zu überlegen, so dass sich für ein Update die gesamte Code-Seite per C&P über die bisherige drüberschreiben ließe, ohne irgendwelche Anpassungen nacharbeiten zu müssen. Dann gäbe es jetzt auch eine global verbindliche Schnittstellenbeschreibung (per Version, abwärtskompatibel).
  • WikiMail kann ich erst nächste Woche wieder abrufen, wenn es unbedingt sein muss. Wenn es nicht vertraulich ist, bitte offen schreiben, wenn vertraulich, dann lade mich besser in einen privaten Phabricator-Chatroom ein.

LG --PerfektesChaos Wikipedia:Lua/Werkstatt#c-PerfektesChaos-2018-10-04T11:34:00.000Z-Modul:WikidataCheck11Beantworten

  • Zweck des Moduls ist:
    • Vergleiche einen lokal in Wikipedia (zzt. meist via Template) angegebenen Identifikator mit dem, was eventuell von Wikidata kommt, und kategorisiere das Vergleichsergebnis in eine Wartungskategorie.
    • Das Modul vergleicht zurzeit nur, wenn der Datentyp der angegebenen Eigenschaft "external-id" ist. Es berücksichtigt die verschiedenen Szenarien, wie mit eventuell vorhandenen mehrfachen Werten bei Wikidata umgegangen wird.
    • Prinzipiell sind "string"-Eigenschaften mit demselben Code mit lokalen Werten vergleichbar und "url"-Eigenschaften auch glaub ich auch, möglicherweise werden solche Eigenschaften aber anders genutzt.
    • Alle anderen Datentypen müsste man anders vergleichen. Anderes als externe Identifikatoren habe ich nicht vor einzubauen, möglicherweise lege ich aber die Möglichkeit dazu an.
    • Auch ein Grund fürs Ganze:
      • Anders als in den meisten anderen Wikis ist hier in dewiki nicht absehbar, dass Wikidata-Daten in nennenswertem Umfang direkt genutzt werden (i.e. lokale Werte bleiben absehbar noch lange erhalten).
      • Mit einem Werteabgleich kann man irre viele Fehler finden, erfahrungsgemäß wesentlich mehr in Wikipedia als in Wikidata.
      • Grund: Wartung ist bei Wikidata erheblich effizienter möglich, das gilt insbesondere für Identifikatoren.
  • Es gibt im beta-dewiki nun:
  • Schau bitte außerdem einmal im phabricator nach. —MisterSynergy (Diskussion) Wikipedia:Lua/Werkstatt#c-MisterSynergy-2018-10-05T08:35:00.000Z-PerfektesChaos-2018-10-04T11:34:00.000Z11Beantworten
  • Mach einstweilen nur, wie du denkst; auf BETA ist weitgehende Narrenfreiheit. Für Produktiv-Fragen ist es zu früh, und wären dann auch nur simple Kleinigkeiten.
  • Von einer E-Mail sieht man die ersten paar Dutzend Zeichen sofort per Echo, noch bevor die E-Mail selbst im Postfach ankommt.
  • Die fragliche Seite kann ich auch einmal löschen und mit dem letzten Inhalt nochmal neu anlegen. Wäre diskreter.
LG --PerfektesChaos Wikipedia:Lua/Werkstatt#c-PerfektesChaos-2018-10-05T11:33:00.000Z-PerfektesChaos-2018-10-04T11:34:00.000Z11Beantworten
Ja, Du kannst auch einfach komplett löschen und ich lege das neu an. Quelltext hab ich lokal gesichert. Mit allem anderen mache ich später weiter … —MisterSynergy (Diskussion) Wikipedia:Lua/Werkstatt#c-MisterSynergy-2018-10-05T11:36:00.000Z-PerfektesChaos-2018-10-05T11:33:00.000Z11Beantworten

@PerfektesChaos: für die flexible Rückgabe (String oder Tabelle) bräuchte ich mal ein Beispiel, wo ich abgucken kann wie ich das am besten mache. Hast Du da irgendwas vergleichbares zum Herzeigen? Bräuchte ich da einen Parameter, mit dem ich das bei Aufruf togglen kann, oder kriegt ein Lua-Modul irgendwie selbst raus, ob es aus einem anderen Modul aufgerufen wurde (und eine Tabelle zurückgeben soll), oder aus einem Template (und einen String zurückgeben soll)? —MisterSynergy (Diskussion) Wikipedia:Lua/Werkstatt#c-MisterSynergy-2018-10-10T13:49:00.000Z-Modul:WikidataCheck11Beantworten

Schau mal in Code und zugehörige volle Doku, genauso etwa für DateTime, Multilingual, PageUtil, URIutil, URLutil, WLink, und diverse andere.
Sie haben alle zwei Schnittstellen pro Funktionalität.
Vorlagen können nur Zeichenketten als Parameterwerte vorgeben und nur eine einzige ggf. leere Zeichenkette zurückbekommen. Lua-Modul-Funktionen können alle Datentypen erhalten und zurückgeben.
Beim Modul-Aufruf Lua→Lua sollte ein Modul erstmal sicherheitshalber per Funktion initialisiert werden (auch falls das erst zukünftig erforderlich werden könnte), und stünde dann anschließend als Funktionsbibliothek zur Verfügung.
Enjoy --PerfektesChaos Wikipedia:Lua/Werkstatt#c-PerfektesChaos-2018-10-10T16:10:00.000Z-MisterSynergy-2018-10-10T13:49:00.000Z11Beantworten
So, endlich habe ich Zeit gefunden.
  • Wir haben nun Schnittstellen für Nutzung aus Templates und aus anderen Modulen.
    • Für beides gibt es Tests im betawiki, die wie gewünscht funktionieren. Alle Tests sind hier gelistet, wenngleich noch nicht besonders struktuiert.
    • Die Nutzung des Moduls in einem anderen Modul ist irgendwie fummelig, und mit der vorhandenen Dokumentation (dewiki und mediawiki.org) war das nicht so ganz einfach hinzubekommen. Da fehlt mir dann doch merklich Erfahrung mit der Materie, und ich musste viel ausprobieren. Das Testmodul mit der Einbindung ist hier.
    • „Beim Modul-Aufruf Lua→Lua sollte ein Modul erstmal sicherheitshalber per Funktion initialisiert werden“ – was genau meint das, und wo mache ich das?
  • Verbleibende Probleme:
    • Diesen Test hätte ich gern ohne die Fehlermeldung „Die Kennung … ist dem System unbekannt. Bitte verwende eine gültige Objektkennung.“. Ich kriege aber gerade nicht raus, ob mw.wikibase.getEntity('P99999999999999') (Zeile 23 hier) das da einfach hinschreibt, oder ob ich das geeignet abfangen kann; versuche, das zu tun sind da noch im Modul zu finden. Ich möchte in solch einem Fall einfach das Modul beenden und keine Kategorisierung durchführen, das muss aber auch nicht so auf der Testseite mit Fehlermeldung sichtbar sein.
    • An einigen Stellen könnten Dinge sicher schöner gelöst werden.
    • Doku fehlt noch.
Immerhin läufts weitgehend schon einmal so wie gewünscht :-) —MisterSynergy (Diskussion) Wikipedia:Lua/Werkstatt#c-MisterSynergy-2018-10-15T14:21:00.000Z-PerfektesChaos-2018-10-10T16:10:00.000Z11Beantworten
  1. „Beim Modul-Aufruf Lua→Lua sollte ein Modul erstmal sicherheitshalber per Funktion initialisiert werden“
    • Die inneren Variablen des Moduls sind eine Privat-Angelegenheit, und man gibt externen Anwendungen niemals direkten Zugriff darauf, sondern nur über eine Schnittstelle. Sollte man irgendwann seine inneren Angelegenheiten anders ordnen wollen, kommt man in Teufels Küche, wenn das erstmal der Welt preisgegeben war.
    • In Modul:DateTime, Modul:FileMedia, Modul:Multilingual, Modul:URIutil, Modul:URLutil, Modul:WLink usw. usw. steht die öffentliche Schnittstelle immer in den letzten Zeilen.
    • Könnte ja sein, dass sie vor Auslieferung an die Öffentlichkeit noch mit Modul:DateTime/local, Modul:FileMedia/extensions, Modul:Multilingual/config, Modul:URIutil/config kombiniert werden müssten, um einsatzfähig zu sein. Passiert derzeit nicht, weil die per lazy loading erst dann hinzugezogen werden, wenn sie erstmalig benötigt werden. Oder es müsste vor dem Export sonst eine Selbst-Initialisierung erfolgen. Oder ich benenne meine interne Logik um, erwarte andere Parameter, muss aber der Außenwelt noch alte Schnittstellen simulieren. Wenn ich direkten Zugriff auf Funktionen oder gar Werte erlauben würde, kann ich hinterher niemanden mehr einfangen. Müssen Programmierer ihrem Opi auf dessen Sterbebett versprechen, dass sie niemals direkten externen Zugriff auf innere Komponenten zulassen.
  2. ohne die Fehlermeldung
    • Nicht reingeguckt.
    • Klingt aber nach pcall().
    • Durchsuche mal die Hilfeseiten, die Dokus und Quelltexte zu den eben aufgezählten Modulen oder ein Lua-Manual nach diesem Funktionsnamen zwecks etlicher Anwendungsbeispiele.

Viel Spaß --PerfektesChaos Wikipedia:Lua/Werkstatt#c-PerfektesChaos-2018-10-15T15:20:00.000Z-Modul:WikidataCheck11Beantworten

Okay. Ich glaube, dass ich das Modul dann schon im aktuellen Zustand korrekt initialisiere, und das andere Problem ist auch gelöst (hatte mit der zulässigen Länge von Identifikatoren zu tun: P999999999 ist okay, P9999999999 ist zu lang; ich hatte zu lange Identifikatoren im Testszenario).
Das Modul habe ich nun noch einmal etwas poliert, und auch ein bisschen Doku dazu geschrieben (in meinem BNR im betawiki). Grundsätzlich, denke ich, wäre ich startklar, aber jetzt frage ich mich doch wo das hier hin soll. Wirklich als Untermodul von Modul:Wikidata? Es hat damit eigentlich nicht viel zu tun, außer dass es halt auch Kontakt mit Wikidata macht. Ich habe außerdem keine Ahnung, wo im Falle einer Platzierung als Untermodul die Dokumenation abgelegt werden kann.
Der Plan ist dann, das Modul nach dem Übertrag hierher zunächst in einer kleineren Vorlage einzusetzen (~1000 Einbindungen), dann einer größeren (~100.000 Einbindungen), und erst dann bei den Normdaten-Leuten wieder aufzuschlagen (AFAIR 600.000 Einbundungen). —MisterSynergy (Diskussion) Wikipedia:Lua/Werkstatt#c-MisterSynergy-2018-10-15T22:56:00.000Z-PerfektesChaos-2018-10-15T15:20:00.000Z11Beantworten
  • compareValues sollte einheitlicher Name bei Vorlagen + Lua sein.
  • pcall sollte sowohl für Lua wie für Vorlagen die Kernfunktion abfangen und dem Lua-Anwender keine Fehlerbehandlung aufdrücken, sondern allen externen Benutzern einen direkt nutzbaren fertigen Satz an Resultaten liefern.
  • mw.log() sehen nur Lua-Entwickler in der Seitenvorschau; Autoren und Normalmenschen bräuchten zusätzlich zu Kategorien noch in der Seite sichtbare Hinweise, und in der Normalbetrachtung sowieso jeder.
  • params['namespaces'] schreibt sich kürzer als params.namespaces und cat_local_missing als params.catLocalMissing
  • Namensgebung und Struktur und Strategie:
    • Ich möchte keinen Dschungel aus vielen Futzelmodulchen.
    • Wir haben schon ein konkurrierendes Modul:Wikidata und ein Modul:Wikibase und en:Module:Wikidata mit einer mehr oder weniger weltweit kompatiblen Schnittstelle als Durchschnitt von d:Q12069631.
    • Unser Modul:Wikidata lässt sich mit einer 7-Zeilen-Funktion so erweitern, dass es die Anfrage an deinen Code als Plug-In durchreicht, zumindest was erstmal die Vorlagen-Aufrufe angeht. Lua-Programmierer müssten ggf. direkt arbeiten.
    • Separate Doku auf eigener Doku-Seite bekommen wir schon hin.
    • Ich möchte, dass es eines Tages eine Lua-Bibliothek gibt, die alle neutralen universellen Basisfunktionen einschließlich deiner compareValues enthält. Bzw. eigentlich gibt es diese globale Standardbibliothek bereits, aber erstmal nur mit elementaren Basisfunktionen. Da hat es aber bisher noch keinen fachkundigen Strategen gegeben, der das konzeptionell weiter vorantreibt und auch umsetzt.
    • Deshalb möchte ich alle Anwendungen dauerhaft unter einem einzigen Dach Wikidata vereinen, ohne dass sich Anwender darüber einen Kopf machen müssen, welche Spezial-Abteilung die Programmierung betreut.
LG --PerfektesChaos Wikipedia:Lua/Werkstatt#c-PerfektesChaos-2018-10-16T10:42:00.000Z-MisterSynergy-2018-10-15T22:56:00.000Z11Beantworten
Na endlich, auf den Beitrag habe ich gewartet :-)
  • Die Funktionen benenne ich noch einheitlich um. Da bin ich tatsächlich auf halbem Wege steckengeblieben. Ich habe noch eine Idee für eine weitere Funktion, wo ich gerade noch nicht sicher bin ob ich die jetzt schon einbauen möchte.
  • Das pcall-Ding verstehe ich nicht auf Anhieb, wird aber wohl noch werden. Muss nochmal was zum Abgucken suchen…
  • Ich habe bewusst mw.log() genutzt, weil in den Fällen nichts zu tun ist und der Benutzer (Leser ebenso wie Editor) das nicht sehen oder wissen muss. Es ist aber praktisch in der Lua-Konsole genau ablesen zu können, zu welchem Ergebnis/Ausstiegspunkt das Modul gekommen ist – insbesondere wenn ein leerer String zurückkommt (i.e. alles in Ordnung ist). Man könnte tatsächlich so einiges davon noch irgendwie Wartungskategorisieren, aber das wäre dann teilweise schlecht bis gar nicht abzuarbeiten und ist eigentlich auch nicht Zweck des Moduls. Hier war ich bereits einmal zu forsch beim großzügigen Ausrollen von Wartungskategorien.
  • Schreibweise für Tabellenmember-Zugriff und Variablennamen ist Geschmack, möglicherweise aber nicht ganz einheitlich gemacht. Gibts da Konventionen? Sonst mache ich Modul-intern alles lowerCamelCase, aber die Template-Parameter eher mit Bindestrichen. Mir gefällt außerdem nicht die Mischung aus de+en an verschiedenen Stellen; ich schaue mich noch um, wie ich das am besten internationalisieren kann.
  • Struktur: ist schwierig, weil nicht eindeutig hinzubekommen.
    • Du möchtest anscheinend im Grunde "alle Module die Wikidata anpacken" hierarchisch unter Modul:Wikidata einsortieren. In diesem Falle mag das irgendwie hinzuargumentieren sein, aber das ist nicht immer der Fall.
    • Wenn ich beispielsweise eine "Infobox Sportler" mit einem Modul komplett aus Wikidata beziehen würde, gehörte jenes dann (sinngemäß) nach "Modul:Infobox Sportler/Wikidata" oder nach "Modul:Wikidata/Infobox Sportler"? Oder nach "Modul:Wikidata Infobox/Sportler"? Man kann vermutlich für alle Versionen irgendwie Argumente finden.
    • Gerade im Wikidata-Kontext sind sicher eine Menge Module möglich und irgendwann auch zu erwarten. Für eine globale Bibliothek, so sehr ich die Idee schätze, bräuchte es aber wohl erheblich mehr Koordination, auch Vorgabe und Zwang, sich als Modulentwickler an entsprechende Konventionen zu halten. Der aktuelle Weg der Modulentwicklung hat tatsächlich eine Menge schwächen, aber letztlich repräsentiert er irgendwie auch das Wikiprinzip in Reinform (Resultat: ziemliches Chaos, tut aber irgendwie doch).
    • Kurzum: für eine globale Bibliothek würde ich in diesem Fall wohl die Funktionsnamen noch etwas anders (länger) wählen, weil dann der Zweck besser klar wird und zukünftige Kollisionen unwahrscheinlicher werden. Lange Funktionsnamen sind dann aber bei der Nutzung etwas unhandlich…
Naja, ich muss jetzt eh nochmal dran. Melde mich nochmal, falls nötig oder fertig. —MisterSynergy (Diskussion) Wikipedia:Lua/Werkstatt#c-MisterSynergy-2018-10-16T11:38:00.000Z-PerfektesChaos-2018-10-16T10:42:00.000Z11Beantworten
Wenn auf einer Seite eine Wartungskat erscheint, und nicht zwangsläufig die komplette Seite als solche das auslöst, sondern eine bestimmte Vorlageneinbindung, Infobox oder sowas, dann muss immer eine zuzuordnende, womöglich für die meisten Besucher erstmal ausgeblendete Fehlermeldung mit class="error" oder ggf. class="warning" die auslösende Stelle kennzeichnen, sonst sucht man sich dumm und dämlich, von wo in der Seite das herkommt.
Das, was du machst, ist problemunabhängige Wikidata-Basisfunktion für alle Themengebiete, und alle Basisfunktionen dabei möchte ich zentral unter einem Dach sehen und nicht jede einzelne Funktion in einem völlig unabhängigen Modul.
  • Wenn jemand mit Sport oder Musik rummacht, dann sind seine Tennissocken in diesem Bereich aufgehängt, aber für Sport-unabhängige Funktionsaufrufe greift man auf die zentrale Bibliothek für URL, für Wikidata oder für sonstwas zu.
LG --PerfektesChaos Wikipedia:Lua/Werkstatt#c-PerfektesChaos-2018-10-16T11:51:00.000Z-MisterSynergy-2018-10-16T11:38:00.000Z11Beantworten
Eine Warnung wäre grundsätzlich hinzukriegen, aber meines Erachtens nicht der optimale Weg. Besser beschreibt die Wartungskategorie selbst, wo das Problem herkommt und wie es zu lösen ist. Falls es doch im Artikel sein muss: welcher Klassenselektor blendet Warnungen aus, so dass man die Sichtbarkeit explizit irgendwo anfordern muss (User-CSS, Einstellungen, etc…)? —MisterSynergy (Diskussion) Wikipedia:Lua/Werkstatt#c-MisterSynergy-2018-10-16T12:11:00.000Z-PerfektesChaos-2018-10-16T11:51:00.000Z11Beantworten
Die Wartungskategorie sagt nur, dass es irgendwo in der Seite einmal oder mehrfach eine auslösende Stelle gibt, jedoch nicht, wo genau das verursacht wird; vielleicht ist das ja auch falsch verbaut worden.
Üblich ist immer class="error" für Fehler; style="display:none" macht das erstmal für alle unsichtbar.
  • remindErrorMessages@PerfektesChaos macht alle wieder sichtbar.
  • Man kann verschiedenste Klassen hinzufügen, die bewirken, dass bestimmte Gruppen von Bearbeitern das trotzdem wieder sehen, etwa alle erfahrenen Leute mit Sichterrechten oder aber alle Tennis-Profis, die sich ein Sichtbarmachen dieser Klasse konfiguriert hätten.
LG --PerfektesChaos Wikipedia:Lua/Werkstatt#c-PerfektesChaos-2018-10-16T12:44:00.000Z-MisterSynergy-2018-10-16T12:11:00.000Z11Beantworten

Guten Abend zusammen, also ich finde dieses Modul, welches von MisterSynergy entwickelt wird, extrem wichtig und würde genre etwas Flow hereinbekommen. --2A02:560:4199:C800:206B:E327:D6EF:2B0E Wikipedia:Lua/Werkstatt#c-2A02:560:4199:C800:206B:E327:D6EF:2B0E-2018-12-14T18:48:00.000Z-Modul:WikidataCheck11Beantworten

Problem beim Modul:Zuschauerzahlen mit frame:expandTemplate

Hallo, ich bin derzeit dabei mit Hilfe der Vorlagenwerkstatt die Vorlage:Zuschauerzahlen zum Laufen zu bringen. Aktuell gibt es ein Problem mit dem frame:expandTemplate beim Modul:Zuschauerzahlen: Lua-Fehler: expandTemplate: template "abbr" does not exist Laut englischer Vorlage soll die Anweisung für folgt lauten: :wikitext(frame:expandTemplate{ title='abbr', args={ 'Ep.', 'Episode' } } .. ' ' .. i) Leider wird 'abbr' nicht erkannt. In der rumänischen Wikipedia wird 'Abr' verwendet, das bei uns leider auch nicht funktioniert. Haben wir dafür ein deutsches Äquivalent oder kann jemand den Teil so umschreiben, dass es in der deutschsprachigen Wikipedia funktioniert? Meinentwegen muss auch keine Unterscheidung zwischen Ep. und Episode angezeigt werden. Ep. sollte reichen.

Eine weitere Sache wäre die Umstellung der Dezimaltrennzeichen vom englischen . zum deutschen , (also 2,56 anstatt 2.56) bei der Eingabe bzw. der Anzeige der Zuschauerzahlen.

Kann mir jemand dabei weiterhelfen? Vielen Dank vorab! --Abu-Dun Diskussion Wikipedia:Lua/Werkstatt#c-Abu-Dun-2018-03-21T08:52:00.000Z-Problem beim Modul:Zuschauerzahlen mit frame:expandTemplate11Beantworten

Sollte so passen. -- hgzh Wikipedia:Lua/Werkstatt#c-Hgzh-2018-03-21T10:04:00.000Z-Abu-Dun-2018-03-21T08:52:00.000Z11Beantworten
Super, funktioniert einwandfrei! Vielen Dank hgzh! --Abu-Dun Diskussion Wikipedia:Lua/Werkstatt#c-Abu-Dun-2018-03-21T10:48:00.000Z-Hgzh-2018-03-21T10:04:00.000Z11Beantworten

Overload Template:Bicolor (Commons)

Falls jemand Interesse verspürt, auf Commons gibt es dieses Parser-Monster: c:Template:Bicolor (von der Struktur recht simpel), welches mir ziemlich prädestiniert für eine Lua-Konvertierung erscheint. Zu beachten wäre noch ein Reaktion auf die gleichzeitig gestellte Anfrage auf EnWiki. MfG -- User: Perhelion Wikipedia:Lua/Werkstatt#c-Perhelion-2018-10-05T11:30:00.000Z-Overload Template:Bicolor (Commons)11Beantworten

Strip Marker (ref) matchen

Hallo! Ich würde gern aus der userseitigen Eingabe alle Belege herausschneiden, sprich in etwa <ref.+> matchen. Diese werden aber mit Strip Markern codiert; gibt es eine Methode, ref-Tags direkt zu erwischen? Den Teil davor zu matchen ist die kompliziertere Variante, hab ich bislang nicht fehlerfrei hinbekommen. Gruß–XanonymusX (Diskussion) Wikipedia:Lua/Werkstatt#c-XanonymusX-2018-12-27T22:46:00.000Z-Strip Marker (ref) matchen11Beantworten

Ich habe nicht verstanden, was du machen willst bzw. welches Problem du lösen möchtest.
Nach derzeitiger (traditioneller) Parser-Funktion ist der gesamte Bereich <ref>…</ref> bereits aus dem Wikitext herausgeschnitten, beisete gelegt und durch den strip marker zur Erinnerung an die Stelle im Text ersetzt worden.
  • Erst danach werden Vorlagen ausgewertet, wozu auch Parserfunktionen und Lua gehören.
  • Du hast keinerlei Möglichkeit festzustellen, was im Inneren des Bereichs mal gestanden hatte.
  • Bei der abschließenden Montage werden die strip marker wieder durch die Inhalte ersetzt.
  • Diese ganze Technik ist selbst ein anderthalb Jahrzehnte alter pragmatischer Hack; nicht die reine Lehre des Parsens, aber wirksam, jedoch mit bekannten Nachteilen verbunden.
Du hast folgende Möglichkeiten:
  • Du kannst mit mw.text.unstrip( s ) sämtliche strip marker entfernen. Dann sind sie weg.
  • Du kannst den Text vorher und nachher vergleichen und darauf schließen, dass es bei einem Unterschied unerwünschte Syntax gegeben haben muss. Dies kannst du mit Wartungskat und Fehlermeldung den Bearbeitern ankreiden.
  • Auch bei anderen Extensionen, etwa syntaxhighlight und selbst nowiki bleiben strip marker zurück.
  • Die nowiki könntest du aber vorher wieder in normale Syntax zurückverwandeln, wodurch sie wieder wirksam werden könnten, was nur noch eckige Klammern beträfe. MW-Tags und geschweifte Klammern waren ja bereits abgearbeitet worden. Die eckigen Klammern könnte man dort durch HTML-Entities ersetzen.
  • Du kannst per Hack vorher in die strip marker reingucken und sehen, was für eine Art von Tag es war; das steht in Klartext drin. Da sich die Programmierung des Parsers ändern kann und sich in diesen Jahren ändert, muss das nicht zukunftsfähig sein.
  • Du kannst einen in dem einen Parameterwert unerwünschten ref-Tag dort herausschneiden und an einer anderen Stelle des Gesamtergebnisses und dort besser passend wieder einfügen. Die Syntax lässt sich relativ simpel erraten.
  • Du kannst von den Bearbeitern fordern, dass bestimmte Parameter nur <ref>…</ref> und nichts anderes enthalten dürfen; dann müsste die Zeichenkette nach einem versuchsweisen unstrip leer sein.
VG --PerfektesChaos Wikipedia:Lua/Werkstatt#c-PerfektesChaos-2018-12-28T00:39:00.000Z-XanonymusX-2018-12-27T22:46:00.000Z11Beantworten
Dann habe ich das System schon einigermaßen richtig verstanden. Unstrip kannte ich nicht, das könnte ich vielleicht einsetzen (zurzeit erreiche ich das gleiche im konkreten Fall durch Substituieren von '.+, dann dürfen die User aber keine falschen einfachen Anführungszeichen verwenden). Gehen tut es mir aber vordergründig um deinen vorletzten Punkt, da bastle ich wohl besser nochmal, zurzeit funktioniert es zwar in allen mir bekannten Fällen, aber stabil ist es vermutlich nicht. Danke und Gruß—XanonymusX (Diskussion) Wikipedia:Lua/Werkstatt#c-XanonymusX-2018-12-28T12:12:00.000Z-PerfektesChaos-2018-12-28T00:39:00.000Z11Beantworten

Wert Infobox vs. Wikidata

(stand schon in WP:VWS, hier besser? --W!B: (Diskussion) Wikipedia:Lua/Werkstatt#c-W!B:-2019-04-03T05:55:00.000Z-Wert Infobox vs. Wikidata11)Beantworten

nun stellen wir also IBs sukzessive auf wikidata um. die form, die ich jetzt finde, ist meist (in rudimentärcode) {#IF:IB-WERT|IB-WERT|#invoke:Wikidata}. tatsächlich wäre es doch ab jetzt zielführend, harte eckdaten auf wikidata zu konsolidieren, und diesen dann den vorrang zu geben (ich denke da insbesonders z.b. an geokoordinaten, die in vielfältigster weise herumschwirren, teils in verschiedener genaue, teils DMS vs. DEZ-grad mit rundungsdifferenz, teils amtlich vs. ergoogelt, usf). diese sind auf wikidata bisher oft einfach der früheste import aus einer wikipedia. und sind bei uns inzwischen teils genauer recherchiert. es ist jeweils anzunehmen, dass die "zuständige" sprachschwester den "genauesten" (am besten recherchierten) resp. "verbindlichsten" wert (etwa den amtlichen von der zuständigen behörde) hat – muss aber nicht seiin, allzuviele schwestern schreiben ja einfach aus en ab, oft sind unsere artikel im "ausland" besser recherchiert als die dortigen. gilt aber analog für geburtsdaten, oder aktuelles (wie einwohnerzahl, berufliche stellung, letzte auflage, ..), usw.
und das sollte auch gleich alarm schlagen: es hat keinen sinn, dass wir jetzt zig-10000ende IB durchputzen müssen, um die manuell eingetragen werte zu löschen, damit die "[hoffentlich] besseren" wikidatawerte erscheinen, genausowenig sinn hat es aber, ausrecherchierte werte bei uns durch noch ungeprüftes auf wikidata zu überblenden, sodass die hiesige recherche wieder verdunstet: man erkennt ja dann nicht mehr, von wo die IB den wert genommen hat (und gerade bei verschiedenen koordinatenangaben ist das extrem mühsam nachzuprüfen, welcher der beiden werte jetzt wirklich angezeigt wird). dazu wäre dann ein direkterer wartungslink "hilf mit" sinnvoll (den kann man ja in ein paar jahren, wenn wikidata besser verifiziert ist, wieder wegtun, oder auf basis der dortigen beleglage präzisieren).
daher wäre die langfristig sinnvoller abfrage umgekehrt:

#IFEXIST:WIKIDATA-WERT|WIKIDATA-WERT|IB-WERT und "eintragen"-Link auf Wikidata (wenn es das Objekt gibt), sowie #IF-NOT-EQUAL:WIKIDATA-WERT|IB-WERT|Wartungslink "IB mit Wert, der von Wikidata abweicht" und "konsolidieren"-Link

können wir uns da ein fixes modul basteln, das das standardisiert macht? das würde aber in vorlagensyntax drei #invoke:Wikidata erfordern, sinnvollerweise spielt man die datenbankabfrage zuerst in eine variable, also wohl besser in lua -- wenn nicht überhaupt eine ebene tiefer in wikimedia: sollte auch sehr schnell laufen, da das ab jetzt sehr sehr sehr oft vorkommen wird. noch extremer sicherlich in listen, die schon auf eine zeilen-vorlage aufbauen (cf. #Kategorie:Vorlage:Tabellenzeile oben), da kanns vieldutzendweise vorkommen. wäre auch für autoren sinnvoller, dass das verkürzt einzugeben ist, also etwa: einfach {#GETDATA:WD-Item|WD-Prop|IB-Variable}, das die ganzen standardtests (ist ein item angegeben / vorhanden; ist die property vorhanden; ist der IB-wert angegeben; und passen die zusammen?) macht. --W!B: (Diskussion) Wikipedia:Lua/Werkstatt#c-W!B:-2019-03-14T04:28:00.000Z-Wert Infobox vs. Wikidata11Beantworten

PS: besteht da ein zusammenhang mit #Modul:WikidataCheck – ich hab noch nicht genau verstanden, was das macht --W!B: (Diskussion) Wikipedia:Lua/Werkstatt#c-W!B:-2019-04-03T05:58:00.000Z-W!B:-2019-03-14T04:28:00.000Z11Beantworten
Ja, grob besteht ein Zusammenhang. Ich habe den genannten Abschnitt weiter oben vor einiger Zeit vorgeschlagen und letztes Jahr auch schon Code im Betawiki geschrieben, aber bisher bin ich nicht dazu gekommen, das für die Nutzung fertigzumachen. Es geht dabei darum, lokal in (Datenbanklink-)Vorlagen angegebene Werte und entsprechende Wikidata-Werte zu vergleichen, und das Vergleichsergebnis zu kategorisieren – allerdings (vorerst) nur für Wikidata-Eigenschaften mit dem Datentyp "externer Identifikator". Das ganze soll soweit verkapselt werden, dass ein Vorlagenprogrammierer sich nicht besonders tief mit den Details beschäftigen muss, sondern im Grunde nur den Vergleich im Code triggert und das wars dann.
  • Man könnte das sicherlich später (oder jetzt schon) auch erweitern auf andere Datentypen, aber man muss halt genau überlegen, welche Situationen bei Wikidata zu erwarten sind, und wie man hier ein Vergleichsergebnis kategorisiert; es bringt wenig, wenn nachher viele Wartungskategorien vorhanden sind, die nicht geleert werden können, weil irgendwie doch eine von dem Vergleichscode nicht erkannte, aber gültige Situation vorliegt.
  • Es muss dabei mit (u.a.) folgenden Sondersituationen umgegangen werden: mehrere Werte vorhanden, Nutzung von Rängen, kein Wert oder unbekannter Wert, ggf. besondere Qualifikatoren oder Fundstellen von Bedeutung, usw. … Meines Erachtens muss das grob nach Datentyp einzeln durchgearbeitet werden, deshalb habe ich zunächst nur die relativ einfachen externen Identifikatoren angefasst.
  • Vermutlich könnte man hier ansetzend später auch direkten Wikidata-Datenbezug implementieren, wobei ich das bisher nicht vorgesehen habe. Die Community lehnt das so sehr ab, dass ich zurzeit und wohl auch absehbar keine Energie in diesen Ansatz stecke. Ich denke, zunächst sollten wir großflächig vergleichen und mit der Wartungskategorisierung auch Fehler bereinigen, bevor allgemeiner Datenbezug eine Akzeptanz finden kann.
Viele Grüße, —MisterSynergy (Diskussion) Wikipedia:Lua/Werkstatt#c-MisterSynergy-2019-04-03T07:32:00.000Z-W!B:-2019-04-03T05:58:00.000Z11Beantworten
ja. ich dachte da eben weniger an kategorisieren (was nur mühsam abgearbeitet wird), sondern eine direkte todo-markierung in IBs (und wahrscheinlich systematisierten listen).
das mit "ablehung der community" ist hierbei unproblematisch, erstens werden durch die implementierung in die IB-vorlage ja eh schon vollendete tatsachen geschaffen, und zweitens dreht es sich hier um "technische daten" hauptsächlich physisch-geographischer natur ("liegt in ort/verwaltungseinheit", geokoordinate + höhe, fläche, usf), deren angabe ja unstrittig und deren wert an sich eindeutig ist. und dort freuen sich alle schon darauf, dass man die nicht jedes mal neu heraussuchen muss: vieles wurden in div. listen, in sprachschwestern oder OSM schon einmal ausrecherchiert, da geht unendlich viel manpower verloren. also vielleicht hilft es, sich auf dieses thema zu konzentrieren: hier dürfte der knackpunkt umgekehrt liegen, ablehnung entsteht nur, wenn das modul nicht ordentlich funktioniert: das würde also das henne-ei-problem umdrehen. --W!B: (Diskussion) Wikipedia:Lua/Werkstatt#c-W!B:-2019-04-04T05:53:00.000Z-MisterSynergy-2019-04-03T07:32:00.000Z11Beantworten

Hallo @MisterSynergy: zu kein Wert siehe auch Benutzer_Diskussion:Kolja21#Normdatenpflege (diff).

Unter d:Module:Wikidades gibt es im Gegensatz zu Wikipedia:Lua/Modul/Wikidata die Option shownovalue=false für die claim-Funktion.

Beispiele:

* [[:d:Q12326028]]:LCAuth:{{#statements:P244|from=Q12326028}}:
* [[:d:Q76131]]:LCAuth:{{#statements:P244|from=Q76131}}:

* [[:d:Q12326028]] - LCAuth:{{#invoke:Wikidata|claim|P244|id=Q12326028}}:
* [[:d:Q76131]] - LCAuth:{{#invoke:Wikidata|claim|P244|id=Q76131}}:

Siehe auch Benutzer:M2k~dewiki/FAQ#Wie_finde_ich_Wikidata-Objekte_mit_dem_Wert_"no_Value"_bzw._"kein_Wert". --M2k~dewiki (Diskussion) Wikipedia:Lua/Werkstatt#c-M2k~dewiki-2021-05-13T18:53:00.000Z-Wert Infobox vs. Wikidata11Beantworten

Lua-Editor

In etlichen Fällen ist der Editor ja recht hilfreich, aber sein "Komfort" ist mitunter störend:

  • Autoident hat mitunter recht eigenwillige Vorstellungen von Einrückungen. Zudem weicht es teilweise deutlich von der Darstellung im 'normalen' Editor (Umschaltung via <>) oder vom ZeroBrane-Editor ab.
  • Autodelimiter ist teilweise eher störend, als hilfreich, insbesondere bei Korrekturen eines bestehenden Textes mit Klammern und Anführungszeichen.
  • 'Suchen' (^F) läuft bei aktiviertem "Lua-Editor" auf 2 Ebenen ab. Nicht immer hilfreich.

Gibt es eine Möglichkeit, diese "Komfortfunktionen" anzupassen oder abzuschalten? --Klaus-Peter Wikipedia:Lua/Werkstatt#c-Gadacz-2019-10-24T05:12:00.000Z-Lua-Editor11Beantworten

Iteration

Als Neuling in Lua habe ich vergeblich nach einer Antwort gesucht auf die Frage, die ich nun hier stelle. Allerdings, wie ich es bisher verstanden habe ist das Design von Lua so dass die von mir gesuchte Möglichkeit nicht angeboten wird. Für diesen Fall schiebe ich gleich die Frage nach, ob dazu eine Diskussion gestartet werden kann, um eine Implementierung/Erweiterung zu beantragen.

Das Problem

Wir haben massenhaft Vorlagen die mit einer variablen Anzahl vieler unbenannter Parameter umgehen müssen. Das wird in einer hässlichen Kette von {{#if:{{{x|}}}| ... (1 ≤ x ≤ ∞) abgehandelt.

Beispielsweise gibt es in den Commons die Vorlage Other um eine Datei anzuzeigen; dann kam Other2 dazu für zwei Dateien, und schließlich Other3. Weil auch das nicht genug war habe ich die Vorlage (mit den erwähnten Abfrageketten) von drei auf momentan bis zu 20 Dateien erweitert; wenn nun mal 21 Dateien anzuzeigen wären, scheitert die Vorlage erneut.

Die gewünschte elegante Lösung

sollte Lua bringen − denn unsere Vorlagensprache kann keine Iterationen. In dem obigen Other-Beispiel wird die Parameterliste an Lua übergeben, dort in einer do-Schleife abgearbeitet wobei bei jedem Schleifendurchlauf mit sowas wie expandTemplate{ title = eine kleine Untervorlage aufgerufen wird, die genau einen Parameter bekommt und ihn verarbeitet; in anderen Fällen wird eben ein Parameterpaar, oder was auch immer, übergeben.

Lua scheint konzipiert dass nur einmal als Abschluss diese Return-Funktion erfolgt. Nach meinem Verständnis sollte es aber auch möglich sein, "zwischendurch" solche iterativen Vorlagenaufrufe irgendwie abzusetzen − ohne structural violation! Das so umständliche Abhandeln von variabel langen Parameterlisten, wie es in vielen Vorlagen notwendig ist, könnte damit drastisch vereinfacht werden. -- sarang사랑 Wikipedia:Lua/Werkstatt#c-Sarang-2019-12-23T09:46:00.000Z-Iteration11Beantworten

Ich habe nicht so restlos verstanden, worauf du hinauswillst, aber vollziehe doch einmal nach, wie Vorlage:min mit ihren Eingabeparametern umgeht.
(P.S.: Seit heute nacht akzeptiert Vorlage:Anker ebenfalls unendlich viele Parameter, aber das weiß noch niemand)
LG --PerfektesChaos Wikipedia:Lua/Werkstatt#c-PerfektesChaos-2019-12-23T10:00:00.000Z-Sarang-2019-12-23T09:46:00.000Z11Beantworten
@사랑 Irgendwie wird aus historischen Gründen immer noch vorzugsweise auf der Ebene der Vorlagenprogrammierung mit dem {{{Klammerzirkus|}}} gedacht. Der direkte Aufruf von LUA ist nicht erwünscht. Dennoch kann man mit LUA eine Menge machen, wenngleich mir auch php oder c++ lieber sind. In der „Vorlage:Meine“ reicht ein Aufruf {{#invoke:Modulname|startfunktion}}. Alle Parameter aus {{Meine|aaa|bbbb|c=dddd|e=ffff}} werdenn quasi ‚durchgeschoben‘ und können einigermaßen komfortabel in LUA abgearbeitet werden. Die 'startfunktion' im Modul ‚Modulname‘ sammelt alles zusammen. --Klaus-Peter Wikipedia:Lua/Werkstatt#c-Gadacz-2019-12-23T10:23:00.000Z-PerfektesChaos-2019-12-23T10:00:00.000Z11Beantworten

Also nochmal, hoffentlich deutlicher: Wenn eine Vorlage mit einer (grossen) variablen Anzahl von (positional) Parametern versorgt wird, muss jeder Parameter einzeln abgefragt werden, ob er mit Wert belegt ist um in diesem Fall das Entsprechende zu tun. Das gibt eine lange Kette von #if:-Abfragen; und wenn 140mal diese Prüfung erfolgt wird und irgendwann 141 Parameter übergeben werden versagt die Vorlage. Weil nur lineare Programmierung möglich ist und Iterationen nicht unterstützt werden. Lua kann das, mit ganz einfachen "do"-Schleifen, kann aber meines Wissens nicht iterativ eine Vorlage aufrufen - nur einmal am Ende.
Ich zeige hier als code-snipped mit der hypothetischen Funktion "transclude" was mir vorschwebt:

function p.iteration (frame) 
	local args = mw.getCurrentFrame(): getParent().args;
	for name, value in pairs( args ) do 
		transclude mw.getCurrentFrame(): expandTemplate { title = 'Untervorlage', args = { name, value } }
	end
	return ....
end

Oder, mit noch anderen Worten, bei einem #invoke:-Aufruf soll beliebig oft ein Aufruf an eine andere Vorlage abgesetzt werden können. Ich kann zwar innerhalb einer Vorlage an beliebigen Stellen und beliebig oft andere Vorlagen oder Moduln aufrufen, aber innerhalb eines Moduls zwar unbegrenzt andere Moduln, aber nur einmal am Ende eine Vorlage verwenden. Das ist eine starke Einschränkung, für die ich keine Notwendigkeit erkenne, und die elegante Lösungen solcher Probleme verunmöglicht. -- sarang사랑 Wikipedia:Lua/Werkstatt#c-Sarang-2019-12-23T12:02:00.000Z-Iteration11Beantworten

Du kannst mit nur einem #invoke: praktisch unbegrenzt viele Parameter übergeben (bis das Zeitlimit oder sowas zuschlägt).
Danach kann das Innere der Programmierung dieses Lua-Moduls mit diesen unbegrenzt vielen Parametern anstellen was immer es will; das liegt dann in der Verantwortung des Modul-Programmierers. Weil es zwei Abschnitte drunter erwähnt wird: Bei den Beispielen in Vorlage:itS etwa werden für eine Handvoll, aber im Prinzip möglichen 100 oder 200 Sprachen die jeweiligen Sprachnamenvorlagen zu luna eingebunden.
Weil es hier irgendwo thematisiert wurde: Es gibt nur ein Dutzend hiesiger Autoren, die gefestigt Lua können, und nur ein oder mal zwei, die die Programmierung fremder Leute reparieren würden; der Rest ist heilfroh, wenn die eigenen Module noch funktionieren. Sobald du also von klassischer Vorlagenprogrammierung (was vielleicht 1000 Autoren so ein bisserl können) zu Lua wechselst, musst du damit rechnen, dass es niemanden mehr gibt, der das hinterher noch warten und pflegen könnte, insbesondere wenn es mangelhaft dokumentiert ist, und man es deshalb aus den Artikeln und sonstigen Seiten rausschneiden muss.
Das von dir soeben dargestellte snippet ist im Übrigen das, was ich in meinem ersten Satz beschrieben hatte. Warum dazu irgendwelche doll vielen {{#if: benötigt würden, verstehe ich nicht; ich erkenne null. Wikisyntax hat aber hinsichtlich des Parsens von Wikitext notwendige Gesetzmäßigkeiten.
VG --PerfektesChaos Wikipedia:Lua/Werkstatt#c-PerfektesChaos-2019-12-23T12:19:00.000Z-Sarang-2019-12-23T12:02:00.000Z11Beantworten

@PerfektesChaos: Das Modul zu dieser Vorlage verursacht zurzeit Skriptfehler. So z. B. in:

u.s.w., also nahezu alle Einträge in Kategorie:Wikipedia:Seite mit Skriptfehlern aus dem NR 1. Wäre echt super, wenn du das beheben würdest. Gruß von ÅñŧóñŜûŝî (Ð) Wikipedia:Lua/Werkstatt#c-Antonsusi-2019-12-23T11:37:00.000Z-Vorlage:Defekter Weblink11Beantworten

Das bin nicht ich, bzw. Modul Defekter Weblink, sondern das ist die Programmierung der Infobox bzw. des dortdrin verwendeten Wikidata-Moduls.
Die Seite wird zur Analyse der URL auf der Diskussionsseite eingebunden, diese hat aber logischerweise keinen eigenen Wikidata-Item, und weil die Programmierung unseres Wikidata-Moduls sowas nicht abfängt, kommt es zu einem durch mich von außen nicht abzufangendem Absturz.
Die MediaWiki-Wikidata-Programmierung ist so gestaltet, dass es zu einem schweren Crash kommt, sobald man mit einer ungültigen Entity-ID angewackelt kommt, und diesen kann ich auch nicht von außen wieder einfangen.
Musst du dich an Infobox und unser hiesiges Wikidata-Modul wenden, falls es dich doll stört; ich habe das inzwischen aufgegeben.
Ach, und nebenbei: Spezial:Diff/195159102 sehe ich als eher unfreundlichen weil sicher nicht mit dem Ersteller abgesprochenen wie auch sinnlosen Akt an. Bald 6000 unserer allgemein durch Autoren zu verwendenden Vorlagen verwenden den Einleitungsabschnitt von TemplateData als den einen und einheitlichen Einleitungsabschnitt zur Funktionsbeschreibung der gesamten Vorlage. Du irritierst die Anwender mehr, wenn du das grundlos irgendwo nach hinten verknackst, wirst es auch nicht bei Tausenden anderer Vorlagen durch zwei verschiedene Funktionsbeschreibungen mit und ohne TemplateData ummodeln, und hilfst niemandem.
VG --PerfektesChaos Wikipedia:Lua/Werkstatt#c-PerfektesChaos-2019-12-23T11:49:00.000Z-Antonsusi-2019-12-23T11:37:00.000Z11Beantworten
Ok, ich habe die Parameter jetzt hinter der einleitenden Beschreibung heraufplatziert, denn ich finde, dass man zuerst mal erfahren sollte, was die Vorlage überhaupt macht. ÅñŧóñŜûŝî (Ð) Wikipedia:Lua/Werkstatt#c-Antonsusi-2019-12-23T12:29:00.000Z-PerfektesChaos-2019-12-23T11:49:00.000Z11Beantworten
Was die „Vorlage überhaupt macht“, erklärt für die Gesamt-Seiten-Angucker wie für die VisualEdior-Anwender der gemeinschaftliche Einleitungsabschnitt.
Nur dass in diesem Fall der Einleitungsabschnitt innerhalb des blauen TemplateData-Rahmens erscheint.
Wenn du findest, dass an dieser Stelle die Funktionsbeschreibung ausführlicher oder verständlicher sein solle, dann mach sie halt ausführlicher oder verständlicher – dann haben auch VisualEdior-Benutzer etwas davon und haben denselben Informationsstand. Was das Formular bei VisualEdior vielleicht sprengen würde, kannst du auf der Seitenansicht mittels <noexport> noch ausweiten.
VG --PerfektesChaos Wikipedia:Lua/Werkstatt#c-PerfektesChaos-2019-12-23T12:36:00.000Z-Antonsusi-2019-12-23T12:29:00.000Z11Beantworten

Lösung Skriptfehler Vorlage:lang

Gibt es irgendwo schon einen Ansatz, wie Jinmeiyō-Kanji repariert werden kann? Man könnte entweder die Vorlagenverwendung großteils rausschmeißen, die Seite zersplittern (eher schwierig) oder die Lua-Programmierung ändern (hab mir die Machbarkeit aber noch nicht angeschaut). Welche Variante wäre zu bevorzugen? So kann die Tabelle jedenfalls nicht bleiben, da sind mehr Fehlermeldungen als Inhalt. Gruß—XanonymusX (Diskussion) Wikipedia:Lua/Werkstatt#c-XanonymusX-2019-12-23T12:05:00.000Z-Lösung Skriptfehler Vorlage:lang11Beantworten

Ähm, wo denn genau?
Ich sehe weder Fehlermeldung noch Wartungskat.
LG --PerfektesChaos Wikipedia:Lua/Werkstatt#c-PerfektesChaos-2019-12-23T12:07:00.000Z-XanonymusX-2019-12-23T12:05:00.000Z11Beantworten
Also, bei mir ist die Seite in der Skriptfehler-Kategorie und ungefähr ab der Hälfte mit roten Timeout-Meldungen zugepflastert. Gruß—XanonymusX (Diskussion) Wikipedia:Lua/Werkstatt#c-XanonymusX-2019-12-23T13:02:00.000Z-PerfektesChaos-2019-12-23T12:07:00.000Z11Beantworten
Mach mal einen Purge. --Liebe Grüße, Lómelinde Diskussion Wikipedia:Lua/Werkstatt#c-Lómelinde-2019-12-23T13:05:00.000Z-XanonymusX-2019-12-23T13:02:00.000Z11Beantworten
Hm, interessant; jetzt hat nur noch ein kleiner Teil der Tabelle Fehlermeldungen, aber ganz weg sind sie immer noch nicht. Sind aber auch über 4000 Vorlageneinbindungen … —XanonymusX (Diskussion) Wikipedia:Lua/Werkstatt#c-XanonymusX-2019-12-23T13:10:00.000Z-Lómelinde-2019-12-23T13:05:00.000Z11Beantworten
Und nach nochmaligem Purgen ist die Seite wieder komplett zerschossen …—XanonymusX (Diskussion) Wikipedia:Lua/Werkstatt#c-XanonymusX-2019-12-23T13:15:00.000Z-XanonymusX-2019-12-23T13:10:00.000Z11Beantworten
Ich meine ich hatte sie gestern auch rot habe dann einmal die Seite gepurged und es war weg. Das ist wirklich mysteriös bis eben war es weg nun habe ich die Fehler wieder dick und rot. Also eine wirkliche Lösung weiß ich aber auch nicht. --Liebe Grüße, Lómelinde Diskussion Wikipedia:Lua/Werkstatt#c-Lómelinde-2019-12-23T13:18:00.000Z-XanonymusX-2019-12-23T13:10:00.000Z11Beantworten
Bei mir war sie nach deinem ersten Purge rot jetzt ist sie wieder ok. --Liebe Grüße, Lómelinde Diskussion Wikipedia:Lua/Werkstatt#c-Lómelinde-2019-12-23T13:19:00.000Z-XanonymusX-2019-12-23T13:10:00.000Z11Beantworten
Dann wird es an der Serverlast liegen; wenn der sehr beschäftigt ist, arbeitet er nur langsam ab und erreicht das Limit auf Hälfte der Seite. Ist er unausgelastet, wutscht er durch und es klappt.
Vorlagen aus dem Wikitext rausnehmen ist grundsätzlich keine gute Idee. Das sind enzyklopädische und die für Leser adäquate Darstellung sichernde Maßnahmen.
Übliches Verfahren ist es in solchen Fällen, für das Gesamtverständnis weniger wichtige umfangreiche Tabellen auszulagern in einen separaten Artikel (ISO-3166-1-Kodierliste). Das freut dann auch normale Leser, die für einen Einstieg auf ihrem Smartphone erklärt bekommen möchten, worum es denn überhaupt geht, und noch nicht jedes Schriftzeichen einzeln erklärt bekommen müssen.
LG --PerfektesChaos Wikipedia:Lua/Werkstatt#c-PerfektesChaos-2019-12-23T13:23:00.000Z-Lómelinde-2019-12-23T13:19:00.000Z11Beantworten
Tja, ein Aufteilen ist hier ziemlich schwierig, der Artikel besteht ja nur aus der Liste, und ebendiese kratzt dann so hart am oberen Limit. Thematisch ist die Liste auch einheitlich. Weiß nicht, mit der Sinnhaftigkeit der lang-Vorlagen kenne ich mich nicht aus; wenn man wenigstens eine der Spalten in der Tabelle ohne Vorlage darstellen könnte, wäre vermutlich schon viel gewonnen.
Vielleicht gibt es doch eine technische Lösung? Zu 16 % scheint die Lua time usage an dataWrapper <mw.lua:661> zu liegen, aber die 30 % others könnten der Knackpunkt sein, kann ich mir grad nicht erklären. Aber da jetzt tiefer einzusteigen ist bei mir auch nicht drin. Gruß–XanonymusX (Diskussion) Wikipedia:Lua/Werkstatt#c-XanonymusX-2019-12-23T22:30:00.000Z-PerfektesChaos-2019-12-23T13:23:00.000Z11Beantworten

Ogden (Utah)

Taucht in Kategorie:Wikipedia:Seite mit Skriptfehlern auf, und zwar gleichzeitig mit Kategorie:Wikipedia:Maximale Aufrufe von aufwändigen Parserfunktionen überschritten. Kommentiert man Bereiche aus, so verschwinden beide Kategorien. ÅñŧóñŜûŝî (Ð) Wikipedia:Lua/Werkstatt#c-Antonsusi-2019-12-23T15:23:00.000Z-Ogden (Utah)11Beantworten

Hatte ich mich heute auch schon dran versucht, aber ich konnte die auslösende Vorlage noch nicht lokalisieren.—XanonymusX (Diskussion) Wikipedia:Lua/Werkstatt#c-XanonymusX-2019-12-23T15:52:00.000Z-Antonsusi-2019-12-23T15:23:00.000Z11Beantworten
Es sind zu viele "Expensive functions" wie Abfrage der Existenz von Seiten und Dateien mit #ifexist, Zählungen wie PAGESINCATEGORY und PAGESIZE, sowie - hier vermutlich der entscheidende Punkt - Zugriffe auf Wikidata-Objekte. Dieser Artikel hat massenweise Refs, etliche davon unnötig, und es ist wohl wieder einmal der "Wikidatawahn", welcher hier Ärger macht. Einfach mal Angaben, welche sich nicht mehr ändern, direkt eintragen, statt ein unsicheres Query abzusetzen. ÅñŧóñŜûŝî (Ð) Wikipedia:Lua/Werkstatt#c-Antonsusi-2019-12-23T16:48:00.000Z-XanonymusX-2019-12-23T15:52:00.000Z11Beantworten
Schon die Lua-Zeit ist mit 4.727/10.000 s deutlich erhöht (hauptsächlich wegen getEntity), die Expansionstiefe kratzt mit 36/40 am Limit und die teuren Parserfunktionen sind mit 504/500 schon drüber. Hm, das sollte sich aber doch beheben lassen …–XanonymusX (Diskussion) Wikipedia:Lua/Werkstatt#c-XanonymusX-2019-12-23T22:20:00.000Z-Antonsusi-2019-12-23T16:48:00.000Z11Beantworten
Ah, {{IMDb}} sollte Schuld sein, 18 Einbindungen davon sind 17 zu viel.–XanonymusX (Diskussion) Wikipedia:Lua/Werkstatt#c-XanonymusX-2019-12-23T22:31:00.000Z-Antonsusi-2019-12-23T16:48:00.000Z11Beantworten
Sind die denn alle gleich? ÅñŧóñŜûŝî (Ð) Wikipedia:Lua/Werkstatt#c-Antonsusi-2019-12-23T22:46:00.000Z-XanonymusX-2019-12-23T22:31:00.000Z11Beantworten
So, ist behoben! Wie gleich? Das „Problem“ der IMDb-Vorlage ist, dass sie ausschließlich für das einmalige Verlinken des Artikelgegenstands konzipiert ist; wenn sie zum einfachen Weblink-Generieren in Einzelnachweisen verwendet wird, sind schnell Grenzwerte überschritten. Hab sie daher jetzt alle in normale Links umgewandelt. Gruß–XanonymusX (Diskussion) Wikipedia:Lua/Werkstatt#c-XanonymusX-2019-12-23T22:50:00.000Z-Antonsusi-2019-12-23T22:46:00.000Z11Beantworten
⇐Ein Aufruf dieser Vorlage kann bis zu 50 (!) Expensive functions generieren! Entweder sie wird verbessert oder ie gehört gelöscht! ÅñŧóñŜûŝî (Ð) Wikipedia:Lua/Werkstatt#c-Antonsusi-2019-12-24T10:45:00.000Z-Antonsusi-2019-12-23T15:23:00.000Z11Beantworten
Die Links verlinken jeweils unterschiedliche Daten in der IMBd. Was ist denn der Sinn einer Vorlage, wenn Sie dann nur einmal eingebunden werden darf? Was ist denn der Sinn der ganzen Aufrufe? Grüße --Thomas Wozniak (Diskussion) Wikipedia:Lua/Werkstatt#c-Thomas Wozniak-2019-12-24T10:49:00.000Z-Antonsusi-2019-12-24T10:45:00.000Z11Beantworten
Der Sinn der Vorlage besteht vermutlich darin, dass sie durch massenweise Zweckentfremdung die Artikel mit Expensive functions flutet und die Server grenzbelastet,,, XanonymusX hat doch geschrieben, wozu sie da ist. Sie gehört nur einmal in einen Artikel, um den Artikelgegenstand (!) zu bequellen und alles andere gehört als normaler Link ausgeführt. Daraus folgt, dass sie aus allen Artikeln, welche keinen Film, Schauspieler o. Ä. beschreiben, zu entfernen bzw. zu ersetzen ist. ÅñŧóñŜûŝî (Ð) Wikipedia:Lua/Werkstatt#c-Antonsusi-2019-12-24T11:00:00.000Z-Antonsusi-2019-12-24T10:45:00.000Z11Beantworten
Sie war ein Jahrzehnt lang ein ganz normaler Datenbanklink, bis die Programmierlust überschäumte und alle diese Abfragen eingeführt wurden.
Wenn sie mit dem Parameter 1=tt/nm versorgt wird, dann hat sie gefälligst eine jetzt momentan sinnvolle URL zu generieren, den Seitennamen oder 2= zur Linkbeschriftung zu verwenden und ohne Trallala daraus ein ganz friedliches Weblink zu generieren, so wie das Tausende anderer Datenbanklinks auch machen. Bei einer Achtelmillion Artikel mit Einbindung ist das schon sinnvoll.
Vorlage Diskussion:IMDb #Hinweis, Vorlage verursacht zu viele aufwändige Parserfunktionen
VG --PerfektesChaos Wikipedia:Lua/Werkstatt#c-PerfektesChaos-2019-12-24T11:23:00.000Z-Antonsusi-2019-12-24T11:00:00.000Z11Beantworten
Da stimme ich voll zu; ich hatte das auch schon einmal in der Vergangenheit angeregt, aber es kam nur immer der Hinweis auf den eigentlichen Zweck der Vorlage. Müsste halt jemand™ mal in die Hand nehmen … Gruß--XanonymusX (Diskussion) Wikipedia:Lua/Werkstatt#c-XanonymusX-2019-12-24T12:17:00.000Z-PerfektesChaos-2019-12-24T11:23:00.000Z11Beantworten
Dann sollten wir das schnellsmöglich wieder einstampfen und die ganzen Wikidata-Modulaufrufe und #property-Abfragen in ein auf diese Vorlage zugeschnittenes Modul:Vorlage:IMDb auslagern. In dieser Vorlage wird zehnmal "#property:P345" aufgerufen und zweimal "#property:P527". In einem Modul kann man diese Werte Variablen zuweisen und muss daher jede Abfrage nur einmal vornehmen. Darüber hinaus können die Module WLink und Wikidata mit pcall / require genutzt werden.
@PerfektesChaos: Würde das deiner Meinung nach Abhilfe schaffen? Wenn ja, so wäre es ein gutes Werk von dir, wenn du dich der Sache annehmen würdest. ÅñŧóñŜûŝî (Ð) Wikipedia:Lua/Werkstatt#c-Antonsusi-2019-12-25T22:06:00.000Z-Antonsusi-2019-12-24T10:45:00.000Z11Beantworten

Die Vorlage sollte wie folgt vorgehen:

  • Wenn 1= explizit gegeben ist, sollte eher kein Wikidata oder Modul verwendet werden.
    • Maximal könnte abgefragt werden, ob mit diesem tt/nm-Code auch ein Item definiert wäre; falls nicht, könnte das auf eine Wartungskat gesetzt werden von Items, die neu auf Wikidata angelegt werden sollen oder womöglich falsche Codes verwenden. Dann würde Wikidata so allmählich alle für ein Wiki relevanten Einträge der IMDb lernen. Müssten aber auch RFF-Leute kontinuierlich abarbeiten.
  • Wenn 1= nicht gegeben ist, dann mag passieren was will.
  • Für den Standardfall einer Verlinkung mit vorgegebenem Code sollte einfach zu pflegen ein Weblink generiert werden und gut ist.
  • Wenn unterstützende Lua-Programmierungen vorgenommen würden, dann wäre Modul:Vorlage:IMDb der vorgesehen Name, ja.

Generell sind wir zurückhaltend mit dem Transfer ganzer Vorlagenprogrammierungen in Module. Vorlagenprogrammierungen könnten rund 1000 Autoren zumindest in ihrem Themengebiet pflegen, und die VWS einen Sockel an projektweit erforderlichen Basisfunktionen. Mit Umstellung auf Lua, womöglich anfängerhaft, nicht robust, ineffizient geschrieben, wie das numal bei einem Anfänger in Lua@Wiki unvermeidlich ist, können nur noch sehr sehr wenige Leute das hinterher pflegen, und je verbastelter die Ursprungsversion geschrieben wurde und je mangelhafter oder komplett fehlend die Dokumentation und Methodenbeschreibung dann ist, desto schwieriger wird es, das dann noch an spätere Entwicklungen anzupassen. Im Zweifelsfall wird eine nicht zu pflegende Funktionalität später kurzerhand wieder eingestellt, aus die Maus.

  • Gute Werke von meiner Seite sind für dieses Jahr genug getan, und ich habe noch Hunderte von Baustellen auf der ToDo-Liste.

VG --PerfektesChaos Wikipedia:Lua/Werkstatt#c-PerfektesChaos-2019-12-26T11:45:00.000Z-Ogden (Utah)11Beantworten

Undokumentiertes Vorlagenlimit

Hallo! Nachdem ich weder auf Hilfe:Vorlagenbeschränkungen, noch auf dem englischen Pendant fündig geworden bin, ärgere ich mich gerade über die zwei offenbar völlig undokumentierten Vorlagenlimits (aus dem PP-Report) Unstrip recursion depth [20] und Unstrip post‐expand size [5000000 Bytes]. Hintergrund: Max Martin/Auszeichnungen für Musikverkäufe löst offenbar mit einer unstrip post-expand size von 5956095/5000000 die (rote) Kategorie:Seiten, auf denen die Unstrip-Größengrenze überschritten ist aus. Doppeltes Problem:

  1. Die Kategorie müsste blau sein, Kategorie:Wikipedia:Seiten, auf denen die Unstrip-Größengrenze überschritten ist lauten (Translatewiki) und irgendwo korrekt verlinkt und kategorisiert sein.
  2. Ich habe nicht die geringste Ahnung (ein bisschen Phabricator-Surfen war auch nicht erhellend), wo ich ansetzen soll, um den zugrundeliegenden Fehler im Modul:Musikcharts zu beheben (die Vorlage:AfM-Tabelle ist nun echt nicht so komplex).

Wer weiß Rat? Gruß--XanonymusX (Diskussion) Wikipedia:Lua/Werkstatt#c-XanonymusX-2020-01-04T23:41:00.000Z-Undokumentiertes Vorlagenlimit11Beantworten

Eine Stringsuche auf Mediawiki, Scribunto per eigener und Google-Suche (auch im Web) ergab keine weiterführende Treffer. Muss was ganz geheimes sein ein SmileysymbolVorlage:Smiley/Wartung/:(  ÅñŧóñŜûŝî (Ð) Wikipedia:Lua/Werkstatt#c-Antonsusi-2020-01-05T17:53:00.000Z-XanonymusX-2020-01-04T23:41:00.000Z11Beantworten
Einzig in phab:T189416 kommt das Limit vor. Die „Erklärungen“ lauten:
  1. „unstrip-size-warning is shown when the maximum expansion size for nested parser extension tags is exceeded. "Unstrip" refers to the internal function of the parser, called 'unstrip', which recursively puts the output of parser functions in the place of the parser function call.“ (zit. AKlapper)
  2. „There is a limit on the amount of content that can be generated by transclusions (the "unstrip post‐expand size"), and this limit is 5 000 000 bytes.“ (zit. Matmarex)
Ich kann damit leider nichts anfangen. Wo soll der Unterschied zur Post‐expand include size sein? --XanonymusX (Diskussion) Wikipedia:Lua/Werkstatt#c-XanonymusX-2020-01-05T18:48:00.000Z-Antonsusi-2020-01-05T17:53:00.000Z11Beantworten
@AKlapper (WMF): Kannst du das vielleicht erklären? Wäre sehr hilfreich. Gruß--XanonymusX (Diskussion) Wikipedia:Lua/Werkstatt#c-XanonymusX-2020-01-05T18:54:00.000Z-Antonsusi-2020-01-05T17:53:00.000Z11Beantworten
Die Beschränkung ist auch recht neu und wurde vermutlich erst mit Parsoid/PHP im Dezember 2019 produktiv eingeführt.
  • Glückwunsch, du hast den ersten Treffer.
Da das Byte-Limit von 5 MB recht ehrfurchtgebietend ist, gehe ich von einem endlosen Selbstaufruf aus.
Die von dir genannte Vokabel recursion ist im konkreten Fall bei 0/20 nicht betroffen, ginge jedoch in die gleiche Richtung.
Die Vokabel unstrip signalisiert, dass ein MediaWiki-Tag expandiert wurde. So lautet der Wiki-Programmierer-Jargon seit anderthalb Jahrzehnten.
  • Das mag beispielsweise <ref> sein.
  • Das könnte direkt als Wikisyntax, oder auch programmatisch als {{#tag:ref}} bzw. in Lua frame:extensionTag() verwendet worden sein.
  • Bei der Auflösung dieses Tag wurde ein erneutes aufzulösendes Tag vorgefunden; weil endlos mutmaßlich wieder derselbe Code, der erneut ein aufzulösendes Tag produziert, und wieder, und wieder.
  • Ein frame:preprocess() eines Wikitextes, der MediaWiki-Tags enthielte, hätte die analoge Wirkung.
Die einzigen MediaWiki-Tags, in denen Autoren normalerweise Inhalte darstellen würden, wären <ref> + <poem> + <pre> – würde in einem <ref> ein Gedicht als <poem> vorkommen und in diesem Schreibmaschinenschrift per <pre>, dann wäre die Verschachtelungstiefe 3. Ein <ref> darf aber kein weiteres <ref> enthalten, ein <pre> ist ein nowiki-Bereich und kann überhaupt keine expandierbare Wikisyntax mehr enthalten. Es muss schon mit {{#tag:}} gearbeitet werden, um mehr als 3 Ebenen zu erreichen.
Mit 5 MB liegt das Limit großzügig über der Beschränkung des Limits für die Nutzgröße des HTML-Inhaltsbereichs von 2 MB und kann nicht zu einem anzeigbaren HTML-Dokument führen, sondern hätte sich wohl beliebig weiter vergrößert, wenn es nicht abgebrochen worden wäre, wobei dafür bereits 6 MB generiert wurden.
Weil der größte Verbraucher, der in eine solche Richtung weist, preprocess 340 ms 20.0% ist, würde ich empfehlen, die Suche bei einem frame:preprocess() zu beginnen, wobei dies einen Wikitext mit allen implizit darin enthaltenen MediaWiki-Tags verarbeitet.
Die Verwendung von frame:preprocess() ist bekanntermaßen recht ressourcenintensiv und sollte auf absolut nicht anders zu lösende und möglichst stark auf den unvermeidlichen Kern reduzierte Fragmente von Wikitext beschränkt bleiben.
VG --PerfektesChaos Wikipedia:Lua/Werkstatt#c-PerfektesChaos-2020-01-05T19:32:00.000Z-XanonymusX-2020-01-04T23:41:00.000Z11Beantworten
Puh, es muss in der Tat etwas mit dem Zusammentreffen von preprocess und dem TemplateStyles-Tag in Modul:Musikcharts/certifications zu tun haben (zurzeit in jeder Vorlage:AfM, die über 900 Mal auf der Seite vorkommt)! Damit kann ich arbeiten, danke! Gruß--XanonymusX (Diskussion) Wikipedia:Lua/Werkstatt#c-XanonymusX-2020-01-05T19:49:00.000Z-PerfektesChaos-2020-01-05T19:32:00.000Z11Beantworten
@XanonymusX: Ich koennte es nicht erklaeren und haette jetzt wahrscheinlich an https://discourse-mediawiki.wmflabs.org/ oder so verwiesen. Herzlichen Dank an PerfektesChaos fuers Verstehen und Beantworten. --AKlapper (WMF) (Diskussion) Wikipedia:Lua/Werkstatt#c-AKlapper (WMF)-2020-01-05T19:59:00.000Z-XanonymusX-2020-01-05T19:49:00.000Z11Beantworten
@Antonsusi: Huh? Nix Geheimes: https://codesearch.wmflabs.org/core/?q=%22Unstrip%20post-expand%20size%22&i=nope&files=&repos= und https://codesearch.wmflabs.org/core/?q=%22Unstrip%20recursion%20depth%22&i=nope&files=&repos= --AKlapper (WMF) (Diskussion) Wikipedia:Lua/Werkstatt#c-AKlapper (WMF)-2020-01-05T19:59:00.000Z-PerfektesChaos-2020-01-05T19:32:00.000Z11Beantworten
Aha. Jetzt brauchen wir noch jemand, der dieses neue Fehler-Feature, an geeigneter Stelle in den Hilfe-Namensraum integriert. Ich würde vorschlagen, alle Begrenzungen, egal ob Extension, Vorlage, Seite, Lua etc. auf einer zentralen Seite zu sammeln. Zurzeit sind sie auf mehrere Seiten verteilt. Außerdem muss die softare die von PC heute erstellte Wartungskategorie - Kategorie:Wikipedia:Seite mit Überschreitung eines Unstrip-Limits setzen. ÅñŧóñŜûŝî (Ð) Wikipedia:Lua/Werkstatt#c-Antonsusi-2020-01-05T20:18:00.000Z-AKlapper (WMF)-2020-01-05T19:59:00.000Z11Beantworten
Yay, die Seite hab ich jetzt auf 936.792 Bytes Unstrip post-expand size runterbekommen. Der Fall ist also gelöst, danke für die Mithilfe! Die Vorlagenbeschränkungen sind grundsätzlich ja schon ganz gut auf Hilfe:Vorlagenbeschränkungen zusammengefasst, da wäre das hier noch zu ergänzen. Die Kategorie funktioniert, vorhin war der Max Martin noch kurz drin. Gruß--XanonymusX (Diskussion) Wikipedia:Lua/Werkstatt#c-XanonymusX-2020-01-05T20:42:00.000Z-Antonsusi-2020-01-05T20:18:00.000Z11Beantworten
Ach nee. Da haben wir eine schöne funkelnagelneue Wartungskat für zwei (!) Systemnachrichten und dann ist sie leer. Echt traurig. ein SmileysymbolVorlage:Smiley/Wartung/;-)  ÅñŧóñŜûŝî (Ð) Wikipedia:Lua/Werkstatt#c-Antonsusi-2020-01-05T22:24:00.000Z-PerfektesChaos-2020-01-05T19:32:00.000Z11Beantworten

Code-Review erbeten

Hallo, heute habe ich mich endlich mal meinem ersten Lua-Projekt angenommen, das ich schon eine Weile im Kopf hatte und jüngst durch diverse Anfragen in der Vorlagenwerkstatt wieder auf meine Tagesordnung kam. Es geht um einen gemeinsamen Unterbau für (bisher) Vorlage:Grand-Tour-Platzierungen, Vorlage:Monumente-des-Radsports-Platzierungen und Vorlage:Straßenradsport-Weltmeisterschafts-Platzierungen. Das Ergebnis ist nun hier auf Beta zu finden. Ich würde mich freuen, wenn jemand mal drüberschaut und hinsichtlich Sauberkeit und Effizienz der Programmierung etwas Feedback dalassen würde. Anwendungsfälle gibt es hier. Gruß, -- hgzh Wikipedia:Lua/Werkstatt#c-Hgzh-2020-04-10T17:53:00.000Z-Code-Review erbeten11Beantworten

Kommt im Laufe der Feiertage.
Genau so läuft das; schönen Dank.
Frohe selbige --PerfektesChaos Wikipedia:Lua/Werkstatt#c-PerfektesChaos-2020-04-10T17:58:00.000Z-Hgzh-2020-04-10T17:53:00.000Z11Beantworten
Erster Schnellblick; nur ganz oben und ganz unten:
  1. Anwendungs-Datenteil sollte nach loadData ausgegliedert werden.
    • gColors und gEvents und gLegend; bei gConfig weiß ich nicht so ganz; das könnte auch legitime interne Konfiguration sein.
    • Hilfe:Lua/Modul im Wiki #mw.loadData()
    • Gründe:
      • Performance; Daten werden nur einmal pro Wiki-Seite eingebunden, Programmierung bei jedem invoke.
      • Strategische Übersichtlichkeit; Grundsatz der Trennung von Programm und Daten.
      • Seitenschutz; Programmierung vielleicht unter Voll oder Dreiviertel; Daten nur Halbschutz oder sowas.
      • Andere Benutzer mögen da dran rumwirtschaften, aber die Programmierung in Frieden lassen.
      • Übersichtlichkeit der Versionsgeschichte; Änderungen der Daten jucken die Programmierung nicht und mögen oft geschehen; Programmierung dagegen dann nur sehr selten.
    • Datum mit registrieren.
    • Modul:Shortcuts/4 als Beispiel.
  2. args["MODE"] = frame.args["MODE"]
    • Das darf eigentlich nicht funktionieren.
    • frame:getParent().args ist schreibgeschützt.
    • Schreibt sich einfacher: args.MODE
    • Bessere Lösung:
      • Eigene table params aufmachen.
      • Per Schleife alle Zuweisungen von args untersuchen.
      • Wenn kein leerer String dann den Wert dem Element von params zuweisen; leere Strings sind „etwas“.
      • Unbenannte vorher auch trimmen.
      • Ggf. auch gleich noch eine Liste bekannter, erlaubter Namen von Parametern.
    • Modul:Multilingual als Beispiel; dort p.int und auch fold().
LG --PerfektesChaos Wikipedia:Lua/Werkstatt#c-PerfektesChaos-2020-04-10T18:41:00.000Z-PerfektesChaos-2020-04-10T17:58:00.000Z11Beantworten
Danke schonmal. Zu (1): hört sich sinnvoll an, deshalb bereits so umgesetzt. Zu (2): das habe ich so aus Hilfe:Lua/Modul_für_eine_bestimmte_Vorlage#Mehrere_Vorlagen übernommen, also die lokale Kopie der Vorlagen-Umgebung angereichert um den Steuerparameter für die Vorlagenverwendung an die Hauptprozedur zu schicken. Zur Parameterprüfung komme ich dann vielleicht im Anschluss. Gruß, -- hgzh Wikipedia:Lua/Werkstatt#c-Hgzh-2020-04-11T11:16:00.000Z-PerfektesChaos-2020-04-10T18:41:00.000Z11Beantworten
@Hgzh:
  • @argsparams
    • Möglicherweise ging das 2013 mal, als die Hilfeseite geschrieben wurde; und ist erst später blockiert worden.
    • Egal ob grad technisch möglich oder nicht, sollte nicht mehr so gemacht werden.
    • Alle Inhalte des frame-Objekts sind (inzwischen) schreibgeschützt.
    • Die Hilfeseite muss ich mir noch genauer angucken; hab ich wahrscheinlich nicht mehr seit ich sie schrub.
  • Ja, Internationalisierung ist ein weiterer Grund, lokale Lemmata und Kategorien projektspezifisch, Texte sprachspezifisch und die Programmierung global einheitlich zu pflegen. Franzosen haben ja wohl auch was mit Radsport zu tun.
  • Namensgebung in echt womöglich als Modul:Vorlage:Radsportplatzierung wegen Zuordnung zu einer einzigen oder kleiner Gruppe von Vorlagen; anders als bei universellen Bibliotheksmodulen.
    • Sind zurzeit drei Vorlagen; müsste man vor Etablierung in der produktiven WP nochmal drüberschauen, ob es nicht ggf. sogar eine rein dokumentierende, vielleicht auch gemeinschaftlich genutzte Vorlage:Radsportplatzierung geben sollte. Vorlage:Runeberg hosted auch nur eine Doku-Tabelle, aber ist Alibi für Modul:Vorlage:Runeberg. Was in drei völlig anders benannten Vorlagen eingebunden wird.
  • wikitext(tostring(head))
    • Ist vermutlich :node(head) oder so.
  • Sehr hübsch aber, von vornherein mit dem mw.html-Objekt zu arbeiten und nicht mit gammligem HTML-Quellcode.
  • printRow() sollte statt tostring(row) or "" eher row zurückgeben (or "" kann ohnehin niemals eintreten), und das dann mit :node(printRow()) einhängen statt :wikitext(rows).
  • return tostring(cell) or "" – da kann auch nie or "" passieren; return cell und dann :node(printTableHeadCell(mode, year))
  • Heißt: Zuallererst result = mw.html.create("table") und dann da immer die Knoten dranbamseln und erst das Ergebnis bekommt einmalig für die gesamte Tabelle ein einziges return tostring(result)
    • Oder noch verschäfter, aber nicht im absehbaren Tätigkeitsfeld dieses Moduls: Die Tabelle wird immer noch als Objekt zurückgegeben, auch an eine Lua-Schnittstelle, und erst für die Vorlageneinbindung wird daraus eine Zeichenkette gemacht.
  • Zwischendurch kleine :newline() erleichtern das Debugging.
  • if args["Titel"] ~= nil and args["Titel"] ~= "" then
    • Das ist so ein Fall, den ich eher vorher schon zentral abfangen würde, indem params nur nichtleere strings enthält.
    • args["Titel"] ~= nil ist args["Titel"] ist args.Titel
  • Ich würde mir noch eine kleine Test-Schnittstelle einbauen; p.test(params) ruft return main(params) auf, dann kannst du aus der Lua-Quelltextkonsole mit Dummies ohne eine Wiki-Seite debuggen.
  • Aus robuster Produktivversion irgendwann zu entfernen.
  • Da du ja schnell große Fortschritte machst, kannst du auch im Kopfbereich No Globals (obere Zeilen) einbinden.
    • Detektiert undeklarierte Variablen. Leider gibt es zur Sprache Lua global bis heute keine Linter oder Syntaxanalyse über die formale Grundsprache hinaus.
    • Später auf produktiv nach Erprobungsphase wieder rausnehmen.
LG --PerfektesChaos Wikipedia:Lua/Werkstatt#c-PerfektesChaos-2020-04-14T15:57:00.000Z-Hgzh-2020-04-10T17:53:00.000Z11Beantworten
Danke, ich sehe es mir die Tage genauer an. Gruß, -- hgzh Wikipedia:Lua/Werkstatt#c-Hgzh-2020-04-14T18:06:00.000Z-PerfektesChaos-2020-04-14T15:57:00.000Z11Beantworten

So, habe nochmal durchgearbeitet:

  1. HTML-Aufbau: Gute Idee, :node() hatte ich erst recht spät entdeckt und da waren die Unterfunktionen schon so geschrieben, aber jetzt wird erst aus der fertig zusammengebastelten Tabelle ein String gemacht, inkl. dezenter Zeilenvorschübe.
  2. Parameter-Übernahme: es werden nur noch nichtleere Parameter aus der Artikelumgebung übernommen, dazu weiterhin der Modus aus der Vorlagenumgebung. Parameterprüfung habe ich erstmal noch nicht gemacht, da durch Modusabhängigkeit umständlicher, das wäre aber vermutlich dann über mw.ustring.find mit den Lua-Pattern möglich. Außerdem überlege ich noch, die Modus- und Eventbezeichnungen auszulagern, sodass am Ende gar kein deutscher Text mehr im Hauptcode steht und man das ganze Ding wirklich 1:1 und nur mit Anpassungen unter /config irgendwoandershin portieren könnte.
  3. Vorlagen: die einzelnen Vorlagen rufen dann ja nur noch das Modul mit dem unterschiedlichen Parameter MODE= auf und das holt sich dann die Parameter aus der Einbindung, also können die einzelnen Vorlagen so bestehen bleiben, macht auch am wenigsten Zusatzarbeit.
  4. NoGlobals: Habe ich eingebunden und noch eine undeklarierte eigentlich lokale Variable gefunden, danke für den Hinweis.
  5. Test: habe ich noch nicht verstanden, welche Lua-Quelltextkonsole ist das (die „Fehlerbereinigungskonsole“ ganz unten? Wie gebe ich der Eingangswerte?)

Darfst gerne nochmal gegenlesen oder meine fünf Punkte kommentieren, ohne Eile natürlich. Gruß, -- hgzh Wikipedia:Lua/Werkstatt#c-Hgzh-2020-04-27T16:15:00.000Z-Code-Review erbeten11Beantworten

Ich mach voll konkret zu Konsole, ey, und Rest nach dem revolutionären Ersten Mai.
Hilfe:Lua/Quellcode und Vorschau #Konsole
Modul:Vorlage:URN zum Bearbeiten öffnen; geht auch auf BETA, aus Gründen.
In graue Konsole eingeben:
  • =p.test( { }, { } )
  • =p.test( { #invoke-Parameter }, { Vorlagen-Parameter } )
LG --PerfektesChaos Wikipedia:Lua/Werkstatt#c-PerfektesChaos-2020-04-27T17:51:00.000Z-Hgzh-2020-04-27T16:15:00.000Z11Beantworten

Einlesen einer Seite

Hallo. Mir ist es trotz Durchlesen der diversen Lua-Hilfeseiten nicht ganz klar, wie man mit einem Lua-Skript den Quelltext einer anderen Seite (im Modul-NR oder Vorlagen-NR) als Plaintext ähnlich auslesen kann wie offline eine Datei auf der Festplatte. Entweder als einzelner String (mit CR/LF als Trennung) oder idealerweise als Table mit den Zeilen als Elemente. Ziel ist es, eine dort abgelegte Texttabelle in eine Lua-Tabelle des aufrufenden Moduls zu konvertieren. Das "Zerlegen" des eingelesenen Inhalts ist für mich kein Problem, es geht darum, die andere Seite überhaupt erst einmal einzulesen.

Beispiel:
Auf der einzulesenden Seite befinden sich Zeilen mit folgendem Inhalt
Text1-1;Text1-2;Text1-3;Text1-4~
Text2-1;Text2-2;Text2-3;Text2-4~
Text3-1;Text3-2;Text3-3;Text3-4~

Gewünschtes Lesergebnis ist entweder ein String mit erkennbarem Zeilentrenner (evtl. schon im Quelltext vorhanden oder das CR/LF) oder eine Table mit den Elementen

{"Text1-1;Text1-2;Text1-3;Text1-4~","Text2-1;Text2-2;Text2-3;Text2-4~","Text3-1;Text3-2;Text3-3;Text3-4~" }

ÅñŧóñŜûŝî (Ð) Wikipedia:Lua/Werkstatt#c-Antonsusi-2020-06-28T12:27:00.000Z-Einlesen einer Seite11Beantworten

Hilfe:Lua/Links #title.getContent() VG --PerfektesChaos Wikipedia:Lua/Werkstatt#c-PerfektesChaos-2020-06-28T15:23:00.000Z-Antonsusi-2020-06-28T12:27:00.000Z11Beantworten
@PerfektesChaos: Danke. Das hatte ich noch gar nicht entdeckt. Habe noch ein paar Fragen:
  • Was bekomme ich als Rückgabewert? Einen String, Table, was anderes?
  • Bekomme ich mit "makeTitle" das Objekt einer Seite, also z. B. mit
local MeineSeite = mw.title.makeTitle( "wikipedia", "Lua/Werkstatt")

diese Seite als Objekt?

  • Bekomme ich den Inhalt dann mit
Inhalt = MeineSeite:getContent()

oder mit

Inhalt = mw.title:getContent(MeineSeite) ?

Sorry, aber ein paar Quelltextbeispiele würden diese Hilfeseite echt verbessern. ÅñŧóñŜûŝî (Ð) Wikipedia:Lua/Werkstatt#c-Antonsusi-2020-06-28T15:53:00.000Z-Einlesen einer Seite11Beantworten

(BK)
Ein kombiniertes Hilfe:Lua/Links #Anwendungsbeispiel muss für diese Seite reichen; das ist für jede einzelne Funktion und jedes Objekt immer genau analog. Die Hilfeseite würde zehn Kilometer lang werden, und wäre weder verständlicher noch von irgendjemandem wartbar, wenn man zu jedem Pipifax ein neues Beispiel darstellen würde, und die schnelle Übersichtlichkeit über die zahlreichen Funktionen ginge völlig verloren, und dann beklagst du dich noch mehr, weil das alles viel zu viel und zu unübersichtlich wäre, und du würdest die wesentlichen Informationen nicht mehr finden können.
Zur Frage 1: Ein „Wiki-Quelltext“ ist eine Zeichenkette, ja. Im Prinzip auch andere Ressourcen-Quelltexte.
Zur Frage 2: Der Satz „Das title-Objekt repräsentiert einen Seitennamen“ leitet die verschiedensten Möglichkeiten ein, sich ein title-Objekt zu generieren.
Zur Frage 3: Auf den ersten Blick, ohne es auszutesten, wohl ja. Warum machst du nicht einfach eine Dummy-Modulseite auf und lässt dir anzeigen, was der von dir hingeschriebene Lua-Quellcode bei der Auswertung ergibt?
VG --PerfektesChaos Wikipedia:Lua/Werkstatt#c-PerfektesChaos-2020-06-28T16:17:00.000Z-Antonsusi-2020-06-28T15:53:00.000Z11Beantworten
Du hast Recht. Probieren geht über studieren... Trotzdem sind ein paar Beispiele mehr ganz nützlich . Evtl. auf einer separaten Seite oder am Ende. ÅñŧóñŜûŝî (Ð) Wikipedia:Lua/Werkstatt#c-Antonsusi-2020-06-28T16:23:00.000Z-PerfektesChaos-2020-06-28T16:17:00.000Z11Beantworten
Wie ich soeben verlinkte, steht ein Beispiel am Ende.
Das deckt alles ab, was auf der Seite passiert; es ist dann halt nur der Name der Funktion oder Eigenschaft ca. 80 Mal durch jeweils einen anderen zu ersetzen – für alle rund 80 Funktionen und Eigenschaften, die auf der Seite beschrieben werden. Es sind in dem Anwendungsbeispiel sämtliche Konstellationen exemplarisch verwendet, die in der Seite darüber vorkommen. Mehr ist nicht machbar, und die Seite mit 80 gleichen Beispielen liest niemand, durchschaut niemand und kann niemand in Ordnung halten.
VG --PerfektesChaos Wikipedia:Lua/Werkstatt#c-PerfektesChaos-2020-06-28T17:04:00.000Z-Antonsusi-2020-06-28T16:23:00.000Z11Beantworten
Wie groß darf der Quelltext sein, damit er noch korrekt eingelesen wird? Gibt es da besondere Grenzen? ÅñŧóñŜûŝî (Ð) Wikipedia:Lua/Werkstatt#c-Antonsusi-2020-06-28T18:11:00.000Z-PerfektesChaos-2020-06-28T17:04:00.000Z11Beantworten
  • „Wie groß darf der Quelltext sein, damit er noch korrekt eingelesen wird? Gibt es da besondere Grenzen?“
    • Hilfe:Lua/Zeichenketten #maxStringLength 2048000 Bytes, wie es halt bei „Zeichenketten“ beschrieben steht, und damit für alle darstellbaren Wiki-Quelltexte gerade hinreichend; ansonsten bis dir die sonstigen Limits der Seite den Hahn zudrehen.
    • Das gilt für jeden String bei jeder Funktion; es ist überflüssig, dass du jetzt verlangst man müsse an jede Funktion, die etwas mit einer Zeichenkette zu tun habe, einen solchen Hinweis anbringen.
  • Das war die letzte Antwort gewesen, die du von mir in dieser Werkstatt bekommen hast.
    • Wenn es bei jeder Anfrage wie deine mit diesem Thread zusammenhängenden Aktivitäten in einer mehrstündigen Arbeitsbelastung und pfundweise Nervenverbrauch für mich münden, dann kann ich es schlicht nicht mehr leisten, wesentliche Teile meiner Wiki-Arbeit nur noch auf Beantwortungen zu deinen Lua-Problemen zu verwenden.
  • Du bist seit sieben Jahren Lua-Programmierer. Ich erinnere mich noch sehr genau, wie du praktisch schon am ersten Tag der Lua-Freischaltung munter hunderttausendfach eingebundene Vorlagenfunktionen experimentell auf deine ersten Gehversuche mit Lua in der Live-Darstellung umprogrammiert hattest. Du musst es inzwischen gelernt haben.
  • Die fragliche Hilfeseite zeigt ein Anwendungsbeispiel, in dem ich alle auftretenden Konstellationen exemplarisch dargestellt hatte.
    • Es werden aus der Hilfeseite verwendet:
      • Konstruktion eines title-Objekts
      • Verwendung einer Methode aus diesem title-Objekt
      • Konstruktion eines uri-Objekts
      • Verwendung einer Eigenschaft aus diesem uri-Objekt
    • Dazu noch vorbildlich eine Gültigkeitsprüfung des Funktionsparameters und eine Fehlermeldung bei Fehlzugriff; wir sind hier ja schließlich nicht bei Wikidata.
    • Auf der Hilfeseite werden rund 80 Funktionen und Eigenschaften beschrieben.
    • Von einem Programmierer wird die Fähigkeit zur Transferleistung erwartet.
    • Das heißt, die 76 anderen Fälle auf der Hilfeseite sind genau analog zu den von mir aufgezählten Konstellationen anzuwenden; und dazu bedarf es nicht wie von dir begehrt 76 weiterer Demonstationsbeispiele.
  • Wir haben rund sieben Hilfeseiten, die programmtechnische Details der von MediaWiki angebotenen Bibliotheken beschreiben.
    • Du bist seit mehr als sieben Jahren in der Wiki-Lua-Programmierung tätig.
    • Also hättest du Zeit gehabt, jedes Jahr eine der Hilfeseiten zu verinnerlichen, und bräuchtest hier nicht regelmäßig mit solchen Fragen aufzulaufen.
    • Weiterhin könntest du dir deine Nachfragen in aller Regel gleich selbst beantworten, indem du die entsprechende Funktion einfach testweise aufrufst und im Detail siehst, wie und was in deinem speziellen Fall herauskommt.
      • Großes Geheimnis: Beim Schreiben der Hilfeseiten mache ich das oft auch nicht anders.
  • Wir haben rund sieben Hilfeseiten, und du schreibst diesen Thread eröffnend, „trotz Durchlesen der diversen Lua-Hilfeseiten nicht“.
    • Nun forderst du, man solle wohl noch 20, 30, 40 weitere Hilfeseiten schreiben, wo für jede Funktion und jede Eigenschaft noch ein Demonstationsprogramm geliefert würde.
    • Mal angenommen, jemand würde für dich diese vielleicht 2345 Demonstationsprogramme oder wie viele Schnipselchen auch immer schreiben, damit du für jede Situation und jeden Parameterwert und jede Konstellation eine Quelltextzeile mundgerecht und vorgekaut bekommst, die du nur noch mit C&P in dein neues Programm zu übertragen brauchst – mal angenommen, irgendjemand (ich selbst ganz sicher nicht) würde dir deinen Wunsch erfüllen und fehlerfrei Tausende von Demonstrationsbeispielen erstellen und jedes auf Richtigkeit erproben, nur mal angenommen die wären vorhanden: Dann würdest du, der in sieben Hilfeseiten schon nichts findet, auch in den 50 neuen Hilfeseiten nichts finden; ja überhaupt niemand würde in diesem riesigen Wust irgendwas finden können. Es würde sie auch niemals irgendjemand benutzen wollen.
    • Die gute Nachricht: Es braucht auch niemand. Alle wesentlichen Informationen stehen bereits heute knapp und kompakt auf unseren deutschsprachigen Hilfeseiten. Der Rest findet sich sofort, wenn man die Programmierung erprobt und die aktuellen Detailfragen für den eigenen Kontext erforscht.
    • Sollte dir das deutschsprachige Angebot nicht ausreichen, kannst du jederzeit die globale zentrale englischsprachige Dokumentation der Lua-Bibliotheken zu Rate ziehen.
    • Soweit ich das überblicken kann, sind wir hier weltweit das einzige Wiki, das eine muttersprachliche Dokumentation der Lua-Bibliotheken anbietet. Aber das genügt dir ja immer noch nicht, es muss dir dann auch noch jede einzelne Funktion und jede Eigenschaft durch ein Anwendungsbeispiel nochmals erklärt werden.

--PerfektesChaos Wikipedia:Lua/Werkstatt#c-PerfektesChaos-2020-06-29T11:09:00.000Z-Einlesen einer Seite11Beantworten

Das ist schon ein dreistes Stück: Erst eine Hilfeseite total kompliziert und unvollständig schreiben und dann User, welche deshalb hier nachfragen müssen, verächtlich machen, weil du durch probieren schon schlauer bist. Komm mal von deinem hohen Ross herunter. Wenn du doch selbst testen musst, dann kannst du das Ergebnis doch auch gleich auf die Hilfeseite schreiben und damit anderen die gleichen Tests ersparen.
  • Du hast viel Ahnung von dem Thema, aber du bist in meinen Augen unfähig und wohl auch unwillig, irgendetwas sauber und klar verständlich zu dokumentieren. Das gilt für von dir erstellte Hilfeseiten und besonders für die von dir erstellten Module. Du denkst höchstwahrscheinlich im Traum nicht daran, sie sauber zu dokumentieren, weil du meiner Einschätzung nach nichts mehr fürchtest, als dass ein anderer ein derartiges Modul ebenfalls vollständig durchdenken kann. Nur wenn du der Einzige bist, der ein Modul versteht, hast du die absolute Kontrolle darüber und damit die alleinige Macht, darüber entscheiden zu können, welche Features es hat und welche nicht.
  • Dein Umgang mit anderen Usern im Bereich Programmierung nähert sich meinem Eindruck nach immer mehr dem schlechten Umgang an, welcher unser "Schweizer Astronom" mit anderen beim Thema Astronomie pflegte. Je mehr es dir gelingt, hier bestimmte Bereiche monopolartig zu besetzen, umso unverschämter gehst du meiner Meinung nach mit anderen um, weil du genau weist, dass dich hier niemand hinauswerfen kann.
Schade, dass du so schlecht kooperierst. ÅñŧóñŜûŝî (Ð) Wikipedia:Lua/Werkstatt#c-Antonsusi-2020-06-29T20:57:00.000Z-PerfektesChaos-2020-06-29T11:09:00.000Z11Beantworten
Interessant die Debatte zu verfolgen, aber es passt exakt ins Bild und ist eher der Regel- statt ein Einzelfall! Konfrontation statt Kooperation ist die Devise. Aber bei aller Kritik sollte man auch mal vor der eigenen Haustür fegen, sonst wird die Feststellung zum Eigentor ....--Klaus-Peter (auf und davon) Wikipedia:Lua/Werkstatt#c-Gadacz-2020-06-30T04:30:00.000Z-Antonsusi-2020-06-29T20:57:00.000Z11Beantworten
Bedenke, das PerfektesChaos dein Flaggenmodul auch geradezu "in der Luft zerrissen" hat, weil du nicht so gut bist wie er selbst und es deshalb in der Tat Mängel aufweist. ÅñŧóñŜûŝî (Ð) Wikipedia:Lua/Werkstatt#c-Antonsusi-2020-06-30T17:49:00.000Z-Gadacz-2020-06-30T04:30:00.000Z11Beantworten
Nicht ablenken, den am Zerreißen waren noch Andere beteiligt, die willig ins gleiche Horn stießen, ungeprüft Argumentationen übernahmen, entsprechend ‚korrigierten‘ und mit LA drohten. Bei aller prinzipiellen Abscheu gegen Vorlage:Flagge hat sich ausschließlich Lomelind mit einigen zwar anders gemeinten, aber letztendlich hilfreichen und konkret nachgewiesenen Reklamationen gemeldet, die sofort zur Korrektur führten (trotz vorsorglich reklamierten Wartungsdefiziten). Ich kenne noch weitere Mängel, die ich vorerst übersehe, so lange sie nicht zu gravierenden Fehlern führen. Ich werde auch das Modul vorerst (oder ggf. nie) nicht optimieren und entwirren. In einem laufenden Verfahren werde ich keine Zeit verplempern. An anderen Stellen geht die Entwicklung konstruktiv und kooperativ weiter und die Berreren tragen aktiv mit ihrem Wissen, auch zum gemeinsamen Nutzen Anderer, bei, statt oberlehrerhaft die eigene Qualifikation breitzutreten. Ich bin seit den ersten Tagen bei WP dabei und der damalige Enthusiasmus riss mit. Inzwischen ist es zur zähflüssigen Masse geworden, wo insbesondere bei de-WP, sich statt dem Willen gemeinsamen Schaffens ein Konkurrenzkampf das Geschehen diktiert und oft Innovationen blockiert. Da gibt es ein paar Aktivisten, die ständig im Vordergrund stehen nach dem Motto: „Es gibt 2 Meinungen: Meine und die Falsche“. Woanders wird Wissen ausgetauscht statt in der eigenen Scheinwelt konserviert. Da hilft der Bessere dem Unerfahrenen und debattiert wird um ein besseres Ergebnis, statt um Prinzipien. Letztendlich sehe ich es als Charakterfrage. WP ist keine Bühne um die Probleme im Privatleben oder Beruf bewältigen! --Klaus-Peter (auf und davon) Wikipedia:Lua/Werkstatt#c-Gadacz-2020-07-01T04:52:00.000Z-Antonsusi-2020-06-30T17:49:00.000Z11Beantworten
Wenn du mich schon hierher zitierst, kannst du dann wenigstens meinen Namen richtig schreiben? Lómelinde bedeutet Nachtigall und die Schreibt sich mit einem langen ó in den Anteil der Nacht=Lóme und Lind wäre nur das Lied oder der Gesang und nicht wie hier die Sängerin, die sich Linde schreibt, was dann zusammen Nachtsängerin ergibt und die Nachtigall meint. Ich habe übrigens nichts zerrissen sondern immer wieder auf Fehler und schlechte Bedienbarkeit oder Verständlichkeit der Parameter der Vorlage hingewiesen. Als Dank darf ich mir hier ständig deine Anfeindungen abhören, weil ich dich auf so etwas hinweise. Ja, kehre auch mal vor deiner Tür, so wie du das anderen empfiehlst. Und nein, meine Hinweise waren nicht „anders gemeint“, sie dienten der Fehlerbehebung. Selbst dann, wenn ich die Vorlage nicht einsetzen oder empfehlen würde, so sind mir doch eine möglichst fehlerfreie Funktion und Laienverständlichkeit wichtig. --Liebe Grüße, Lómelinde Diskussion Wikipedia:Lua/Werkstatt#c-Lómelinde-2020-07-01T05:14:00.000Z-Gadacz-2020-07-01T04:52:00.000Z11Beantworten
Den Vorwurf der blinden Übernahme von Kritik an diesem Modul weise ich zurück, genaueres ist anderswo zu diskutieren. Du wirst es kaum glauben, aber was es die Stimmung hier angeht, da gebe ich dir weitgehend Recht (Wow, wir sind uns mal in einem Punkt einig!) Es gibt zuwenig Teamwork. Bei einem Modul ist Teamwork schwierig, aber ansonsten könnte sie besser sein, wie du hier an einem gewissen dritten User sehen kannst... ÅñŧóñŜûŝî (Ð) Wikipedia:Lua/Werkstatt#c-Antonsusi-2020-07-01T05:04:00.000Z-PerfektesChaos-2020-06-29T11:09:00.000Z11Beantworten
Etwas Einigkeit ist ja schon mal ein Schritt nach vorne. Blind ist Kritik nicht, wenn sie zu konkreten Ergebnissen führen kann und nicht nur pauschal ins gleiche Horn bläst. Früher hat man bei WP deutlich besser zusammengearbeitet, auch Sensibelchen, die sich gerne ihre Welt passend zurechtbiegen. Ansonsten: Weiter mit „Einlesen einer Seite“. Da ich auch ähnliche Gedanken habe, interessiert mich ein brauch- und anwendbares Ergebnis auch.--Klaus-Peter (auf und davon) Wikipedia:Lua/Werkstatt#c-Gadacz-2020-07-01T05:25:00.000Z-Antonsusi-2020-07-01T05:04:00.000Z11Beantworten
Ok. In der Hoffnung, dass du die Info zur Verbesserung "deines" Moduls nutzt: Auslesen funktioniert z.B. mit dieser kleinen Funktion:
-- Auslesen einer Seite. Parameter: 1=Namensraumnummer und 2= Seitenlemma (ohne Namensraum)
-- Rückgabe: true, wenn die Seite existiert und ein String mit dem Quelltext der Seite
function SeiteLesen(NR,Titel)
	local Seite = mw.title.makeTitle(NR, Titel)
	local Text;
	local Exist = Seite.exists
	if Exist then
		Text = Seite:getContent()
	else
		Text = '<span class="error">Seite existiert nicht!</span>'
	end
	return Exist, Text;
end
Gruß von ÅñŧóñŜûŝî (Ð) Wikipedia:Lua/Werkstatt#c-Antonsusi-2020-07-01T17:03:00.000Z-Gadacz-2020-07-01T05:25:00.000Z11Beantworten
Gut gemeinter Tipp, aber eine Ahnung, wie und wo ich es bei "meinem" Modul einsetzen könnte. Für das, was ich an Daten einzulesen habe, passt mw.loadData(); das macht exakt das, was ich erwarte und falls die Datei nicht greifbar ist, bekomme ich nil. OK, die Error-Behandlung ist noch etwas rudimentär, aber bei drohendem LA derzeit kein Thema, an das ich hier Zeit verplempere. Zu mw.getContent() ist die deutsche Doku etwas geizig ausgefallen. Ich ziehe aber grundsätzlich die en-Doku vor (da weiß man, was man hat). Da verbergen sich noch ein paar mehr Parameter zu mw.makeTitle. Für eine von mir zu einem anderen Thema gestellte Frage, scheint sich damit auch keine Lösung anzubieten, da ich nur einen begrenzten Text (z.B. eine Tabelle) einlesen will. Brauche ich z.B. nur die Liste seiner paar Veröffentlichungen, werde ich kaum 260 kB von Donald Trump einlesen. -mFg-Klaus-Peter (auf und davon) Wikipedia:Lua/Werkstatt#c-Gadacz-2020-07-02T04:37:00.000Z-Antonsusi-2020-07-01T17:03:00.000Z11Beantworten

Paradebeispiele für gute Modul-Doku

Hallo zusammen, nicht unbedingt ein klassisches „Werkstatt“-Thema, aber hoffentlich dennoch hier passend. Ich würde gerne die Dokumentation von Modul:Wikidata neu schreiben, die jetzige ist für den Orkus. Welche Module bei uns haben eine vorzeigbare Doku? Ich würde mich gern entsprechend daran orientieren, bevor ich die Doku völlig nach meinem Gusto überarbeite. Danke, Yellowcard (D.) Wikipedia:Lua/Werkstatt#c-Yellowcard-2020-07-10T07:01:00.000Z-Paradebeispiele für gute Modul-Doku11Beantworten

Wikipedia:Lua/Modul/WikidataScheme/de für eine Doku,
VG --PerfektesChaos Wikipedia:Lua/Werkstatt#c-PerfektesChaos-2020-07-10T12:45:00.000Z-Yellowcard-2020-07-10T07:01:00.000Z11Beantworten

Nutzung einer privaten Lua-Funktion oder bestimmter Parameter ermitteln

Hallo zusammen, folgende Situation: In Modul:Wikidata werden bei der Funktion p.claim() die unbenannten Parameter 2 bis N verwendet, um die Ergebnisse der Wikidata-Abfrage anhand der Qualifier zu filtern. Ich finde es unglücklich, dass hierfür die unbenannten Parameter verwendet wurden, und würde diesen Anwendungsfall gern überführen in einen benannten Parameter, der die Angaben übernimmt.

Bevor ich solche Änderungen vornehme, muss ich natürlich wissen, ob der zweite unbenannte Parameter (und aufwärts) bereits irgendwo genutzt werden (entweder per #invoke oder auch aus einem anderen Lua-Modul heraus). Über eine Quelltext-Suche mittels Cirrus halte ich das für kaum umsetzbar.

Wird der zweite unbenannte Parameter gesetzt, wird eine private Funktion des Moduls betreten. Kann ich also irgendwie herausfinden, ob a) entweder die Funktion p.claim() mit einem zweiten unbenannten Parameter genutzt wird oder b) ob die genannte private Funktion betreten wird? Zum Beispiel über eine Wartungskategorie, ein Logbuch etc.? Mir fällt leider kein guter Ansatz ein. Ich könnte der Funktion p.claim() als Rückgabewert einen Lua-Error mitsamt Wartungskategorie mitgeben, aber dies würde ja nur die #invoke-Anwendungsfälle abdecken, nicht die Aufrufe aus einem anderen Lua-Modul, korrekt? Hat vielleicht jemand eine Idee, wie sich soetwas umsetzen lässt? Yellowcard (D.) Wikipedia:Lua/Werkstatt#c-Yellowcard-2020-07-10T07:09:00.000Z-Nutzung einer privaten Lua-Funktion oder bestimmter Parameter ermitteln11Beantworten

Das ginge bei #invoke nur unrobust über die von dir bereits angesprochene Wartungskat; würde aber voraussetzen, dass der Wikitext in der Seite nach außen wirksam würde. Stünde das Ergebnis hingegen in einem HTML-Attribut, oder als Bedingung in einem {{#if: }} (was ich mir sehr gut vorstellen kann), dann bliebe das wirkungslos. Genauso wenn es in der Logik eines anderen Moduls verschwindet, weil völlig unbekannt wäre, ob das andere Modul diesen Text als Resultat nach draußen zeigt.
Der einzige, sichere, und triviale Weg ist die vor einem Dutzend Jahren mal praktizierte Linkliste; genauer: Eine Debugging-Unterseite mit nix drin anlegen und diese in der beanstandeten Situation einbinden, ohne mit dem Ergebnis was anzufangen. Das beeinträchtigt die bisherige Funktion nicht, und über die Liste der Einbindungen lassen sich alle Verwender tracken und nach und nach eliminieren. Kategorisieren geht nicht; du kannst allenfalls eine Kategoriebeschreibung einbinden. Alternativ kannst du auch einfach die Existenz der Debugging-Seite abfragen, dann braucht sie noch nicht mal zu existieren.
VG --PerfektesChaos Wikipedia:Lua/Werkstatt#c-PerfektesChaos-2020-07-10T12:42:00.000Z-Yellowcard-2020-07-10T07:09:00.000Z11Beantworten
Hallo PerfektesChaos, das klingt nach einem sehr guten Tipp. Über welche Funktion binde ich den Link am besten ein? Im Lua-Modul hat die Einbindugn einer leeren oder nicht vorhandenen Seite logischerweise keine Auswirkungen – und dennoch sehe ich den Link über die MediaWiki-Linkliste? Das ist in der Tat spannend. Grüße, Yellowcard (D.) Wikipedia:Lua/Werkstatt#c-Yellowcard-2020-07-11T11:08:00.000Z-PerfektesChaos-2020-07-10T12:42:00.000Z11Beantworten
Hilfe:Lua/Links #title.exists
Grundsätzlich wird die Abfrage auf Existenz einer Seite vom System in einer Datenbanktabelle aufgezeichnet, weil wie bei einem Redlink in dem Moment, in dem eine bisher nicht existente Seite angelegt wird, alle verlinkenden und einbindenden Seiten veraltet sind: Sie müssen bisherige Rotlinks in Blaulinks wandeln, und das Ergebnis von Vorlageneinbindungen kann sich dadurch ändern. Umgekehrt genauso: Wird eine Seite gelöscht, sind alle verlinkenden und einbindenden Seiten veraltet und müssen neu aufgebaut werden, weil Blaulinks in Rotlinks zu ändern sind und das Ergebnis von Vorlageneinbindungen sich ändern kann. Ist seit ca. 2003 so.
VG --PerfektesChaos Wikipedia:Lua/Werkstatt#c-PerfektesChaos-2020-07-11T11:16:00.000Z-Yellowcard-2020-07-11T11:08:00.000Z11Beantworten

Categorymembers

Hallo! Ich bin auf der Suche nach einer Funktion, die analog zur API-Funktion categorymembers bei Angabe eines Kategoriennamens die in diese Kategorie eingebundenen Seiten auflistet und, idealerweise, ihre Inhalte untereinander aufführt (ggf. unter Verwendung von onlyinclude, um nur bestimmte Teile der Seiten anzuzeigen). Für das Mergen von Seiten habe ich das Modul PageUtil gefunden, für die Ausgabe der Kategorien ist CatUtil jedoch anscheinend nicht geeignet, da es, wie PagesInCategory, nur die Seiten zählt und keine Liste der Elemente zurückgibt. Gibt es solch ein Modul noch nicht?

Ich habe auch nach Alternativen geschaut und mw:Help:DPL (MediaWiki.org zur Extension) gefunden, das jedoch auf dewiki nicht aktiviert ist. Zudem würde mir ja eine Bullet-Liste nicht reichen, vermutlich auch nicht, wenn man diese Ausgabe über die allgemeine Vorlagenprogrammierung bearbeitete. Bei letzterer habe ich mich ebenfalls umgeschaut, das gewünschte Ergebnis zu produzieren, habe jedoch keine Möglichkeit gefunden. Fällt euch noch etwas ein? Besten Dank für den Rat! :-) Liebe Grüße, —Martin (WMDE) (Disk.) Wikipedia:Lua/Werkstatt#c-Martin Rulsch (WMDE)-2020-07-24T16:01:00.000Z-Categorymembers11Beantworten

Das geht grundsätzlich mit keinerlei Funktion, weil die Einträge in einer Kategorie dem Wikitext nicht bekannt sind.
Das Maximum sind die in Hilfe:Spezialseiten/Liste mit X bei „Einbindbar“ versehenen Spezialseiten, aber auch dann erfolgt die Anzeige der Elemente nur in der zusammengestellten Seite – die aufgezählten Einträge selbst sind aus dem Wikitext heraus nicht zugänglich.
Wenn man sich überlegt, was für Konsequenzen sowas für den Cache der Wikitext-Seite hätte, wird auch schnell klar, warum sich da keiner drauf einlassen würde.
VG --PerfektesChaos Wikipedia:Lua/Werkstatt#c-PerfektesChaos-2020-07-24T16:17:00.000Z-Martin Rulsch (WMDE)-2020-07-24T16:01:00.000Z11Beantworten
Hm, okay, alles klar. Aber mit API-Abfragen, Skript und Bot wäre es natürlich schon möglich, da nicht live aktualisiert würde. Dann denke ich mal in diese Richtung weiter, danke. Grüße, —Martin (WMDE) (Disk.) Wikipedia:Lua/Werkstatt#c-Martin Rulsch (WMDE)-2020-07-27T15:05:00.000Z-PerfektesChaos-2020-07-24T16:17:00.000Z11Beantworten

Ist das mit Lua besser zu machen

Hallo, es betrifft ein Modul in den commons, aber ich kann doch auch hier um einen Rat fragen? Ich will versuchen, verständlich zu formulieren um was es geht. Es geht um das, was ich topics nannte. Es handelt sich um ca. 40 codes, zu denen in möglichst allen Sprachen die entsprechenden Begriffe su finden sind. Seit längerem habe ich damit ein Problem: die zuständige Vorlage Igen/top ist inzwischen mehr als 500K mal transkludiert, so dass ich sehr zögere, eigentlich erforderliche Editierungen, Erweiterungen und Änderungen vorzunehmen. Ich suche nach einer Abhilfe, dass nicht bei jedem Edit die Server belastet werden.
Es heisst, dass Implementierungen in Lua wesentlich schneller ablaufen können. Vielleicht wäre eine Lösung mit mw.loadData am besten, besser als die Codierung in einer Vorlagensprache, aber davon weiss ich bisher noch gar nichts.

Deshalb habe ich bisher nur Variationen in Vorlagensprache untersucht. Als bisherige Idee denke ich, es wäre schon gut, wenn nicht jede kleine Editierung auf alles wirkt, weil nicht alle topics in allen Sprachen in dieser einen Vorlage eingetragen sind.

Die eine Möglichkeit, zu jeder Sprache eine Untervorlage mit jeweils allen topics zu erzeugen, scheint weniger gut; jede Arbeit an der englischen Version schlägt wieder voll durch. Da scheint die andere Möglichkeit sinnvoller, in Untervorlagen nach topic (statt nach Sprache) zu verzweigen, in denen die einzelnen Sprachübersetzungen stehen; bei den meisten Änderungen (zusätzliche Übersetzungen) bleibt das ohne Server-Auswirkungen. Nur wenn ein neuer topic-code eingeführt würde, belastet das die Hauptvorlage. Ich würde vielleicht auch die (recht stabile) englische Entschlüsselung in der Hauptvorlage lassen, und nur bei anderen Sprachen die jeweilige topic-Untervorlage ansteuern, in der alle Übersetzungen stehen.

Es könnte also im Prinzip so ähnlich aussehen:

{{#switch:{{lc:{{{1|}}}}}
|c={{#if:{{int:lang}}|en|{{W|coat of arms}}|{{Igen/top_c}}}}
|d={{#if:{{int:lang}}|en|{{W|diagram}}     |{{Igen/top_d}}}}
|e={{#if:{{int:lang}}|en|{{W|emblem}}      |{{Igen/top_e}}}}
....

(statt {{int:lang}} würde der Parameter {{{lang}}} verwendet, der von der aufrufenden Vorlage mitgegeben wird; es gibt auch noch einen zweiten Parameter, der den Fall des Nichtfindens regelt.)

In Igen/top_c etc. sind alle Übersetzungen, mit dem nicht-verlinkten englischen Begriff als default.

Es ist noch nicht alles fertig überlegt, und vielleicht hat wer bessere Ideen; deshalb wende ich mich an dieses Forum der Lua-Experten. -- sarang사랑 Wikipedia:Lua/Werkstatt#c-Sarang-2020-08-05T11:04:00.000Z-Ist das mit Lua besser zu machen11Beantworten

Bevor ich dazu im Detail Stellung nehmen würde, stellen sich mir zwei Rückfragen, da ich noch niemals was mit der inhaltlichen Angelegenheit zu tun hatte:
  1. Wie oft pro Seite kann es zu einer Einbindung kommen? Gesichert immer nur höchstens einmal, oder beliebig oft, und gebräuchlich schon mal mehr- und vielfach?
  2. Kann das ausschließlich in Commons oder auch in anderen Wikis verwendet werden?
VG --PerfektesChaos Wikipedia:Lua/Werkstatt#c-PerfektesChaos-2020-08-05T12:21:00.000Z-Sarang-2020-08-05T11:04:00.000Z11Beantworten
Es kann auch mehrmals eingebunden sein, zwar meist nur einmal, aber mit abnehmender Häufigkeit auch mehrmals; meist genau einmal, und dass es 20- bis 30mal gebraucht wird ist derart selten dass es sich kaum zu berücksichtigen lohnt - da habe ich auch keine Optimierungen überlegt. Ich schätze dass es in 98 bis 99 % der Fälle bei einem Mal bleibt.
Theoretisch könnte es überall verwendet werden, aber es wird nur mit Dateien in Commons eingesetzt, die natürlich überall angezeigt werden können.
Mir geht es um die Serverbelastung, wenn an dieser so stark frequentierten Vorlage die notwendige Wartung vorgenommen wird. Es fehlen noch eine grosse Menge Übersetzungen, und wenn einige Sprachkundige sich daranmachen so dass eine Zeitlang immer wieder neue Versionen dazukommen, sollte das bereits mit einer weniger Serverlast-kritischen Vorlage geschehen.
Wenn da als Nebenerscheinung eine elegante Lösung auch noch schneller läuft, umso besser − deswegen frage ich hier; doch ist IMHO das Zeitverhalten bei der Einbindung kein so wesentliches Kriterium. Danke -- sarang사랑 Wikipedia:Lua/Werkstatt#c-Sarang-2020-08-05T13:14:00.000Z-PerfektesChaos-2020-08-05T12:21:00.000Z11Beantworten

Es gibt hier keine eindeutige Antwort.

  1. Nachteile – warum besser nicht nach Lua?
    • Personal: Erfahrungsgemäß gibt es in den Projekten 100× mehr Benutzer, die Vorlagensyntax beherrschen würden, als solche die Lua können.
      • Heißt: Je mehr auf Lua umgestellt ist, desto kleiner ist die Zahl der Menschen, die das noch warten und pflegen könnten, und diese kleine Gruppe ist auf ewig dafür verantwortlich, immer mehr Lua-Module zu pflegen, die ihre Vorgänger mal programmiert hatten, und diese weiterhin am Laufen zu halten und neue Anforderungen einzupflegen.
    • Migrationsaufwand
      • Es muss eine Neuprogrammierung von irgendwem geschrieben werden.
      • Hat erstmal lausig viele Parameter und Parameterwerte, die man zunächst alle verinnerlichen muss. Wahrscheinlich ist es dann, wenn man das System erstmal durchschaut hätte, gar nicht soooo schwierig, aber da muss man erstmal hinkommen.
      • Damit sowas überhaupt verantwortet werden kann, muss auf WP:BETA erstmal eine Simulation aufgebaut werden, in der alle vorstellbaren Situationen durchgespielt werden und schlauerweise automatisiert das Ergebnis gemäß bisheriger und neuer Programmierung miteinander verglichen wird.
    • If it is not broken, don’t fix it.
      • Alte Weisheit der Programmierer, hat sich bewährt.
      • Wenn es kein tatsächlich beobachtetes echtes Problem gibt, sollte man eine robust funktionierende Software nicht anfassen und sich lieber freuen, dass alles klappt.
  2. Vorteile – was spräche für Lua?
    • Übersichtlichere und hier vermutlich tatsächlich effizientere Programmierung.
      • Es ist nicht jede Umstellung auf Lua automatisch effizienter, weil der Einsatz eines Moduls erstmal Eintrittsgeld kostet, das dann zunächst mit Überschuss wieder erwirtschaftet werden muss, aber hier wäre es durch die vielen switch mit Sicherheit gegeben.
      • Die Programmierung in Lua ließe sich robuster und pflegeleichter für Erweiterungen gestalten.
    • Performance
      • Würde sich aber nur auszahlen, wenn vielfach oder auf sehr großen Seiten eingebunden.
      • Weil hier eher auf sehr kleinen Dateibeschreibungsseiten und dann eher ein einziges Mal eingebunden, hat die einzelne Dateibeschreibungsseite wenig davon.
      • In riesigen Artikeln oder Galerien mit Dutzenden von Einbindungen wäre das ein anderes Spiel. Die Dateibeschreibungsseiten stoßen sicher deswegen nicht an Limits.
    • Server-Belastung nach Änderung
      • Tja, eine schlaue Lua-Lösung könnte dem schon einen Gefallen tun, weil das Einpflegen einzelner Änderungen sich dann nicht sofort auf jede Seite auswirken und sie veralten lassen würde.
      • Gemeint wäre commons:Data:TemplateData/Soft redirect.tab, das teilweise 70 Übersetzungen kennt, aber wo eine Veränderung den Cache der einbindenden Seiten erstmal nicht beeinflussen würde.
      • Problem ist umgekehrt: Wenn nicht jede Veränderung sofort alle einbindenden Seiten (halbe Million) beeinflusst, dann bekommt die momentan gelesene das erst mit, wenn sie sowieso aus dem Cache verschwunden war und neu aufgebaut oder manuell gepurged wird.
      • Wenn es die einzelne Seite aber gar nicht interessiert, ob zu irgendeinem anderen Dateityp in irgendeiner Sprache die der momentane Leser ohnehin nicht wissen will kürzlich eine Änderung vorgenommen wurde, dann ist das auch egal.
    • Andere Projekte
      • Die eben skizzierte Internationalisierung braucht nur ein einziges Mal zentral gepflegt zu werden, wirkt sich aber auf alle WMF-Wikis aus.
      • Das hier lebt auch davon; genauso frr:Vorlage:Softredirect aber auch al dente

VG --PerfektesChaos Wikipedia:Lua/Werkstatt#c-PerfektesChaos-2020-08-05T14:47:00.000Z-Ist das mit Lua besser zu machen11Beantworten

Ach, und da war ja noch was ganz am Anfang:
  • „aber ich kann doch auch hier um einen Rat fragen?“
In allen Werkstätten hier, LWS, Vorlagen-WS, Technik-WS kann jeder um Rat fragen; muss noch nicht mal zu einem WMF-Wiki sein. Deutsch- oder englischsprachig wäre willkommen, ansonsten gäbe es ein Problem.
Ob jemand antworten mag, ist ja Sache der Werkstattmitarbeiter. Fragen darf jeder; wenn keiner Lust hat einem Fremdprojekt zu antworten dann halt nicht.
Commons ist aber etwas, wovon wir hier seit vielen Jahren massiv profitieren, und soweit es nur Lua-technisch ist und nicht um inhaltliche Prozeduren der Commons-Insider geht antworten wir hier halt deutschsprachig.
Generell werden alle deutschsprachigen Anfragen zu WMF-Wikis in unseren Werkstätten aber gleichrangig behandelt werden.
VG --PerfektesChaos Wikipedia:Lua/Werkstatt#c-PerfektesChaos-2020-08-05T14:57:00.000Z-PerfektesChaos-2020-08-05T14:47:00.000Z11Beantworten
Danke für die ausführlichen Antworten! Zwar habe ich es so ähnlich vermutet, nachdem ich darüber gelesen habe, aber nun habe ich es bestätigt dass in diesem einen Fall Lua zwar möglich ist, aber die ohnehin sehr einfache Struktur (fast ohne Logik) kaum übersichtlicher machen kann, und auch im Zeiterhalten eher keine Vorteile bringen wird.
Du hast zu sehr vielen Aspekten und sehr ausführlich Stellung bezogen; manches habe ich gewusst, einiges vermutet und den Rest weiss ich nun auch − oder weiss nun, wo ich nachsehen kann.
Also werde ich Lua vor allem in den Fällen einsetzen, wo es Dinge erleichtert oder überhaupt erst ermöglicht, und anderes mit konventioneller Vorlagensyntax angehen. Ich habe bereits komplexe und umfangreiche Anforderungen mit Lua erfolgreich in den Griff bekommen, das hier angesprochene Problem liegt ganz anders - nahezu keine Logik, aber grosses Datenaufkommen und vor allem die Rücksicht auf die Serverauslastung.
Also werde ich die Aufteilung in ca. 40 subtemplates weiter projektieren, und auch den mir von dir genannten Links ein Augenmerk schenken. Vielen Dank dass du dir solche Mühe gegeben hast, jedenfalls hilft es mir abzuwägen was sinnvoll ist. Und etwas zu diskutieren ist allemal besser als es einsam zu entscheiden -- sarang사랑 Wikipedia:Lua/Werkstatt#c-Sarang-2020-08-05T15:53:00.000Z-PerfektesChaos-2020-08-05T14:57:00.000Z11Beantworten

Vorlage mit API-Call für Denkmalliste Wuppertal

Hallo zusammen, bis vor einiger Zeit wurde Vorlage:DLWuppertal genutzt, um den Link auf die einzelnen Wuppertaler Denkmäler auf wuppertal.de zu generieren – mit der Denkmalnummer als Parameter. Das funktioniert seit einem Update der dortigen Struktur nicht mehr, seither wird mit einer internen ID gearbeitet. Auf Diskussion:Villa Espenlaub habe ich mit den Wuppertaler Kollegen ein wenig brain-gestormt, herausgekommen ist folgende Idee, zu der ich gerne wüsste, ob sie mit Lua praktikabel ist.

  • Ungefähre Idee (Pseudocode):
 AJAX/GET SearchCount($denkmalnummer)
  if result == 1
    AJAX/GET  SearchData($denkmalnummer)
    redirect(result.url)
  else 
    AJAX/GET  SearchData($denkmalnummer)
    … hier weiß ich noch nicht so recht weiter – redirect(??)
    kommen wir von hier irgendwie zu der Original-Suchergebnisliste? 
    Die Ausgabe ist zwar HTML aber nicht so richtig schick.

Kann man mit Lua in einer Vorlage überhaupt API Calls machen? Und wäre das halbwegs performant? Oder gibt's vielleicht noch weitere Ideen/Möglichkeiten? Die Daten stehen auch in Open Data bereit, so dass man vielleicht auch eine Matchingliste zwischen IDs und Denkmalnummern machen könnte, aber das wäre so … naja. Und das Problem mit den 1:n-Denkmälern wäre damit auch noch nicht gelöst. Fragen über Fragen … 

Merci für eure Gedanken dazu! --elya (Diskussion) Wikipedia:Lua/Werkstatt#c-Elya-2020-09-25T20:34:00.000Z-Vorlage mit API-Call für Denkmalliste Wuppertal11Beantworten

So wie ich das verstehe, brauchen wir eine Zwischenstation, eine Seite wie bei GeoHacks (Beispiel), die dann die nicht so richtig schicke-Ausgabe in einer attraktiven Tabelle umwandelt - falls zu einer Denkmalnummer mehrere Einträge in der Datenbank sind. --Atamari (Diskussion) Wikipedia:Lua/Werkstatt#c-Atamari-2020-09-25T20:50:00.000Z-Elya-2020-09-25T20:34:00.000Z11Beantworten
Ich würde einfach vorschlagen, dass man für den ersten Fall die interne Nummer als weiteren Parameter in die Vorlage:DLWuppertal aufnimmt und daraus die URL berechnet. Diese Nummer könnte man dann per Botlauf ergänzen (und auch ändern, falls sie sich doch mal ändert). Wie oft kommt der zweite Fall vor?--Count Count (Diskussion) Wikipedia:Lua/Werkstatt#c-Count Count-2020-09-25T21:15:00.000Z-Atamari-2020-09-25T20:50:00.000Z11Beantworten
das könnte Atamari wissen, ansonsten könnte man mal versuchen, eine Auswertung zu fahren. Dieses Tabellenfragment aus der 1:n-Rückgabe wird ja auf wuppertal.de dann in die Suchergebnisseite eingespielt und bekommt dort sein Design. Bevor man für uns eher nichtssagende IDs nachträgt, auch per Bot, lohnt es sich vielleicht doch, noch mal Kontakt zu den Verantwortlichen für die Entwicklung der Denkmalseiten auf wuppertal.de aufzunehmen, vielleicht gibt es ja noch ein paar geheime Parameter, die uns weiterhelfen könnten. Count Count, zu meiner Frage: ginge denn sowas grundsätzlich mit Lua, mal abgesehen davon, ob wir den Aufwand treiben wollen? --elya (Diskussion) Wikipedia:Lua/Werkstatt#c-Elya-2020-09-26T08:18:00.000Z-Count Count-2020-09-25T21:15:00.000Z11Beantworten
In Lua-Modulen hat man nur eine sehr eingeschränkte API zu Verfügung, so kann man auf andere Wikiseiten und Wikidata zugreifen, aber nicht auf externe Webservices. Soweit ich das sehe, ist noch nicht einmal ein Aufruf von Webservices, die auf der Toolforge gehostet sind, möglich. Details siehe mw:LUAREF --Count Count (Diskussion) Wikipedia:Lua/Werkstatt#c-Count Count-2020-09-26T09:54:00.000Z-Elya-2020-09-26T08:18:00.000Z11Beantworten
ok, danke, dann war das eh eine Schnapsidee von mir. Ich versuche mal, an die Entwickler in Wuppertal zu kommen, bevor wir hier richtig Aufwand reinstecken (und die Listen mit weiteren Params füllen). --elya (Diskussion) Wikipedia:Lua/Werkstatt#c-Elya-2020-09-26T10:55:00.000Z-Count Count-2020-09-26T09:54:00.000Z11Beantworten

@Elya: Die Beantwortung war bereits völlig korrekt. Nochmal zusammengefasst:

  • Lua macht auch nichts anderes als Vorlagen.
    • Auch Vorlagen werden zu praktisch statischem Wikitext expandiert.
  • Es gibt mit Lua einige besondere Zugriffe, aber insgesamt nur:
    • Seiten im eigenen Wiki
    • commons:File: commons:Data: d:Q d:P d:L
    • Datum und Uhrzeit, wie auch anderweitig verfügbar, und ähnliche allgemeine Wiki-Eigenschaften.
  • Zugriff auf andere Wikis derselben Farm gibt es grundsätzlich nicht.
  • Die Tools/Cloud ist nicht ohne Grund ein HTTP-mäßig von den WMF-Wikis völlig abgekoppeltes Gebilde; das kennen wir überhaupt nicht. Hat Sicherheitsgründe, deshalb bewusst ein Fremdling.
  • Ebenfalls aus Sicherheits- sowie URV-Gründen enthält eine Wiki-Seite immer nur Inhalte, die selbst im Wiki hinterlegt wären, jedoch niemals irgendwelche Inhalte, die dynamisch und unkontrolliert aus irgendeiner fremden Website stammen, auch keine fremden Bilder und Medien, noch Daten oder Texte.

VG --PerfektesChaos Wikipedia:Lua/Werkstatt#c-PerfektesChaos-2020-09-26T15:38:00.000Z-Vorlage mit API-Call für Denkmalliste Wuppertal11Beantworten

Ja, danke. Wenn man etwas drüber nachdenkt, ist es natürlich auch klar. Bin halt zu verliebt in die Möglichkeiten von externen APIs. Mail an Wuppertal ist übrigens raus, wir können hier auch erst mal zumachen. --elya (Diskussion) Wikipedia:Lua/Werkstatt#c-Elya-2020-09-26T16:12:00.000Z-PerfektesChaos-2020-09-26T15:38:00.000Z11Beantworten
@Elya: Der Thread hier ist etwas verstaubt, allerdings habe ich in der "Technik-Werkstatt" den Thread Extension:External Data angelegt (eigentlich für die Abfrage der WP-eigenen API). Diese Extention ist derzeit auf Wikimedia nicht installiert, obgleich man sie bereits anno 2009 groß ins Gespräch gebracht hat. Das Argument mit den "immer nur eigenen Inhalten aus Sicherheitsgründen" zielt ja schon mal ins Blaue, da solche externen Anbindungen mit OpenStreetMap schon längst auf sämtlichen Wikipedias erfolgreich implementiert sind. Welche externen Quellen man da zuläßt, hängt natürlich von deren Zuverlässigkeit ab. Grüße, Uwe Martens (Diskussion) Wikipedia:Lua/Werkstatt#c-Uwe Martens-2021-04-26T13:32:00.000Z-Elya-2020-09-26T16:12:00.000Z11Beantworten
@Uwe Martens, ah, das war hier auch noch offen … das konkrete Thema hatte sich für uns tatsächlich erledigt – Wuppertal hat uns eine brauchbare URL mit ID-Parameter programmiert. Die Frage ist bei externen APIs dann noch, ob man die z.B. im ANR oder nur im Projektnamensraum zulässt. --elya (Diskussion) Wikipedia:Lua/Werkstatt#c-Elya-2021-04-26T17:05:00.000Z-Uwe Martens-2021-04-26T13:32:00.000Z11Beantworten
 Info: Hier findet ein Mega-Projekt dazu statt, auf der dortigen Disk bin ich auch schon vorstellig geworden. Grüße, Uwe Martens (Diskussion) Wikipedia:Lua/Werkstatt#c-Uwe Martens-2021-04-28T07:12:00.000Z-Elya-2021-04-26T17:05:00.000Z11Beantworten
  • Es handelt sich nicht darum, dass „man sie bereits anno 2009 groß ins Gespräch gebracht hat“, sondern um einen einzelnen Beitrag eines einzelnen Programmierers auf einem Hack-a-thon im Jahr 2009.
  • Scrollt man etwa auf mw:Extension:Cite ganz nach unten, dann findet sich dort ein Hinweisbaustein, dass diese auf WMF-Wikis verwendet wird.
    • Gleiches auf mw:Extension:External Data zeigt keinen derartigen Baustein.
    • Heißt: Es gab noch niemals ein WMF-Wiki, in dem diese PHP-Programmierung verwendet worden wäre.
  • OSM steht unter einer Sorte von CC-Lizenz, welche die Weiterverwertung des Kartenmaterials erlaubt.
    • Das WMF-Management ist verantwortlich dafür, dass die lizenzrechtlichen Bedingungen bei Weiterverwertung von OSM-Material usw. durch die Kartographer eingehalten werden.
    • Mit „hängt natürlich von deren Zuverlässigkeit ab“ hat dies primär nix am tun.
  • Jede Wikipedia-Seite steht unter einer CC-Lizenz, die es ermöglicht, die Inhalte samt aller eingebundener Medien weiterzuverwenden. So auch alle anderen WMF-Wikis.
    • Bilder und andere Mediendateien müssen auf Commons oder lokal der lizenzrechtlichen Überprüfung standhalten, andernfalls werden sie gelöscht.
  • Die mw:Extension:External Data würde es ermöglichen, von jeder beliebigen Website jeden beliebigen Inhalt in eine Wikipedia-Seite einzubinden, ohne dass dies kontrollierbar und insbesondere die lizenzrechtlichen Konsequenzen zu sichern wären.
    • Da die beliebigen fremden Webseiten jedoch nicht gesichert ausnahmslos alle unter einer freien Lizenz stehen, wird die in Rede stehende Extension niemals auf einem WMF-Wiki aktiviert werden.
  • Die Bewertung Das Argument mit den "immer nur eigenen Inhalten aus Sicherheitsgründen" zielt ja schon mal ins Blaue – das manifestiert nicht gerade die erforderliche Sachkunde, aus der sich die Berechtigung zur Abgabe derartiger Urteile herleiten ließe. Die „Sicherheitsgründe“ meinen nicht, dass der eigene Computer sich nicht in eine Rauchwolke auflösen solle, sondern dass zuverlässig verhindert werden muss, dass auf einer Wiki-Seite Inhalte ohne Lizenz dargestellt würden, somit primär nur eigene Inhalte der WMF. Oder auf sicherem Weg eingespeiste freie Geo-Informationen. Noch nicht einmal die Cloud-Tools der WMF gewähren diese Sicherheit, weil dort jeder Programmierer alles mit anstellen kann.
VG --PerfektesChaos Wikipedia:Lua/Werkstatt#c-PerfektesChaos-2021-04-29T17:23:00.000Z-Uwe Martens-2021-04-28T07:12:00.000Z11Beantworten
Aha! Von "nur eigene Inhalte der WMF" rückst Du jetzt schon mal ab zu dem Paradoxon "primär nur" - wie aufschlußreich! Fakt ist: Es werden bereits fremde Inhalte in der Wikipedia eingebunden, und die vorgeblichen Sicherheitsaspekte haben auch nichts mit der Lizenz zu tun, da die Frage nach der Lizenz ein urheberrechtlicher, nicht aber ein sicherheitstechnischer ist. In Deinen eigenen Ausschweifungen manifestiert sich gerade nicht die erforderliche Sachkunde, aus der sich die Berechtigung zur Abgabe derartiger Urteile herleiten ließe - um einmal Deinen schwulstigen Jargon zu verwenden! Dabei sind die Freiwilligen auf OSM nicht mehr oder weniger zuverlässig, als die Wikipedianer, vielmehr gibt es bei deren Arbeit öfters etwas zu bemängeln bzw. wird man eigentlich genötigt, sich da selbst anzumelden, um die Geodaten zu aktualisieren. Da die Extension:External Data nicht installiert ist, habe ich ja überhaupt die Diskussion eröffnet, auch das ist also nichts neues! Zunächst wäre es mal eine Frage der Vorlagenprogrammierung, welche Quelle man einbindet, nötigenfalls könnte man die Extention selber (oder eine Kopie davon) einfach auf Wikipedia-interne API-Abfragen beschränken, was ja PHP-seitig auch ein Pipifax ist. Aber das ist hier sicher der falsche Diskussionsort dafür. Ähm, und obwegen Deines anmaßenden Tons: Für mich hier EOD! -- Uwe Martens (Diskussion) Wikipedia:Lua/Werkstatt#c-Uwe Martens-2021-04-29T20:09:00.000Z-PerfektesChaos-2021-04-29T17:23:00.000Z11Beantworten

Module:Cite Q

In der Englischsprachigen Wikipedia gibt es inzwischen en:Module:Cite Q, um Literaturangaben aus Wikidata zu erzeugen. Siehe dieser Blogartikel. Kann jemand das für die deutschsprachige Wikipedia übernehmen? -- Nichtich (Diskussion) Wikipedia:Lua/Werkstatt#c-JakobVoss-2021-01-15T18:11:00.000Z-Module:Cite Q11Beantworten

Sortierfunktion für tables

Ich habe mit table.sort rumgespielt und mich gefragt, ob es womöglich schon irgendwo eine Funktion gibt, die eine modifizierte lexikalische alphabetische Sortierung in einer Lua-Tabelle ermöglicht?! Mit table.sort gelingt natürlich nur die Sortierung nach ASCII-Werten, was bei deutschen Namen und Begriffen gleich ein Chaos ergibt.–XanonymusX (Diskussion) Wikipedia:Lua/Werkstatt#c-XanonymusX-2021-02-01T22:59:00.000Z-Sortierfunktion für tables11Beantworten

Du müstest auf beide Terme Sort.lex() anwenden.
Als Service-Bibliotheksfunktion Sort.compare(a1,a2,apply,adapt) ist es bislang nicht vorgesehen, weil diese Zwei-Zeilen-Programmierung sehr trivial wäre und bislang niemand dessen bedürft hätte. Hingegen belastet eine überflüssige Funktion die Ladezeit für sämtliche anderen Anwendungen.
Weil Anwendungen der Sortierfunktion typischerweise nicht eine banale Sequenz von Zeichenketten betreffen, sondern auch Komponentenzugriffe nach dem Muster obj[a1].key mit obj[a2].key miteinander verglichen werden müssen, also die Komponente key des Elements obj[a1] gegen das Element obj[a2], schreibt sich aber sowieso jeder seine banale Zwei-Zeilen-Sortierfunktion für sein Problem selbst:
local function compare( all, a1, a2 )
    return mw.ustring.upper( Sort.lex( all[ a1 ].s ) )  >
           mw.ustring.upper( Sort.lex( all[ a2 ].s ) )
end -- compare()
Tatsächlich kann es dann aber auch noch komplizierter werden, etwa weil die Situation abgefangen werden muss dass die Komponente .s nicht belegt wäre oder Zahlen auftreten könnten, ggf. in anderen Komponenten.
VG --PerfektesChaos Wikipedia:Lua/Werkstatt#c-PerfektesChaos-2021-02-02T19:43:00.000Z-XanonymusX-2021-02-01T22:59:00.000Z11Beantworten
Ach ja, um das Ganze zu beschleunigen, hatte ich auch schon für alle Elemente ein obj[x].sort einmalig vorab aus obj[x].key ermittelt, wodurch für jedes Element die string.upper( Sort.lex( obj[x].key ) ) nur einmalig ausgerechnet werden musste und dann immer nur die vereinfachte Komponente sort zu vergleichen war. Hat man dies nicht gemacht, dann wird bei jedem Vergleichsvorgang (der ja vielfach im Verlauf des Sortieralgorithmus vorkommt) der gesamte Runterbrechvorgang für beide Komponenten ausgeführt, also irgendwie Anzahl der Elemente zum Quadrat oft statt vorab einmalig Anzahl der Elemente oft.
VG --PerfektesChaos Wikipedia:Lua/Werkstatt#c-PerfektesChaos-2021-02-02T19:52:00.000Z-PerfektesChaos-2021-02-02T19:43:00.000Z11Beantworten
Danke, die Sort.lex hatte ich schon im Auge! Ich notiere mir das mal, wenn ich dann das nächste Mal dazu komme. Immerhin sind in meinem Testfall die möglichen Terme alle bekannt (deutsche Ländernamen), Zahlen oder sonstige Sonderzeichen kommen keine vor; das erleichtert die Sache. Gruß–XanonymusX (Diskussion) Wikipedia:Lua/Werkstatt#c-XanonymusX-2021-02-04T23:10:00.000Z-PerfektesChaos-2021-02-02T19:52:00.000Z11Beantworten
Dazu wäre es hilfreich im Hinterkopf zu haben, wie Sortieralgorithmen funktionieren.
  • Ein sehr plumper macht folgendes bei fünf Elementen:
    • Vergleiche 1. mit 2.
    • Vergleiche 1. mit 3.
    • Vergleiche 1. mit 4.
    • Vergleiche 1. mit 5.
    • Vergleiche 2. mit 3.
    • Vergleiche 2. mit 4.
    • Vergleiche 2. mit 5.
    • Vergleiche 3. mit 4.
    • Vergleiche 3. mit 5.
    • Vergleiche 4. mit 5.
  • Das sind zehn Vergleiche, und wenn im Inneren Sort.lex() für jedes verglichene Element aufgerufen werden soll, dann sind das 20 Aufrufe der doch ziemlich aufwändigen Funktion.
  • Beim typischen Fall n² sind es n(n-1) Zugriffe auf einen Sortierschlüssel und ansonsten so ähnlich mit Logarithmus.
  • Deshalb ist es besser, die 5 Sortierschlüssel vorab zu berechnen und die Vergleichsfunktion möglichst effizient zu halten.
  • Ähnlich mit Anschriften:
e = haus[ i ]
e.sort = string.format( "%s %4d",
                        mw.ustring.upper( Sort.lex( e.str ) ),
                        tonumber( e.nr ) or 0 )
VG --PerfektesChaos Wikipedia:Lua/Werkstatt#c-PerfektesChaos-2021-02-10T16:45:00.000Z-XanonymusX-2021-02-04T23:10:00.000Z11Beantworten

nachgewiesen in oder URL der Fundstelle als String

Auf Vorschlag von FriedhelmW von der Vorlagenwerkstatt hierhin verschoben:
Wie kann ich den Inhalt von nachgewiesen in oder URL der Fundstelle als String erhalten, um diesen dann mittels der Vorlage:Str find mit einem Parameterwert zu vergleichen oder auf diesen anzuwenden? Mit {{#invoke:Wikidata|claim|P231|references=only}} erhalte ich einen formatierten Einzelnachweis, der für die Vorlage:Str find nicht zugänglich zu sein scheint. --Leyo Wikipedia:Lua/Werkstatt#c-Leyo-2021-04-21T19:35:00.000Z-nachgewiesen in oder URL der Fundstelle als String11Beantworten

Hast du schon {{#invoke:Wikidata|claim|P231|qualifier=P854}} probiert? --FriedhelmW (Diskussion) Wikipedia:Lua/Werkstatt#c-FriedhelmW-2021-04-21T19:49:00.000Z-Leyo-2021-04-21T19:35:00.000Z11Beantworten
Ah, das geht nicht. --FriedhelmW (Diskussion) Wikipedia:Lua/Werkstatt#c-FriedhelmW-2021-04-21T20:02:00.000Z-Leyo-2021-04-21T19:35:00.000Z11Beantworten
Schade. Aus meiner Sicht müsste es – neun Jahre nach dem Start von Wikidata – (so oder ähnlich) möglich sein, auf jedes Element im betreffenden Item zuzugreifen.
Use Case: Beispielartikel bzw. zugehörige Informationen --Leyo Wikipedia:Lua/Werkstatt#c-Leyo-2021-04-21T20:16:00.000Z-FriedhelmW-2021-04-21T20:02:00.000Z11 PS. Anhand dieser Prüfung soll entschieden werden können, ob CAS-Nummern auf ihren Eintrag in der CAS Common Chemistry Database verlinkt werden (falls in der Datenbank ein Eintrag zur betreffenden CAS-Nummer vorliegt) oder nicht. Betroffen sind global zehntausende Artikel.Beantworten

@Lydia Pintscher (WMDE): Die für eine solche Abfrage benötigten Lua-Funktionen scheinen nicht zu existieren. Könnte WMDE als Initiator von Wikidata da allenfalls Unterstützung leisten? --Leyo Wikipedia:Lua/Werkstatt#c-Leyo-2021-05-03T07:51:00.000Z-nachgewiesen in oder URL der Fundstelle als String11Beantworten

  • Ich bin mir ziemlich sicher, dass das mit Lua durchaus zugänglich ist, bloß nicht in Form einer "fertigen" Funktion die Du einfach aufrufen könntest. Du bräuchtest also ein separates Modul dafür.
  • Abgesehen davon verstehe ich Dein Anliegen noch immer nicht so recht. Ist Lua/Vorlagencode überhaupt der ideale Weg hier?
  • Ganz generell: die Kultur in der deutschsprachigen Wikipedia gegenüber neuem Code (Lua, Javascript) ist ziemlich ablehnend, weshalb kaum jemand etwas neues beiträgt oder jemand anderem helfen möchte.
Viele Grüße, MisterSynergy (Diskussion) Wikipedia:Lua/Werkstatt#c-MisterSynergy-2021-05-03T09:05:00.000Z-Leyo-2021-05-03T07:51:00.000Z11Beantworten
Besten Dank für deine Antwort! Ich könnte mir fast nicht vorstellen, dass es mit Lua prinzipielll nicht möglich ist.
Es geht darum, CAS-Nummern z.B. in der Vorlage:Infobox Chemikalie dann mit ihrem jeweiligen Eintrag in der CAS Common Chemistry Database (Herausgeber ist die offizielle Vergabestelle von CAS-Nummern) zu verlinken, sofern dieser existiert. Der einzige URL-Parameter ist die CAS-Nummer. Sofern diese Belege (siehe weitere Informationen dazu) vorhanden sind, soll ein Link erzeugt werden, sonst nicht.
Die Gefahr von Vandismus ist klein, da im schlimmsten Fall fälschlicherweise ein Link auf einen nicht vorhandenen Eintrag erzeugt wird oder umgekehrt. Hingegen wäre der Aufwand für die Wikipedia-Sprachversionen unnötig hoch, bei jeder CAS-Nummer die Prüfung extra nochmals vorzunehmen. --Leyo Wikipedia:Lua/Werkstatt#c-Leyo-2021-05-03T09:25:00.000Z-MisterSynergy-2021-05-03T09:05:00.000Z11Beantworten
Wieso möchtest Du denn dafür in Wikidata-Fundstellen nachschauen? Bei welchen Aussagen sollen diese Fundstellen vorhanden sein? Ich nehme pauschal mal an, dass es um das mit dem entsprechenden Wikipedia-Artikel, der die Infobox einbindet, verbundenen Wikidata-Objekt geht. —MisterSynergy (Diskussion) Wikipedia:Lua/Werkstatt#c-MisterSynergy-2021-05-03T09:31:00.000Z-Leyo-2021-05-03T09:25:00.000Z11Beantworten
Also nur, weil ich das hier am Rande mitbekommen habe, aber auch im JSON-Format läßt sich sowas bei Wikidata abrufen, auch als API-Call möglich (s. Wikidata:Data access). Ich habe ja bereits in anderer Sache angeregt, die Extension:External Data zu aktivieren, damit könnte man dann beliebige Daten aus so einer API-Abfrage extrahieren und mit Lua-Vorlagen weiter verarbeiten. -- Uwe Martens (Diskussion) Wikipedia:Lua/Werkstatt#c-Uwe Martens-2021-05-03T10:59:00.000Z-MisterSynergy-2021-05-03T09:31:00.000Z11Beantworten
Ist hier nicht nötig, mit Lua hat man direkt Zugriff auf alle Daten eines verbundenen oder per Q-ID ausgewählten Wikidata-Objektes. Siehe hier für Dokumentation. —MisterSynergy (Diskussion) Wikipedia:Lua/Werkstatt#c-MisterSynergy-2021-05-03T11:09:00.000Z-Uwe Martens-2021-05-03T10:59:00.000Z11Beantworten
Na dann - muß die Abfrage wikibase.entityExists( id ) ja "nur noch" in die entsprechenden Vorlagen eingearbeitet werden... Nehme ich mal an. ;-) PS: Mit dem API-Call und einer einfachen if-Konstruktion könnte man als Workaround durchaus auch ohne String-Extraktion eine true-Rückgabe prüfen (bzw. mit einer if-not-Konstruktion, wenn eine Abfrage false bzw. "Bad Request" ergibt). Allerdings gilt es ja wiederum als "Sünde", bei den zu erwartenden zahlreichen Aufrufen jedesmal die projekteigene API zu bemühen, anstatt die Daten direkt abzufragen. Aber die entsprechenden Module müßten halt erst mal aktiviert werden. Substituiert, also permanent im Quelltext eingebunden, könnte so ein API-Workaround mit einem Botlauf aber bedenkenlos bewerkstelligt werden, je nach Programmierung des Bots sogar ganz ohne die zuvor verlinkte Extension:External Data. Wenn natürlich nicht der Wikidata-Eintrag an sich, sondern nur der CAS-Eintrag aus der Info-Box mit der externen CAS-Datenbank abgeglichen werden sollte, so wäre wieder eine String-Extraktion nötig bzw. kann das ja substituiert mit einem Bot z.B. in PHP leicht bewerkstelligt werden. Für einen dynamischen Abgleich samt Linkgenerierung aus der Info-Box-Vorlage wäre das natürlich ein Paradebeispiel eines Anwendungsfalls der Extension:External Data, was ich in dem zuvor verlinkten Disk-Abschnitt ergänzt habe. PPS: Die Vorlage:Infobox Chemikalie ist hier übrigens 10.059 mal verlinkt, also eine recht überschaubare Sache. Braucht man für so einen einmaligen Durchlauf eigentlich ein Bot-Flag? -- Uwe Martens (Diskussion) Wikipedia:Lua/Werkstatt#c-Uwe Martens-2021-05-03T19:22:00.000Z-MisterSynergy-2021-05-03T11:09:00.000Z11Beantworten
IMHO sollte es ein dynamischer Abgleich mit Wikidata sein, da durchaus später für zusätzliche CAS-Nummern ein Eintrag in der Datenbank erstellt werden könnte. So würde auch ein Botlauf entfallen. --Leyo Wikipedia:Lua/Werkstatt#c-Leyo-2021-05-03T22:04:00.000Z-Uwe Martens-2021-05-03T19:22:00.000Z11Beantworten
 Info: Kann ich nur befürworten, allerdings wird es für die dynamische Einbindung zwingend der Extension:External Data benötigen. Übrigens verfügt auch Common Chemistry über eine API (offenbar seit März diesen Jahres, leider ohne jegliche Doku), deren einzelnen Parameter mit der Extension:External Data sehr leicht geprüft werden könnten. Ein funktionierender API-Call sieht dann z.B. so aus, eine Abfrage eines nicht vorhandenen Eintrags ergibt "Detail not found". Mit vorgenanntem true-false-Workaround bzw. einer einfachen if-Konstruktion könnte man das also auch lösen, ohne irgendwas aus dem API-Call zu extrahieren. Wäre nur die Frage, mit welchem alternativen Tool/Modul man die Abfrage überhaupt machen kann, wenn nicht mit der Extension:External Data. -- Uwe Martens (Diskussion) Wikipedia:Lua/Werkstatt#c-Uwe Martens-2021-05-04T03:07:00.000Z-Leyo-2021-05-03T22:04:00.000Z11Beantworten
 Info: Der vorstehende Beitrag zielt lediglich darauf ab, auf irgendeine Weise Scheinbegründungen für die heißgeliebte Dulcinea-Extension zu konstruieren.
  • Es wird aus Lizenzgründen niemals nie nicht dazu kommen, dass mittels dieser Extension in irgendeine Seite eines Wiki der WMF irgendeine Information automatisch einfließt, die aus commonchemistry.cas.org oder sonst einem Nicht-WMF-CC-Wiki stammen würde.
  • Die gesamte Beteiligung an diesem Abschnitt bezweckt nur, diese Extension als angeblich notwendig zu verkaufen, nicht aber die tatsächliche Lösung der in diesem Abschnitt dargestellten Problematik.
  • Siehe oben und Special:Diff/211569514.
VG --PerfektesChaos Wikipedia:Lua/Werkstatt#c-PerfektesChaos-2021-05-04T06:14:00.000Z-Uwe Martens-2021-05-04T03:07:00.000Z11Beantworten
Scheinbar ist es dem vorstehenden Nutzer, der sich hier als Wächter der Technikwerkstatt gebiert und dem aber offenbar selber an einer Lösung der hiesigen Problematik nicht im Mindesten gelegen ist, entgangen, dass hier gerade nicht eine externe Einbindung erfolgen soll, sondern lediglich ein Abgleich. Der Verweis auf eine Lizenzproblematik schlägt also fehl. Die Notification in dem anderen Thread wurde übrigens weiter oben bereits verlinkt. --212.95.5.191 Wikipedia:Lua/Werkstatt#c-212.95.5.191-2021-05-04T08:26:00.000Z-PerfektesChaos-2021-05-04T06:14:00.000Z11Beantworten
Für einen dynamischen und damit dauerhaften Abgleich ist übrigens zu bedenken, daß mit jedem Seitenaufruf hierzupedia ein API-Call bei CAS erfolgen würde. Das könnten tausende API-Calls am Tag ergeben. Das müßte man mit denen erst mal abklären, denn wenn da zu viele Requests kommen, können sie einfach die Wikimedia-IPs blocken und das war's dann mit dem dynamischen Abgleich. Für die CAS-Verlinkungen tendiere ich daher eher zu einem Botlauf für eine substituierte Verlinkung, den man ja ggf. periodisch wiederholen kann. Bei Anlage neuer Artikel kann der CAS-Eintrag ja händisch geprüft werden. So ein einfacher Bot ist in ca. einer Stunde fertig aufgesetzt, mit den braven 5 Edits pro Minute würde der dann 1½ Tage laufen und die ganze Sache wäre erledigt. Frühestens am Wochenende könnte ich das testweise aufsetzen. Nichtsdestotrotz diskutiere ich die möglichen Anwendungsgebiete und ggf. die Bedingungen zur Aktivierung der "heißgeliebten niemals nicht" Extension:External Data weiterhin hier. 🤣🤣🤣 -- Uwe Martens (Diskussion) Wikipedia:Lua/Werkstatt#c-Uwe Martens-2021-05-05T06:02:00.000Z-212.95.5.191-2021-05-04T08:26:00.000Z11Beantworten
@Uwe Martens: Mir ist nicht klar, was Du mit „einem Botlauf für eine substituierte Verlinkung“ meinst bzw. wo der Bot welche Erkenntnisse hinschreiben soll. Über die Art und Weise, wie die Verlinkung der CAS-Nummern in den Chemoboxen technisch umgesetzt werden soll, herrscht nämlich durchaus keine Einigkeit. Diskussion dazu unter Benutzer_Diskussion:Cactus26#Botaufgabe_für_CAS-Nummern und auf Leyos BD.--Mabschaaf Wikipedia:Lua/Werkstatt#c-Mabschaaf-2021-05-05T17:42:00.000Z-Uwe Martens-2021-05-05T06:02:00.000Z11Beantworten
Servus und danke für den Hinweis! Ich habe da mal eine Nachricht hinterlassen. Die Vorlage:CASRN kannte ich nicht, ich dachte, da soll ein klassischer Weblink eingefügt werden, macht programmiertechnisch aber keinen Unterschied. Bez. dynamisch/substituiert siehe bitte zwei Absätze von mir drüber. Dynamisch erfolgt mittels der Infobox-Vorlage bei jedem Wikiseitenaufruf ein Abgleich mit der CAS-Datenbank (wenn hierfür die nötige Extension zum Abruf externer Daten wie oben dargelegt aktiviert würde), was Traffic zu CAS generiert - dafür müßte aber nur ein einziges Mal die Vorlage aktualisiert werden. Substituiert bedeutet dauerhaft im Quelltext als Weblink (oder auch über die Vorlage:CASRN) geparst - dafür müßten allerdings alle 10059 Wikiseiten, die die Infobox verwenden, einzeln mit einem Bot aktualisiert werden. Ich hätte das interessehalber gerne gemacht, da ich schon andere Bots (Tradingbots etc.) programmiert habe und da schon einiges an passendem Framework habe. Aber ich gehe doch davon aus, daß sich die Diskutanten auf der BD von Cactus26 schon einig werden und Cactus26 das übernimmt? Grüße, Uwe Martens (Diskussion) Wikipedia:Lua/Werkstatt#c-Uwe Martens-2021-05-05T21:49:00.000Z-Mabschaaf-2021-05-05T17:42:00.000Z11Beantworten
@IP: Ich gehe davon aus, dass PerfektesChaos durchaus an „einer Lösung der hiesigen Problematik“ gelegen ist, aber er halt gegenwärtig keine kennt oder keine Zeit hat. --Leyo Wikipedia:Lua/Werkstatt#c-Leyo-2021-05-05T19:20:00.000Z-212.95.5.191-2021-05-04T08:26:00.000Z11Beantworten
Nehmen wir den oben erwähnten Beispielartikel: In der Infobox ist die CAS-Nr. 5471-63-6 angegeben. Im WD-Item ist bei dieser CAS-Nr. Common Chemistry als Fundstelle angegeben (wie bei diesen tausend anderen). Daher soll die CAS-Nr. in der Infobox mit https://commonchemistry.cas.org/detail?cas_rn=5471-63-6 verlinkt werden.
Gegenbeispiel: Die CAS-Nr. 1421927-52-7 ist in der CAS Common Chemistry Database nicht enthalten, so dass kein Link eingefügt werden soll. Entsprechend fehlt im WD-Item Common Chemistry als Fundstelle. --Leyo Wikipedia:Lua/Werkstatt#c-Leyo-2021-05-03T11:14:00.000Z-MisterSynergy-2021-05-03T09:31:00.000Z11Beantworten

 Info: In der en-WP, wo zuvor alle CAS-Nummer in der Chembox und der Drugbox verlinkt waren – also unabhängig davon, ob bei Common Chemistry ein Eintrag existiert – habe ich nun zumindest die Links auf CAS-Nr., die im WD-Item keine belegte CAS-Nr. haben, weggekriegt (Chembox, Drugbox). Leider kann nicht unterschieden werden, ob der Beleg von Common Chemistry ist (1,3-Diphenylisobenzofuran (Q42750891)) oder nicht (4,5-Dichlor-1,2,3-dithiazol-1-iumchlorid (Q27251702)). --Leyo Wikipedia:Lua/Werkstatt#c-Leyo-2021-05-05T22:07:00.000Z-nachgewiesen in oder URL der Fundstelle als String11Beantworten

Ich hatte oben ja vorgeschlagen, das direkt auf CAS über deren API zu prüfen. -- Uwe Martens (Diskussion) Wikipedia:Lua/Werkstatt#c-Uwe Martens-2021-05-05T22:17:00.000Z-Leyo-2021-05-05T22:07:00.000Z11Beantworten
Wird nicht passieren. —MisterSynergy (Diskussion) Wikipedia:Lua/Werkstatt#c-MisterSynergy-2021-05-05T22:28:00.000Z-Uwe Martens-2021-05-05T22:17:00.000Z11Beantworten
Ähm, sollte ich den Bot aufsetzen (s.o.), dann wird das mit Sicherheit passieren! Leyos Einbringen, keine 404-Links zu setzen, halte ich nämlich für sinnvoll - auch, wenn man dann die CAS-Datenbank vielleicht halbjährlich nochmal abgleicht. Hierfür würde mein Bot dann nämlich gleich eine Liste mit nicht vorhandenen CAS-Einträgen anlegen, so daß es im Bedarfsfalle nur weniger Edits braucht, die man sogar dann händisch vornehmen könnte. Es könnte mir bei der Beantragung eines Botflags noch nicht mal irgendjemand ins Zeug pfuschen, wenn mein Bot diverse Bearbeitungen nicht vornimmt, nämlich Links auf 404-Seiten setzen. Und daß es weniger sinnvoll ist, das via Vorlage dynamisch/dauerhaft mit jedem Wikiseitenaufruf abzugleichen, habe ich ja nun dargelegt. -- Uwe Martens (Diskussion) Wikipedia:Lua/Werkstatt#c-Uwe Martens-2021-05-06T02:57:00.000Z-MisterSynergy-2021-05-05T22:28:00.000Z11Beantworten
Das war keine dumme Frage. Ja, die Items sind aktuell (wenige Wochen alt). Wie da nachzulesen ist, hat Egon Willighagen vom Chemical Abstracts Service (CAS) ein Spreadsheet mit allen Einträgen erhalten und hat diese bei Wikidata eingepflegt. Er steht in Kontakt mit CAS und wird künfige Änderungen (die nicht so oft geschehen werden) nachführen.
Aus diesem Grund sollten die Informationen bei Wikidata genutzt werden, statt in allen Wikipedia-Sprachversionen redundate Arbeiten durchzuführen. --Leyo Wikipedia:Lua/Werkstatt#c-Leyo-2021-05-06T07:14:00.000Z-Uwe Martens-2021-05-06T02:57:00.000Z11Beantworten
Danke für den Hinweis! Allerdings frage ich mich dann, wieso u.a. der von Dir selbst monierte WD-Eintrag 4,5-Dichlor-1,2,3-dithiazol-1-iumchlorid (Q27251702) einen 404-CAS-Link bereitstellt und Du das als Problem darstellst. Sollte WD also in absehbarer Zeit eine verlässliche Quelle über das Vorhandensein der CAS-Einträge werden, dann könnte man das Ganze natürlich dynamisch/via Vorlage einbinden. Dann wäre allerdings auch die Bot-Anfrage bei Cactus26 obsolet. -- Uwe Martens (Diskussion) Wikipedia:Lua/Werkstatt#c-Uwe Martens-2021-05-06T07:37:00.000Z-Leyo-2021-05-06T07:14:00.000Z11Beantworten
Bei Wikidata werden automatisch alle CAS-Nr. verlinkt, wie dies auch bei anderen Identifikatoren der Fall ist. Hier geht es darum, ob bei der CAS-Nr. eines Items Commons Chemistry als Fundstelle angegeben ist.
Bei einer Minderheit der Artikel mit Chemobox gibt es mehrere CAS-Nr., weshalb dort eine Prüfung via Fundstelle im zugehörigen WD-Item nicht geht. --Leyo Wikipedia:Lua/Werkstatt#c-Leyo-2021-05-06T12:56:00.000Z-Uwe Martens-2021-05-06T07:37:00.000Z11Beantworten
Es gibt dort auf WD einen Link auf den CAS-Eintrag, der aber mitunter ins Leere zielt. Ich dachte, das sei Dein Wunsch gewesen, daß eben keine Links auf nicht existierende CAS-Seiten generiert werden, eingangs schriebst Du: "Anhand dieser Prüfung soll entschieden werden können, ob CAS-Nummern auf ihren Eintrag in der CAS Common Chemistry Database verlinkt werden (falls in der Datenbank ein Eintrag zur betreffenden CAS-Nummer vorliegt) oder nicht" und hast auf die Einfügung eines solchen Weblinks referenziert. Wenn kein CAS-Eintrag vorhanden ist (bzw. der Weblink ins Leere zielt), dann ist folglich auch keine CAS Fundstelle angegeben. Also ich bitte dann, jetzt nochmal klarzustellen, was genau das Problem ist und wie es am besten gelöst werden soll. Derzeit blicke ich nicht mehr durch, sorry! -- Uwe Martens (Diskussion) Wikipedia:Lua/Werkstatt#c-Uwe Martens-2021-05-06T13:17:00.000Z-Leyo-2021-05-06T12:56:00.000Z11Beantworten
d:Special:Diff/1399203270 --Leyo Wikipedia:Lua/Werkstatt#c-Leyo-2021-05-06T13:30:00.000Z-Uwe Martens-2021-05-06T13:17:00.000Z11Beantworten
Ich weiß nicht, was Du mir mit dem Link sagen willst, den ich ja gerade zuvor selber gepostet habe. Wenn ein Abgleich über die WD-Items wegen möglicher Mehrfach-Einträge nicht möglich sein soll (was technisch aber evtl. doch möglich wäre, sofern das oben genannte Lua-Modul oder hilfsweise die Extension:External Data überhaupt aktiviert wären), dann wäre ja wohl ein CAS-API-Call zum Abgleich im Botlauf nun die adäquate Lösung. Wenn neben dem Link in der Infobox noch weitere Weblinks im Artikel zu generieren wären, wie auf der BD von Cactus26 dargetan, so wäre das auch kein großer Mehraufwand. Alternativ könnte man auf WD leergehende Links löschen, aber wenn es eh Probleme geben soll mit Mehrfach-Einträgen, wird es wohl bei dem lokalen Botlauf auf DE:WP bleiben. -- Uwe Martens (Diskussion) Wikipedia:Lua/Werkstatt#c-Uwe Martens-2021-05-06T13:39:00.000Z-Leyo-2021-05-06T13:30:00.000Z11Beantworten
Diese Diskussion ist aufgrund der Nebendiskussionen unübersichtlich geworden. Es geht mir hier um die Artikel mit nur einer CAS-Nummer. Wenn im zugehörigen WD-Item bei der CAS-Nummer als Fundstelle die CAS Common Chemistry (Q18907859) angegeben ist, dann soll der Link erzeugt werden, sonst nicht. So kompliziert ist dies nun auch wieder nicht. --Leyo Wikipedia:Lua/Werkstatt#c-Leyo-2021-05-06T13:46:00.000Z-Uwe Martens-2021-05-06T13:39:00.000Z11Beantworten
Ja, und wenn so eine Fundstelle angegeben ist, dann zielt auch der Link auf den CAS-Eintrag nicht ins Leere (bzw. zielt der Link ins Leere, wenn keine CAS-Fundstelle angegeben ist). Also wäre der Botlauf mit CAS-API-Call die Lösung (wenn denn ein Abgleich über die WD-Items nicht möglich sein soll, wie Du sagst). Sind wir jetzt dann zu einem Punkt gekommen, an den man einen Lösungsweg konkret diskutieren kann? Wenn ja, dann setze ich dieser Tage einen Bot auf und lasse die 50 obligatorischen Testedits durchlaufen, sofern sich bei Cactus26 nichts tut. -- Uwe Martens (Diskussion) Wikipedia:Lua/Werkstatt#c-Uwe Martens-2021-05-06T14:14:00.000Z-Leyo-2021-05-06T13:46:00.000Z11Beantworten

Ist ja kaum auszuhalten hier, da schreib ich lieber mit meinen äußerst rudimentären Lua-Kenntnissen den passenden Code, und sei es erstmal nur zur Demonstration: Modul:Benutzer:MisterSynergy/test; die einzige Funktion des Moduls gibt 1 zurück wenn ein Link generiert werden soll, oder  (leerer String) wenn kein Link generiert werden soll. Den Link müsste die Infobox also selbst zusammenbauen, etwa in der Art: {{#if: {{#invoke:Benutzer:MisterSynergy/test|is_cas_linkable|cas={{{CAS|}}}}} | [https://commonchemistry.cas.org/detail?cas_rn={{{CAS|}}} {{{CAS|}}}] | {{{CAS|}}} }} anstelle von {{{CAS}}} in der Zeile 63 des Infobox-Codes. Via Special:ExpandTemplates kann man das auch erstmal testen.
Jetzt bin ich allerdings nicht besonders gewillt, das fertig für den Produktiveinsatz zu machen, oder auf immer und ewig die Wartungsverantwortlichkeit für das Modul zu übernehmen, wie es hier gelegentlich für neuen Code gefordert wird. —MisterSynergy (Diskussion) Wikipedia:Lua/Werkstatt#c-MisterSynergy-2021-05-06T14:23:00.000Z-nachgewiesen in oder URL der Fundstelle als String11Beantworten

@MisterSynergy: Herzlichen Dank! Das sieht schon mal super aus. Ich habe ein paar Testeinfügungen im Quelltext von Artikeln gemacht (nur Vorschau). Vor einem Einbau in die Chemobox müssen mindestens noch folgende Fälle berücksichtigt werden:
  • Verhalten bei CAS-Nr. im Artikel ≠ CAS-Nr. im Item
  • Umgang mit Artikeln, die nicht nur 1 nackte CAS-Nr. im Parameter enthalten
Dazu brauche ich noch etwas Zeit und beim zweiten Punkt ggf. die Hilfe der Vorlagenwerkstatt.
Weiter möchte ich die Möglichkeit zur Verwendung des Moduls in der Vorlage:Substanzinfo prüfen. --Leyo Wikipedia:Lua/Werkstatt#c-Leyo-2021-05-06T14:51:00.000Z-MisterSynergy-2021-05-06T14:23:00.000Z11Beantworten
@MisterSynergy: Tja, wäre nur die Frage, ob das die Problematik mit den Mehrfacheinträgen (unklar, ob in einigen Artikeln und/oder auf einigen WD-Einträgen) behebt. Kann ich nicht nachprüfen, da ich schon keine entsprechenden Mehrfach-Einträge kenne. Wenngleich Leyo einen Abgleich über WD gewünscht hatte, so waren die Mehrfach-Einträge bzw. die angenommene Problematik des Abgleichs derselben ein Ausschlußkriterium für diesen Abgleich. Aber da Du hier in einer Überheblichkeit meinst, eh alles selber lösen zu können, klinke ich mich gerne wieder aus, ich habe genug zu tun, Cactus26 wird da auch nicht anderer Meinung sein! In den vier Stunden, in denen Du Dein Lua-Modul da geschustert hast, hätte ich den Bot jedenfalls drei Mal aufgesetzt, und der hätte auch Mehrfach-Einträge in Artikeln geprüft und verlinkt, und das nicht nur in der Infobox. Aber egal. Ich wünsche jedenfalls schon mal viel Spaß beim händischen Einpflegen des Lua-Moduls oder einer entsprechend aktualisierten CAS-Vorlage für alle Nennungen der CAS-Nummern in 10059 Artikeln (Referenzen, Fließtext etc.)! Also ich bin hier raus. -- Uwe Martens (Diskussion) Wikipedia:Lua/Werkstatt#c-Uwe Martens-2021-05-06T15:01:00.000Z-Leyo-2021-05-06T14:51:00.000Z11Beantworten
Ich habe Mehrfacheinträge berücksichtigt. Das kann man mehrfach mit verschiedenen CAS-Nummer aufrufen, und mehrere (oder keine) CAS-Nummern im Wikidata-Objekt sind auch kein Problem. —MisterSynergy (Diskussion) Wikipedia:Lua/Werkstatt#c-MisterSynergy-2021-05-06T15:15:00.000Z-Uwe Martens-2021-05-06T15:01:00.000Z11Beantworten
Das ist gut, allerdings kann ich es nicht testen, da ich keine exemplarischen Artikel kenne. Wenn, dann wäre Dein Lua-Modul eh in die CAS-Vorlage einzuarbeiten, wie ich oben (bzw. Mabschaaf unten) schrieb. Die Einfügung der CAS-Vorlage an sich (in die Infoboxen oder wohin im Artikel auch immer) bliebe aber immer noch ein Bot-Auftrag, egal, ob der Bot jetzt die Existenz der CAS-Einträge prüfen muß oder nicht. Mein Bot hätte die CAS-Vorlage eben nur eingepflegt, wenn der CAS-API-Call ein Ergebnis liefert, mit einer direkten WD-Abfrage hätte der Bot die aktualisierte CAS-Vorlage ausnahmslos in alle Artikel einzupflegen. Aber das möchte dann doch bitte Cactus26 machen, das war sein ursprünglicher Auftrag. Letztlich wollte ich aber nur mal darauf hinweisen, daß natürlich eine tausendfache Einbindung einer dynamischen/dauerhaften Abfrage der WD-Einträge (und das nur zur Generierung oder Nichtgenerierung eines Weblinks) sowohl traffic- als auch performancemäßig eine erhöhte Serverlast auf den Wikimedia-Servern erzeugt. Eine permanente Einbindung der (unveränderten) CAS-Vorlage für Einträge mit vorhandenem CAS-Eintrag wäre aus meiner Sicht so oder so die bessere Lösung. Zumindest, wenn man die Wahl hat. -- Uwe Martens (Diskussion) Wikipedia:Lua/Werkstatt#c-Uwe Martens-2021-05-06T15:55:00.000Z-MisterSynergy-2021-05-06T15:15:00.000Z11Beantworten
Serverlast auf Wikimedia-Servern ist seit 10 Jahren oder so kein echtes Thema mehr. Abgesehen davon wird nicht bei jedem Artikelaufruf durch einen Leser eine Abfrage durchgeführt, sondern es wird beim Speichern einer neuen Version das Ergebnis gecacht und danach werden die Leser aus dem Cache bedient; wenn zwischenzeitlich bei Wikidata was verändet wird, dann wird der Cache ebenfalls erneuert. —MisterSynergy (Diskussion) Wikipedia:Lua/Werkstatt#c-MisterSynergy-2021-05-06T17:44:00.000Z-Uwe Martens-2021-05-06T15:55:00.000Z11Beantworten
Vorlagen werden mit Sicherheit nicht gecached, aktualisiere ich eine Vorlage, werden alle Einbindungen augenblicklich aktualisiert, und wenn es hunderttausende Einbindungen sind. So schnell könnte kein Servercache der Welt aktualisiert werden. Außerdem würde es der Cache der DE:WP überhaupt nicht mitkriegen, wenn auf Wikidata etwas verändert wird, jedenfalls gibt es da keine Logik oder Überwachungsprozeß, der projektweite Einbindungen überwacht. Am Besten sieht man das schon auf der Archivseite der VM, wo man ständig manuell den Servercache aktualisieren muß, um die Rotlinks wegzukriegen. -- Uwe Martens (Diskussion) Wikipedia:Lua/Werkstatt#c-Uwe Martens-2021-05-07T01:43:00.000Z-MisterSynergy-2021-05-06T17:44:00.000Z11Beantworten
Das ganze ist recht flexibel und sicher noch anpassbar – erstmal ist das bloß eine Demo, damit Du überhaupt mal ausprobieren kannst.
Das Modul benötigt als Input eine lokale CAS-Nummer (zum Beispiel aus einem Vorlagenparameter) und sagt für diese CAS-Nummer dann, ob ein Link erzeugt werden kann. Dazu muss diese CAS-Nummer im Wikidata-Objekt in CAS-Nummer (P231) mit nicht-missbilligtem Rang vorzufinden sein und eine Fundstelle wie oben gewünscht haben.
Da die Rückgabe boolsch ist, kannst Du das praktisch überall einsetzen wo Du eine einzelne CAS-Nummer als Input zur Verfügung stellen kannst. —MisterSynergy (Diskussion) Wikipedia:Lua/Werkstatt#c-MisterSynergy-2021-05-06T15:08:00.000Z-Leyo-2021-05-06T14:51:00.000Z11Beantworten
(BK)Ich hatte auf der BD von Cactus26 für Änderungen an der Infobox schon mal mein Veto eingelegt und bitte darum, dass dieses vor irgendwelchen Änderungen in der Chemobox berücksichtigt wird.
Mein Weg wäre schlicht der, dass die hier gefundene Prüfung auf den vorhandenen Common-Chemistry-Eintrag einzig und alleine in die Vorlage:CASRN eingebaut wird und gleichzeitig alle CAS-Nummern, die irgendwo in der deWP stehen (Box, Fließtext, Tabelle, wherever), per Botauftrag in diese Vorlage eingeschlossen werden.
Würde man den Codeschnipsel dagegen in die Infoboxen einbauen, wären alleine was im weiteren Sinne Chemie-Artikel betrifft 10 unterschiedliche Infobox-Vorlagen betroffen und selbst dann ergäbe sich für die absolut zulässigen Mehrfach-Einträge im Parameter CAS (wie bei Rhamnose) keine Lösung.--Mabschaaf Wikipedia:Lua/Werkstatt#c-Mabschaaf-2021-05-06T15:14:00.000Z-MisterSynergy-2021-05-06T15:08:00.000Z11Beantworten
Ja, das hört sich nach einer sinnvollen Strategie an. —MisterSynergy (Diskussion) Wikipedia:Lua/Werkstatt#c-MisterSynergy-2021-05-06T15:18:00.000Z-Mabschaaf-2021-05-06T15:14:00.000Z11Beantworten
@MisterSynergy Das i-Tüpfelchen wäre dann noch: Lässt sich Dein Code so erweitern, dass zunächst das passende WD-Item zur CAS-Nummer gesucht wird und dann in diesem Item geprüft wird, ob ein Common-Chemistry-Link sinnvoll ist? Damit wäre nämlich völlig egal, auf welcher WP-Seite die CAS-Nummer steht (und damit, welche CAS-Nummer dieser Seite auf WD zugeordnet ist).--Mabschaaf Wikipedia:Lua/Werkstatt#c-Mabschaaf-2021-05-06T15:23:00.000Z-MisterSynergy-2021-05-06T15:18:00.000Z11Beantworten
Das ist meines Wissens nicht möglich. Eine solche Rückwärtssuche ist zwar mit SPARQL oder Cirrus/Wikidata-Mediawiki-API einfach möglich, aber da kommen wir mit Lua nicht dran.
Was man machen könnte, wäre ein Abgleich mit einem beliebigen Objekt, nicht bloß mit dem verbundenen Objekt. Dazu müsstest Du aber die Q-ID schon wissen und explizit mit angeben.
Was wäre denn überhaupt das Einsatzszenario für eine beliebige Platzierung? Es gibt ja überlicherweise einen gewissen Kontext, in dem die CAS angezeigt wird. —MisterSynergy (Diskussion) Wikipedia:Lua/Werkstatt#c-MisterSynergy-2021-05-06T17:05:00.000Z-Mabschaaf-2021-05-06T15:23:00.000Z11Beantworten
Wenn die CAS-Nr. innerhalb der Vorlage:Infobox Chemikalie in die Vorlage:CASRN eingefügt wird, weiss letztere nicht, dass sie sich im Artikel zu dieser CAS-Nummer befindet (also nicht in einem Stoffgruppen-Artikel oder so) und das zugeordnete Item also zu dieser CAS-Nr. gehört. Das ist anders, wenn der Parameter direkt durch die Infobox übergeben wird. Aus diesem Grund ist für mich der Einsatz der Vorlage:CASRN innerhalb der Infobox höchstens eine Notlösung für die ca. 20 % der Artikel mit mehreren CAS-Nummern. --Leyo Wikipedia:Lua/Werkstatt#c-Leyo-2021-05-06T17:33:00.000Z-Mabschaaf-2021-05-06T15:14:00.000Z11Beantworten
@Leyo: Das ist schlicht falsch. Du kannst ja mal {{#invoke:Wikidata|pageId}} in die Vorlage:CASRN einfügen und dir dann die Vorschau eines Artikels anzeigen lassen, bei dem schon jetzt die Vorlage verwendet wird (wie z.B. Bullvalen). Du wirst die zugeordnete Q-Nummer erhalten.--Mabschaaf Wikipedia:Lua/Werkstatt#c-Mabschaaf-2021-05-06T18:38:00.000Z-Leyo-2021-05-06T17:33:00.000Z11Beantworten
Ich meine nicht das! Beim Parameter CAS in der Infobox Chemikalie ist die CAS-Nr. diejenige, die zum WD-Item gehört (sofern da keine Fehlzuordnung besteht). Als Parameter in der Vorlage:CASRN (die auch z.B. in Stoffgruppen-Artikeln eingesetzt wird) weiss diese Vorlage nicht, ob sie sich im Artikel befindet, der zu dieser CAS-Nr. gehört und entsprechend, ob das verknüpfte WD-Item zu dieser CAS-Nr. gehört. --Leyo Wikipedia:Lua/Werkstatt#c-Leyo-2021-05-06T18:57:00.000Z-Mabschaaf-2021-05-06T18:38:00.000Z11Beantworten
Um das hier der Vollständigkeit halber nachzutragen: Ich kann Deinen Ausführungen nicht folgen. Die Vorlage:CASRN verfügt über keinerlei Logik, es wird lediglich ein Weblink aus dem eingebundenen Parameter erzeugt. Ob Du das neuerliche LUA-Modul, was ja nur eine true/false Logik ergänzt, direkt in die Infobox-Vorlage einpflegst oder eben nur in die Vorlage:CASRN (und diese dann in die Infobox-Vorlage) spielt logikmäßig überhaupt keine Rolle. Da kommt es allein auf die Zuverlässigkeit der Einträge in der Infobox an. Und die Einbindung (der um das LUA-Modul ergänzten) Vorlage:CASRN in die jeweiligen Infoboxen der Artikel erfolgt ja hoffentlich mit einem zuverlässigen Bot (wenn man das nicht irgendwie in die jeweiligen Infobox-Vorlagen selber einarbeiten kann). Wenn denn überhaupt die sonstige Problematik mit Mehrfacheinträgen in Artikeln und/oder WD-Einträgen mit dem neuerlichen LUA-Modul tatsächlich behoben werden kann (ich habe es noch nicht zustande gebracht das zu testen). Siehe dazu ansonsten meine sonstigen Bedenken oben (17:55, 6. Mai 2021). -- Uwe Martens (Diskussion) Wikipedia:Lua/Werkstatt#c-Uwe Martens-2021-05-07T02:22:00.000Z-Leyo-2021-05-06T18:57:00.000Z11Beantworten
Ich versuche es noch mal für dich: Wenn eine Vorlage, die in diversen Typen von Artikeln eingesetzt wird/werden soll, innerhalb der Infobox eingesetzt wird, weiss diese nicht, ob der Parameterwert (CAS-Nr.) CAS-Nummer (P231) im den betreffenden Artikel zugeordneten WD-Item entsprechen sollte (weil es die CAS-Nr. des artikelgegenständlichen Stoffs ist) oder nicht (wenn es ein Stoffgruppen-Artikel mit CAS-Nr. zu mehreren Stoffen ist → Beispiel). Es geht hier nicht nur um die Frage Link auf Common Chemistry, ja oder nein, sondern z.B. auch Wartungskategorien usw. --Leyo Wikipedia:Lua/Werkstatt#c-Leyo-2021-05-07T08:57:00.000Z-Uwe Martens-2021-05-07T02:22:00.000Z11Beantworten
Da ich im Bereich Chemie kaum tätig bin, kann ich das nicht ganz nachvollziehen. Wenn da eine CAS-Nummer steht und ein Webeintrag auf den Seiten von CAS besteht (bzw. die CAS-Nummer auf dem WD-Eintrag als Fundstelle angegeben ist), soll ein Link erzeugt werden, anderenfalls nicht. Das ist die einfache Logik des zur Debatte stehenden Lua-Moduls (bzw. wäre das die Logik meines Bots, wenn er mit einem CAS-API-Call auf Existenz eines CAS-Webeintrages prüfen würde). Wenn Du eine darüber hinausgehende Logik benötigst, z.B. bedingter oder unbedingter Ausschluß oder Einschluß von gewissen CAS-Nummern (z.B. eben Stoffgruppen-CAS-Nummern), dann mußt Du den Programmierern eine genaue Anweisung geben, wie diese Logik auszusehen hat. Ein CAS-API-Call z.B. könnte einen etwaig bestehenden Stoffgruppen-Eintrag auf Stichworte prüfen und dann ggf. die Linkbildung ausschließen. Wie in das neuerliche Lua-Modul eine solche weitere Logik implementiert werden könnte und ob das nur an Hand des zu prüfenden WD-Eintrages geht oder ob sich so eine Logik durch das Einbinden des Lua-Moduls nur in die Infobox (oder deren Vorlage) bzw. eben nicht in die Vorlage:CASRN ergibt, weiß ich nicht. Ich kann nur sagen, daß diese Infobox-Vorlagen ziemlich komplex sind und daß ich da so meine Zweifel habe, ob man da in den Vorlagen selber noch groß weitere Vorlagen/Module implementieren kann (das müßte man im Einzelnen prüfen). Ich hatte ja dazu tendiert, die Vorlage:CASRN in die Infoboxen der jeweiligen Artikel per Botlauf einzufügen. Ob dabei die Vorlage:CASRN nun um das neuerliche Lua-Modul erweitert wird oder ein externer Bot abhängig von einem CAS-API-Call selektive Edits vornimmt (womit man das Lua-Modul nicht bräuchte), ist dann eine andere Frage. -- Uwe Martens (Diskussion) Wikipedia:Lua/Werkstatt#c-Uwe Martens-2021-05-07T10:05:00.000Z-Leyo-2021-05-07T08:57:00.000Z11Beantworten

@MisterSynergy: Wenn ich es richtig verstehe, nimmt dein Modul immer das WD-Item des Artikels, aus welchem es abgerufen wird. Wäre es für dich ein grosser Aufwand, als optionalen Parameter die Angabe eines WD-Items einzubauen? So könnte das Modul in der Vorlage:Substanzinfo verwendet werden. Dort angegebene CAS-Nr. sind nicht diejenigen des Artikels, in dem sie eingebunden sind, sondern dem mit Wikidata angegebenen WD-Item zugeordnet. --Leyo Wikipedia:Lua/Werkstatt#c-Leyo-2021-05-07T21:36:00.000Z-nachgewiesen in oder URL der Fundstelle als String11 PS. Würde dein Modul eigentlich auch in anderen WP-Sprachversionen funktionieren?Beantworten

Nein, das wäre kein großer Aufwand. Ich könnte es so erweitern, dass beim Modulaufruf optional eine Q-ID angegeben wird, die dann anstelle des verbundenen Wikidata-Objektes genutzt wird.
Das Modul hat keine Abhängigkeiten von anderen lokalen Modulen. Soweit ich das verstehe, ist die Lua-Umgebung an allen anderen Wikimedia-Wikis hinreichend ähnlich, so dass das dort auch funktionieren sollte. Es macht auch nichts besonderes, sondern implementiert im Wesentlichen die von Dir eingangs angefragte Logik. —MisterSynergy (Diskussion) Wikipedia:Lua/Werkstatt#c-MisterSynergy-2021-05-07T21:57:00.000Z-Leyo-2021-05-07T21:36:00.000Z11Beantworten
Danke für die prompte Antwort! Die Verwendung des Moduls wäre auch für andere WP-Sprachversionen. In einigen werden gegenwärtig alle CAS-Nummern in Chemoboxen mit Common Chemistry verlinkt, bei anderen noch überhaupt keine. In der en-WP habe ich auf rudimentäre Weise zumindest einen Teil der toten Links eliminieren können (siehe Beitrag von 00:07, 6. Mai 2021). Allenfalls würde sich ein Produktivtest in der lb-WP mit ihren nur 24 Artikeln mit Chemobox anbieten. --Leyo Wikipedia:Lua/Werkstatt#c-Leyo-2021-05-07T22:22:00.000Z-MisterSynergy-2021-05-07T21:57:00.000Z11Beantworten
Das würde implizieren, dass man Vorlage:CASRN optional auch eine Q-ID mitgeben können müsste, also etwa {{CASRN|74-82-8|Q37129}}. Im Modul müsste dann geprüft werden, ob beide zueinander passen (also die genannte CAS wirklich im Item steht) und falls ja, ob es auf WD den Link zu Common Chemistry gibt. Dann würde die verlinkte CAS zurückgegeben.
Fehlt dagegen die Angabe einer Item-ID ({{CASRN|74-82-8}}), wird das dem Artikel zugeordnete Item geprüft (CAS passt? Link vorhanden?).
Wäre mM für den Botbetreiber, der die nackten CAS-Nummern durch die Vorlage ersetzten soll, ein erheblicher Mehraufwand, weil jeweils auch noch die Q-IDs dazu gefunden werden müssen. Für einen menschlichen Bearbeiter, der bspw. in einer Tabelle alle CAS-Nummern via Vorlage verlinken will, ist das praktisch nicht machbar. :-/ --Mabschaaf Wikipedia:Lua/Werkstatt#c-Mabschaaf-2021-05-08T06:55:00.000Z-Leyo-2021-05-07T22:22:00.000Z11Beantworten
Für einen Bot wäre das nicht übermäßig aufwändig. Du kannst mit einem Abruf über SPARQL eine komplette Mappingtabelle bekommen und machst dann beim Ändern schnell einen Lookup, ob die CAS mit einem Wikidata-Objekt da drin steht. Programmiertechnisch halte ich den Mehraufwand für überschaubar. Allerdings müsste man das regelmäßig laufen lassen, um eventuelle Änderungen nachzuziehen oder vergessene Vorlageneinbindungen nachzutragen. —MisterSynergy (Diskussion) Wikipedia:Lua/Werkstatt#c-MisterSynergy-2021-05-08T07:27:00.000Z-Mabschaaf-2021-05-08T06:55:00.000Z11Beantworten
Ich denke, einem Bot kann man relativ einfach beibringen, die Infobox-Einträge zu ersetzen, aber alles was Tabellen oder gar Fließtext ist, dürfte ungleich schwerer werden. Dort müssen die CAS-Nummern ja erst mal sicher identifiziert werden, wofür es entweder Zeilen/Spaltenbeschriftungen oder den Kontext braucht...--Mabschaaf Wikipedia:Lua/Werkstatt#c-Mabschaaf-2021-05-08T07:30:00.000Z-MisterSynergy-2021-05-08T07:27:00.000Z11Beantworten
Ja, richtig. Wie häufig sind diese Fälle? In Tabellen könnte man eventuell was machen, vom Fließtext würde ich eher die Finger lassen mit jeder Art von Automatisierung. —MisterSynergy (Diskussion) Wikipedia:Lua/Werkstatt#c-MisterSynergy-2021-05-08T07:35:00.000Z-Mabschaaf-2021-05-08T07:30:00.000Z11Beantworten
Ich verstehe immer noch nicht den Sinn dieses ganzen Heckmecks! Es ist doch vollkommen egal bzw. unschädlich, ob bzw. wenn z.B. bei einer Stoffgruppen-CAS-Nummer nun ein Weblink erzeugt wird, oder nicht. Mit einem CAS-API-Call kann das per Bot geprüft werden und dann an jeder x-beliebigen Stelle im Artikel mit der bestehenden CAS-Vorlage verlinkt werden. Auch das muß man dann halt mal halbjährlich durchlaufen lassen für die Artikel, in denen keine CAS-Webeinträge gefunden wurden. Ohne dauerhaft mit abertausenden Artikeln Millionen von Modul-Aktivierungen und WD-Abfragen im Monat zu generieren. Stichpunkt Performance und Serverlast, s.o. (03:43, 7. Mai 2021, und bitte keine weiteren Diskussionen um den Server-Cache). Und da hier noch Probleme bez. des Fließtextes angesprochen wurden: Bei einem Botlauf wird die CAS-Nummer eh aus der Infobox extrahiert. Diese kann man dann im weiteren Quelltext suchen und ggf. verlinken. In diesem Zusammenhang wollte ich aber auch auf die Maßgabe für Weblinks und Einzelnachweise hinweisen, insofern es unzulässig ist, Weblinks im Fließtext einzuarbeiten. Hier wäre, wenn, dann ein Ref-Tag zu setzen. Auch das könnte ein Bot sehr einfach erledigen. Siehe dazu exemplarisch den Abschnitt Weblinks in Tabellenspalten im Orgelportal. -- Uwe Martens (Diskussion) Wikipedia:Lua/Werkstatt#c-Uwe Martens-2021-05-08T07:52:00.000Z-MisterSynergy-2021-05-08T07:35:00.000Z11Beantworten
@Uwe Martens: Entschuldige, aber ich finde es schon erstaunlich, mit welcher Entschiedenheit Du hier Statements ablieferst, die aber gleichzeitig erkennen lassen, dass Du die tatsächlichen Gegebenheiten nicht kennst:
Die Entscheidung, Links zu setzen ist durch Diskussion in der Redaktion Chemie längst gefallen, es geht hier nur um die beste technische Lösung, damit 404 liefernde Links eben nicht angeboten werden.--Mabschaaf Wikipedia:Lua/Werkstatt#c-Mabschaaf-2021-05-08T18:32:00.000Z-Uwe Martens-2021-05-08T07:52:00.000Z11Beantworten
Ja mir soll's recht sein! Woher soll ich wissen, welche Sonderregelungen sich der Fachbereich Chemie ausgenommen hat? Bisher stand lediglich zur Debatte, die insg. 10059 Artikel, welche die Vorlage:CASRN verwenden, auf Verlinkbarkeit zu prüfen. Dabei bin ich eigentlich davon ausgegangen, daß all diese Artikel über Infoboxen verfügen würden, in welchen diese CAS-Nummern ebenfalls verzeichnet sind (ob mit oder ohne Vorlage:CASRN). Wie ich oben (12:05, 7. Mai 2021) bereits sagte: Ihr müßt den Programmierern genaue Anweisungen geben, was gemacht werden soll. Wenn die Anweisung auch lautet, "verlinke direkt alle vorhandenen CAS-Einträge in Tabellen", dann ist das eine zusätzliche Arbeit, die erst mal als solche definiert werden muß. Wenn darunter auch Artikel sind, welche die Vorlage:CASRN gar nicht verwenden, dann muß alternativ bitte eine Kategorie angegeben werden, unter welcher sämtliche Artikel per Botlauf zu prüfen und ggf. zu überarbeiten sind. Wenn es für den Bot im Quelltext keine sonstigen eindeutigen Erkennungsmerkmale für eine CAS-Nummer gibt, dann wäre die genaue Logik anzugeben, an Hand derer diese Nummern zu finden sind. Ich nehme mal schwer an, es ist das Suchschema "1234-56-7" sowie "12345-67-8" mit beliebigen Zahlenfolgen. Ansonsten ist bitte das genaue Suchschema zu definieren. Unter welchen Bedingungen alternativ ein Ref-Link mittels Vorlage:Substanzinfo zu setzen wäre, ist bitte auch genau zu definieren! Da es sich dann um abertausende Verlinkungen handeln wird mit ungleich mehr Artikeln, als nur die, in denen die Vorlage:CASRN bereits eingebunden ist, rate ich dringenst davon ab, hier jedesmal dynamisch bei jedem Wikiseitenaufruf einen Abgleich mit den WD-Einträgen vorzunehmen! Die massive Beanspruchung der Serverkapazitäten an der restlichen Community vorbei, nur um irgendwelche (dann auch nur möglicherweise) aktuellen Weblinks zu erhalten, ist aus meiner Sicht ein absolutes No go! Gleiches gilt übrigens (unabhängig der Serverbelastung durch Aktivierung des Lua-Moduls) für die Inanspruchnahme eines etwaigen Server-Caches für Wikidata, zumal sich die Wikimedia hier externer Dienstleister bedient (ja, auch Cache-Server können überlastet bzw. unnötig beansprucht werden). Also bitte eine Zusammenfassung aller genauen Botaufgaben, dann setze ich dieser Tage gerne einen Bot auf, der die zu setzenden Weblinks (bzw. bereits mittels Vorlage:CASRN bestehende Weblinks) per CAS-API-Call (s. Beispiel) prüft und ggf. setzt oder ggf. bestehende entfernt (und dies bitte unabhängig davon, ob es ein Stoffgruppen-CAS-Eintrag oder was auch immer für einer ist). Wenn Cactus26 das übernehmen möchte, dann bitte hier bescheid geben! -- Uwe Martens (Diskussion) Wikipedia:Lua/Werkstatt#c-Uwe Martens-2021-05-08T23:24:00.000Z-Mabschaaf-2021-05-08T18:32:00.000Z11Beantworten
@Uwe: Du bist hier mM einfach drei Schritte zu schnell. Wir diskutieren hier nur Macbarkeit und ggf. Umsetzungsweg (welche Vorlage, wie eingebunden, welches Modul, was geht, was ist nicht sinnvoll, usw.). Für einen Botlauf gibt es, bevor dieser Weg klar vorgezeichnet ist, naturgemäß noch keine nähere Definition. Endpunkt wäre (wie schon in meinem allerersten Beitrag hier geschrieben [6.5., 17:17]) [es sollen] alle CAS-Nummern, die irgendwo in der deWP stehen (Box, Fließtext, Tabelle, wherever), per Botauftrag in diese Vorlage eingeschlossen werden. Aber nochmal: Botedits wird es erst geben, wenn die Technik für Vorlage und ggf. Modul stehen.
Übrigens hat die aktuelle Version von Vorlage:CASRN noch gar nicht die besprochene Funktionalität der "bedingten CAS-Verlinkung", sie verlinkt einfach immer. Die Menge der Einbindungen beträgt auch nicht >10000, sondern 419× als Untervorlage von Vorlage:Substanzinfo + 25× direkt in Artikeln. Das lässt sich also gerade noch als experimentell bezeichnen und wäre ggf. auch noch rückbaubar.
@MisterSynergy: Du hast oben von einer SRAQL-Abfrage geschrieben: Wie sähe die aus (alle Items mit CAS-Nummer, nicht missbilligter Rang, die als Referenz auf Common Chemistry verweisen; Ausgabe: Item-ID, CAS-Nummer)?--Mabschaaf Wikipedia:Lua/Werkstatt#c-Mabschaaf-2021-05-09T06:45:00.000Z-Uwe Martens-2021-05-08T23:24:00.000Z11Beantworten
https://w.wiki/3JRU. Du kannst auch Zeile 5 bis 15 weglassen und bekommst alle CAS-Nummern mit nicht-missbilligtem Rang, also auch jene ohne eine solche Fundstelle. —MisterSynergy (Diskussion) Wikipedia:Lua/Werkstatt#c-MisterSynergy-2021-05-09T07:54:00.000Z-Mabschaaf-2021-05-09T06:45:00.000Z11Beantworten
@Mabschaaf: Allein die Infobox Chemikalie ist bereits in 10059 Seiten eingebunden, die auf die Existenz verlinkter oder nicht verlinkter CAS-Nummern zu prüfen wären. Hinzu kommen einige andere Infoboxen aus dem Bereich Chemie bzw. hilfsweise eine abzuarbeitende Kategorie. Vorstehend verlinkte WD-Abfrage gibt ja schon mal 165.379 CAS-Einträge aus (womit sich übrigens meine Frage nach dem Suchschema erübrigt). Wie ich bereits schrieb, würde mein Bot auch auf der unveränderten Vorlage:CASRN aufbauen, eine weitere Logik bräuchte diese nicht, da die Auswahl via CAS-API-Call über den Bot erfolgt. Die Wikimedia-Server samt externen Cache-Servern werden damit dauerhaft sowohl performance- als auch trafficmäßig entlastet wie dargelegt. Um den Bot aufzusetzen, brauche ich eine exakte Aufgabenliste wie oben (01:24, 9. Mai 2021) dargelegt. Ein ähnlicher Auftrag besteht ja auf der BD von Cactus26 ja bereits seit längerem. Ich denke, jetzt hinreichend dargelegt zu haben, warum weitere Diskussionen, um/ob/wie ein Lua-Modul einzubinden, nicht nur überflüssig, sondern unangebracht sind. -- Uwe Martens (Diskussion) Wikipedia:Lua/Werkstatt#c-Uwe Martens-2021-05-09T11:26:00.000Z-MisterSynergy-2021-05-09T07:54:00.000Z11Beantworten
Dass es für die IB Chemikalie rd. 10000 Verwendungen gibt, habe ich nie bestritten - bisher aber eben nicht für Vorlage:CASRN, wie von Dir geschrieben.
Ich habe noch nicht verstanden, was Dein Bot machen will/soll. Was wäre denn in der Folge der Unterschied zwischen Common-Chemistry-Eintrag vorhanden/nicht vorhanden? Könntest Du evtl. mal jeweils einen (händischen) Beispieledit für die beiden Fälle machen und die beiden Diffs verlinken?--Mabschaaf Wikipedia:Lua/Werkstatt#c-Mabschaaf-2021-05-09T11:47:00.000Z-Uwe Martens-2021-05-09T11:26:00.000Z11Beantworten
Ja, ich schrieb oben "die insg. 10059 Artikel, welche die Vorlage:CASRN verwenden", das ist natürlich mißverständlich, nur ein Teil davon verwendet die CAS-Vorlage. Aber es sollen ja (mindestens) alle 10059 Artikel bearbeitet werden. Ein Beispieledit dürfte sich erübrigen, da mein Bot sehr einfach arbeiten würde (wie ich doch nun schon hinreichend dargelegt habe): Besteht ein CAS-Webeintrag (was vom Bot per CAS-API-Call geprüft wird, s. Beispiel) wird eine unverlinkte CAS-Nummer in die Vorlage:CASRN eingeschlossen (anderenfalls nicht) bzw. besteht kein CAS-Webeintrag, wird eine bestehende Einbindung einer CAS-Nummer in die Vorlage:CASRN aufgehoben. Hinzu kommen die weiteren Aufgaben/Abarbeitungskriterien wie besprochen, z.B. wann alternativ via Vorlage:Substanzinfo zu referenzieren ist. PS: Sollte obige WD-Abfrage aktuell sein, dann kopiere ich mir die Liste (via CSV-Datei) in meinen eigenen SQL-Server, dann spare ich mir den CAS-API-Call. PPS: Die obige SPARQL-Abfrage war leider unbrauchbar, da z.B. eben in Zeile 160.450 der CSV-Datei die CAS-Nr. 75318-43-3 ausgegeben wird, die aber über keinen Webeintrag verfügt. Die Abfrage unterscheidet also nicht zwischen vorhandenem und nicht vorhandenem CAS-Webeintrag. Brauchbar ist die Liste nur zur Bestimmung der Suchkriterien für die CAS-Nummern, offenbar "12-34-5" bis "1234567-89-0" (was ich so überflogen habe). Es bleibt von meiner Seite daher bei dem CAS-API-Call. -- Uwe Martens (Diskussion) Wikipedia:Lua/Werkstatt#c-Uwe Martens-2021-05-09T15:14:00.000Z-Mabschaaf-2021-05-09T11:47:00.000Z11Beantworten
 Info: Mein Bot ist im Übrigen betriebsbereit (ein paar "Gehversuche" hat er in der Wiki-Sandbox absolviert). Über die API habe ich damit bereits den zu durchsuchenden Kategoriebaum der Kategorie:Chemie bis zur 5. Subkategorie extrahiert, das sind insg. 3481 Kategorien (s. die vom Bot erstellte Liste). Alle Artikel in diesen Kats können daher geladen und im Wiki-Quelltext untersucht und aktualisiert werden. Den Suchalgorithmus für die CAS-Nummern muß ich noch schreiben, aber das ist keine Kleinigkeit. Wenn wir dann endlich zu einem Punkt kommen, lasse ich dieser Tage gerne die obligatorischen 50 Testedits durchlaufen. -- Uwe Martens (Diskussion) Wikipedia:Lua/Werkstatt#c-Uwe Martens-2021-05-10T05:36:00.000Z-Mabschaaf-2021-05-09T11:47:00.000Z11Beantworten
@MisterSynergy: Die Anzahl aus deiner Abfrage unterscheidet sich von derjenigen aus dieser Abfrage. Hast du eine Erklärung dafür? --Leyo Wikipedia:Lua/Werkstatt#c-Leyo-2021-05-11T09:26:00.000Z-MisterSynergy-2021-05-09T07:54:00.000Z11Beantworten
  • Die Abfrage dort hat eine Einschränkung auf Objekte mit exakt "ist ein(e) (P31): chemische Verbindung (Q11173)", die ich nicht habe.
  • Andererseits werden Aussagen mit missbilligtem Rang nicht rausgefiltert.
  • Es wird außerdem lediglich nach der P248-Referenz geschaut, nicht zusätzlich nach einem blanken Weblink in P854.
Der erste Punkt macht sicherlich den größten Unterschied aus. —MisterSynergy (Diskussion) Wikipedia:Lua/Werkstatt#c-MisterSynergy-2021-05-11T11:02:00.000Z-Leyo-2021-05-11T09:26:00.000Z11Beantworten
<linksrutsch>Mehrere Punkte noch:
  • Rein formal halte ich bei der geplanten Editzahl > 10.000 ein Botflag für zwingend erforderlich.
  • Mein klares Ziel ist es, alle CAS-Nummern in die Vorlage zu packen, d.h. entweder sollte {{CASRN|50-00-0}} eingefügt werden (falls ein Eintrag in commonchemistry existiert) oder {{CASRN|75318-43-3|KeinCASLink=1}} (falls nicht).
  • Das sollte es im Weiteren auch erleichtern, WP-weit alle CAS-Nummern zu finden.
  • CAS-Nummern finden:
    • Prinzipiell auszuschließen ist alles, was innerhalb von <ref>-Tags, Vorlagen und HTML-Kommentaren steht.
    • Ausnahme: Der dafür vorgesehene Parameter in den Infoboxen. Das sind die in Wikipedia:Redaktion_Chemie/Vorlagen#Infoboxen gelisteten. Allerdings können dort im vorgesehenen Parameter mehrere CAS-Nummern sein und ebenfalls Refs, Ergänzungen aller Art und weitere Vorlagen.
    • Identifikation von CAS-Nummern kann gelingen mit Regex /^[1-9]%d%d?%d?%d?%d?%d?%-%d%d%-%d$/ und mit korrekter Prüfziffer gem. CAS-Nummer#Prüfung_von_CAS-Nummern
    • Eine Liste aus Wikidata ist zwar ganz nett, aber selbst wenn WD inzwischen mehr als 1 Mio Einträge mit CAS-Nummer haben dürfte, möglicherweise nicht umfassend.
  • Alle vorkommenden CAS-Nummern innerhalb eines Artikels in Infobox, Tabellen und Fließtext sollen mit einem einzigen Edit gekapselt werden.
  • Vorlage:Substanzinfo wird dabei nie gesetzt.
  • Zusätzlich idealerweise gleichzeitig zu erledigende Aufgaben sind auf Benutzer_Diskussion:Cactus26#Botaufgabe_für_CAS-Nummern beschrieben, da hier wirklich alle Chemie-Artikel angefasst werden, betrifft das mit sehr hoher Priorität den gleichzeitigen Umbau der Vorlage:GESTIS und das Ersetzen von Datum=[alphanumerische Schreibung]Abruf=[ISO-Schreibung] in allen anderen Chemie-Vorlagen.
  • Bitte zunächst erst mal nur 5 Testedits von Artikeln, die gleich eine ganze Reihe von Sonderfällen abdecken, z.B.
Ich denke, die kannst Du auf alle Fälle machen, danach solltest Du aber mit Botflag agieren und zusätzlich sollte auch Benutzer:Leyo sein ok geben.--Mabschaaf Wikipedia:Lua/Werkstatt#c-Mabschaaf-2021-05-10T09:53:00.000Z-Leyo-2021-05-07T21:36:00.000Z11Beantworten
Danke, das ist ja mal ein sehr konkreter Auftrag! Dazu meine Kommentare:
Rein formal halte ich bei der geplanten Editzahl > 10.000 ein Botflag für zwingend erforderlich.
Das ist klar, gem. Anträge auf Botflag sind aber 30-50 Testedits obligatorisch.
Mein klares Ziel ist es, alle CAS-Nummern in die Vorlage zu packen, d.h. entweder sollte {{CASRN|50-00-0}} eingefügt werden (falls ein Eintrag in commonchemistry existiert) oder {{CASRN|75318-43-3|KeinCASLink=1}} (falls nicht).
Das ist ein sehr guter Ansatz!
Prinzipiell auszuschließen ist alles, was innerhalb von <ref>-Tags, Vorlagen und HTML-Kommentaren steht.
Alles klar!
Ausnahme: Der dafür vorgesehene Parameter in den Infoboxen. Das sind die in Wikipedia:Redaktion_Chemie/Vorlagen#Infoboxen gelisteten. Allerdings können dort im vorgesehenen Parameter mehrere CAS-Nummern sein und ebenfalls Refs, Ergänzungen aller Art und weitere Vorlagen.
Das sollte kein Problem sein.
Identifikation von CAS-Nummern kann gelingen mit Regex /^[1-9]%d%d?%d?%d?%d?%d?%-%d%d%-%d$/ und mit korrekter Prüfziffer gem. CAS-Nummer#Prüfung_von_CAS-Nummern
Ich werde zusehen, ob ich davon was übernehmen kann. Da ich ja grundsätzlich nicht die Richtigkeit der CAS-Nummer überprüfen muß, sondern diese nur als solche erkennen muß, erübrigt sich für den Bot vermutlich die Anwendung der Prüfziffer.
Eine Liste aus Wikidata ist zwar ganz nett, aber selbst wenn WD inzwischen mehr als 1 Mio Einträge mit CAS-Nummer haben dürfte, möglicherweise nicht umfassend.
Eigentlich sollte man auf Wikidata ebenfalls so einen (entsprechenden) KeinCASLink-Parameter setzen.
Alle vorkommenden CAS-Nummern innerhalb eines Artikels in Infobox, Tabellen und Fließtext sollen mit einem einzigen Edit gekapselt werden.
Das ist klar!
Vorlage:Substanzinfo wird dabei nie gesetzt.
Ich wollte mal hier auf die Eingangs gepostete Möglichkeit hinweisen, daß mit der Vorlage:CASRN und dem Parameter references=only auch nur Fußnoten erzeugt werden können. Wenn wir den Parameter references=only mit dem Botlauf nirgends implementieren, dann wird dieser Parameter womöglich bald obsolet.
Zusätzlich idealerweise gleichzeitig zu erledigende Aufgaben sind auf Benutzer_Diskussion:Cactus26#Botaufgabe_für_CAS-Nummern beschrieben, da hier wirklich alle Chemie-Artikel angefasst werden, betrifft das mit sehr hoher Priorität den gleichzeitigen Umbau der Vorlage:GESTIS und das Ersetzen von Datum=[alphanumerische Schreibung]Abruf=[ISO-Schreibung] in allen anderen Chemie-Vorlagen.
Das sollte dann auch kein Problem sein.
Bitte zunächst erst mal nur 5 Testedits von Artikeln, die gleich eine ganze Reihe von Sonderfällen abdecken
Wie Eingangs dargelegt sind Minimum 30 Testedits zur Beantragung eines Botflags erforderlich. Wenn es hier ausdrücklich gewünscht wird, kann ich es selbstverständlich auf 5 Edits beschränken - allerdings weiß ich nicht, ob ich dann bei einem Antrag auch Erfolg habe.
Grüße, Uwe Martens (Diskussion) Wikipedia:Lua/Werkstatt#c-Uwe Martens-2021-05-10T13:45:00.000Z-Mabschaaf-2021-05-10T09:53:00.000Z11Beantworten
Ich antworte mal in Stichpunkten:
  • Botflag / 5 Testedits: Die fünf Edits sehe ich mal als allererste Beurteilung für uns, weitere 30 für den Flagantrag hinterher zu schieben, wenn alles klappt, ist ja gar kein Problem.
  • CAS-Prüfung: Nein, musst Du nicht machen. Ist in Vorlage:CASRN sowieso implementiert. Stimmt die Prüfziffer nicht, landet der Eintrag in einer Fehlerkat. Ist sogar fast besser, wenn Du erst mal alle Fundstellen in die Vorlage packst, das hilft uns im Nachgang, Tippfehler und Zahlendreher in den Artikeln zu finden.
  • KeinCASLink-Flag auf WD: Naja, WD sollte die Logik haben: Ist die CAS-Nummer dort mit CommonChemistry referenziert, ist auch der Link dorthin valide. Muss uns aber jetzt hier nicht kümmern.
  • references=only: Nein, das ist kein Thema
Ich habe lange überlegt (und bin auch noch immer nicht final entschlossen), ob wir der Vorlage:CASRN als zweiten Parameter nicht noch die WD-Item-Nummer übergeben sollten (also etwa {{CASRN|75318-43-3|Q27251702|KeinCASLink=1}}). Das würde es für die Zukunft leicht machen, beispielsweise Wartungskats zu erzeugen, wenn auf WD doch ein neuer Eintrag in Common Chemistry nachgetragen oder die CAS-Nummer zu einem anderen Item verschoben wird.
Viele Grüße --Mabschaaf Wikipedia:Lua/Werkstatt#c-Mabschaaf-2021-05-10T15:00:00.000Z-Uwe Martens-2021-05-10T13:45:00.000Z11Beantworten
Nur als Anmerkung der Vollständigkeit halber: Mit {{#if:{{#invoke:Wikidata|claim|P231|id={{#invoke:Wikidata|pageId}}}} | {{CASRN|{{#invoke:Wikidata|claim|P231|id={{#invoke:Wikidata|pageId}}}} }} | {{CASRN|Die blanke CAS-Nummer|KeinCASLink=1}} }} könnte man so eine Selektion (besteht ein CAS-Verweis auf WD ja/nein, wie Leyo auf EN:WP) automatisch durchführen, zumindest was die CAS-Nummer des Lemmas betrifft. Die Logik hier ist: Existiert für das Lemma ein WD-Eintrag, erzeuge den CAS-Link, anderenfalls nicht. Eine Prüfung auf die CAS-Webeinträge erfolgt damit aber ja nicht. Was den optionalen Vorlagen-Parameter betrifft, würde ich aber vorschlagen, diesen eher optional einzubinden. Wenn die Einbindung der Q-Nummern im Zuge des anstehenden Botlaufs erfolgen soll, dann bitte bescheid geben. Ich werde mir jetzt erst mal die Kats und alle Artikel-Lemmata daraus (Mehrfachtreffer gefiltert) in meinen SQL-Server schreiben, dann hat es der Bot etwas leichter. Zum Wochenende hin habe ich dann etwas mehr Zeit, das eigentliche Script für die einzelnen Aufgaben aufzusetzen. Grüße, Uwe Martens (Diskussion) Wikipedia:Lua/Werkstatt#c-Uwe Martens-2021-05-10T16:38:00.000Z-Mabschaaf-2021-05-10T15:00:00.000Z11Beantworten
Mal ne Frage zwischendurch: Ausgehend von meiner Kat-Liste (bis einschließlich der 5. Subkategorie) komme ich "nur" auf 30384 Artikel (vorher waren hier über 100.000 Duplikate zu bereinigen). Sollte ich da noch eine Subkategorie tiefer crawlen? Die Testedits in Ehren, aber ich hätte schon ganz gerne das Framework fertig bereitstehen. Vermutlich läßt sich eine komplette Artikelliste auch wieder via WD-SPARQL runterladen, allerdings crawle ich doch lieber die Kats, da solche Übersichtslisten ja an sich schon brauchbar sind. Der Spezial:Kategorienbaum?target=Kategorie%3AChemie&mode=categories&namespaces=&title=Spezial%3AKategorienbaum11 geht ja scheinbar auch nur bis zur 3. Subkategorie der abgefragten Kategorie, also auch nicht besonders aussagekräftig. -- Uwe Martens (Diskussion) Wikipedia:Lua/Werkstatt#c-Uwe Martens-2021-05-11T13:30:00.000Z-Mabschaaf-2021-05-10T15:00:00.000Z11Beantworten
Du kannst dir alle Artikel, die in einem Kategorienbaum enthalten, einfach über Petscan rausziehen, siehe Abfrage. Textausgabe ist möglich. --Count Count (Diskussion) Wikipedia:Lua/Werkstatt#c-Count Count-2021-05-11T13:40:00.000Z-Uwe Martens-2021-05-11T13:30:00.000Z11Beantworten
Ok, danke! Na fehlen mir ja nur noch 4.385 Artikel. :-D Ich werd trotzdem mal bis auf die 6. Subkat crawlen und dann schauen, wie hoch die Differenz noch ist. Ansonsten importiere ich mir das halt via CSV. -- Uwe Martens (Diskussion) Wikipedia:Lua/Werkstatt#c-Uwe Martens-2021-05-11T14:06:00.000Z-Count Count-2021-05-11T13:40:00.000Z11Beantworten
Also die Artikel Tylosin, 2-Butanol, Dichlortoluole, Zirconium und WD-40 (Diffs) habe ich grad durch den Reißwolf gejagt, da waren dann noch zwei Fehler drin (fehlendes Leerzeichen vor der Vorlage:CASRN sowie unerwünschte Zeichenkonvertierung für "&") - das habe ich schnell behoben. Das mit dem CAS-API-Call funktioniert wunderbar, die Datumskonvertierung für die Vorlage:GESTIS ist auch kein Problem. Die komplette Artikelliste aus der Kategorie Chemie habe ich mir in meinen SQL-Server geschrieben, da kann sich der Bot jetzt draus "bedienen". Ich wollte noch darauf hinweisen, daß ich bei der ordnungsgemäßen Beantragung eines Botpaßwortes auf Wikimedia den Usernamen "Uwe Martens@WikispiderBot" zugeteilt bekommen habe, mit dem ich gerade diese fünf Testedits durchgeführt habe. Komischer Weise taucht das dann unter meinen Edits auf. Wenn ich mich mit "WikispiderBot" selber anmelde und den Edit durchführen will, kommt (im ANR) eine Fehlermeldung wegen ungelöstem Captcha. Keine Ahnung, wie das dann mit dem Botflag geht oder ob man das beheben kann, allerdings gibt es ja hier sogar Admin-Accounts, die einen Bot unter ihrem eigenen Namen betreiben, ich sage nur Benutzer:Aka... 😆 PS, eine Frage noch: Das mit der Vorlage:GESTIS habe ich derzeit ausgelegt auf das Erkennungsmuser {{GESTIS|Name=Adrenalin|ZVG=510500|CAS=51-43-4|Datum=10. Januar 2017}} (also Datum neben CAS-Nummer), siehe Testedit Adrenalin. Allerdings herrscht da leider (wie immer) eine große Willkür a la {{GESTIS|ZVG=492189|CAS=29797-40-8|Name=Dichlortoluol, Isomere|Datum=27. Dezember 2019}} (also Datum neben Name). Wird denn diese Datumsnennung in der Form |Datum=27. Dezember 2019}} irgendwo anders noch gebraucht? Ansonsten beschränke ich das Erkennungsmuster auf diese Datumsform (was jetzt mal die schnellste Variante wäre). PPS: In den Vorlagen des Portals Chemie habe ich keine dieser obsoleten Datumsangaben gefunden (zwei Kopiervorlagen habe ich noch aktualisiert). Ich meine fast, man könnte es wagen, das in den Chemie-Artikeln einfach generell auszubessern (ansonsten muß ich halt da noch das Erkennungsmuster erweitern). Grüße, Uwe Martens (Diskussion) Wikipedia:Lua/Werkstatt#c-Uwe Martens-2021-05-12T07:29:00.000Z-Count Count-2021-05-11T13:40:00.000Z11Beantworten
Zu den Botpasswörtern: Diese bitte unter dem Botkonto anlegen, nicht mit dem Hauptkonto. Sie dienen einfach dazu, dass ein Skript sich captchafrei authentifizieren kann und gleichzeitig die Berechtigungen für das per Botpasswort angemeldete Konto eingeschränkt werden können. --Count Count (Diskussion) Wikipedia:Lua/Werkstatt#c-Count Count-2021-05-12T07:16:00.000Z-Uwe Martens-2021-05-12T07:29:00.000Z11Beantworten
Danke, ich bin mir aber sicher, daß ich mit dem Botaccount eingeloggt war, anderenfalls wäre mir ja der Username "Uwe Martens@WikispiderBot" nicht zugeteilt worden. Das liegt wohl daran, daß ich den Botaccount angemeldet erstellt habe und der meinem Account somit automatisch zugeordnet wird. -- Uwe Martens (Diskussion) Wikipedia:Lua/Werkstatt#c-Uwe Martens-2021-05-12T07:29:00.000Z-Count Count-2021-05-12T07:16:00.000Z11Beantworten
Botpasswörter haben immer die Form: Hauptkonto@gewählter Botbezeichner. Für Count Count habe ich beispielsweise auch Count Count@Huggle. Du kannst ja ganz einfach prüfen, ob das Botpassword deinem Hauptkonto zugeordnet ist: Wenn du als Uwe Martens eingeloggt auf Spezial:BotPasswords gehst und dort unter Vorhandene Botpasswörter Wikispiderbot siehst, dann hast du das mit deinem Hauptkonto angelegt. Dann einfach löschen und unter deinem Botkonto neu anlegen. --Count Count (Diskussion) Wikipedia:Lua/Werkstatt#c-Count Count-2021-05-12T07:42:00.000Z-Uwe Martens-2021-05-12T07:29:00.000Z11Beantworten
Danke, habe das geändert! Ich hatte das zuvor auf mediawiki.org gemacht, wo sich dann wohl die Logins überschnitten haben irgendwie. Das Login lautet nun "WikispiderBot@WikispiderBot", allerdings kommt damit (nach Aktualisierung der Bot-Rechte) die Captcha-Fehlermeldung, wenn ich im ANR editieren will. Vielleicht dauert das eine Zeit, bis die Rechteänderungen überall wirksam werden? PS: Ich bin jetzt bis zum späten Abend hier off. Wenn übrigens die CAS-Nummern noch mit dem jeweiligen Lemma gelistet werden sollen, so kann ich diese mit jedem Edit in meine Datenbank schreiben (das kann man dann in allen beliebigen Formaten exportieren). Wenn das gewünscht wird, wie Mabschaaf auf der BD von Cactus26 sagte, dann bitte bescheid geben. -- Uwe Martens (Diskussion) Wikipedia:Lua/Werkstatt#c-Uwe Martens-2021-05-12T08:21:00.000Z-Count Count-2021-05-12T07:42:00.000Z11Beantworten
<linksrutsch> Das Einfügen von Vorlage:CASRN scheint ja schon vorzüglich zu funktionieren. Bezüglich der Anpassung der anderen Vorlagen:
  • Vielleicht wäre es sinnvoll, mit einer Positiv-Liste der Vorlagen zu arbeiten, die umgebaut werden sollen. Das sind alle, die auf Wikipedia:Redaktion Chemie/Vorlagen stehen und ein Abrufdatum haben. Ich kann nicht sagen, ob es weitere Vorlagen in Chemie-Artikeln gibt, die einen Parameter Datum= haben und Abruf= dagegen nicht kennen.
  • Der alte Parameter Datum= kann natürlich an jeder Stelle innerhalb der Vorlagen stehen. Falls möglich, sollte Abruf= immer als letzter Parameter eingefügt werden.
  • Bei der Änderung von Datum= zu Abruf= ist bei Vorlage:GESTIS zusätzlich immer noch der Punkt außerhalb der Vorlage wegzunehmen, d.h. aus
    • <ref>{{GESTIS|.....|Datum=....}}.</ref> muss werden:
    • <ref>{{GESTIS|.....|Abruf=....}}</ref> (ohne Punkt)
  • Vorlage:GESTIS ist da die Ausnahme. Alle anderen Vorlagen brauchen diese Sonderlösung nicht.
Viele Grüße--Mabschaaf Wikipedia:Lua/Werkstatt#c-Mabschaaf-2021-05-12T13:15:00.000Z-Leyo-2021-05-07T21:36:00.000Z11Beantworten
Alles klar, ich hatte gerade noch einen Testedit unter Alkohole vorgenommen (hatte ich noch was nachzubessern in dem Datums-Array), da aber Dein Posting noch nicht gelesen. Gültige Verwendungen des alten Datums-Parameters habe ich im Bereich Chemie keine gefunden, wie gesagt. Aber ich werde das mit der Vorlage:GESTIS zur späteren Stunde nochmal überarbeiten. Grüße, Uwe Martens (Diskussion) Wikipedia:Lua/Werkstatt#c-Uwe Martens-2021-05-12T13:50:00.000Z-Mabschaaf-2021-05-12T13:15:00.000Z11Beantworten

Entschuldigt meine späte Rückmeldung!
Soweit ich dies überblicke, sehen die letzten Testedits von Uwe gut aus. Von mir aus könnte es für alle Artikel losgehen, mit Ausnahme derjenigen, die nichts weiter eine CAS-Nr. als Chemobox-Parameterwert enthalten (zumindest vorerst).
Allerdings ist die Frage, ob zusätzlich die zur CAS-Nr. zugehörige QID angegeben soll, noch offen zu sein. Mittels {{CASRN|1234-5-6|Q12345|KeinCASLink=1}} könnte man ja so einen Link unterdrücken, falls dieser trotz des Vorhandenseins der betreffenden CAS-Nr. inkl. REF auf Common Chemistry im WD-Item. Was würde man allerdings im umgekehrten Fall tun? {{CASRN|1234-5-6|Q12345|KeinCASLink=doch}}? ;-) Oder ist der zweitgenannte im Gegensatz zum erstgenannten Fall nie relevant? --Leyo Wikipedia:Lua/Werkstatt#c-Leyo-2021-05-12T15:10:00.000Z-nachgewiesen in oder URL der Fundstelle als String11Beantworten

 Info: Wir verwenden heutzutage für sowas keinen Wert doch mehr, sondern eine boolesche Variable mit Werten 0, 1, auch ja, nein.
Das mit doppelter Verneinung ist nicht sehr intuitiv.
Der Default kann ja 1 sein; ergo Link=1.
Abschalten mit Link=0 oder Link=nein oder Link=-.
CAS heißt bereits die ganze Angelegenheit, ist im Parameternamen redundant und hilft niemandem.
Sollte es zu einem produktiven Modul kommen, was die Kernaufgabe dieser Werkstatt wäre, gäbe es einige generelle Rahmenbedingungen zu beachten.
VG --PerfektesChaos Wikipedia:Lua/Werkstatt#c-PerfektesChaos-2021-05-12T15:36:00.000Z-Leyo-2021-05-12T15:10:00.000Z11Beantworten

@Leyo: Es haben sich jetzt schon mehrere Beteiligte für eine klare einheitliche Umsetzung ausgesprochen, d.h. ausnahmslos alle CAS-Nummern in eine Vorlage einzupacken. Das ist das einzig sinnvolle und auch verständlich kommunizierbare (Infobox-Doku) Vorgehen. Zudem ist ein Einbau der kompletten Logik, die in Vorlage:CASRN steckt, parallel in jede einzelne Infobox alles andere als wartungsfreundlich.
Das einzige Argument, was dagegen spräche, ist die nötige Editzahl (jeder Artikel mit Infobox muss angefasst werden). Das wird aber mehr als aufgewogen, wenn - wie hier geplant - gleichzeitig alle anderen Chemie-Vorlagen auf den aktuellen Stand gebracht werden, was Datum/Zugriff angeht. Die parallele Pflege von zwei unterschiedlichen Parametern für den gleichen Sachverhalt ist überhaupt nicht erstrebenswert.

Die zusätzliche Angabe der QID muss konsequenterweise bei allen CAS-Nummern erfolgen, bei denen die CAS-Nummer im zugeordneten WD-Item abweicht. Dann kann die Angabe zukünftig genutzt werden, um entweder aus der Vorlage heraus mittels geeigneter Programmierung oder temporärer Einbindung des o.g. LUA-Moduls oder extern/offline über eine Vorlagenauswertung und Vergleich mit dem KeinCASLink-Parameter, ob die Verlinkung korrekt gesetzt ist oder geändert werden sollte. Dafür ist dann kein Botlauf mehr nötig.

Die Logik wäre: KeinCASLink=ja sticht immer, d.h. unabhängig von einer ggf. erfolgenden WD-Abfrage mit abweichendem Ergebnis wird kein Link gesetzt - aber bei Bedarf eine Wartungskat. Den umgekehrten Fall (erzwungene Verlinkung) sehe ich nicht.

@PC: "CAS" ist innerhalb dieser Vorlage tatsächlich redundant, allerdings gibt es die gleiche Konstellation in der Vorlage:Substanzinfo und dort muss sich der Parametername eindeutig auf die CAS-Nummer beziehen. Eine dauerhafte Modulverwendung ist vom Tisch, insofern müssen wir uns hier über Konventionen für Module im Moment nicht unterhalten. Aber ja, für später wäre das natürlich relevant.--Mabschaaf Wikipedia:Lua/Werkstatt#c-Mabschaaf-2021-05-12T19:09:00.000Z-nachgewiesen in oder URL der Fundstelle als String11Beantworten

  • Nochmal meine Frage zwischendurch: Soll ich denn jetzt alle (in die Vorlage:CASRN einzufassenden) CAS-Nummern aus/zu den jeweiligen Artikeln extrahieren? Mein Skript hat diese CAS-Nummern (zwecks deren Erkennung und weiteren Behandlung) eh jeweils in einer Variable, sogar die aus der Vorlage:GESTIS. Ich könnte da noch jeweils auf Duplikate prüfen und dann je eine CAS-Nummer in eine Spalte schreiben, oder alle zu einem Artikel gehörenden Nummern in eine Spalte. Es ist dies zwar kein großer Mehraufwand, da ich mich eh meiner MSSQL-Datenbank bediene, allerdings bitte ich dies nur in Erwägung zu ziehen, wenn es wirklich von Nutzen ist.
  • Wie handhaben wir das jetzt mit der obsoleten Datumsangabe? Sind die Änderungen auf die Vorlage:GESTIS oder ggf. weitere Vorlagen zu beschränken, oder sollen sie generell geändert werden? Generell kann ich mit dem Datum jedes gewünsche Format erzeugen, da es mein Skript zunächst ins UNIX-Zeitformat umrechnet.
  • Falls da noch irgendwas konkret mit den Q-Nummern zu machen ist, dann bitte bescheid geben! Wie ich aber oben schon schrieb (18:38, 10. Mai 2021), kann man auch mit den bestehenden Vorlagen auf WD zugreifen und da ggf. was abgleichen - das könnte man ggf. in die Vorlagen (Infobox, CASRN etc.) einarbeiten. Aus Performancegründen, wie dargelegt, rate ich aber von solchen dauerhaften WD-Requests ab - so wichtig sind die CAS-Links doch nun auch wieder nicht, daß da alles jederzeit up-to-date sein muß. Den Botlauf kann man quartalsmäßig oder halbjährlich wiederholen.
  • Eine Nichteinbindung der Vorlage:CASRN in die Infobox halte ich übrigens für weniger gut bzw. verstehe ich nicht den Sinn dieser Option. Sollte der Sinn dieser sein, die Logik der Vorlage:CASRN in die Infobox selber zu implementieren, dann würde ich aber bitten, dies vor meinem Botlauf zu tun. Zwar könnte ich mich dessen auch annehmen, allerdings habe ich momentan nicht die Zeit, um da noch mehr zu programmieren.
Grüße, Uwe Martens (Diskussion) Wikipedia:Lua/Werkstatt#c-Uwe Martens-2021-05-12T20:55:00.000Z-Mabschaaf-2021-05-12T19:09:00.000Z11Beantworten
  • Deinen ersten Punkt verstehe ich nicht. Duplikate sind normal innerhalb eines Artikels und sehr gut möglich, wenn es zu einem Stoffgruppenartikel auch noch den einen oder anderen zugehörigen Einzelsubstanzartikel aus dieser Gruppe gibt. Ich glaube nicht, dass Du Dich damit aufhalten musst.
  • Ich kann nur für die Chemie-Vorlagen garantieren, dass "Datum" problemlos durch "Abruf" ersetzt werden kann. Ob es ggf. weitere Vorlagen gibt, die als Parameter Datum verwenden, Abruf dagegen nicht verstehen, kann ich nicht sagen.
  • Ich habe in Vorlage:CASRN nun einen weiteren (unbenannten) Parameter zugelassen, die Q-ID kann also - wie oben beschrieben - mitgegeben werden. Das müsste, wie oben schon gesagt, in allen Fällen geschehen, wo die betroffene CAS-Nummer in einem anderem WD-Item steht als das mit dem Artikel verknüpfte. Eine weitergehende Verwendung ist momentan noch nicht implementiert, aber das hält zumindest viele Möglichkeiten offen.
  • Infobox:<Gebetsmühle>Nein, ich lehne eine Änderung der Infoboxen mit dem Ziel, dort eine Prüfung und Verlinkung direkt einzubauen, strikt ab. Daher müssen alle CAS-Nummern in die Vorlage:CASRN eingepackt werden.--Mabschaaf Wikipedia:Lua/Werkstatt#c-Mabschaaf-2021-05-13T06:37:00.000Z-Uwe Martens-2021-05-12T20:55:00.000Z11Beantworten
@Uwe Martens: Was sollen jetzt bei laufender Diskussion und ohne Konsens Deine Änderungen in der IB Chemikalie? Auf ein solches Vorgehen hätte ich mehr als gerne verzichtet. :-/ --Mabschaaf Wikipedia:Lua/Werkstatt#c-Mabschaaf-2021-05-13T07:03:00.000Z-Uwe Martens-2021-05-12T20:55:00.000Z11Beantworten
  • Ja also wie hier gesagt, wollte ich die Alternative der Einbindung der Logik der Vorlage:CASRN einmal "live" testen, ehe ich dazu ein Statement abgebe. Ich bin bis dato davon ausgegangen, daß dies durchaus eine Option wäre - daß Du das strikt ablehnst, war mir nicht klar. Aber siehe nun dazu mein Statement auf Deiner Disk. Wenn ich am Programmieren bin, merke ich nicht, was auf anderen Diskussionsseiten los ist (außer auf meiner eigenen). Da dann nach zwei Versionen im vermeintlichen Editwar-Modus auf VM aufzukreuzen, war in der Tat verzichtbar! Wie dem auch sei: Für mein Skript wäre es ohnehin eine Erleichterung, da nicht die Infobox(en) außenvor zu lassen.
  • Was die Duplikate betrifft, so habe ich das nur auf eine etwaig zu erstellende Tabelle mit allen CAS-Nummern zu dem jeweiligen Artikel bezogen. In so einer Tabelle dürften ja keine Duplikate auftauchen, wenn die Tabelle denn einen Nutzen haben sollte. Das war Dein Einbringen auf der Disk von Cactus26.
  • Für die Prüfung der WD-Q-Nummer müßte ich dann ein Wikidata-API-Call in mein Skript implementieren. Das ist kein Problem, allerdings muß ich die WD-API erst einsehen. Bitte hierfür ein paar Beispiel-Artikel herauszusuchen, wo die Nummer einzubinden wäre!
Danke, Uwe Martens (Diskussion) Wikipedia:Lua/Werkstatt#c-Uwe Martens-2021-05-13T07:59:00.000Z-Mabschaaf-2021-05-13T07:03:00.000Z11Beantworten
Die Edit-War-Geschichte können wir gerne ganz schnell wieder vergessen - aber das ist die Problematik, wenn Du auf nichts reagierst, was typischerweise über Notifications transportiert wird und auch keine ZQ liest.
Die WD-Q-Nummer müsste u.a. in alle Vorkommen bei Stoffgruppen-Artikeln mitgegeben werden, also bspw. im oben schon verwendeten Dichlortoluole, aber auch in nahezu 100% der Vorkommen im Fließtext oder anderen Tabellen. Ohne WD-Q-Nummer bleibt praktisch ausschließlich der oberste Eintrag in einer Infobox.
Ein Beispiel dazu: Tylosin ist verknüpft mit d:Q411462, d.h. nur die CAS 1401-69-0 bleibt ohne Q-ID, in alle anderen Vorlagen CASRN, die im Artikel irgendwo stehen, kommt die jeweilige Q-ID hinzu.--Mabschaaf Wikipedia:Lua/Werkstatt#c-Mabschaaf-2021-05-13T08:13:00.000Z-Uwe Martens-2021-05-13T07:59:00.000Z11Beantworten
Wobei ich gerade sehe, dass Tylosin ein Ausnahmebeispiel dafür ist, dass es hier nicht die oberste Nummer ist, die der im verknüpften WD-Item entspricht.
Sollte es kein WD-Item zur fraglichen CAS-Nummer geben, wäre dann {{CASRN|12-34-5|?}} zu setzen.--Mabschaaf Wikipedia:Lua/Werkstatt#c-Mabschaaf-2021-05-13T08:17:00.000Z-Uwe Martens-2021-05-13T07:59:00.000Z11Beantworten
Für Tylosin gibt es keinen CAS-Webeintrag, insofern die erste Prüfung zur Einbindung der Vorlage:CASRN der CAS-API-Call ist. Das wäre nun die Frage, ob die Prüfung der WD-Q-Nummer in Abhängigkeit des Vorhandenseins eines CAS-Webeintrages steht bzw. stehen soll, oder nicht. PS: Genauer gesagt, gibt es zur ersten CAS-Nummer aus der Infobox zu Tylosin keinen CAS-Webeintrag - der CAS-Link auf WD hingegen für CAS-Nummer 1401-69-0 funktioniert. Also die Regel "Ausschluß jeweils der ersten CAS-Nummer in einer Infobox" scheint schon mal nicht zu funktionieren. -- Uwe Martens (Diskussion) Wikipedia:Lua/Werkstatt#c-Uwe Martens-2021-05-13T08:45:00.000Z-Mabschaaf-2021-05-13T08:17:00.000Z11Beantworten
Genau das habe ich ja geschrieben: I.d.R. (aber eben nicht immer) ist es die erste Nummer in der Box, die zur Nummer des WD-Items passt. Das und nur das ist das einzige Entscheidungskriterium: Passen die beiden CAS-Nummern nicht zusammen, muss die Q-ID in der Vorlage:CASRN ergänzt werden.
Ganz und gar unabhängig davon wird KeinCASLink=1 gesetzt, wenn in der CommonChemistry-DB kein Eintrag ist.--Mabschaaf Wikipedia:Lua/Werkstatt#c-Mabschaaf-2021-05-13T09:44:00.000Z-Uwe Martens-2021-05-13T08:45:00.000Z11Beantworten
Gut, ich arbeite gerade den Wikidata-API-Call mit ein. Allerdings ist die Logik "KeinCASLink=" ja/nein derzeit ausschließlich abhängig vom CAS-API-Call. Bitte dann auch nochmal bescheid geben, welche Vorlagen nun auf das Datumsformat geprüft werden sollen. Des weiteren, ob ich nun alle Lemmata samt CAS-Einträgen (auf Duplikate gefiltert) in meine Datenbank schreiben soll zu Deiner weiteren Verwendung, und wenn ja, ob alle CAS-Nummern in eine einzige oder in getrennte Spalten. -- Uwe Martens (Diskussion) Wikipedia:Lua/Werkstatt#c-Uwe Martens-2021-05-13T10:01:00.000Z-Mabschaaf-2021-05-13T09:44:00.000Z11Beantworten
Ja, die Logik "KeinCASLink=" ja/nein soll ausschließlich vom CAS-API-Call abhängig sein.
Die Liste der Vorlagen steht hier nachfolgend auskommentiert im Quelltext.
Ich erwarte von Dir gar keine Liste mit mitgeschriebenen Duplikaten o.ä. Falls ich da mal Bedarf habe, hole ich mir das tagesaktuell mit Hilfe der Vorlagenauswertungs-Tools.--Mabschaaf Wikipedia:Lua/Werkstatt#c-Mabschaaf-2021-05-13T12:49:00.000Z-Uwe Martens-2021-05-13T10:01:00.000Z11Beantworten
Sorry, ich war beschäftigt. Wieso hast Du das auskommentiert? Das wären also die Vorlagen, in denen das Datumsformat zu ändern wäre? -- Uwe Martens (Diskussion) Wikipedia:Lua/Werkstatt#c-Uwe Martens-2021-05-13T13:44:00.000Z-Mabschaaf-2021-05-13T12:49:00.000Z11Beantworten
Ja.--Mabschaaf Wikipedia:Lua/Werkstatt#c-Mabschaaf-2021-05-13T13:54:00.000Z-Uwe Martens-2021-05-13T13:44:00.000Z11Beantworten
Ok, ich kümmere mich darum. Wenn ich fertig bin, tätige ich eine Hand voll Testedits. Bin derzeit im Multitasking-Modus und etwas beschäftigt... Grüße, Uwe Martens (Diskussion) Wikipedia:Lua/Werkstatt#c-Uwe Martens-2021-05-13T14:32:00.000Z-Mabschaaf-2021-05-13T13:54:00.000Z11Beantworten
@Mabschaaf: Also ich habe mir jetzt mal die Wikidata-API näher angesehen. Die Q-Nummer eines Lemmas kann ich leicht abrufen. Mit der Q-Nummer wiederum kann ich den Wikidata-Eintrag zu dem Lemma aufrufen und prüfen, ob und welche CAS-Nummer verzeichnet ist. Als nächstes kann ich prüfen, ob die angegebene (erste) CAS-Nummer aus der Infobox mit der CAS-Nummer des WD-Eintrags übereinstimmt. Wenn dies nicht der Fall ist, müßte also für diese erste Nummer die Q-Nummer rausgesucht und eingetragen werden. Gleiches für alle anderen Nummern, wobei offensichtlich nicht klar ist, an welcher Position die CAS-Nummer des Lemmas steht. Demzufolge müßte ich also alle CAS-Nummern erst mit der CAS-Nummer des Lemmas abgleichen, und wenn diese nicht übereinstimmen, dann die zugehörige Q-Nummer ermitteln. Habe ich das so korrekt zusammengefaßt? Für die Abfrage der zugehörigen Q-Nummer einer x-beliebigen freistehenden CAS-Nummer (so wie hier) habe ich allerdings keinen Wikidata-API-Call gefunden, dafür aber ein sehr schnelles Tool auf toolforge - das würde ich dann verwenden.
@Leyo: In Deinem Sinne hatte ich versucht, testweise die Vorlage:CASRN in die Infobox einzuarbeiten. Leider hat mir Dein Herr Kollege dazwischengefunkt und es kam zu einem vermeintlichen Editwar samt völlig verzichtbarer Sperrung der Vorlage. Das Ganze hatte ich zuvor in meinem BNR getestet, was auch gut funktionierte. Da aber im Falle der Angabe mehrerer CAS-Nummern in der Infobox (bzw. im Falle einer bereits eingebundenen CAS-Vorlage) die Prüfung der Nummer nicht mehr funktioniert, habe ich Ausschlußkriterien implementiert. Die Prüfung bei Mehrfachangaben wird also so nicht funktionieren, auf einen grünen Zweig bin ich da dann nicht mehr gekommen. Zudem wird die Vorlage Infobox ziemlich aufgebläht, und das würde allen Infoboxen blühen. Aus diesen Gründen rate ich dringend an, die Logik der Vorlage:CASRN nicht in die Infobox einzubinden, sondern statt dessen die Vorlage:CASRN as it is via Botlauf auch in die Infoboxen einzubinden. Da ich Dich hier in keinster Weise übergehen möchte, daher die Frage, ob Du dem jetzt zustimmen könntest.
Grüße, Uwe Martens (Diskussion) Wikipedia:Lua/Werkstatt#c-Uwe Martens-2021-05-13T18:39:00.000Z-Mabschaaf-2021-05-13T13:54:00.000Z11Beantworten
Ja, alles korrekt.--Mabschaaf Wikipedia:Lua/Werkstatt#c-Mabschaaf-2021-05-13T20:06:00.000Z-Uwe Martens-2021-05-13T18:39:00.000Z11Beantworten
Von „müssen“ (08:37, 13. Mai 2021) kann keine Rede sein. Die Verwendung der Vorlage:CASRN innerhalb der Infobox ist aus den weiter oben genannten Gründen (nicht primär die benötigten Edits) eine Krücke, die notgedrungen nur bei Infoboxen mit mehreren CAS-Nummern benötigt wird. Dort wird jeweils auch die Q-ID übergeben werden müssen. Von einer vorgeschlagenen einheitlichen Verwendung kann also keine Rede sein.
So viel zusätzlicher Code für die Infoboxen ist auch wieder nicht notwendig und diesen bei einer Handvoll Infoboxen einzubauen, ist ein geringer Aufwand.
Ich möchte dazu anmerken, dass die Verlinkung mit der CAS Common Chemistry Database mein Vorschlag war, meine Meinung nun aber nichts zu zählen scheint. --Leyo Wikipedia:Lua/Werkstatt#c-Leyo-2021-05-13T22:22:00.000Z-Uwe Martens-2021-05-13T18:39:00.000Z11Beantworten
Ich kann Dir leider nicht ganz folgen. Auch wenn nur eine CAS-Nummer in der Infobox steht, soll sie ja (ggf.) verlinkt werden. Die Infobox selber erledigt das nicht. Und das mit dem zusätzlichen Code habe ich ja schon dargelegt. Da eine Prüfroutine für die CAS-Nummern einzubauen bei Mehrfach-Einträgen würde eigentlich nur gehen, wenn man mehrere CAS-Parameter einführt. Das wiederum würde den Quellcode der Infoboxen ins Unermessliche aufblähen und widerspricht ja dem Sinn einer einzelnen kleinen Vorlage. Also ich glaube, man kann mir nicht vorwerfen, es nicht probiert zu haben, das zu implementieren! Grüße, Uwe Martens (Diskussion) Wikipedia:Lua/Werkstatt#c-Uwe Martens-2021-05-14T00:33:00.000Z-Leyo-2021-05-13T22:22:00.000Z11Beantworten
Du übertreibst krass! Bei nur einer CAS-Nr. steht diese direkt zu Beginn des Parameterwerts (ohne * davor), so dass der String-Vergleich nicht allzu kompliziert ist (nicht komplizierter als was jetzt schon drin ist). Dazu braucht's noch einen Aufruf von MisterSynergys Modul, das im verknüpften WD-Item nach der Präsenz des Common-Chemistry-Nachweises sucht. Anhand des Ergebnisses wird ein Link gesetzt oder eben nicht. Fertig. --Leyo Wikipedia:Lua/Werkstatt#c-Leyo-2021-05-14T01:05:00.000Z-Uwe Martens-2021-05-14T00:33:00.000Z11Beantworten

@Leyo: Mir scheint, Du verkennst die Komplexität des Ganzen. Was nötig wäre, um die ganze Logik der Vorlage:CASRN zu implementieren, also samt CAS-Nummern-Prüfung auf deren formalen Richtigkeit, siehst Du hier. Das implementiert noch nicht mal die Prüfung auf die jeweilige WD-Q-Nummer. Des weiteren übergehst Du hier, daß im Falle mehrfacher Nennungen von CAS-Nummern in der Infobox dann mehrere Parameter einzuführen wären, anderenfalls alle CAS-Nummern als ein Parameter aufgefaßt werden und die weitere Behandlung unmöglich wird. Deine Version würde also einen selektiven Botlauf nötig machen, um bei nur einer vorhandenen CAS-Nummer nichts zu machen (in der Hoffnung, daß dann in allen Vorlagen der Infoboxen irgendwann irgendeine Logik implementiert wird) bzw. um bei mehreren CAS-Nummern im CAS-Feld der Infoboxen dann doch jeweils die Vorlage:CASRN einzubinden. Erst mal wird damit der projektweite Quellcode inkonsistent, und zweitens müßte man in eine etwaig nachträglich in die Infoboxen zu implementierende Logik wieder eine Auschlußlogik einfügen, um die Mehrfacheinträge nicht auszuwerten. Oder noch schlimmer, dann im Nachhinein mehrere CAS-Parameter einführen. Ferner läßt Du meine obigen Einlassungen zu Performencefragen außenvor. Neben der zusätzlichen Rechenleistung und dem zusätzlichen Traffic für jeden einzelnen Modulaufruf wird sohin noch die Ladezeit der Wikiseite erhöht, und es werden millionen Seitenaufrufe im Monat betroffen sein. Und das nur für einen CAS-Link ja/nein. Und bitte jetzt keine Diskussionen darum, was nun wie aus dem Cache bedient oder nicht bedient wird. Natürlich bedient sich auch die Vorlage:CASRN diverser Lua-Module, allerdings eben ohne jegliche Abfrage bei Wikidata. Also ich rate dringend von Deiner Version ab, wie gesagt! -- Uwe Martens (Diskussion) Wikipedia:Lua/Werkstatt#c-Uwe Martens-2021-05-14T08:30:00.000Z-nachgewiesen in oder URL der Fundstelle als String11Beantworten

Nein, ich verkenne nicht die Komplexität. Mit Ausnahme der Prüfung auf die formale Richtigkeit der CAS-Nr. braucht es nur sehr wenig Code. Von mir aus kann diese Prüfung intern durch eine separate Vorlage durchgeführt werden. Diese könnte auch bei z.B. der Infobox Polymer eingesetzt werden.
In der en-WP funktioniert die (Nicht-)Verlinkung übrigens mit zwei Zeilen Vorlagencode.
Es braucht hier überhaupt nicht die Einführung mehrerer Parameter für CAS-Nr., sondern einen simplen Stringabgleich: CAS-Nr. am Anfang des Parameterwerts, ja oder nein. Die Kapselung der CAS-Nr. innerhalb der Infobox in eine separate Vorlage ist ein Unding. So „kennt“ die Infobox den Wert nicht und der Wert „weiss“ nicht, dass er sich innerhalb einer Infobox befindet. --Leyo Wikipedia:Lua/Werkstatt#c-Leyo-2021-05-14T20:44:00.000Z-Uwe Martens-2021-05-14T08:30:00.000Z11Beantworten
Ich weiß nicht, wieso Du das Wort "intern" unterstreichst. Intern i.S.v. innerhalb der Vorlage der Infobox meinst Du nicht, da Du auf eine externe Vorlage verweist. Die Vorlage:CASRN ist aber genau diese Vorlage! Was auf EN:WP los ist, weiß ich nicht, allerdings wird dieses Template dort sicher nicht auf Existenz oder Nichexistent eines CAS-Webeintrages prüfen. Mit Punkt 3 widersprichst Du Dir selber hinsichtlich Punkt 1. Der Wert kann ohnehin nichts "wissen", da er ein passives Objekt ist. Und die Vorlagen der Infoboxen implementieren bisher keine Auswertung der CAS-Nummer. Zur Konsistenz sowohl des Artikelbestandes nebst Infoboxen als auch des Quelltextes an sich hatten wir es ja schon. Wir drehen uns hier also im Kreis. Der Sinn von Vorlagen (und auch Untervorlagen) ist bekanntlich, den jeweiligen Quelltext zu vereinfachen. Das machen wir mit der Einbindung der Vorlage:CASRN. -- Uwe Martens (Diskussion) Wikipedia:Lua/Werkstatt#c-Uwe Martens-2021-05-14T21:51:00.000Z-Leyo-2021-05-14T20:44:00.000Z11Beantworten
Ich werde den Eindruck nicht los, dass du mich wiederholt absichtlich falsch oder nicht verstehst. Gemeint ist, dass durch die Infobox Chemikalie (und später durch weitere Infoboxen) eine (Unter-)Vorlage aufrufen kann, welche die Validität der CAS-Nr. prüft. Oder nochmals anders formuliert, damit es nicht mehr missverstanden werden kann: einzelne CAS-Nr. direkt in Infobox → Infobox ruft (Unter-)Vorlage auf
Doch, in der en-WP wird geprüft, ob im zugehörigen Item die CAS-Nr. mit Common Chemistry belegt ist.
Bezüglich deines Verwurfs, ich würde mich widersprechen, möchte ich auf meinen ersten Satz verweisen. --Leyo Wikipedia:Lua/Werkstatt#c-Leyo-2021-05-14T22:21:00.000Z-Uwe Martens-2021-05-14T21:51:00.000Z11Beantworten
Macht es jetzt wirklich Sinn, an zwei Orten über den gleichen Sachverhalt zu erörtern? Die Vorlage:CASRN ist die von Dir besagte Untervorlage. Ob der Quelltext nun innerhalb der Wikipedia unter einem anderen Namen gespeichert ist und somit projektweit aufgerufen werden kann, oder nur innerhalb der Vorlage:Infobox irgendwo steht, spielt für die Infobox sowie für das Endergebnis absolut keinerlei Rolle. Von daher bin ich es, der in der Tat nicht im Mindesten versteht, warum Du Dich gegen den sich abzeichnenden Konsens stemmst, es auf die einfachste Weise zu erledigen. Und nein, in der EN:WP wird nicht auf Existenz des CAS-Webeintrages geprüft. Vielmehr warst Du selber es, der bemängelte, daß gerade nicht geprüft wird, ob die Fundstelle mit einer CAS-Nummer belegt ist. Ein weiteres Mal widersprichst Du Dir selber. -- Uwe Martens (Diskussion) Wikipedia:Lua/Werkstatt#c-Uwe Martens-2021-05-14T22:50:00.000Z-Leyo-2021-05-14T22:21:00.000Z11Beantworten
Welch ein dreister und inkorrekter Vorwurf! Die Infos aus dem verlinkten Diff sind für die Chembox nicht mehr aktuell.
„Die Vorlage:CASRN ist die von [m]ir besagte Untervorlage“, wenn die Infobox Chemikalie diese aufrufen würde. Eine Einbindung im Artikelquelltext innerhalb der Infobox Chemikalie ist natürlich nicht, wovon ich spreche. Aber das weisst du ja selbst. --Leyo Wikipedia:Lua/Werkstatt#c-Leyo-2021-05-14T23:17:00.000Z-Uwe Martens-2021-05-14T22:50:00.000Z11Beantworten
Naja, vielen Dank für die Bestätigung, auf was für einem Niveau wir bereits angelangt sind! Es ist hier an dieser Stelle mit Dir definitiv EOD! Weitere Beiträge Deinerseits werde ich ignorieren. -- Uwe Martens (Diskussion) Wikipedia:Lua/Werkstatt#c-Uwe Martens-2021-05-14T23:43:00.000Z-Leyo-2021-05-14T23:17:00.000Z11Beantworten

Test-Botlauf

 Info: Mein Bot hat also nun eine Hand voll Testedits gemacht (zu ergänzen war übrigens die Vorlage:CLH-ECHA). Das mit der Prüfung und Ergänzung der Q-Nummern funktioniert auch. Also wenn es denn jetzt Allen genehm ist, stocke ich die Testedits auf 50 auf und beantrage das Botflag. Sollten irgendwann einmal die Vorlagen der Infoboxen geändert werden und die Einbindung der Vorlage:CASRN obsolet werden, dann gelobe ich feierlich, meinen Bot mit den etwaig notwendigen Änderungen zu bemühen! In der Hoffnung, damit dem Fachbereich Chemie zu dienen, 😃 Uwe Martens (Diskussion) Wikipedia:Lua/Werkstatt#c-Uwe Martens-2021-05-14T14:24:00.000Z-Test-Botlauf11Beantworten

Dass hier ein Dateiname unter die Räder gekommen ist, hast Du ja gesehen und vermutlich für die Zukunft unterbunden. Ansonsten stehen von meiner Seite die Ampeln auf grün.
AFAIK werden die 50 Testedits für das Botflag schon mit dem Botaccount erwartet. Aber das wird man Dir dort schon sagen.--Mabschaaf Wikipedia:Lua/Werkstatt#c-Mabschaaf-2021-05-14T14:59:00.000Z-Uwe Martens-2021-05-14T14:24:00.000Z11Beantworten
Ja, den Dateinamen hat er zerheckselt, das behebe ich gerade. Daß es solche Dateien gibt, konnte man ja nicht erahnen. Welche Dateiendungen werden da erwartet bitte? PS: Also das mit dem Dateinamen ist behoben, gefiltert habe ich da jetzt die Endungen .svg, .jpg und .png. Was anderes dürfte da ja kaum vorkommen. Wenn Leyo sich nun auch überzeugen ließe, starte ich weitere 40 Testedits. PPS: Nachdem von meiner Seite alle technischen Dinge besprochen sind, habe ich das Vorhaben in der Redaktion Chemie angekündigt. Meinetwegen kann man die allfällige Diskussion um das ob und warum dorthin auslagern. Grüße, Uwe Martens (Diskussion) Wikipedia:Lua/Werkstatt#c-Uwe Martens-2021-05-14T16:34:00.000Z-Mabschaaf-2021-05-14T14:59:00.000Z11Beantworten
@Mabschaaf eine Frage noch: In dieser Abfrage finden sich noch 10 weitere "Chemo-Vorlagen", die problemlos mit abgearbeitet werden könnten (ich habe da eine Funktion im Skript, die mit geändertem Parameter beliebig oft aufgerufen werden kann). Hat es einen besonderen Grund, daß Du diese Vorlagen außenvor lassen wolltest, oder war Deine Liste aus eurer (dann wohl unvollständigen) Projektliste entnommen? Ich habe die vorsorglich noch in mein Skript eingefügt. -- Uwe Martens (Diskussion) Wikipedia:Lua/Werkstatt#c-Uwe Martens-2021-05-14T17:05:00.000Z-Mabschaaf-2021-05-14T14:59:00.000Z11Beantworten
Ich habe in meiner Liste die Vorlagen weggelassen, bei denen ich weiß, dass sie schon vollständig zu "Abruf" migriert sind und die, die "Abrufdatum" als Parameternamen nutzen. Das dürfte die Differenz erklären.--Mabschaaf Wikipedia:Lua/Werkstatt#c-Mabschaaf-2021-05-14T17:32:00.000Z-Uwe Martens-2021-05-14T17:05:00.000Z11Beantworten
Ach so! Aber es dürfte zumindest unschädlich sein, wenn ich trotzdem alle Vorlagen einmal checke? Für das Skript dauert das dann eine Millisekunde länger, also wurscht. Was dagegen einiges an Zeit in Anspruch nimmt, sind die zahlreichen API-Calls bei CAS, wikidata-todo.toolforge, Wikidata und Wikipedia. Da dauert es bisweilen einige Sekunden, bis der neue Quelltext eines Artikels generiert ist... -- Uwe Martens (Diskussion) Wikipedia:Lua/Werkstatt#c-Uwe Martens-2021-05-14T19:55:00.000Z-Mabschaaf-2021-05-14T17:32:00.000Z11Beantworten