mirror of
https://github.com/NohamR/gofilepy.git
synced 2026-01-10 08:18:18 +00:00
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.
168 lines
3.5 KiB
Markdown
168 lines
3.5 KiB
Markdown
# GofilePy
|
|
|
|
[](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.
|