- 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
75 lines
4.4 KiB
Markdown
75 lines
4.4 KiB
Markdown
# 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 (`lastModifiedDateTime` vs. lokal `mtime`). 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 `Range` headers, 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.log` samt 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
|
|
|
|
1. Sørg for at have Python 3 installeret.
|
|
2. Installer de nødvendige biblioteker:
|
|
```bash
|
|
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:
|
|
|
|
1. Log ind på [Microsoft Entra admin center](https://entra.microsoft.com/).
|
|
2. Gå til **Identity** > **Applications** > **App registrations** > **New registration**.
|
|
3. Giv appen et navn (f.eks. "SharePoint Download Tool") og vælg "Accounts in this organizational directory only". Klik på **Register**.
|
|
4. Noter din **Application (client) ID** og **Directory (tenant) ID**.
|
|
5. Gå til **API permissions** > **Add a permission** > **Microsoft Graph**.
|
|
6. Vælg **Application permissions**.
|
|
7. Søg efter og tilføj `Sites.Read.All`.
|
|
8. **VIGTIGT:** Klik på **Grant admin consent for [dit domæne]**.
|
|
9. Gå til **Certificates & secrets** > **New client secret**.
|
|
10. **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:
|
|
```bash
|
|
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:
|
|
1. Udfyld `connection_info.txt`.
|
|
2. Kør:
|
|
```bash
|
|
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.
|