Ein Tool zum Überprüfen und Bereinigen von URLs in JSON-Lines Dateien
Project description
JsonLinkCheck
Ein Tool zum Überprüfen und Bereinigen von URLs in JSON-Lines Dateien.
Installation
Sie können das Tool auf zwei Arten installieren:
Mit uv (empfohlen)
Zuerst müssen Sie uv installieren:
Linux/MacOS
curl -LsSf https://astral.sh/uv/install.sh | sh
Windows (PowerShell)
(Invoke-WebRequest -Uri "https://astral.sh/uv/install.ps1" -UseBasicParsing).Content | pwsh -Command -
Alternativ mit pip
pip install uv
Nach der Installation von uv können Sie JsonLinkCheck installieren:
uv tool install slubjsonlinkcheck
Mit pip
pip install slubjsonlinkcheck
Verwendung
Das Tool wird über die Kommandozeile gesteuert und verarbeitet JSON-Lines Dateien (eine JSON-Objekt pro Zeile):
jsonlinkcheck input.jsonl feldname1 feldname2 [feldname3 ...] [optionen]
Parameter
input_file: Pfad zur JSON-Lines Eingabedatei (ein JSON-Objekt pro Zeile)fields: Eine oder mehrere Feldnamen, die auf URLs überprüft werden sollen--suffix: Optional: Suffix für die Ausgabedatei (Standard: "_cleaned")--chunk-size: Optional: Größe der zu verarbeitenden Chunks (Standard: 1000)-v, --verbose: Optional: Aktiviert ausführliche Ausgaben zur Verarbeitung--timeout: Optional: Timeout in Sekunden für URL-Überprüfungen (Standard: 10.0)--timeout-file: Optional: Datei zum Speichern von URLs, die ein Timeout verursacht haben--keep-timeout: Optional: URLs bei Timeout behalten statt zu löschen--follow-redirects: Optional: Bei Weiterleitungen (301/302) die neue URL übernehmen (Standard: Original-URL behalten)--visual: Optional: Zeigt eine visuelle Fortschrittsanzeige statt Logging-Ausgaben--threads: Optional: Anzahl der parallel arbeitenden Threads (Standard: 1)
Beispiele
Standard-Modus:
jsonlinkcheck daten.jsonl url_feld beschreibungs_url --suffix _bereinigt
Ausführlicher Modus mit detaillierten Ausgaben:
jsonlinkcheck daten.jsonl url_feld beschreibungs_url -v
Mit angepasstem Timeout und Timeout-Logging:
jsonlinkcheck daten.jsonl url_feld --timeout 5.0 --timeout-file timeouts.txt
Timeout-URLs behalten und loggen:
jsonlinkcheck daten.jsonl url_feld --timeout 5.0 --timeout-file timeouts.txt --keep-timeout
Weiterleitungen folgen und visuelle Fortschrittsanzeige:
jsonlinkcheck daten.jsonl url_feld --follow-redirects --visual
Parallele Verarbeitung mit mehreren Threads:
jsonlinkcheck daten.jsonl url_feld --threads 5 --visual
Entwicklung
Setup der Entwicklungsumgebung
# Repository klonen
git clone https://github.com/thomsbe/slubjsonlinkcheck.git
cd slubjsonlinkcheck
# Python 3.12 oder höher wird benötigt
python --version
# Virtuelle Umgebung erstellen und aktivieren
uv venv
source .venv/bin/activate
# Entwicklungsabhängigkeiten installieren
uv pip install -e .
Funktionsweise
- Das Tool liest die JSON-Lines Datei zeilenweise ein
- Verarbeitet die Daten in Chunks für optimale Performance
- Verteilt die Chunks auf die angegebene Anzahl von Threads
- Prüft die angegebenen Felder auf gültige URLs:
- Einzelne URL-Strings werden direkt geprüft
- Arrays von URLs werden Element für Element geprüft
- Überprüft die Erreichbarkeit der URLs:
- Status 200: URL wird beibehalten
- Status 301/302: URL wird beibehalten oder aktualisiert (mit --follow-redirects)
- Status 404: URL wird gelöscht (bei Arrays: aus dem Array entfernt)
- Timeout: URL wird gelöscht oder behalten (mit --keep-timeout) und optional in Timeout-Datei geschrieben
- Ungültige URL: URL wird gelöscht (bei Arrays: aus dem Array entfernt)
- Speichert das Ergebnis:
- Einzelne URLs: Feld wird gelöscht wenn URL ungültig
- Arrays: Leere Arrays werden komplett gelöscht, sonst bleiben gültige URLs erhalten
Die Verarbeitung erfolgt parallel für optimale Leistung bei großen Dateien. Fehlerhafte JSON-Lines werden übersprungen und geloggt.
Verbose-Modus (-v)
Im Verbose-Modus gibt das Tool detaillierte Informationen aus:
- Start und Ende der Verarbeitung
- Einlesen der Datei und Chunk-Informationen
- Details zu jeder URL-Überprüfung (einzeln oder im Array)
- Status-Codes und Weiterleitungen
- Timeout-Ereignisse und betroffene URLs
- Information ob Timeout-URLs behalten oder gelöscht werden
- Änderungen an den Feldern und Arrays
- Fortschritt der Verarbeitung
Visueller Modus (--visual)
Im visuellen Modus zeigt das Tool Fortschrittsbalken:
- Gesamtfortschritt: Zeigt die Verarbeitung aller Zeilen der Eingabedatei
- Thread-Fortschritte: Zeigt die Verarbeitung der URLs in jedem aktiven Thread
Der visuelle Modus deaktiviert die normalen Logging-Ausgaben für eine übersichtlichere Darstellung.
Parallele Verarbeitung (--threads)
Die parallele Verarbeitung mit mehreren Threads beschleunigt die Verarbeitung großer Dateien:
- Jeder Thread verarbeitet einen eigenen Chunk von URLs
- Die Ergebnisse werden in temporäre Dateien geschrieben
- Am Ende werden alle Teilergebnisse zusammengeführt
- Die Fortschrittsanzeige zeigt den Status jedes Threads separat
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file slubjsonlinkcheck-0.2.0.tar.gz.
File metadata
- Download URL: slubjsonlinkcheck-0.2.0.tar.gz
- Upload date:
- Size: 29.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.5.16
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
af4718e3cc7a7dad3254661c354c206bf8099b8a79294a9fe1e36641f8876dd5
|
|
| MD5 |
28d9cc993e53116e4f50eb688f856791
|
|
| BLAKE2b-256 |
ab91a739af307be315282bdc5e70cba53e4e2da90f276edbc8e3be2940d12c32
|
File details
Details for the file slubjsonlinkcheck-0.2.0-py3-none-any.whl.
File metadata
- Download URL: slubjsonlinkcheck-0.2.0-py3-none-any.whl
- Upload date:
- Size: 11.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.5.16
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
63e7226e352246ed9d90aa55f9e222f3ead7aee893d184b75f84f9aaff6cd45c
|
|
| MD5 |
783e3790ce02c0afa5aed95f9a194380
|
|
| BLAKE2b-256 |
614c62e2782bb06948edc22dbaae5e4c96bedc581c5904801e6f3b49dadbda96
|