{"id":19228020,"url":"https://github.com/ecomgraduates/cloudapp-downloader","last_synced_at":"2026-06-09T16:02:46.920Z","repository":{"id":205663117,"uuid":"714791047","full_name":"EcomGraduates/cloudapp-downloader","owner":"EcomGraduates","description":"CloudApp Video Downloader is a simple Node.js command-line tool to download videos from loom.com. It retrieves the video download link based on the video ID in the URL and saves the video with a specified filename or, by default, the video ID.","archived":false,"fork":false,"pushed_at":"2025-12-22T20:53:03.000Z","size":133,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-12-23T10:04:30.224Z","etag":null,"topics":["bulk","bulkdownload","cloudapp","download","downloader","zight"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/EcomGraduates.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-11-05T20:18:57.000Z","updated_at":"2025-12-22T20:53:07.000Z","dependencies_parsed_at":null,"dependency_job_id":"a9f48cb6-6a34-419f-b621-44165e5343d8","html_url":"https://github.com/EcomGraduates/cloudapp-downloader","commit_stats":{"total_commits":10,"total_committers":2,"mean_commits":5.0,"dds":0.09999999999999998,"last_synced_commit":"0bda866779d1384207c6bd5ba4c429ad70a98b0f"},"previous_names":["ecomgraduates/cloudapp-downloader"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/EcomGraduates/cloudapp-downloader","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EcomGraduates%2Fcloudapp-downloader","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EcomGraduates%2Fcloudapp-downloader/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EcomGraduates%2Fcloudapp-downloader/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EcomGraduates%2Fcloudapp-downloader/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/EcomGraduates","download_url":"https://codeload.github.com/EcomGraduates/cloudapp-downloader/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EcomGraduates%2Fcloudapp-downloader/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34114437,"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-09T02:00:06.510Z","response_time":63,"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":["bulk","bulkdownload","cloudapp","download","downloader","zight"],"created_at":"2024-11-09T15:26:28.807Z","updated_at":"2026-06-09T16:02:46.913Z","avatar_url":"https://github.com/EcomGraduates.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CloudApp/Zight Downloader\n\nA powerful Node.js package to download, upload, and manage files on Zight (formerly CloudApp). Use it as a **CLI tool** or as a **programmatic library** in your Node.js projects.\n\n## Features\n\n- ✨ **Dual Mode** - Use as CLI tool or import as a library in your projects\n- 📂 **List Drops** - View and browse your files with pagination\n- 📊 **Export to CSV** - Export your entire library metadata to a CSV file\n- ⬇️ **Flexible Downloads** - Download by ID, URL, from a list file, or bulk from your account\n- ⬆️ **Upload Files** - Upload single files or entire directories\n- 🗑️ **Delete \u0026 Trash** - Delete files, view trash, restore items, or permanently delete\n- 🎬 **Video Filtering** - Option to download only video files\n- 📹 **Video Requests** - Create, list, edit, and delete video request links\n- 📁 **Collections** - View your collections\n- 🔔 **Notifications** - View and manage notifications\n- 🔄 **Auto Session Refresh** - Sessions auto-refresh when expired\n- 🔐 **Secure Config** - Credentials stored securely in your OS config directory\n- ⏱️ **Rate Limiting** - Built-in delays between requests to avoid being blocked\n\n## Installation\n\n### Via NPM (Recommended)\n\n```bash\nnpm install -g cloudapp-dl\n```\n\n### From Source\n\n```bash\ngit clone https://github.com/EcomGraduates/cloudapp-downloader.git\ncd cloudapp-downloader\nnpm install\nnpm link  # Makes 'cloudapp-dl' available globally\n```\n\n---\n\n## Using as a Library\n\nYou can import and use `cloudapp-dl` as a programmatic library in your Node.js projects.\n\n### Quick Start (ESM)\n\n```javascript\nimport { ZightClient } from 'cloudapp-dl';\n\n// Create client with email/password\nconst client = new ZightClient({\n  email: 'your@email.com',\n  password: 'your-password'\n});\n\n// Login\nawait client.login();\n\n// Use the API\nconst account = await client.getAccountDetails();\nconsole.log('Logged in as:', account.data.user.attributes.email);\n```\n\n### Quick Start (CommonJS)\n\n```javascript\nconst { ZightClient } = require('cloudapp-dl');\n\nasync function main() {\n  const client = new ZightClient({\n    email: 'your@email.com',\n    password: 'your-password'\n  });\n\n  await client.login();\n  \n  const account = await client.getAccountDetails();\n  console.log('Logged in as:', account.data.user.attributes.email);\n}\n\nmain();\n```\n\n### Authentication Options\n\n```javascript\n// Option 1: Email/Password (will call login() to authenticate)\nconst client = new ZightClient({\n  email: process.env.ZIGHT_EMAIL,\n  password: process.env.ZIGHT_PASSWORD\n});\nawait client.login();\n\n// Option 2: Existing Session ID (skip login if you already have a session)\nconst client = new ZightClient({\n  sessionId: 'your-existing-session-id'\n});\n```\n\n### Debug Mode\n\nEnable debug logging to see what's happening under the hood:\n\n```javascript\nconst client = new ZightClient({\n  email: 'your@email.com',\n  password: 'your-password',\n  debug: true  // Enables debug logging\n});\n```\n\n### Available Methods\n\n#### Account \u0026 Info\n\n```javascript\n// Get account details\nconst account = await client.getAccountDetails();\n\n// Get organization details\nconst org = await client.getOrganization();\n\n// Check authentication status\nconsole.log('Authenticated:', client.isAuthenticated);\nconsole.log('Session ID:', client.sessionId);\n```\n\n#### Files \u0026 Items\n\n```javascript\n// List items (paginated)\nconst items = await client.getItemsFromDashboard({ page: 1, perPage: 24 });\n\n// Get all items\nconst allItems = await client.getAllItems();\n\n// Get a specific item\nconst item = await client.getItem('itemId');\n\n// Search items\nconst results = await client.searchDrops('search query');\n\n// Get drops (files)\nconst drops = await client.getDrops({ page: 1, perPage: 20 });\n```\n\n#### Upload \u0026 Download\n\n```javascript\n// Upload a file\nconst result = await client.uploadFile('./screenshot.png');\nconsole.log('Share URL:', result.share_url);\n\n// Upload with progress callback\nconst result = await client.uploadFile('./video.mp4', (progress) =\u003e {\n  const percent = Math.round((progress.loaded / progress.total) * 100);\n  console.log(`Upload progress: ${percent}%`);\n});\n\n// Get download URL for an item\nconst item = await client.getItem('itemId');\nconsole.log('Download URL:', item.download_url);\n```\n\n#### Delete \u0026 Trash\n\n```javascript\n// Delete an item (move to trash)\nawait client.deleteItem('itemId');\n\n// Permanently delete an item\nawait client.deleteItem('itemId', true);\n\n// List items in trash\nconst trashItems = await client.getTrashItems();\n\n// Restore an item from trash\nawait client.restoreItem('itemId');\n\n// Empty trash\nawait client.emptyTrash();\n```\n\n#### Video Requests\n\n```javascript\n// Create a video request link\nconst request = await client.createVideoRequest({\n  name: 'Help me with this bug',\n  message: 'Please record your screen showing the issue'\n});\nconsole.log('Share link:', request.data.request_content.links.request_link);\n\n// List all video requests\nconst requests = await client.getVideoRequests();\n\n// Get a specific request\nconst req = await client.getVideoRequest('requestId');\n\n// Update a request\nawait client.updateVideoRequest('requestId', {\n  name: 'Updated Title',\n  message: 'Updated instructions'\n});\n\n// Delete a request\nawait client.deleteVideoRequest('requestId');\n```\n\n#### Collections\n\n```javascript\n// List collections\nconst collections = await client.getCollections();\n\n// Get all collections\nconst allCollections = await client.getAllCollections();\n```\n\n#### Notifications\n\n```javascript\n// Get notifications\nconst notifications = await client.getNotifications({ limit: 10 });\n\n// Get unread notifications\nconst unread = await client.getNotifications({ viewed: 'no', limit: 20 });\n\n// Mark a notification as read\nawait client.markNotificationViewed('notificationId');\n\n// Mark all notifications as read\nawait client.markAllNotificationsViewed();\n```\n\n### Full Example\n\n```javascript\nimport { ZightClient } from 'cloudapp-dl';\n\nasync function main() {\n  // Initialize client\n  const client = new ZightClient({\n    email: process.env.ZIGHT_EMAIL,\n    password: process.env.ZIGHT_PASSWORD,\n    debug: false\n  });\n\n  // Login\n  await client.login();\n  console.log('Logged in successfully!');\n\n  // Get account info\n  const account = await client.getAccountDetails();\n  const user = account.data.user;\n  console.log(`Welcome, ${user.attributes.name}!`);\n  console.log(`You have ${user.attributes.item_count} items.`);\n\n  // Upload a file\n  const uploadResult = await client.uploadFile('./screenshot.png');\n  console.log('Uploaded:', uploadResult.share_url);\n\n  // Create a video request\n  const request = await client.createVideoRequest({\n    name: 'Support Request',\n    message: 'Please record your screen showing the issue'\n  });\n  console.log('Request link:', request.data.request_content.links.request_link);\n\n  // List recent items\n  const items = await client.getItemsFromDashboard({ page: 1, perPage: 12 });\n  console.log(`Recent items: ${items.items.length}`);\n\n  // Get notifications\n  const notifications = await client.getNotifications({ limit: 5 });\n  console.log(`Notifications: ${notifications.data.client_notifications.length}`);\n}\n\nmain().catch(console.error);\n```\n\n### Demo Scripts\n\nCheck out the `demo/` directory for example scripts:\n\n```bash\ncd demo\ncp env.example .env\n# Edit .env with your credentials\n\nnpm install dotenv\nnode demo.js              # Run all demos\nnode demo.js upload ./file.png\nnode demo.js create-request\nnode demo.js notifications\n```\n\n---\n\n## CLI Usage\n\n## Commands Overview\n\n```\ncloudapp-dl login                  Login to your Zight account\ncloudapp-dl logout                 Logout and clear session\ncloudapp-dl account                Display your Zight account details\ncloudapp-dl whoami                 Show current login status\ncloudapp-dl config                 View or manage configuration\n\ncloudapp-dl list                   List your drops/files from Zight\ncloudapp-dl export                 Export items to CSV file\ncloudapp-dl collections            List your collections\n\ncloudapp-dl get \u003cid\u003e               Download a single file by ID\ncloudapp-dl download \u003curl\u003e         Download a single file by URL\ncloudapp-dl download-list \u003cfile\u003e   Download multiple files from a URL list\ncloudapp-dl bulk-download          Bulk download files from your account\n\ncloudapp-dl upload \u003cfile\u003e          Upload a file to Zight\ncloudapp-dl bulk-upload \u003cpath\u003e     Upload multiple files from a directory\n\ncloudapp-dl delete \u003cid\u003e            Delete a file (move to trash)\ncloudapp-dl trash                  List items in trash\ncloudapp-dl restore \u003cid\u003e           Restore a file from trash\ncloudapp-dl empty-trash            Permanently delete all trash items\n\ncloudapp-dl request                Create a video request (interactive)\ncloudapp-dl request-quick          Instantly create a video request\ncloudapp-dl requests               List your video requests\ncloudapp-dl request-details \u003cid\u003e   View request details and submitted items\ncloudapp-dl request-download \u003cid\u003e  Download all items from a request\ncloudapp-dl request-edit \u003cid\u003e      Edit a video request\ncloudapp-dl request-delete \u003cid\u003e    Delete a video request\n\ncloudapp-dl help                   Show help information\n```\n\n## Account Commands\n\n### Login to Your Account\n\n```bash\ncloudapp-dl login\n```\n\nYou'll be prompted for your email and password. Credentials are stored locally for future sessions.\n\nYou can also provide credentials directly:\n\n```bash\ncloudapp-dl login --email your@email.com --password yourpassword\n```\n\n### View Account Details\n\n```bash\ncloudapp-dl account\n```\n\nDisplays your account information including name, email, item count, and plan details.\n\n### Check Login Status\n\n```bash\ncloudapp-dl whoami\n```\n\nQuick check of your current login status and session validity.\n\n### Logout\n\n```bash\ncloudapp-dl logout\n```\n\nClears your session (credentials remain stored for easy re-login).\n\n### Configuration\n\nView your current configuration:\n\n```bash\ncloudapp-dl config\n```\n\nShow config file path:\n\n```bash\ncloudapp-dl config --path\n```\n\nClear all configuration data:\n\n```bash\ncloudapp-dl config --clear\n```\n\n## Listing \u0026 Exporting\n\n### List Your Drops\n\n```bash\ncloudapp-dl list\n```\n\nLists your drops/files from Zight. Supports pagination:\n\n```bash\ncloudapp-dl list --page 2 --per-page 48\n```\n\n### List Your Collections\n\n```bash\ncloudapp-dl collections\n```\n\nDisplays all your collections with their IDs, names, item counts, and view counts.\n\n### Export to CSV\n\nExport all your items to a CSV file:\n\n```bash\ncloudapp-dl export\n```\n\nExport specific pages:\n\n```bash\ncloudapp-dl export --start-page 1 --end-page 10\n```\n\nExport to a specific file:\n\n```bash\ncloudapp-dl export --out my-export.csv\n```\n\n**CSV Columns:**\n- `#` - Row number\n- `ID` - Zight file ID\n- `Title` - File name/title\n- `Type` - File extension (.mp4, .png, .zip, etc.)\n- `Views` - View count\n- `Date` - Creation date\n- `URL` - Share URL\n- `Is Video` - Yes/No\n- `Thumbnail` - Thumbnail URL\n\n## Downloading Files\n\n### Download by ID\n\nDownload a file using its Zight ID:\n\n```bash\ncloudapp-dl get WnuPyJR5\n```\n\nDownload to specific directory:\n\n```bash\ncloudapp-dl get WnuPyJR5 --out ./downloads\n```\n\nUse ID as filename instead of title:\n\n```bash\ncloudapp-dl get WnuPyJR5 --no-title\n```\n\n### Download by URL\n\nDownload a file using its full URL:\n\n```bash\ncloudapp-dl download https://share.zight.com/WnuPyJR5\n```\n\nDownload to specific directory:\n\n```bash\ncloudapp-dl download https://share.zight.com/WnuPyJR5 --out ./downloads\n```\n\n### Download from URL List\n\nCreate a text file with one URL per line (`urls.txt`):\n\n```\nhttps://share.zight.com/ABC123\nhttps://share.zight.com/DEF456\nhttps://share.zight.com/GHI789\n```\n\nThen download all of them:\n\n```bash\ncloudapp-dl download-list urls.txt\n```\n\nWith options:\n\n```bash\ncloudapp-dl download-list urls.txt --out ./videos --prefix video --timeout 5000\n```\n\n### Bulk Download from Account\n\nDownload ALL files from your logged-in account:\n\n```bash\ncloudapp-dl bulk-download\n```\n\nWith options:\n\n```bash\ncloudapp-dl bulk-download --out ./my-files --limit 50 --videos-only\n```\n\nDownload specific pages:\n\n```bash\ncloudapp-dl bulk-download --start-page 1 --end-page 10\n```\n\n## Uploading Files\n\n### Upload a Single File\n\n```bash\ncloudapp-dl upload ./video.mp4\n```\n\n```bash\ncloudapp-dl upload ~/Desktop/screenshot.png\n```\n\n### Bulk Upload from Directory\n\nUpload all files in a directory:\n\n```bash\ncloudapp-dl bulk-upload ./screenshots/\n```\n\nWith custom delay between uploads:\n\n```bash\ncloudapp-dl bulk-upload ./videos/ --timeout 3000\n```\n\n### Supported File Types\n\nThe uploader automatically detects MIME types:\n\n| Category | Extensions |\n|----------|------------|\n| **Video** | .mp4, .mov, .avi, .webm, .mkv, .m4v |\n| **Images** | .png, .jpg, .jpeg, .gif, .webp, .svg, .bmp |\n| **Audio** | .mp3, .wav, .ogg, .m4a |\n| **Documents** | .pdf, .doc, .docx, .xls, .xlsx, .ppt, .pptx, .txt, .csv |\n| **Archives** | .zip, .rar, .7z, .tar, .gz |\n\n## Deleting Files \u0026 Trash\n\n### Delete a File (Move to Trash)\n\nDelete a file by moving it to trash (recoverable for 30 days):\n\n```bash\ncloudapp-dl delete WnuPyJR5\n```\n\nSkip confirmation:\n\n```bash\ncloudapp-dl delete WnuPyJR5 --yes\n```\n\n### Permanently Delete\n\nPermanently delete a file (no recovery):\n\n```bash\ncloudapp-dl delete WnuPyJR5 --permanent\n```\n\n⚠️ **Warning:** Permanent deletion cannot be undone!\n\n### View Trash\n\nList all items in your trash:\n\n```bash\ncloudapp-dl trash\n```\n\nShows item ID, name, created date, and deleted date.\n\n### Restore from Trash\n\nRestore a file from trash:\n\n```bash\ncloudapp-dl restore WnuPyJR5\n```\n\n### Empty Trash\n\nPermanently delete ALL items in trash:\n\n```bash\ncloudapp-dl empty-trash\n```\n\nSkip confirmation:\n\n```bash\ncloudapp-dl empty-trash --yes\n```\n\n## Video Requests\n\nCreate shareable links that allow others to record videos for you. The recordings will automatically appear in your Zight account.\n\n### Create Request (Interactive)\n\n```bash\ncloudapp-dl request\n```\n\nThis will guide you through:\n1. Title for the request\n2. Message/instructions for the recorder\n3. Optional custom ID\n4. Optional expiration date\n5. Optional collection to save recordings to\n\n### Create Request (Quick)\n\nInstantly create a request with defaults:\n\n```bash\ncloudapp-dl request-quick\n```\n\nWith options:\n\n```bash\ncloudapp-dl request-quick -t \"Help me debug\" --custom-id \"TICKET-123\"\n```\n\n### Create Request (With Options)\n\n```bash\ncloudapp-dl request \\\n  --title \"Bug Report\" \\\n  --message \"Record your screen showing the bug\" \\\n  --custom-id \"TICKET-123\" \\\n  --expires \"12/31/2025 5:00pm\" \\\n  --collection Y2foRdo\n```\n\n### List All Requests\n\n```bash\ncloudapp-dl requests\n```\n\nShow with full links:\n\n```bash\ncloudapp-dl requests --verbose\n```\n\n### View Request Details \u0026 Items\n\nView a request and all items submitted to it:\n\n```bash\ncloudapp-dl request-details wgsX51\n```\n\nWith download URLs:\n\n```bash\ncloudapp-dl request-details wgsX51 --verbose\n```\n\n### Download Items from a Request\n\nDownload all videos/files submitted to a request:\n\n```bash\ncloudapp-dl request-download wgsX51\n```\n\nWith options:\n\n```bash\ncloudapp-dl request-download wgsX51 --out ./submissions --timeout 3000\n```\n\n### Edit a Request\n\n```bash\ncloudapp-dl request-edit ABC123 --title \"New Title\"\n```\n\nEdit multiple fields:\n\n```bash\ncloudapp-dl request-edit ABC123 \\\n  --title \"Updated Title\" \\\n  --message \"New instructions\" \\\n  --expires \"12/31/2025 5:00pm\"\n```\n\nRemove expiration:\n\n```bash\ncloudapp-dl request-edit ABC123 --expires never\n```\n\nChange collection:\n\n```bash\ncloudapp-dl request-edit ABC123 --collection Y2foRdo\n```\n\n### Delete a Request\n\n```bash\ncloudapp-dl request-delete ABC123\n```\n\nSkip confirmation:\n\n```bash\ncloudapp-dl request-delete ABC123 --yes\n```\n\n### Date Format for Expiration\n\nThe expiration date accepts multiple formats:\n- `12/31/2025 5:00pm`\n- `12/31/2025 17:00`\n- `2025-12-31 5:00pm`\n- `12/31/2025` (expires at end of day)\n\n## Options Reference\n\n### Global Options\n\n| Option | Alias | Description |\n|--------|-------|-------------|\n| `--help` | `-h` | Show help |\n| `--version` | `-v` | Show version |\n\n### List Options\n\n| Option | Alias | Description |\n|--------|-------|-------------|\n| `--page` | | Page number (default: 1) |\n| `--per-page` | | Items per page - multiples of 12 (default: 12) |\n\n### Export Options\n\n| Option | Alias | Description |\n|--------|-------|-------------|\n| `--out` | `-o` | Output CSV file path |\n| `--start-page` | | Start from this page |\n| `--end-page` | | End at this page |\n\n### Download Options (get, download)\n\n| Option | Alias | Description |\n|--------|-------|-------------|\n| `--out` | `-o` | Output path/directory |\n| `--no-title` | | Use file ID as filename instead of title |\n\n### Download List Options\n\n| Option | Alias | Description |\n|--------|-------|-------------|\n| `--out` | `-o` | Output directory |\n| `--prefix` | `-p` | Filename prefix (e.g., \"video\" → video-1.mp4) |\n| `--timeout` | `-t` | Delay between downloads in ms (default: 2000) |\n\n### Bulk Download Options\n\n| Option | Alias | Description |\n|--------|-------|-------------|\n| `--out` | `-o` | Output directory (default: ./downloads) |\n| `--start-page` | | Start from this page |\n| `--end-page` | | End at this page |\n| `--limit` | | Maximum number of files to download |\n| `--videos-only` | | Only download video files |\n| `--timeout` | `-t` | Delay between downloads in ms (default: 2000) |\n| `--no-title` | | Use file IDs as filenames instead of titles |\n\n### Upload Options\n\n| Option | Alias | Description |\n|--------|-------|-------------|\n| `--timeout` | `-t` | Delay between uploads in ms (default: 2000) - bulk-upload only |\n\n### Delete Options\n\n| Option | Alias | Description |\n|--------|-------|-------------|\n| `--permanent` | | Permanently delete (no recovery) |\n| `--yes` | `-y` | Skip confirmation prompt |\n\n### Empty Trash Options\n\n| Option | Alias | Description |\n|--------|-------|-------------|\n| `--yes` | `-y` | Skip confirmation prompt |\n\n### Request Options (request, request-quick)\n\n| Option | Alias | Description |\n|--------|-------|-------------|\n| `--title` | `-t` | Title for the request |\n| `--message` | `-m` | Message/instructions for the recorder |\n| `--custom-id` | | Custom identifier for tracking |\n| `--expires` | `-e` | Expiration date (e.g., \"12/31/2025 5:00pm\") |\n| `--collection` | `-c` | Collection ID to save recordings to |\n\n### Request Edit Options\n\n| Option | Alias | Description |\n|--------|-------|-------------|\n| `--title` | `-t` | New title |\n| `--message` | `-m` | New message |\n| `--custom-id` | | New custom identifier |\n| `--expires` | `-e` | New expiration date (or \"never\" to remove) |\n| `--collection` | `-c` | New collection ID (empty to remove) |\n\n### Request Delete Options\n\n| Option | Alias | Description |\n|--------|-------|-------------|\n| `--yes` | `-y` | Skip confirmation prompt |\n\n### Request Details Options\n\n| Option | Alias | Description |\n|--------|-------|-------------|\n| `--verbose` | `-v` | Show download URLs for each item |\n\n### Request Download Options\n\n| Option | Alias | Description |\n|--------|-------|-------------|\n| `--out` | `-o` | Output directory (default: .) |\n| `--timeout` | `-t` | Delay between downloads in ms (default: 2000) |\n\n### Requests List Options\n\n| Option | Alias | Description |\n|--------|-------|-------------|\n| `--verbose` | `-v` | Show full request links |\n\n## Config File Location\n\nYour configuration is stored at:\n\n- **macOS/Linux**: `~/.config/cloudapp-dl/config.json`\n- **Windows**: `%APPDATA%\\cloudapp-dl\\config.json`\n\n## Session Management\n\nThe CLI automatically manages your session:\n\n1. On login, your session ID and expiry are stored\n2. Before each API request, the session validity is checked\n3. If expired, the CLI automatically re-authenticates using stored credentials\n4. Each API response updates the session cookie, keeping it fresh\n\n## Quick Examples\n\n```bash\n# Login to your account\ncloudapp-dl login\n\n# List your files\ncloudapp-dl list --per-page 24\n\n# Export everything to CSV\ncloudapp-dl export\n\n# Download a single file by ID\ncloudapp-dl get WnuPyJR5\n\n# Download a single file by URL\ncloudapp-dl download https://share.zight.com/ABC123\n\n# Download from a list of URLs\ncloudapp-dl download-list urls.txt --out ./videos\n\n# Bulk download all videos from your account\ncloudapp-dl bulk-download --videos-only --out ./my-videos\n\n# Upload a file\ncloudapp-dl upload ./screenshot.png\n\n# Bulk upload a directory\ncloudapp-dl bulk-upload ./screenshots/\n\n# Create a video request link\ncloudapp-dl request -t \"Support\" -m \"Record your screen showing the issue\"\n\n# Create a quick video request\ncloudapp-dl request-quick\n\n# List all video requests\ncloudapp-dl requests\n\n# View request details and submitted items\ncloudapp-dl request-details wgsX51\n\n# Download all items from a request\ncloudapp-dl request-download wgsX51 --out ./submissions\n\n# Edit a request\ncloudapp-dl request-edit ABC123 --title \"New Title\" --expires \"12/31/2025\"\n\n# Delete a request\ncloudapp-dl request-delete ABC123 --yes\n\n# Delete a file (move to trash)\ncloudapp-dl delete WnuPyJR5\n\n# Permanently delete a file\ncloudapp-dl delete WnuPyJR5 --permanent --yes\n\n# View trash\ncloudapp-dl trash\n\n# Restore a file from trash\ncloudapp-dl restore WnuPyJR5\n\n# Empty trash\ncloudapp-dl empty-trash --yes\n\n# List your collections\ncloudapp-dl collections\n```\n\n## Dependencies\n\n- `axios` - HTTP client\n- `cheerio` - HTML parsing\n- `form-data` - Multipart form data for uploads\n- `yargs` - CLI argument parsing\n\n## Requirements\n\n- Node.js \u003e= 16.0.0\n\n## Troubleshooting\n\n### Session Expired\nIf you see session expired errors, simply run `cloudapp-dl login` again. The CLI will automatically re-authenticate using your stored credentials.\n\n### Rate Limiting\nIf downloads/uploads are failing, try increasing the timeout between requests:\n```bash\ncloudapp-dl bulk-download --timeout 5000  # 5 second delay\ncloudapp-dl bulk-upload ./files/ --timeout 5000\n```\n\n### File Already Exists\nThe bulk download and download-list commands automatically skip files that already exist in the output directory.\n\n### Upload Failed\nMake sure you're logged in and have permission to upload files to your Zight account. Check your account's storage limits.\n\n## Contributing\n\nPull requests are welcome. For major changes, please open an issue first.\n\n## License\n\n[MIT](https://choosealicense.com/licenses/mit/)\n\n---\n\nMade with ❤️ by [ECOMGRADUATES LLC](https://ecomgraduates.com)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fecomgraduates%2Fcloudapp-downloader","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fecomgraduates%2Fcloudapp-downloader","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fecomgraduates%2Fcloudapp-downloader/lists"}