Refactor CLI and client for improved structure and error handling
GofilePy
A Python library and CLI tool for 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
- Clone the repository:
git clone https://github.com/garnajee/gofilepy.git && cd gofilepy
- Install via uv:
uv sync
- Running the CLI
uv run gofilepy --help
- (Optional) Install the package in your environment
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.
gofilepy video.mp4
Upload with Token
Export your token (Get it from your Gofile Profile) to access your account storage.
export GOFILE_TOKEN="your_token_here"
gofilepy my_file.zip
Upload to a Specific Folder
If you have an existing folder ID:
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.
gofilepy -s part1.rar part2.rar part3.rar
Download Files
Download files from a Gofile URL or content ID.
Download from URL:
gofilepy -d https://gofile.io/d/GxHNKL
Download from content ID:
gofilepy -d GxHNKL
Download to specific directory
gofilepy -d GxHNKL -o ./downloads
Scripting Mode (JSON Output)
Use --json to suppress human-readable text and output a JSON array.
gofilepy --json file.txt
# Output: [{"file": "file.txt", "status": "success", "downloadPage": "...", ...}]
Verbose Mode
Debug connection issues or API responses.
gofilepy -vv big_file.iso
Usage (Library)
You can use gofilepy in your own Python scripts.
Upload Files
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
from gofilepy import GofileClient
client = GofileClient()
contents = client.get_contents("GxHNKL")
print("Folder contents:")
print(contents)
Development
For contributors and developers:
- Install with development dependencies:
uv sync --extra dev
- Run pylint to check code quality:
uv run pylint src/gofilepy
- Install in editable mode for development:
uv pip install -e .
Building for Release
To build a .whl (Wheel) file and a source distribution:
- Install build tools:
pip install build - Run build:
python -m build - Artifacts will be in
dist/.
License
This project is licensed under the MIT License.