- 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
SharePoint Folder Download Tool
Dette script gør det muligt at downloade specifikke mapper fra et SharePoint dokumentbibliotek til din lokale computer ved hjælp af Microsoft Graph API. Scriptet er designet til professionelt brug med fokus på hastighed, stabilitet og dataintegritet.
Funktioner
- Moderne GUI (UX): Flot mørkt interface med CustomTkinter, der gør det nemt at gemme indstillinger, vælge mapper og se status i realtid.
- Stop-funktionalitet: Afbryd synkroniseringen midt i processen direkte fra UI.
- Paralleldownload: Benytter
ThreadPoolExecutor(default 5 tråde) for markant højere overførselshastighed. - Timestamp Synkronisering: Downloader kun filer, hvis kilden på SharePoint er nyere end din lokale fil (
lastModifiedDateTimevs. lokalmtime). Hvis din lokale fil er nyere, springes download over. - Konfigurerbar Integritet: Validerer filernes korrekthed med Microsofts officielle QuickXorHash-algoritme.
- Toggle: Mulighed for at slå hash-validering helt til/fra.
- Smart Grænse: Definer en MB-grænse (standard 30 MB), hvor filer herunder hashes, mens større filer (f.eks. 65 GB) kun sammenlignes på størrelse for at spare tid.
- Robust Bibliotekssøgning: Finder automatisk dit bibliotek og har indbygget fallback (f.eks. fra "Delte dokumenter" til "Documents"), hvis SharePoint bruger engelske navne bag kulisserne.
- Resume Download: Understøtter HTTP
Rangeheaders, så afbrudte downloads af store filer (f.eks. >50GB) genoptages fra det sidste byte i stedet for at starte forfra. - Auto-Refresh af Downloads & Tokens: Håndterer automatisk udløbne download-links og Access Tokens (401 Unauthorized). Værktøjet fornyer både URL'er og adgangsnøgler midt i processen uden at afbryde synkroniseringen.
- Exponential Backoff: Håndterer automatisk Microsoft Graph throttling (
429 Too Many Requests) og netværksfejl med intelligente genforsøg. - Dybdebeskyttelse: Mappegennemgang stopper ved 50 niveauers dybde for at beskytte mod unormalt dybe strukturer.
- Struktureret Logging: Gemmer detaljerede logs i
sharepoint_download.logsamt en CSV-fejlrapport for hver kørsel. - Paginering: Håndterer automatisk mapper med mere end 200 elementer.
- Entra ID Integration: Benytter MSAL for sikker godkendelse via Client Credentials flow.
Installation
- Sørg for at have Python 3 installeret.
- Installer de nødvendige biblioteker:
pip install -r requirements.txt
Opsætning i Microsoft Entra ID (Azure AD)
For at scriptet kan få adgang til SharePoint, skal du oprette en App-registrering:
- Log ind på Microsoft Entra admin center.
- Gå til Identity > Applications > App registrations > New registration.
- Giv appen et navn (f.eks. "SharePoint Download Tool") og vælg "Accounts in this organizational directory only". Klik på Register.
- Noter din Application (client) ID og Directory (tenant) ID.
- Gå til API permissions > Add a permission > Microsoft Graph.
- Vælg Application permissions.
- Søg efter og tilføj
Sites.Read.All. - VIGTIGT: Klik på Grant admin consent for [dit domæne].
- Gå til Certificates & secrets > New client secret.
- VIGTIGT: Kopier værdien under Value med det samme (din
CLIENT_SECRET).
Anvendelse
Der er to måder at køre værktøjet på:
1. GUI Version (Anbefalet)
For en moderne grafisk brugerflade, kør:
python sharepoint_gui.py
Her kan du nemt indtaste indstillinger, gemme dem, vælge destinationsmappe og starte/stoppe synkroniseringen. Du kan også styre om Hash-validering skal være aktiv og ved hvilken størrelse den skal springes over.
2. CLI Version (Til automatisering)
Hvis du ønsker at køre scriptet direkte fra terminalen:
- Udfyld
connection_info.txt. - Kør:
python download_sharepoint.py
Konfiguration (connection_info.txt)
ENABLE_HASH_VALIDATION: Sæt til"True"eller"False".HASH_THRESHOLD_MB: Talværdi (f.eks."30"eller"50").
Logfiler
sharepoint_download.log: Teknisk log over alle handlinger og fejl.download_report_YYYYMMDD_HHMMSS.csv: En hurtig oversigt over filer der fejlede.
Sikkerhed
Husk at .gitignore er sat op til at ignorere connection_info.txt, så dine adgangskoder ikke uploades til Git.