Commit Graph

45 Commits

Author SHA1 Message Date
Martin Tranberg
1a97ca3d53 Cleanup og variabel-synkronisering
- Rydder op i duplicate kode i download_single_file
- Sikrer korrekt type-casting af config-variabler (bool/int)
- Verificerer at alle GUI-parametre læses korrekt i main()
2026-03-29 19:55:08 +02:00
Martin Tranberg
8e837240b5 Projekt afslutning: Marker værktøj som produktionsklart (Enterprise-grade)
- Tilføjer officiel status-vurdering i README.md
- Bekræfter understøttelse af Long Paths, Timestamp Sync og korrekt QuickXorHash validering
2026-03-29 19:48:56 +02:00
Martin Tranberg
f5e54b185e Gør 'quickxorhash' valgfri for at undgå installationsfejl på Windows
- Fjerner quickxorhash fra requirements.txt for at undgå C++ Build Tools fejlen
- Tilføjer note i README.md om at biblioteket er valgfrit (findes Python-fallback)
- Sikrer at 'pip install -r requirements.txt' fungerer uden fejl for alle brugere
2026-03-29 19:40:12 +02:00
Martin Tranberg
c5d4ddaab0 Enterprise-grade optimeringer: Windows Long Path, High-Performance Hashing og Dokumentation
- Tilføjer 'get_long_path' for at understøtte Windows-stier over 260 tegn
- Implementerer dual-mode hashing: Bruger 'quickxorhash' C-bibliotek hvis muligt, ellers manual Python fallback
- Opdaterer requirements.txt med quickxorhash
- Opdaterer README.md og GEMINI.md med de seneste funktioner og tekniske specifikationer
2026-03-29 19:33:31 +02:00
Martin Tranberg
367d31671d Opdatér dokumentation med tidsstempel-synk og hash-optimeringer
- Opdaterer README.md med beskrivelse af Timestamp Sync, Hash Toggle og 30MB grænse
- Opdaterer GEMINI.md med tekniske specifikationer for QuickXorHash og biblioteks-fallback
- Tilføjer vejledning til de nye konfigurationsmuligheder i GUI'en
2026-03-29 19:25:28 +02:00
Martin Tranberg
acede4a867 Synkronisér GUI med nye hash-indstillinger og tidsstempel-logik
- Opdaterer sharepoint_gui.py med felter til ENABLE_HASH_VALIDATION og HASH_THRESHOLD_MB
- Gør download_sharepoint.py i stand til at læse disse indstillinger fra konfigurationsfilen
- Justerer GUI-layoutet (større vindue) for at give plads til de nye kontrolmuligheder
- GUI'en bruger nu automatisk den nye tidsstempel-baserede synkronisering
2026-03-29 19:23:42 +02:00
Martin Tranberg
ba968ab70e Synkronisér kun hvis SharePoint-filen er nyere end lokal kopi
- Implementerer sammenligning af lastModifiedDateTime fra SharePoint med lokal mtime
- Konverterer ISO8601 UTC-tidsstempler til unix timestamp for præcis sammenligning
- Tilføjer 1-sekunds tolerance for at håndtere filsystemets tidspræcision
- Sikrer at data kun hentes ned hvis kilden er opdateret, eller hvis lokal fil er korrupt
2026-03-29 19:19:56 +02:00
Martin Tranberg
790ca91339 Gør bibliotekssøgning mere robust og tilføj navne-fallback
- Tilføjer automatisk fallback til 'Documents' hvis 'Delte dokumenter' ikke findes
- Forbedrer fejlmeddelelsen ved at logge alle tilgængelige biblioteksnavne på sitet
- Dette løser problemer med lokaliserede SharePoint-navne (dansk vs engelsk)
2026-03-29 17:59:34 +02:00
Martin Tranberg
ed508302a6 Tilføj global toggle og konfigurerbar grænse for hash-validering
- ENABLE_HASH_VALIDATION (True/False) tilføjet til toppen af scriptet
- HASH_THRESHOLD_MB tilføjet for nem justering af størrelsesgrænsen
- verify_integrity opdateret til at respektere begge indstillinger
2026-03-29 17:45:45 +02:00
Martin Tranberg
33fbdc244d Tilføj 30 MB grænse for hash-validering
- Spring hash-tjek over for filer over 30 MB for at spare tid ved store filer (f.eks. 65 GB)
- Filer over grænsen sammenlignes kun på størrelse
- Tilføjer logning når hash-tjek springes over
2026-03-29 17:40:55 +02:00
Martin Tranberg
ad4166fb03 Fix QuickXorHash: XOR længde ind i de sidste 64 bit (bits 96-159)
- Korrigerer finaliseringslogikken så filstørrelsen XOR'es ind i de mest betydende 64 bit af 160-bit staten
- Tidligere version XOR'ede i de mindst betydende bit, hvilket gav forkerte hashes
- Dette matcher nu præcis Microsofts specifikation og fjerner falske hash-mismatches
2026-03-29 17:36:13 +02:00
Martin Tranberg
39a3aff495 Fix QuickXorHash-implementering og tilføj manglende længde-XOR
- Opdaterer quickxorhash til at bruge en 160-bit heltalsbuffer for korrekt cirkulær rotation
- Tilføjer det obligatoriske XOR-trin med filens længde, som manglede tidligere
- Sikrer korrekt 20-byte little-endian format ved base64-encoding
- Dette løser problemet med konstante hash-mismatch på ellers korrekte filer
2026-03-29 14:52:13 +02:00
Martin Tranberg
634b5ff151 Tilføj 429-håndtering, eksponentiel backoff og dybdebegrænsning
- get_fresh_download_url: tilføjer 429-tjek med Retry-After og erstatter
  fast sleep(1) med eksponentiel backoff (2^attempt sekunder)
