Initial commit: SharePoint Explorer with modern UI and settings.json support
This commit is contained in:
65
GEMINI.md
Normal file
65
GEMINI.md
Normal file
@@ -0,0 +1,65 @@
|
||||
# SharePoint Browser
|
||||
|
||||
A modern Python-based file browser for Microsoft SharePoint, specifically designed to bypass the Windows `MAX_PATH` (260 character) limitation. It achieves this by interacting directly with the Microsoft Graph API using unique IDs and downloading files to short, temporary local paths for editing.
|
||||
|
||||
## Project Overview
|
||||
|
||||
- **Purpose:** Provide a seamless SharePoint browsing and editing experience regardless of folder depth.
|
||||
- **Key Strategy:** Uses unique Microsoft Graph API IDs instead of traditional file paths to avoid path length issues.
|
||||
- **Core Workflow:**
|
||||
1. Authenticate via MSAL.
|
||||
2. Browse SharePoint sites/folders dynamically.
|
||||
3. **Checkout** a file on SharePoint.
|
||||
4. **Download** to a short local path (e.g., `C:\Temp_SP\[ShortHash].[ext]`).
|
||||
5. **Monitor** local file usage; detect when the editing application is closed.
|
||||
6. **Upload** the modified file back to SharePoint.
|
||||
7. **Checkin** and clean up local temporary files.
|
||||
|
||||
## Tech Stack
|
||||
|
||||
- **Language:** Python 3.x
|
||||
- **GUI Framework:** [CustomTkinter](https://github.com/TomSchimansky/CustomTkinter) (Modern, responsive UI)
|
||||
- **Authentication:** [MSAL (Microsoft Authentication Library)](https://github.com/AzureAD/microsoft-authentication-library-for-python)
|
||||
- **API Interaction:** Microsoft Graph API via `requests`
|
||||
- **File Monitoring:** Local file lock polling
|
||||
|
||||
## Getting Started
|
||||
|
||||
### Prerequisites
|
||||
|
||||
Ensure you have Python installed. You will also need to install the following dependencies:
|
||||
|
||||
```bash
|
||||
pip install customtkinter msal requests
|
||||
```
|
||||
|
||||
### Running the Application
|
||||
|
||||
Execute the main script:
|
||||
|
||||
```bash
|
||||
python sharepoint_browser.py
|
||||
```
|
||||
|
||||
### Configuration
|
||||
|
||||
The application is pre-configured with a `CLIENT_ID` and `TENANT_ID` for Microsoft authentication. These are located at the top of `sharepoint_browser.py`:
|
||||
|
||||
```python
|
||||
CLIENT_ID = '281c91fc-4572-4614-b4d2-e3795d4b502d'
|
||||
TENANT_ID = 'cce9d2ae-239b-4a22-86bb-fb904c85be79'
|
||||
TEMP_DIR = "C:\\Temp_SP"
|
||||
```
|
||||
|
||||
## Architecture & Conventions
|
||||
|
||||
- **Main Entry Point:** `sharepoint_browser.py` contains both the GUI logic and the Graph API integration.
|
||||
- **Threading:** File operations (download, wait, upload) are executed in background threads (`threading.Thread`) to keep the GUI responsive.
|
||||
- **File Detection:** Uses a polling mechanism with `os.rename(local_path, local_path)` to detect when the external editor (e.g., Word, Excel) has released the file lock.
|
||||
- **Path Handling:** Generates unique local filenames using MD5 hashes of the SharePoint item IDs to ensure they remain short and avoid collisions.
|
||||
|
||||
## Key Files
|
||||
|
||||
- `sharepoint_browser.py`: The complete application logic.
|
||||
- `project_description.md`: Original project requirements and context (in Danish).
|
||||
- `GEMINI.md`: This instructional context file.
|
||||
Reference in New Issue
Block a user