JDownloader Community - Appwork GmbH
 

Reply
 
Thread Tools Display Modes
  #21  
Old 27.10.2022, 16:42
StefanM's Avatar
StefanM StefanM is offline
JD VIP
 
Join Date: Oct 2020
Posts: 440
Default

Quote:
Originally Posted by Jiaz View Post
In den BeispielLinks aus dem ersten Post fehlen an den BilderLinks noch der wichtige Parameter
Der Parameter/Weite kann geändert werden.
Leider kann ich wegen der URL-Zensur hier auch die von mir selbst geposteten Image-Links nicht mehr sehen.

Wenn ich im Browser über die developer-tools die Links "extrahiere", dann erhalte ich so etwas:

**External links are only visible to Support Staff****External links are only visible to Support Staff**
**External links are only visible to Support Staff****External links are only visible to Support Staff**
**External links are only visible to Support Staff****External links are only visible to Support Staff**

Dazu habe ich dann auch gleich zwei Fragen:

Frage 1: Wodurch wird denn die Auflösung w=1280 bestimmt? Bzw. kann ich das beeinflussen?

Frage 2: Kann ich bei irgendeinem Browser von Hand auf einmal mehrere Links dieser Art kopieren? Filtern nach '&pg=' ist ja kein Problem. Aber auch längeres(!) Googlen hat mir nicht geholfen herauszufinden, wie ich mehrere Links auf einmal kopiere.

Sollte ich Links ohne die Auflösung hier eingestellt haben, so stammen diese übrigens aus dem "JD-Konkurrenten" EPF meines langjährigen guten Freundes Maksym aus der Ukraine (**External links are only visible to Support Staff****External links are only visible to Support Staff**). EPF kann diese Links automatisiert extrahieren und auch herunterladen.

Laden, aber eben auch nur die Links mit pg=PR, nicht aber die mit pg=PA. Das geht auch dort nur über Umwege.

Seltsamerweise gibt es kein Problem mit dem Download dieser Images, wenn man mit einer Ukrainischen IP-Adresse arbeitet. Und dann werden auch ganz andere Seiten aus demselben Buch angeboten...

EPF hat übrigens ein sehr interessantes Feature, was m.E. auch für JD interessant wäre:
Er hat einen built-in Google Chrome Browser, den ich bei Bedarf zu Beginn eines Download-Projekts automatisch starten lassen kann. Dieser ermöglicht dann z.B. auch das einfache automatisierte Crawlen nach den Image-Links hier.