- process_item_list: tilføjer MAX_FOLDER_DEPTH=50 guard mod RecursionError
  ved unormalt dybe SharePoint-mappestrukturer
- README og CLAUDE.md opdateret med beskrivelse af nye adfærd

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-27 15:16:12 +01:00
Martin Tranberg
3bb2b44477 Opdater README: QuickXorHash er nu fuldt implementeret
Beskrivelsen af Smart Skip & Integritet er opdateret fra "forbereder til
hash-validering" til at afspejle at QuickXorHash nu er aktivt — korrupte
filer med korrekt størrelse detekteres og re-downloades automatisk.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-27 14:40:18 +01:00
Martin Tranberg
a8048ae74d Ret fire fejl i download_sharepoint.py
- Implementér QuickXorHash korrekt med 3 × uint64 cells matching Microsofts
  C#-reference — tidligere 8-bit implementation gav forkert hash
- verify_integrity tjekker nu hash på eksisterende filer ved skip-check og
  re-downloader ved mismatch i stedet for blindt at acceptere filen
- retry_request raiser RetryError ved opbrugte forsøg i stedet for at
  returnere None, som ville crashe kaldere med AttributeError
- format_size håndterer nu filer >= 1 PB (PB og EB tilføjet)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-27 14:39:27 +01:00
Martin Tranberg
7fab89cbbb Ret tre fejl i download_sharepoint.py og tilføj CLAUDE.md
- force_refresh sendes nu korrekt til MSAL så token-cache omgås ved 401
- safe_get bruges ved download-retry efter URL-refresh for at få exponential backoff
- CSV DictWriter genbruges i stedet for at oprette to separate instanser

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-27 14:27:12 +01:00
Martin Tranberg
59eb9a4ab0 Tilføj retries til URL-refresh ved manglende @microsoft.graph.downloadUrl i API svar 2026-03-27 14:11:28 +01:00
Martin Tranberg
1c3180e037 Opdater GEMINI.md med teknisk dokumentation af 'Self-Healing Sessions' 2026-03-27 11:58:09 +01:00
Martin Tranberg
6bc4dd8f20 Opdater README med info om automatisk fornyelse af Access Tokens 2026-03-27 11:09:15 +01:00
Martin Tranberg
18158d52b2 Håndter Access Token udløb ved automatisk at forny token på 401-fejl fra Graph API 2026-03-27 11:03:14 +01:00
Martin Tranberg
931fd0dd05 Dokumentér Auto-Refresh af udløbne download-links i README 2026-03-27 09:21:36 +01:00
Martin Tranberg
483dc70ef8 Håndter 401-fejl ved automatisk at forny download-links 2026-03-27 09:15:57 +01:00
Martin Tranberg
5d5c8b2d5b Opdater README med GUI instruktioner og stop-knap funktionalitet 2026-03-26 16:06:27 +01:00
Martin Tranberg
b33009c54c Tilføj stop-knap til GUI uden at ændre i hovedscriptet 2026-03-26 16:03:34 +01:00
Martin Tranberg
368f4c515c Tilføj moderne GUI UX (sharepoint_gui.py) ved hjælp af CustomTkinter 2026-03-26 15:59:24 +01:00
Martin Tranberg
4c52b0c8db Opdater dokumentation (README og GEMINI.md) med Production Ready specifikationer 2026-03-26 15:44:30 +01:00
Martin Tranberg
1ed21e4184 Production Readiness: Exponential Backoff, Resume Download, Logging og Integrity Verification 2026-03-26 15:43:02 +01:00
Martin Tranberg
a74abf4186 Tilføj paginering og forbedret status-logging for store filer 2026-03-26 15:38:54 +01:00
Martin Tranberg
908152153b Update README with real-time progress indicator and network drive stability features. 2026-03-26 15:30:53 +01:00
Martin Tranberg
6333f27037 Implementer parallel download med ThreadPoolExecutor (max 5 tråde) 2026-03-26 15:15:05 +01:00
Martin Tranberg
6849662483 Add pre-check for local path accessibility and specific error handling for disconnected network drives. 2026-03-26 15:02:39 +01:00
Martin Tranberg
6f65bf3f34 Enhance progress reporting with specific actions (Scanning/Checking/Downloading) and immediate counter updates. 2026-03-26 14:51:12 +01:00
Martin Tranberg
0314a19c3d Improve real-time status updates and recursive scanning visibility. 2026-03-26 14:47:00 +01:00
Martin Tranberg
95622ee1a8 Add progress indicator and detailed status updates to the download process. 2026-03-26 14:44:12 +01:00
Martin Tranberg
e3a3824a1c Fix SyntaxError in download_sharepoint.py caused by incorrect escaping during previous update. 2026-03-26 14:41:28 +01:00
Martin Tranberg
81d5a2f822 Update README with information about filename sanitization, long path support, and improved error handling. 2026-03-26 14:38:59 +01:00
Martin Tranberg
ef3d8fa56d Fix [Errno 22] Invalid argument by adding filename sanitization and long path support. Improved error reporting and folder path cleaning for Windows compatibility. 2026-03-26 14:36:48 +01:00
Martin Tranberg
aec8858362 Tilføj vejledning til Entra ID opsætning i README 2026-03-26 10:53:16 +01:00
Martin Tranberg
aea5ff68c0 Understøt download af hele biblioteket hvis FOLDERS_TO_DOWNLOAD er tom 2026-03-26 10:51:46 +01:00
Martin Tranberg
f67cfc22ee Tilføj connection_info skabelon og opdater README 2026-03-26 10:50:20 +01:00
Martin Tranberg
407e58baec Fix NameError: folders_str is not defined 2026-03-26 10:45:10 +01:00
Martin Tranberg
0f7c5fff1f Opdater README med token refresh og smart skip logik 2026-03-26 10:41:38 +01:00
Martin Tranberg
eca83031b1 Implementer token refresh og skip-logik for eksisterende filer 2026-03-26 10:41:01 +01:00
Martin Tranberg
1eb5218624 Add README.md with project documentation 2026-03-26 10:35:58 +01:00
Martin Tranberg
fb20712c2e Initial commit: Sharepoint folder download tool using Graph API 2026-03-26 10:34:31 +01:00