{"id":50675263,"url":"https://github.com/abdo-omran2206/gofilecli","last_synced_at":"2026-06-08T15:03:27.516Z","repository":{"id":356605018,"uuid":"1233290694","full_name":"Abdo-omran2206/Gofilecli","owner":"Abdo-omran2206","description":"The missing command-line companion for GoFile.io. Upload files, manage your account, and track your history straight from the terminal.","archived":false,"fork":false,"pushed_at":"2026-05-16T18:56:43.000Z","size":27,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-16T20:44:34.850Z","etag":null,"topics":["cli","command-line-tool","file-sharing","file-upload","gofile","python","python3","rich-cli","sqlite3","terminal-app"],"latest_commit_sha":null,"homepage":"https://gofile.io/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Abdo-omran2206.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-08T19:54:47.000Z","updated_at":"2026-05-14T12:35:09.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/Abdo-omran2206/Gofilecli","commit_stats":null,"previous_names":["abdo-omran2206/gofilecli"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Abdo-omran2206/Gofilecli","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Abdo-omran2206%2FGofilecli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Abdo-omran2206%2FGofilecli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Abdo-omran2206%2FGofilecli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Abdo-omran2206%2FGofilecli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Abdo-omran2206","download_url":"https://codeload.github.com/Abdo-omran2206/Gofilecli/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Abdo-omran2206%2FGofilecli/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34067353,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-08T02:00:07.615Z","response_time":111,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","command-line-tool","file-sharing","file-upload","gofile","python","python3","rich-cli","sqlite3","terminal-app"],"created_at":"2026-06-08T15:03:25.992Z","updated_at":"2026-06-08T15:03:27.507Z","avatar_url":"https://github.com/Abdo-omran2206.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"logo.svg\" alt=\"GoFileCLI Logo\" width=\"500\"/\u003e\n  \u003ch1\u003eGoFileCLI\u003c/h1\u003e\n  \u003cp\u003e\u003ci\u003eThe missing command-line companion for \u003ca href=\"https://gofile.io/\"\u003eGoFile.io\u003c/a\u003e\u003c/i\u003e\u003c/p\u003e\n  \u003cp\u003e\n    \u003ca href=\"https://www.python.org\"\u003e\u003cimg src=\"https://img.shields.io/badge/python-3.6+-blue.svg?style=flat-square\u0026logo=python\u0026logoColor=white\" alt=\"Python\"/\u003e\u003c/a\u003e\n    \u003ca href=\"https://gofile.io/api\"\u003e\u003cimg src=\"https://img.shields.io/badge/API-GoFile-orange.svg?style=flat-square\" alt=\"GoFile\"/\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/Abdo-omran2206/Gofilecli/issues\"\u003e\u003cimg src=\"https://img.shields.io/badge/contributions-welcome-brightgreen.svg?style=flat-square\" alt=\"Contributions Welcome\"/\u003e\u003c/a\u003e\n  \u003c/p\u003e\n\u003c/div\u003e\n\n---\n\n## Features\n\n- 📤 Upload single files or entire folders to GoFile.io\n- 📊 Real-time upload progress bar with speed and ETA\n- 🗃️ Upload history stored in a local SQLite database\n- 📋 Copy download links to clipboard instantly\n- 🔑 API token management (set / remove / view)\n- ⚙️ Configurable auto-save and account status settings\n- 🖥️ Interactive TUI menu **and** scriptable CLI commands\n\n---\n\n## Project Structure\n\n```\nGoFile/\n├── main.py                  # Entry point — launches CLI or interactive GUI\n├── requirements.txt\n├── .env                     # Auto-created; stores API_TOKEN, ACCOUNT_STATUS, AUTO_SAVE\n│\n├── cli/\n│   ├── parser.py            # argparse definitions for all CLI subcommands\n│   └── commands.py          # Handler functions wired to each subcommand\n│\n├── lib/\n│   ├── Gofile.py            # GoFile API client (upload file / folder)\n│   ├── config.py            # .env read/write (token, status, auto-save)\n│   └── db.py                # SQLite history database\n│\n├── screens/\n│   ├── upload_menu.py       # Interactive upload screen\n│   ├── history_menu.py      # Interactive history browser\n│   ├── account_menu.py      # Interactive login / logout screen\n│   └── settings_menu.py     # Interactive settings screen\n│\n└── utils/\n    └── ui.py                # Colors, clear(), copy_link(), format_size(),\n                             # ProgressFile, upload_progress_bar()\n```\n\n---\n\n## Installation\n\n```bash\ngit clone https://github.com/Abdo-omran2206/Gofilecli.git\ncd Gofilecli\npip install -r requirements.txt\n```\n\n**Dependencies:**\n\n| Package | Version |\n|---|---|\n| `requests` | \u003e= 2.25.1 |\n| `art` | \u003e= 5.9 |\n| `rich` | \u003e= 13.0 |\n| `pyperclip` | \u003e= 1.8 |\n| `python-dotenv` | \u003e= 1.0.0 |\n| `prompt_toolkit` | (used by upload screen) |\n\n---\n\n## Usage\n\n### Interactive Mode\n\nRunning without any subcommand launches the interactive TUI:\n\n```bash\npython main.py\n```\n\nMenu options:\n1. **Upload File** — Enter a file/folder path with tab-completion\n2. **View History** — Browse past uploads in a Rich table, view details, copy links, delete entries\n3. **Account** — Login (set token) or Logout (remove token)\n4. **Settings** — Toggle auto-save, toggle account status, clear history\n5. **Exit**\n\n---\n\n### CLI Mode\n\nAll commands follow the pattern:\n\n```bash\npython main.py \u003ccommand\u003e [options]\n```\n\n#### `version` — Show application version\n\n```bash\npython main.py version\n```\n\n---\n\n#### `upload` — Upload multiple files or folders\n\n```bash\npython main.py upload \u003cFILE_PATH\u003e [FILE_PATH ...] [--no-save]\n```\n\n| Argument | Description |\n|---|---|\n| `FILE_PATH` | One or more space-separated paths to files **or** directories to upload |\n| `--no-save` | Skip saving the upload records to the local history database |\n\n**Examples:**\n```bash\n# Upload a single file\npython main.py upload \"C:\\Users\\Me\\Documents\\report.pdf\"\n\n# Upload multiple files and folders at once\npython main.py upload \"C:\\Users\\Me\\photo.jpg\" \"C:\\Users\\Me\\Documents\\report.pdf\" \"C:\\Users\\Me\\MyFolder\"\n\n# Upload without saving to history\npython main.py upload \"C:\\Users\\Me\\photo.jpg\" --no-save\n```\n\n\u003e **Note:** Folder uploads require an **active** account status and a valid API token.\n\n---\n\n#### `history` — View or manage upload history\n\n```bash\npython main.py history [--show ID] [--delete ID] [--clear]\n```\n\n| Option | Description |\n|---|---|\n| *(no options)* | Open the interactive history browser |\n| `--show ID` | Print full details of the history entry with the given ID |\n| `--delete ID` | Delete the history entry with the given ID |\n| `--clear` | Delete **all** history entries |\n\n**Examples:**\n```bash\npython main.py history              # Interactive browser\npython main.py history --show 5     # Show details for entry #5\npython main.py history --delete 5   # Delete entry #5\npython main.py history --clear      # Wipe all history\n```\n\n---\n\n#### `token` — Manage your GoFile API token\n\n```bash\npython main.py token [--set API_TOKEN] [--remove]\n```\n\n| Option | Description |\n|---|---|\n| *(no options)* | Display the currently stored token |\n| `--set API_TOKEN` | Save a new API token and set account status to `active` |\n| `--remove` | Remove the stored token and set account status to `guest` |\n\n**Examples:**\n```bash\npython main.py token                        # Show current token\npython main.py token --set abc123xyz        # Set a new token\npython main.py token --remove              # Remove token / logout\n```\n\n---\n\n#### `config` — Manage configuration settings\n\n```bash\npython main.py config [--toggle-autosave] [--get-autosave]\n                      [--toggle-account-status] [--get-account-status]\n```\n\n| Option | Description |\n|---|---|\n| `--toggle-autosave` | Switch auto-save history between ON and OFF |\n| `--get-autosave` | Show current auto-save setting |\n| `--toggle-account-status` | Switch account status between `active` and `guest` |\n| `--get-account-status` | Show current account status |\n\n**Examples:**\n```bash\npython main.py config --get-autosave\npython main.py config --toggle-autosave\npython main.py config --get-account-status\npython main.py config --toggle-account-status\n```\n\n---\n\n## Configuration\n\nSettings are stored in a `.env` file (auto-created on first run):\n\n| Key | Default | Description |\n|---|---|---|\n| `API_TOKEN` | *(empty)* | Your GoFile API token |\n| `ACCOUNT_STATUS` | `guest` | `guest` or `active` |\n| `AUTO_SAVE` | `true` | Whether to save uploads to history automatically |\n\n---\n\n## How It Works\n\n1. **Server selection** — The client calls `GET /servers` to pick the best available GoFile server before each upload.\n2. **File upload** — Files are streamed via `multipart/form-data` POST with a live Rich progress bar showing bytes transferred, speed, and ETA.\n3. **Folder upload** — The first file in the folder is uploaded to create a GoFile folder; subsequent files are uploaded into the same folder using the returned `parentFolder` ID.\n4. **History** — On successful upload, metadata (file name, original path, GoFile folder ID, download link, size, MIME type, timestamp) is stored in `data/gofilecli.db`.\n\n---\n\n## Author\n\nMade by [AkiraOmran](https://github.com/Abdo-omran2206)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabdo-omran2206%2Fgofilecli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fabdo-omran2206%2Fgofilecli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabdo-omran2206%2Fgofilecli/lists"}