Und der User hat auch die Möglichkeit, Projektdateien (das Äquivalent zu JD's PlugIns) selbst zu erstellen. Für komplexere "PlugIns" muss man allerdings u.a. auch RegEx gut beherrschen...
Reply With Quote
  #22  
Old 27.10.2022, 16:48
StefanM's Avatar
StefanM StefanM is offline
JD VIP
 
Join Date: Oct 2020
Posts: 440
Default

Quote:
Originally Posted by pspzockerscene View Post
...
Der komplette Wert des Cookies.
Mein NID Cookie-Wert entspricht etwa folgendem Muster:
511=[A-Za-z0-9-]+
Jetzt habe ich zwei verschiedene Antworten

Jiaz schreibt sinngemäß "Nach dem zweiten =", also ohne die 511

Du schreibst inkl. 511=

Werde dann mal beides testen und auch versuchen die RegEx anzupassen, die ich nur für .de bekommen habe. Ich brauche natürlich international...


Quote:
Originally Posted by pspzockerscene View Post
...
Falls dem so ist, hat Stefan diese jedoch selbst abgeändert, denn wenn ich die aus dem Browser nehme werden andere Standardparameter verwendet.
Ich ging davon aus, dass Stefan die Links nicht verändert hat.
Wie im vorangegangen Reply geschrieben: Das war aus einem EPF-Log ...
Hatte ich nicht drauf geachtet, dass die width dort fehlt.
Reply With Quote
  #23  
Old 27.10.2022, 17:03
pspzockerscene's Avatar
pspzockerscene pspzockerscene is online now
Community Manager
 
Join Date: Mar 2009
Location: Deutschland
Posts: 65,223
Default

Quote:
Originally Posted by StefanM View Post
Leider kann ich wegen der URL-Zensur hier auch die von mir selbst geposteten Image-Links nicht mehr sehen.
Da du das vorher wusstest, hättest du natürlich entsprechende Backups anlegen können.
Deine selbst geposteten Links kann ich dir natürlich auch wahlweise erneut per PN schicken, falls dich das weiterbringt.

Quote:
Originally Posted by StefanM View Post
Wenn ich im Browser über die developer-tools die Links "extrahiere", dann erhalte ich so etwas:
...&w=1280
Joa scheinbar kann man mit diesem Parameter die Auflösung anpassen.
Deine initialen Beispiellinks enthielten gar keinen "w" Parameter was scheinbar dazu führt, dass eine kleinere Auflösung verwendet wird (in meinen tests 575x816).

Quote:
Originally Posted by StefanM View Post
Wodurch wird denn die Auflösung w=1280 bestimmt? Bzw. kann ich das beeinflussen?
Keine Ahnung dazu müsstest du die Google Books Webseite weiter analysieren oder im Netz recherchieren.
Diese Frage hat absolut nichts mit dem JD Projekt zu tun.
Es kann auch sein, dass dir nur Google Mitarbeiter diese Frage beantworten können, da nur diese wissen können, welche URL Parameter überhaupt angenommen werden und wie diese funktionieren.
Typischerweise würde man die Auflösung z.B. vom verwendeten User-Agent o.ä. abhängig machen.

Quote:
Originally Posted by StefanM View Post
Kann ich bei irgendeinem Browser von Hand auf einmal mehrere Links dieser Art kopieren? Filtern nach '&pg=' ist ja kein Problem. Aber auch längeres(!) Googlen hat mir nicht geholfen herauszufinden, wie ich mehrere Links auf einmal kopiere.
Wieder nicht JD-relevant. Trotzdem:
Ich verstehe die Frage nicht.
Meinst du, mehrere Links mehrerer Tabs gleichzeitig kopieren?
Bitte um genauere Fragestellung.

Quote:
Originally Posted by StefanM View Post
EPF hat übrigens ein sehr interessantes Feature, was m.E. auch für JD interessant wäre:
Er hat einen built-in Google Chrome Browser, den ich bei Bedarf zu Beginn eines Download-Projekts automatisch starten lassen kann. Dieser ermöglicht dann z.B. auch das einfache automatisierte Crawlen nach den Image-Links hier.
Viele Projekte verwenden sowas.
Wir planen derzeit nicht, sowas mitzuliefern.
Warum. kannst du u.A. in den Tiefen des englischen Cloudflare Threads nachlesen:
https://board.jdownloader.org/showthread.php?t=83712

Quote:
Originally Posted by StefanM View Post
Jetzt habe ich zwei verschiedene Antworten
Nein hast du nicht.
Ich habe bereits in meinem letzten Post #20 dargelegt, dass Jiaz dich teilweise falsch verstanden hat und seine Antwort #19 somit teilweise falsch ist.
Cookies sind Wertepaare sprich "key": "Wert".
Egal wie das Cookie heißt und egal was der Wert ist, du musst immer alles nehmen was im jeweiligen Feld steht.
In diesem Fall heißt das Cookie "NID" (key = NID) und du möchtest den kompletten Wert haben also JA, auch die Zahl, die am Anfang steht, das Gleichheitszeichen usw.

Zum Veranschaulichen kannst du dir z.B. mal das open source Browser Addon "EditThisCookie" nehmen, deine Cookies einer beliebigen Webseite exportieren und z.B. mit dem Webtool jsoneditoronline.org begutachten.

Quote:
Originally Posted by StefanM View Post
Wie im vorangegangen Reply geschrieben: Das war aus einem EPF-Log ...
Ok das scheine ich überlesen zu haben.
__________________
JD Supporter, Plugin Dev. & Community Manager
JDownloader 2 Setup Download
Spoiler:

A users' JD crashes and the first thing to ask is:
Quote:
Originally Posted by Jiaz View Post
Do you have Nero installed?
That's true James
Quote:
Originally Posted by James
Die Leute verstehen einfach nicht dass nur weil man mit einer Waffe auch auf Menschen schießen kann dass ein Schützenver​ein kein Ort für Amoklaufide​en ist
Reply With Quote
  #24  
Old 27.10.2022, 17:29
StefanM's Avatar
StefanM StefanM is offline
JD VIP
 
Join Date: Oct 2020
Posts: 440
Default

Quote:
Originally Posted by pspzockerscene View Post
Wieder nicht JD-relevant. Trotzdem:
Ich verstehe die Frage nicht.
Meinst du, mehrere Links mehrerer Tabs gleichzeitig kopieren?
Bitte um genauere Fragestellung.
Habe mal einen Screenshot angehängt:
Ich möchte mehrere Links auf einmal aus den Developer-Tools kopieren und fragte, ob du weißt, ob und wie das möglich ist (bei irgendeinem Browser).

Und richtig: Auch ich erhalte die niedrige Auflösung, wenn w=... fehlt. Gerade erst bemerkt. Bei diesem Beispielbuch fällt es nicht gleich auf.

Was ich als niedrige Auflösung/verpixelt zu Anfang geschrieben hatte, bezog sich auf Google Books Downloader Tools, die die Images offensichtlich vor dem Speichern komprimiert/skaliert haben - evtl. auch als Vorbereitung für die Konvertierung in ein pdf.
Attached Thumbnails
Beispiel.jpg  
Reply With Quote
  #25  
Old 27.10.2022, 17:40
pspzockerscene's Avatar
pspzockerscene pspzockerscene is online now
Community Manager
 
Join Date: Mar 2009
Location: Deutschland
Posts: 65,223
Default

Quote:
Originally Posted by StefanM View Post
Ich möchte mehrere Links auf einmal aus den Developer-Tools kopieren
Die Info, dass es um die Developer-Tools geht fehlte mir.
Auch diese Frage hat nichts mit dem JDownloader Projekt zu tun.

Ich kenne keine Möglichkeit, aber ich würde es wie folgt machen:
1. Traffic aufzeichnen.
2. Aufgezeichneten Traffic als .HAR Datei exportieren. EDIT: .HAR Dateien enthalten auch nur json, sind also theoretisch gut weiterverarbeitbar.
3. Die Links mittels RegEx oder einem Script aus der .HAR Datei exportieren.
Hier eine beispielhafte englische Anleitung mit Screenshots die erklärt, wie man den Mitschnitt als .HAR Datei exportieren kann:
support.zendesk.com/hc/en-us/articles/4408828867098-Generating-a-HAR-file-for-troubleshooting
__________________
JD Supporter, Plugin Dev. & Community Manager
JDownloader 2 Setup Download
Spoiler:

A users' JD crashes and the first thing to ask is:
Quote:
Originally Posted by Jiaz View Post
Do you have Nero installed?
That's true James
Quote:
Originally Posted by James
Die Leute verstehen einfach nicht dass nur weil man mit einer Waffe auch auf Menschen schießen kann dass ein Schützenver​ein kein Ort für Amoklaufide​en ist

Last edited by pspzockerscene; 27.10.2022 at 17:40. Reason: Json Syntax Info ergänzt
Reply With Quote
  #26  
Old 27.10.2022, 17:50
StefanM's Avatar
StefanM StefanM is offline
JD VIP
 
Join Date: Oct 2020
Posts: 440
Default

Quote:
Originally Posted by pspzockerscene View Post
Die Info, dass es um die Developer-Tools geht fehlte mir.
Das hatte ich explizit erwähnt Ich schreibe zu viel, so dass nicht immer alles gelesen wird...

Quote:
Originally Posted by pspzockerscene View Post
Auch diese Frage hat nichts mit dem JDownloader Projekt zu tun.

Ich kenne keine Möglichkeit, aber ich würde es wie folgt machen:
1. Traffic aufzeichnen.
2. Aufgezeichneten Traffic als .HAR Datei exportieren. EDIT: .HAR Dateien enthalten auch nur json, sind also theoretisch gut weiterverarbeitbar.
3. Die Links mittels RegEx oder einem Script aus der .HAR Datei exportieren.
Hier eine beispielhafte englische Anleitung mit Screenshots die erklärt, wie man den Mitschnitt als .HAR Datei exportieren kann:
support.zendesk.com/hc/en-us/articles/4408828867098-Generating-a-HAR-file-for-troubleshooting
Ja, .HAR hatte ich schon mal probiert gleich zu Anfang. Ist eine sehr große Datei, aus der ich aber natürlich alle Links mit "&pg=" herausziehen kann. Das wäre dann wohl der einzige Weg, bzw. alternativ das Java Script aus GitHub, was ich schon erwähnte.
Reply With Quote
  #27  
Old 27.10.2022, 18:03
pspzockerscene's Avatar
pspzockerscene pspzockerscene is online now
Community Manager
 
Join Date: Mar 2009
Location: Deutschland
Posts: 65,223
Default

Quote:
Originally Posted by StefanM View Post
Das hatte ich explizit erwähnt
Ich habe das nicht überlesen, aber das hier:
Quote:
Originally Posted by StefanM View Post
Wenn ich im Browser über die developer-tools die Links "extrahiere", dann erhalte ich so etwas:
...
...
konnte ich nicht mit deinen Fragen in Zusammenhang bringen.

Quote:
Originally Posted by StefanM View Post
Ist eine sehr große Datei, aus der ich aber natürlich alle Links mit "&pg=" herausziehen kann.
Dann hast du ja bereits eine Lösung gefunden.

Quote:
Originally Posted by StefanM View Post
Das wäre dann wohl der einzige Weg
Naja weitere mögliche Wege wären:
- Eigenes Browser Addon schreiben
- Eigenes Greasemonkey Script schreiben oder schauen, ob es für Google Books eines gibt
- Schauen, ob es Addons ähnlich VideoDownloadHelper gibt, die alle geladenen Bilder-URLs erfassen

Quote:
Originally Posted by StefanM View Post
bzw. alternativ das Java Script aus GitHub, was ich schon erwähnte.
Jo oder das.
__________________
JD Supporter, Plugin Dev. & Community Manager
JDownloader 2 Setup Download
Spoiler:

A users' JD crashes and the first thing to ask is:
Quote:
Originally Posted by Jiaz View Post
Do you have Nero installed?
That's true James
Quote:
Originally Posted by James
Die Leute verstehen einfach nicht dass nur weil man mit einer Waffe auch auf Menschen schießen kann dass ein Schützenver​ein kein Ort für Amoklaufide​en ist
Reply With Quote
  #28  
Old 27.10.2022, 18:43
StefanM's Avatar
StefanM StefanM is offline
JD VIP
 
Join Date: Oct 2020
Posts: 440
Default

@pspzockerscene

Nur als (vielleicht brauchbare) Info:

Wenn ich ans Ende eines Links eine extrem hohe width anhänge - z.B. &w=100000 ...
**External links are only visible to Support Staff****External links are only visible to Support Staff**

... dann erhalte ich automatisch die höchstmögliche (verfügbare) Auflösung.

Hier wären das z.B. 1762x2500

Ansonsten erhalte ich exakt die, die ich angebe. Hänge ich z.B. &w=1761 an, dann erhalte ich 1761x2499
Reply With Quote
  #29  
Old 28.10.2022, 15:51
pspzockerscene's Avatar
pspzockerscene pspzockerscene is online now
Community Manager
 
Join Date: Mar 2009
Location: Deutschland
Posts: 65,223
Default

Gut zu wissen.
Wundert mich ehrlichgesagt noch immer sehr, dass es keine brauchbaren Tools für den Download von Google Books gibt.
Ich kann mir das nur so erklären, dass Google Books nicht mehr so beliebt ist wie vor ein paar Jahren und/oder weil man die Inhalte auch auf anderen Plattformen findet.
Archive.org zum Beispiel stellt auch viele ebooks zur Verfügung:
archive.org/details/texts

Grüße, psp
__________________
JD Supporter, Plugin Dev. & Community Manager
JDownloader 2 Setup Download
Spoiler:

A users' JD crashes and the first thing to ask is:
Quote:
Originally Posted by Jiaz View Post
Do you have Nero installed?
That's true James
Quote:
Originally Posted by James
Die Leute verstehen einfach nicht dass nur weil man mit einer Waffe auch auf Menschen schießen kann dass ein Schützenver​ein kein Ort für Amoklaufide​en ist
Reply With Quote
  #30  
Old 28.10.2022, 16:52
StefanM's Avatar
StefanM StefanM is offline
JD VIP
 
Join Date: Oct 2020
Posts: 440
Default

Nachfolgend einfach nochmal ein paar weitere Ergebnisse zu meinen Tests mit Google Books, richtiger: Google Books Preview.

Quote:
Originally Posted by pspzockerscene View Post
...
Wundert mich ehrlichgesagt noch immer sehr, dass es keine brauchbaren Tools für den Download von Google Books gibt.
...
Wenn dir irgendetwas Brauchbares über den Weg läuft, wäre ich für den Link dazu sehr dankbar.


Ich habe ohne Übertreibung mind. 2 Stunden lang gesucht. Man findet am häufigsten dieses freie Tool:
**External links are only visible to Support Staff****External links are only visible to Support Staff**
mit den genannten Problemen:
  1. Die heruntergeladenen Images werden offensichtlich neu codiert, wobei auch die beste Auflösung, die man einstellen kann, deutlich schlechter als das Original-Image ist.
  2. In meinen Tests liegt die Anzahl der gefundenen Seiten deutlich unter der Zahl der verfügbaren Seiten.

Die Methode .har-Export hat auch ihre Grenzen. Zumindest im Firefox sind nach einem Scan (Scrollen) über mehr als 50 Seiten nicht mehr alle Seiten in der .har-Datei. Ich muss daher in kleineren "Häppchen" .har-Exporte erstellen.

Und es hat sich bestätigt, dass ich - abhängig vom "Standort/Land" der IP-Adresse - unterschiedlich Ergebnisse, d.h. unterschiedliche Seiten erhalte.

Aber von einer beliebigen IP-Adresse desselben Landes, erhalte ich auch an verschiedenen Tagen immer dieselbe Seitenauswahl.

Weitere Erkenntnis bzw. Schlussfolgerung zum Format:
Die Textsuche in Google Books Preview findet auch Seiten, die nicht zum Preview zur Verfügung stehen. Ich vermute daher, dass auch bei Preview-Books das gesamte Buch als pdf(?) zur Verfügung steht - zumindest so, dass darin nach Text gesucht werden kann.
Erst bei der Ausgabe scheinen die freigegebenen Seiten in ein Image (jpg, png, ...) konvertiert zu werden, zumal die Auflösung bis zu einem max. Wert auf ein Pixel genau durch &w=WIDTH vom User bestimmt werden kann.


Quote:
Originally Posted by pspzockerscene View Post
...
Archive.org zum Beispiel stellt auch viele ebooks zur Verfügung:
archive.org/details/texts
...
Danke für den Tipp, war mit der Textsuche aber leider noch nicht erfolgreich. D.h. ich finde dort nicht das, was ich suche.

Bisher finde ich die besten Treffer, wenn ich nach einer möglichst unikaten Textpassage aus einem Buch in Google suche. (Dazu muss ich natürlich bereits einen Auszug aus dem gesuchten Buch haben...)

Den User Agent des Browsers auf Google Bot einzustellen hat aber leider keine Verbesserung gebracht.
Reply With Quote
  #31  
Old 28.10.2022, 16:57
pspzockerscene's Avatar
pspzockerscene pspzockerscene is online now
Community Manager
 
Join Date: Mar 2009
Location: Deutschland
Posts: 65,223
Default

Quote:
Originally Posted by StefanM View Post
In meinen Tests liegt die Anzahl der gefundenen Seiten deutlich unter der Zahl der verfügbaren Seiten.
Ich dachte oft wären nicht alle Seiten verfügbar?
Oder kannst du im Browser dank deines VPN alle sehen?

Quote:
Originally Posted by StefanM View Post
Die Methode .har-Export hat auch ihre Grenzen. Zumindest im Firefox sind nach einem Scan (Scrollen) über mehr als 50 Seiten nicht mehr alle Seiten in der .har-Datei. Ich muss daher in kleineren "Häppchen" .har-Exporte erstellen.
Mal mit einem portablen Chrome probiert und/oder geschaut, ob es Einstellungsmöglichkeiten zur max .HAR Größe gibt?

Quote:
Originally Posted by StefanM View Post
Den User Agent des Browsers auf Google Bot einzustellen hat aber leider keine Verbesserung gebracht.
Vorteile durch Manipulation des User-Agents werden immer seltener, da man diesen so einfach verändern kann.
__________________
JD Supporter, Plugin Dev. & Community Manager
JDownloader 2 Setup Download
Spoiler:

A users' JD crashes and the first thing to ask is:
Quote:
Originally Posted by Jiaz View Post
Do you have Nero installed?
That's true James
Quote:
Originally Posted by James
Die Leute verstehen einfach nicht dass nur weil man mit einer Waffe auch auf Menschen schießen kann dass ein Schützenver​ein kein Ort für Amoklaufide​en ist
Reply With Quote
  #32  
Old 28.10.2022, 17:23
StefanM's Avatar
StefanM StefanM is offline
JD VIP
 
Join Date: Oct 2020
Posts: 440
Default

Quote:
Originally Posted by pspzockerscene View Post
Ich dachte oft wären nicht alle Seiten verfügbar?
Oder kannst du im Browser dank deines VPN alle sehen?
Beispiel:
Ein Buch hat 300 Seiten. Im Browser sind davon 100 Seiten als Preview sichtbar. Das genannte Tool lädt aber nur 68 Seiten herunter.
Das meinte ich damit.


Quote:
Originally Posted by pspzockerscene View Post
Mal mit einem portablen Chrome probiert und/oder geschaut, ob es Einstellungsmöglichkeiten zur max .HAR Größe gibt?
Sollte ich mal einen Vergleich machen. Und ja, bei mir ist alles, was geht, portable, auch mein Chrome Browser.

Aber es hat wohl nichts mit der Dateigrößenbeschränkung zu tun. Die URLs sind einfach nicht mehr im entsprechenden Fenster enthalten und können damit auch nicht mehr exportiert werden. Aber das könnte bei unterschiedlichen Browsern natürlich unterschiedlich sein.

Warum erwähnst du explizit "portable"?


Quote:
Originally Posted by pspzockerscene View Post
Vorteile durch Manipulation des User-Agents werden immer seltener, da man diesen so einfach verändern kann.
Ja, gibt bei uns noch eine Zeitung, bei der der "Trick" noch funktioniert...
Reply With Quote
  #33  
Old 28.10.2022, 17:38
pspzockerscene's Avatar
pspzockerscene pspzockerscene is online now
Community Manager
 
Join Date: Mar 2009
Location: Deutschland
Posts: 65,223
Default

Quote:
Originally Posted by StefanM View Post
Das meinte ich damit.
Das habe ich auch so verstanden.

Quote:
Originally Posted by StefanM View Post
Warum erwähnst du explizit "portable"?
Weil ich gelesen habe, dass du Firefox nutzt und User oft gerne bei ihrem Browser bleiben möchten.
Meine Erfahrung hat gezeigt:
Der Hinweis auf Portable bringt User dazu, solche Experimente eher durchzuführen, da sie kein neues Programm/Browser installieren müssen.
__________________
JD Supporter, Plugin Dev. & Community Manager
JDownloader 2 Setup Download
Spoiler:

A users' JD crashes and the first thing to ask is:
Quote:
Originally Posted by Jiaz View Post
Do you have Nero installed?
That's true James
Quote:
Originally Posted by James
Die Leute verstehen einfach nicht dass nur weil man mit einer Waffe auch auf Menschen schießen kann dass ein Schützenver​ein kein Ort für Amoklaufide​en ist
Reply With Quote
  #34  
Old 28.10.2022, 19:14
Jiaz's Avatar
Jiaz Jiaz is offline
JD Manager
 
Join Date: Mar 2009
Location: Germany
Posts: 79,044
Default

@StefanM: Es gibt zb HTTP-TRACKER Extension , dort werden alle Requests gelistet und du kannst Filter/usw und dann via Selektion alle URLs selektieren und in die Zwischenablage Kopieren.
Ich bin mir sicher das es diesbezüglich viele Extensions gibt welche die Requests überwachen und dann nach Filter/Kriterien auflisten für weitere Verarbeitung. Diese Extension war die erste, welche ich probiert habe, und ich habe keine Minute dafür gebraucht.
__________________
JD-Dev & Server-Admin
Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

All times are GMT +2. The time now is 12:33.
Provided By AppWork GmbH | Privacy | Imprint
Parts of the Design are used from Kirsch designed by Andrew & Austin
Powered by vBulletin® Version 3.8.10 Beta 1
Copyright ©2000 - 2023, Jelsoft Enterprises Ltd.