{"id":16902227,"url":"https://github.com/keystroke3/uproot","last_synced_at":"2026-04-18T04:03:38.939Z","repository":{"id":102465931,"uuid":"448082056","full_name":"keystroke3/uproot","owner":"keystroke3","description":"A script to bring deeply nested files or directories to the surface","archived":false,"fork":false,"pushed_at":"2022-01-15T12:17:45.000Z","size":58,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-20T15:13:39.893Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/keystroke3.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,"publiccode":null,"codemeta":null}},"created_at":"2022-01-14T19:18:54.000Z","updated_at":"2022-01-15T13:35:55.000Z","dependencies_parsed_at":null,"dependency_job_id":"d213ac17-02ae-41bf-b6a3-c74df85fbddf","html_url":"https://github.com/keystroke3/uproot","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/keystroke3/uproot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keystroke3%2Fuproot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keystroke3%2Fuproot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keystroke3%2Fuproot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keystroke3%2Fuproot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/keystroke3","download_url":"https://codeload.github.com/keystroke3/uproot/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keystroke3%2Fuproot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31955920,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T00:39:45.007Z","status":"online","status_checked_at":"2026-04-18T02:00:07.018Z","response_time":103,"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":[],"created_at":"2024-10-13T18:04:17.759Z","updated_at":"2026-04-18T04:03:38.899Z","avatar_url":"https://github.com/keystroke3.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003eUPROOT\u003c/h1\u003e\n\u003cp align=\"center\"\u003e\n    \u003cimg width=\"200\" alt=\"Uproot Icon\" src=\"icon.png\"\u003e\n\u003c/p\u003e\n\n\u003ch2 align=\"center\"\u003eBring deeply nested files or folders to the surface\u003c/h2\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg\n       alt=\"Uproot demo\"\n       src=\"banner.png\"\u003e\n\u003c/p\u003e\n\nUproot helps convert a directory structure like this:\n```\n.\n└── tv_series_season_1\n    ├── tv_series_season_1_episode1\n    │   ├── tv_series_season_1_episode1.mkv\n    │   └── tv_series_season_1_episode1.srt\n    ├── tv_series_season_1_episode2\n    │   ├── tv_series_season_1_episode2.mkv\n    │   └── tv_series_season_1_episode2.srt\n    ├── tv_series_season_1_episode3\n    │   ├── tv_series_season_1_episode3.mkv\n    │   └── tv_series_season_1_episode3.srt\n    ├── tv_series_season_1_episode4\n    │   ├── tv_series_season_1_episode4.mkv\n    │   └── tv_series_season_1_episode4.srt\n    └── tv_series_season_1_episode5\n        ├── tv_series_season_1_episode5.mkv\n        └── tv_series_season_1_episode5.srt\n```\n\n to this:\n ```\n tv_series_season_1\n├── tv_series_season_1_episode1.mkv\n├── tv_series_season_1_episode1.srt\n├── tv_series_season_1_episode2.mkv\n├── tv_series_season_1_episode2.srt\n├── tv_series_season_1_episode3.mkv\n├── tv_series_season_1_episode3.srt\n├── tv_series_season_1_episode4.mkv\n├── tv_series_season_1_episode4.srt\n├── tv_series_season_1_episode5.mkv\n└── tv_series_season_1_episode5.srt\n```\n\n## Installation\nThere are several ways of installing the script, but currently I have only tested on Linux.\n### Windows and Mac OS\nIf you are on Windows or Mac OS, you will need to first install python. Once you have python installed  \nyou can download the zip file and extract it to your preferred location.\n\n### Linux\nOn Arch Linux, you can install Uproot through the AUR:\n```bash\nyay -S uproot-git\n```\nOther Linux distro users can run the following command:\n```bash\nsudo -fLo /usr/bin/uproot --create-dirs \\\nhttps://raw.githubusercontent.com/keystroke3/uproot/main/uproot.py \u0026\u0026\nsudo chmod +x /usr/bin/uproot\n```\n\n## Usage\n**NOTE: There is currently no way of reversing the actions of uproot. Use with caution.**  \n\nIf you are on Linux, you can quickly use uproot from anywhere in your terminal by running:\n```bash\nuproot \u003csource_foulder\u003e\n```\nIf you are on Windows or Mac OS, the same can be achieved by running\n```bash\npython uproot.py \u003csource_folder\u003e\n```\nin the directory where you unzipped your files.  \nFor example:\n```bash\nuproot tv_series_season_1\n```\nwill have the same results as shown above.  If we are already in the desired folder, we can replace the folder name with a dot (`.`) \n\nAll the other options can be shown by running \n```\nuproot -h\n```\nThe out put will be something like this:\n```bash\nusage: uproot [-h] [-s SOURCE] [-o OUTPUT] [-O MAKE_OUTPUT] [-r] [-R] [-c] [-v] [-d]\n\nThis is a simple program for recursively moving files from subdirectories to the current or specified directory\n\noptions:\n  -h, --help            show this help message and exit\n  -s SOURCE, --source SOURCE\n                        The folder to perform moving operations on. Defaults to the current directory not specified\n  -o OUTPUT, --output OUTPUT\n                        The folder to move files to. Defaults to the root of the starting directory or current directory. This has to be outside the source directory\n  -O MAKE_OUTPUT, --make_output MAKE_OUTPUT\n                        Same as --output but creates the output directory if specified one does not exist.\n  -r, --remove_empty    Specifies if the empty directories should be cleared after moving. Defaults to false if this flag is not set.\n  -R, --remove_empty_source\n                        same as --remove_empty but also removes the source directory itself.\n  -c, --copy            Copy files to destination instead of moving\n  -v, --verbose         Prints the current operations.\n  -d, --directories     Operates on the directories at the bottom of the file tree instead of files\n  ```\n\nThese options can be chained together for example:\n```bash\nuproot -s tv_series_season_1 -vRO ../tv_series_season_1_with_subs\n```\nThis command will result in the following series of operations:\n-  the files in `tv_series_season_1` and uproot them to a directory `tv_series_season_1_with_subs` in the parent directory relative to the current one.\n- If the output directory doesn't exist, it will create it, because of `-O` instead of `-o` flag.\n- After that, it will remove all the empty directories in `tv_series_season_1` and if the source directory is left empty, it will removed it as well, because of `-R` instead of `-r` flag.\n\n## Contribution\nThis is a hobby project, so bugs can be expected. If you encounter any bugs, feel free to create an issue and make sure to leave as much detail as possible to come up with a solution.  \nIf you own a Windows or Mac OS machine, you could create executables and installation instructions for those platforms. If you do, please create a pull request.  \nA GUI will also be nice so people don't have to use a terminal for to run the script.  \nDo you have any more things you can add to the program, fork it, fix it add it and create a pull request.\n\n### Donation\nIf you like the project and would like to support me for some reason: PayPal me: `keystroke33@gmail.com`","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkeystroke3%2Fuproot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkeystroke3%2Fuproot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkeystroke3%2Fuproot/lists"}