Files
gofilepy/README.md
2025-12-10 16:39:56 +01:00

116 lines
2.7 KiB
Markdown

# GofilePy
[![Build and Release](https://github.com/garnajee/gofilepy/actions/workflows/build_release.yml/badge.svg)](https://github.com/garnajee/gofilepy/actions/workflows/build_release.yml)
A Python library and CLI tool for [Gofile.io](https://gofile.io).
It supports the free API tiers, streaming uploads (low memory usage for large files), and script-friendly JSON output.
## Features
- **Streaming Uploads**: Upload 100GB+ files without loading them into RAM.
- **Folder Management**: Upload to specific folders or create new ones automatically.
- **Script Ready**: JSON output mode for easy parsing in pipelines.
- **Free Tier Support**: Handles Guest accounts and Standard tokens.
- **Progress Bar**: Visual feedback for long uploads.
## Installation
### From Source
1. Clone the repository.
2. Install via pip:
```bash
pip install .
```
## Usage (CLI)
### Basic Upload
Upload a single file. A new public folder will be created automatically if you don't provide one.
```bash
gofilepy video.mp4
```
### Upload with Token
Export your token (Get it from your Gofile Profile) to access your account storage.
```bash
export GOFILE_TOKEN="your_token_here"
gofilepy my_file.zip
```
### Upload to a Specific Folder
If you have an existing folder ID:
```bash
gofilepy -f "folder-uuid-123" image.png
```
### Group Upload (Single Folder)
Upload multiple files. The first file creates a folder, and the rest are uploaded into it.
```bash
gofilepy -s part1.rar part2.rar part3.rar
```
### Scripting Mode (JSON Output)
Use `--json` to suppress human-readable text and output a JSON array.
```bash
gofilepy --json file.txt
# Output: [{"file": "file.txt", "status": "success", "downloadPage": "...", ...}]
```
### Verbose Mode
Debug connection issues or API responses.
```bash
gofilepy -vv big_file.iso
```
## Usage (Library)
You can use `gofilepy` in your own Python scripts.
```python
from gofilepy import GofileClient
# Initialize (Token optional for guest upload)
client = GofileClient(token="your_token")
# Simple Callback for progress
def my_progress(bytes_read):
print(f"Read: {bytes_read} bytes")
# Upload (Streaming)
try:
response = client.upload_file(
file_path="/path/to/movie.mkv",
folder_id=None, # None = Create new folder
callback=my_progress
)
print(f"Uploaded! Download here: {response['downloadPage']}")
except Exception as e:
print(f"Error: {e}")
```
## Building for Release
To build a `.whl` (Wheel) file and a source distribution:
1. Install build tools:
```bash
pip install build twine
```
2. Run build:
```bash
python -m build
```
3. Artifacts will be in `dist/`.
## License
This project is licensed under the [MIT](LICENSE) License.