{"id":19152792,"url":"https://github.com/michaelscript/zyexpander","last_synced_at":"2026-06-03T16:31:42.416Z","repository":{"id":96696100,"uuid":"51272804","full_name":"MichaelScript/ZyExpander","owner":"MichaelScript","description":"Blackboard and Zybooks nested zip file expander.","archived":false,"fork":false,"pushed_at":"2016-11-14T08:48:46.000Z","size":20,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-02-22T21:15:43.046Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","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/MichaelScript.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":"2016-02-08T00:18:46.000Z","updated_at":"2016-11-14T08:48:47.000Z","dependencies_parsed_at":"2023-03-13T16:25:34.476Z","dependency_job_id":null,"html_url":"https://github.com/MichaelScript/ZyExpander","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/MichaelScript/ZyExpander","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MichaelScript%2FZyExpander","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MichaelScript%2FZyExpander/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MichaelScript%2FZyExpander/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MichaelScript%2FZyExpander/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MichaelScript","download_url":"https://codeload.github.com/MichaelScript/ZyExpander/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MichaelScript%2FZyExpander/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33874679,"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-03T02:00:06.370Z","response_time":59,"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-11-09T08:19:27.137Z","updated_at":"2026-06-03T16:31:42.401Z","avatar_url":"https://github.com/MichaelScript.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Nested Zip File Expander for Blackboard \u0026 Zybook\nZybooks stores students in a bunch of nested zips and it can be hard to work with. ZyExpander seeks to fix that problem by taking a nested zip file from Zybooks and organizing it into a better folder structure. This is pretty old, and the code isn't as nice as I'd like but it gets the job done.\n\n```\n\nExample of ZyBook's native class storage structure:\n\nLab1.zip\n├── Student1_First_Last.zip\n│   ├── ==\u003e lab1a.java   \n│\t└── ==\u003e lab1b.java\n│  \n└── Student2_First_Last.zip\n    └── ==\u003e lab1a.java\n    ... \n\n\n```\n\n\n#### Difficulties\n 1. Nested zips are annoying because even after they're expanded they remain in the directory, not only that but having to expand nested compressed files can get tedious.\n 2. The actual programs get put in outer directory rather than in a folder. They all retain the same file name and this makes differentiating between students hard.\n 3. This challenge gets even more difficult when a student only turns in a portion of the assignment as it isn't easy to see who did the whole assignment.\n\n#### Solution\nWe can **speed up and organize** this process using ZyExpander. No more duplicate file names or expanding nested zips, simply run ZyExpander all of the lab zip files and you're good to go! Zybooks *creates a backup* of the original lab zip file, and puts program files in a directory corresponding to the student's name. You can even specify a common output directory so you can organize students however you see fit whether it be by class, assignment, or assignment type, that way you don't have to sift through different directories for each assignment. ZyExpander speeds up your workflow and organizes your ZyBooks students.\n\n# Usage\n## Basic Usage\nSimply run the file with your native python interpreter and supply a list of zipfiles to expand. Optionally you can specify an output directory to put the files into. By default ZyExpander will not overwrite any current directories that exist, but if you specify a directory that does not exist it will create it.\n\n\n```\n\nusage: Python ZyExpander.py [-h] [-o O] zips [zips ...]\n\nTakes input zipfiles and expands them.\n\npositional arguments:\n  zips        zipfiles you want to process\n\noptional arguments:\n  -h, --help  show this help message and exit\n  -o O        option to specify an output directory\n\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmichaelscript%2Fzyexpander","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmichaelscript%2Fzyexpander","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmichaelscript%2Fzyexpander/lists"}