Files
gofilepy/README.md
√(noham)² 9a4c0b1776 Add download support to CLI and client
Implemented file and folder download functionality in the CLI and GofileClient, including new CLI arguments for downloading by URL or content ID and specifying output directory.
2025-12-13 15:44:20 +01:00

168 lines
3.5 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.
- **Download Support**: Download files from Gofile URLs or content IDs.
- **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 and downloads.
## Installation
### From Source
1. Clone the repository:
```bash
git clone https://github.com/garnajee/gofilepy.git && cd gofilepy
```
2. Install via [uv](https://docs.astral.sh/uv/getting-started/installation/):
```bash
uv sync
```
3. Running the CLI
```bash
uv run gofilepy --help
```
4. (Optional) Install the package in your environment
```bash
uv 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
```
### Download Files
Download files from a Gofile URL or content ID.
Download from URL:
```bash
gofilepy -d https://gofile.io/d/GxHNKL
```
Download from content ID:
```bash
gofilepy -d GxHNKL
```
Download to specific directory
```bash
gofilepy -d GxHNKL -o ./downloads
```
### 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.
### Upload Files
```python
from gofilepy import GofileClient
client = GofileClient()
# client = GofileClient(token="YOUR_TOKEN_HERE") # Optional token for private uploads
file = client.upload(file=open("./test.py", "rb"))
print(file.name)
print(file.page_link) # View and download file at this link
```
### Download Files
```python
from gofilepy import GofileClient
client = GofileClient()
contents = client.get_contents("GxHNKL")
print("Folder contents:")
print(contents)
```
## Development
For contributors and developers:
1. Install with development dependencies:
```bash
uv sync --extra dev
```
2. Run pylint to check code quality:
```bash
uv run pylint src/gofilepy
```
3. Install in editable mode for development:
```bash
uv pip install -e .
```
## Building for Release
To build a `.whl` (Wheel) file and a source distribution:
1. Install build tools:
```bash
pip install build
```
2. Run build:
```bash
python -m build
```
3. Artifacts will be in `dist/`.
## License
This project is licensed under the [MIT](LICENSE) License.