{"id":22514330,"url":"https://github.com/sudiptab2100/wild-storage","last_synced_at":"2025-10-11T21:12:15.198Z","repository":{"id":102691289,"uuid":"605612846","full_name":"sudiptab2100/Wild-Storage","owner":"sudiptab2100","description":"Use YouTube as Infinite Cloud Storage","archived":false,"fork":false,"pushed_at":"2024-04-07T14:30:38.000Z","size":61073,"stargazers_count":52,"open_issues_count":1,"forks_count":10,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-04-07T23:27:46.402Z","etag":null,"topics":["cpp","ctypes","ctypes-bindings","ctypes-wrapper","infinite-storage","infinite-storage-glitch","isg","opencv","opencv-python","python","python3","storage","terminal","wild-storage","youtube","youtube-storage"],"latest_commit_sha":null,"homepage":"https://github.com/sudiptab2100/Wild-Storage","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sudiptab2100.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,"roadmap":null,"authors":null,"dei":null}},"created_at":"2023-02-23T14:30:28.000Z","updated_at":"2024-04-07T23:27:46.403Z","dependencies_parsed_at":"2024-04-06T23:36:54.673Z","dependency_job_id":null,"html_url":"https://github.com/sudiptab2100/Wild-Storage","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sudiptab2100%2FWild-Storage","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sudiptab2100%2FWild-Storage/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sudiptab2100%2FWild-Storage/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sudiptab2100%2FWild-Storage/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sudiptab2100","download_url":"https://codeload.github.com/sudiptab2100/Wild-Storage/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":228552356,"owners_count":17935806,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["cpp","ctypes","ctypes-bindings","ctypes-wrapper","infinite-storage","infinite-storage-glitch","isg","opencv","opencv-python","python","python3","storage","terminal","wild-storage","youtube","youtube-storage"],"created_at":"2024-12-07T03:17:19.269Z","updated_at":"2025-10-11T21:12:10.170Z","avatar_url":"https://github.com/sudiptab2100.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Wild-Storage\n\nWild-Storage lets you use YouTube as a Infinite Cloud Storage. It embeds any files(Images, Videos, Documents, etc) into a video. The video can be uploaded to YouTube and the file can be retrieved from the video. A expansion \u0026 compression technique is used to defeat YouTube's compression algorithm. The file can be retrieved from the video without any loss of data.\n\n## Demo Video ([YouTube Link](https://youtu.be/NbeWh011qjs))\n\n![ezgif com-gif-maker](https://gateway.pinata.cloud/ipfs/Qmdo9ZW5uk6NDYWj8K6oNBABDNtBYZZagAxF9UmoxUQFwM)\n\n## ~~Virtual Environment Set Up~~ ❌ (... Not Required Now)\n\n### Create Virtual Environment\n\n```console\npython3 -m venv env\n```\n\n### Activate Virtual Environment\n\n```console\nsource env/bin/activate\n```\n\n### Install Required Packages\n\n```console\npip install -r requirements.txt\n```\n\n## ~~Compile C++ Library \u0026 Generate Python Bindings~~ ❌ (... Not Required Now)\n\n```console\ng++ -fPIC -shared DataProccessing/cLibs/helper.cpp -o DataProccessing/cLibs/c_lib.so\n```\n\n## Wild-Storage CLI App ✅\n\n### Make the script executable\n\n```console\nchmod +x cli_app\n```\n\n### Run CLI App\n\nMake sure ```GCC``` compiler, ```Python 3```, ```pip```, Python ```venv``` is installed. \\\nNow open terminal in the project directory and run the following command to complete the necessary setup and run the app.\n\n```console\n./cli_app\n```\n\n\u003cimg src=\"https://tomato-semantic-alligator-932.mypinata.cloud/ipfs/QmQdnLR9RmjFDLxb39VpqC8N5se9wbhPBRaLsd65uALVBD?_gl=1*1jcg77v*_ga*MjA2MjA3MzczMS4xNzA0NTQzNDQ0*_ga_5RMPXG14TE*MTcwNDU0MzQ0My4xLjEuMTcwNDU0MzU2NC42MC4wLjA.\"\u003e\n\n## How to Use? ✅\n\nWait for the app to start.\n\n### Create video from files\n\n- Copy all your files into ```\\data\\input``` directory\n- Select ```Encode file to video``` option on the app\n- Wait for the process to complete\n- \u003cb\u003eGenerated video (```op.mp4```)\u003c/b\u003e \u0026 \u003cb\u003eMetadata (```metadata.json```)\u003c/b\u003e will be available in ```\\data\\generated``` directory\n- Upload the video to \u003cb\u003eYouTube\u003c/b\u003e and copy-paste the contents of ```metadata.json``` in \u003cb\u003edescription\u003c/b\u003e of the video\n- Make sure the uploaded video is ```public``` / ```unlisted```\n\n### Retrieve files from video\n\n- Select ```Decode file from video``` option on the app\n- Enter the youtube video url (Make sure the uploaded video is ```public``` / ```unlisted```)\n- Wait for the process to complete\n- The files will be available in ```\\data\\retrieved``` directory\n\n### Cleaning up\n\n- Select ```Clean``` option on the app to clean data directory\n\n### Reload Time\n\n- Select ```Reload time``` option to set the time to wait before reloading the app\n\n### Exit\n\n- Select ```Exit``` option on the app to exit\n\n## Use Dockerized CLI App ✅ ✅\n\nYou just need to have ```Docker``` installed on your system.\n\n### Build Docker Image\n\n```console\ndocker build -t wild-storage .\n```\n\n### Run Docker Container\n\n```console\ndocker run -it wild-storage\n```\n\n### Run Dockerized CLI App\n\n```console\n./cli_app\n```\n\n### Copy Input Files from Host to Container\n\nYou can copy files from host to container using the following command. You can copy folders and files.\n\n```console\ndocker cp \u003chost_path\u003e \u003ccontainer_id\u003e:app/data/input\n```\n\n### Copy Output Files from Container to Host\n\nThe video and metadata files can be copied from container to host using the following command.\n\n```console\ndocker cp \u003ccontainer_id\u003e:app/data/generated \u003chost_path\u003e\n```\n\n### Copy Retrieved Files from Container to Host\n\nThe retrieved files can be copied from container to host using the following command.\n\n```console\ndocker cp \u003ccontainer_id\u003e:app/data/retrieved \u003chost_path\u003e\n```\n\n## DataProcessing Working\n\n### Embed File Into Video\n\n\u003cimg src=\"https://tomato-semantic-alligator-932.mypinata.cloud/ipfs/QmNx7xX1pn3ngduQU5n9GKC8NwfH7GRQXfGB4mFuxphtqa\"\u003e\n\n### Retrieve File From Video\n\n\u003cimg src=\"https://tomato-semantic-alligator-932.mypinata.cloud/ipfs/QmUMXUJZ11mgpp8oEmGPeTenK4669uwJesUVJmK1UDQwvV\"\u003e\n\n## Expansion And Compression\n\n\u003cimg src=\"https://tomato-semantic-alligator-932.mypinata.cloud/ipfs/Qma8CRjSV7Azkp3uMfda1aWDNHGNQgy1haC6fcuuWHMJ8Y\"\u003e\n\n## Python Wrapped C++ Library\n\nWild-Storage was a complete Python Implementation. Beign a very slow interpreted language it was taking too much time to process files. Later I moved some heavy task codebase to C++ and wrapped those in Python using [ctypes](https://docs.python.org/3/library/ctypes.html). This helped to process the files ~3x faster.\n\n## Features\n\n- Parallel Processing using multiple CPU cores is supported now.\n- C++ Library is used for heavy tasks to make the process faster.\n\n## Credits\n\nThis project is inspired by [Infinite-Storage-Glitch](https://github.com/DvorakDwarf/Infinite-Storage-Glitch) which is a Rust implementation. I liked the concept and tried to implement in my favourite language Python. The working of both may not be same.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsudiptab2100%2Fwild-storage","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsudiptab2100%2Fwild-storage","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsudiptab2100%2Fwild-storage/lists"}