Skip to main content

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
  • --delete-timeouts: Optional: URLs bei Timeout löschen (Standard: URLs werden behalten)
  • --follow-redirects: Optional: Bei Weiterleitungen (301/302) die neue URL übernehmen
  • --redirects-file: Optional: Datei zum Speichern von Weiterleitungen im Format 'quelle;ziel'
  • --visual: Optional: Zeigt eine visuelle Fortschrittsanzeige statt Logging-Ausgaben
  • --threads: Optional: Anzahl der parallel arbeitenden Threads (Standard: 1)

Beispiele

Standard-Modus (behält Timeout-URLs):

jsonlinkcheck daten.jsonl url_feld beschreibungs_url --suffix _bereinigt

Timeout-URLs löschen:

jsonlinkcheck daten.jsonl url_feld --delete-timeouts

Weiterleitungen verfolgen und in Datei speichern:

jsonlinkcheck daten.jsonl url_feld --follow-redirects --redirects-file redirects.txt

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

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

  1. Das Tool liest die JSON-Lines Datei zeilenweise ein
  2. Verarbeitet die Daten in Chunks für optimale Performance
  3. Verteilt die Chunks auf die angegebene Anzahl von Threads
  4. 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
  5. Ü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)
  6. 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

English Quick Start Guide

JsonLinkCheck is a tool for checking and cleaning URLs in JSON Lines files.

Installation

# Using uv (recommended)
curl -LsSf https://astral.sh/uv/install.sh | sh  # Linux/MacOS
uv tool install slubjsonlinkcheck

# Or using pip
pip install slubjsonlinkcheck

Basic Usage

# Check URLs in specific fields
jsonlinkcheck input.jsonl url_field [other_fields...]

# Common options
--delete-timeouts     # Delete URLs that timeout (default: keep them)
--follow-redirects    # Follow and update redirected URLs
--redirects-file FILE # Save redirects to file (source;target format)
--timeout-file FILE   # Save timeout URLs to file
--threads N          # Use N parallel threads
--visual             # Show progress bars

Examples

# Basic usage (keeps timeout URLs)
jsonlinkcheck data.jsonl url_field

# Delete timeout URLs and follow redirects
jsonlinkcheck data.jsonl url_field --delete-timeouts --follow-redirects

# Process with 4 threads and track redirects
jsonlinkcheck data.jsonl url_field --threads 4 --redirects-file redirects.txt --visual

For detailed documentation in German, see above.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

slubjsonlinkcheck-0.9.0.tar.gz (6.4 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

slubjsonlinkcheck-0.9.0-py3-none-any.whl (12.9 kB view details)

Uploaded Python 3

File details

Details for the file slubjsonlinkcheck-0.9.0.tar.gz.

File metadata

  • Download URL: slubjsonlinkcheck-0.9.0.tar.gz
  • Upload date:
  • Size: 6.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.5.16

File hashes

Hashes for slubjsonlinkcheck-0.9.0.tar.gz
Algorithm Hash digest
SHA256 17e908c2d3e87e9128d8fd315d943a4beaebbc47652db0b92e5b78da2213bba7
MD5 93550136557e06c9caa5f466600a6f5f
BLAKE2b-256 5062854a00f3509faa91c45203275fe7fcf59d34b528d2e1fd83d4c6cfe61420

See more details on using hashes here.

File details

Details for the file slubjsonlinkcheck-0.9.0-py3-none-any.whl.

File metadata

File hashes

Hashes for slubjsonlinkcheck-0.9.0-py3-none-any.whl
Algorithm Hash digest
SHA256 da66e19dd44cafd2c2ae5c1218f550bdd95cd0713bdda4cfac19cf134289c2c1
MD5 d2ae897ba2cf6a33dd17d6639c611192
BLAKE2b-256 fc76068a96508d2793611376c1c78193256028a65ae2fbcd4736b785c2c8245d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page