Uds
๐ Unlimited Google Drive Storage by splitting binary files into base64
Install / Use
/learn @stewartmcgown/UdsREADME
:milky_way: UDS : Unlimited Drive Storage
Store files in Google Docs without counting against your quota.
sorry @ the guys from google internal forums who are looking at this
Development on a web-based JS version has started here.
Note: After June 1st 2021, starting June 1, 2021, Google will count Docs, Sheets, Slides, Drawings, Forms and Jamboard files against the user's storage quota.
Features
- Upload files to Google Drive without using storage space
- Download any stored files to your computer
Logic
- Google Docs take up 0 bytes of quota in your Google Drive
- Split up binary files into Google Docs, with base64 encoded text
- Size of the encoded file is always larger than the original. Base64 encodes binary data to a ratio of about 4:3.
- A single google doc can store about a million characters. This is around 710KB of base64 encoded data.
- Some experiments with multi-threading the uploads, but there was no significant performance increase.
Setup & Authentication
- Clone the Repository and setup the requirements
pip3 install -r requirements.txt - Head to Google's API page and enable the Drive API
- Download the configuration file as 'client_secret.json' to the UDS directory
- Run
python3 uds.pyor./uds.pyfor initial set up
UDS Core
Upload
> ./uds.py --push Ubuntu.Desktop.16.04.iso
Ubuntu.Desktop.16.04.iso will required 543 Docs to store.
Created parent folder with ID 1fc6JGpX6vUWiwflL1jBxM1YpuMHFAms8
Successfully Uploaded Ubuntu.Desktop.16.04.iso: [โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ] 100%
[Layout]
./uds.py --push argument
argument: Path_to_file+file_name
List
> ./uds.py --list
Name Size Encoded ID
------------------------ ----- --------- ---------------------------------
Ubuntu.Desktop.16.04.iso 810 MB 1.1 GB 1fc6JGpX6vUWiwflL1jBxM1YpuMHFAms8
Ubuntu.Desktop.18.10.iso 1.1 GB 1.3 GB 1RzzVfN9goHMTkM1Hf1FUWUVS_2R3GK7D
Also supports searching with a query!
> ./uds.py --list "18"
Name Size Encoded ID
------------------------ ----- --------- ---------------------------------
Ubuntu.Desktop.18.10.iso 1.1 GB 1.3 GB 1RzzVfN9goHMTkM1Hf1FUWUVS_2R3GK7D
[Layout]
./uds.py --list
arguments: query
Download
> ./uds.py --pull 1fc6JGpX6vUWiwflL1jBxM1YpuMHFAms8
Downloaded Ubuntu.Desktop.16.04.iso: [โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ] 100%
[Layout]
./uds.py --pull argument
argument: id_of_file
Delete
> ./uds.py --delete 1fc6JGpX6vUWiwflL1jBxM1YpuMHFAms8
Deleted 1fc6JGpX6vUWiwflL1jBxM1YpuMHFAms8
[Layout]
./uds.py --delete argument
argument: id_of_file
Alpha Extensions
Grab
> ./uds.py --grab test.7z
Update Successful!
Downloaded test.7z: [โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ] 100%
[Layout]
./uds.py --grab argument
argument: name_of_file
Erase
>./uds.py --erase test2.7z
Update Successful!
Deleted test2.7z
[Layout]
./uds.py --erase argument
argument: name_of_file
Update
> ./uds.py --update
Name Encoded Size
--------- -------- -----
file_name 1.1 GB 810 MB
"User.txt"
Name Encoded Size
--------- -------- -----
file_name 1.1 GB 810 MB
"data.txt"
{
"file0": "1fc6JGpX6vUWiwflL1jBxM1YpuMHFAms8"
"file2": "1fc6JGpX6vUWiwflL1jBxM1YpuMHFAms9"
}
[Layout]
./uds.py --update
arguments: None
Bulk Extensions
Bunch
> ./uds.py --bunch test
test.7z.1 will require 1337 Docs to store.
Created parent folder with ID 1fc6JGpX6vUWiwflL1jBxM1YpuMHFAm12
Successfully Uploaded test.7z.1: [โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ] 100%
test.7z.2 will require 1337 Docs to store.
Created parent folder with ID 1fc6JGpX6vUWiwflL1jBxM1YpuQQFAm12
Successfully Uploaded test.7z.2: [โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ] 100%
test.7z.3 will require 600 Docs to store.
Created parent folder with ID 1fc6JGpX6vTOiwflL1jBxM1YpuQQFAm12
Successfully Uploaded test.7z.3: [โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ] 100%
[Layout]
./uds.py --bunch argument[1] argument[2]
argument[1]: name_in_files, or wildcard "?" without quotes
argument[2]: directory, default is current directory of UDS
Batch
> ./uds.py --batch file_name
Update Successful!
Downloaded file_name.7z.1: [โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ] 100%
Downloaded file_name.7z.2: [โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ] 100%
Downloaded file_name.7z.3: [โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ] 100%
[Layout]
./uds.py --batch argument
arguments: name_in_files, or wildcard "?" without quotes
Wipe
> ./uds.py --wipe file
Update Successful!
Deleted file.7z.1
Deleted file.7z.2
Deleted file.7z.3
[Layout]
./uds.py --wipe argument
arguments: name_in_files, or wildcard "?" without quotes
Only Compatible with Python 3.
Related Skills
node-connect
347.0kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
107.8kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
347.0kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
347.0kQQBot ๅฏๅชไฝๆถๅ่ฝๅใไฝฟ็จ <qqmedia> ๆ ็ญพ๏ผ็ณป็ปๆ นๆฎๆไปถๆฉๅฑๅ่ชๅจ่ฏๅซ็ฑปๅ๏ผๅพ็/่ฏญ้ณ/่ง้ข/ๆไปถ๏ผใ
