{"id":49273769,"url":"https://github.com/cmpilato/gen-countdown-frames","last_synced_at":"2026-04-25T15:04:32.726Z","repository":{"id":92132962,"uuid":"109330441","full_name":"cmpilato/gen-countdown-frames","owner":"cmpilato","description":"Python script for generating still image frames useful for creating a countdown video","archived":false,"fork":false,"pushed_at":"2026-01-18T14:07:45.000Z","size":34,"stargazers_count":0,"open_issues_count":1,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-01-18T21:53:31.149Z","etag":null,"topics":["python-script","video-editing"],"latest_commit_sha":null,"homepage":null,"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/cmpilato.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2017-11-02T23:44:28.000Z","updated_at":"2026-01-18T14:07:49.000Z","dependencies_parsed_at":"2024-06-12T07:33:36.439Z","dependency_job_id":null,"html_url":"https://github.com/cmpilato/gen-countdown-frames","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/cmpilato/gen-countdown-frames","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cmpilato%2Fgen-countdown-frames","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cmpilato%2Fgen-countdown-frames/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cmpilato%2Fgen-countdown-frames/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cmpilato%2Fgen-countdown-frames/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cmpilato","download_url":"https://codeload.github.com/cmpilato/gen-countdown-frames/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cmpilato%2Fgen-countdown-frames/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32266004,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-25T09:15:33.318Z","status":"ssl_error","status_checked_at":"2026-04-25T09:15:31.997Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["python-script","video-editing"],"created_at":"2026-04-25T15:04:23.708Z","updated_at":"2026-04-25T15:04:32.702Z","avatar_url":"https://github.com/cmpilato.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# gen-countdown-frames\nPython package for generating still image frames useful for creating a countdown video\n\n# Installation\n\n## From source\n```bash\npip install -e .\n```\n\n## With development dependencies\n```bash\npip install -e \".[dev]\"\n```\n\nSee [INSTALL.md](INSTALL.md) for more detailed installation and development instructions.\n\n# Requirements\n`gen-countdown-frames` requires:\n\n* Python 3.8 or later\n* Pillow - the Python imaging library\n\n# Usage\nAfter installation, use the `gen-countdown-frames` command:\n\n`$ gen-countdown-frames [OPTIONS] NUM_MINUTES`\n\nThe result of a successful invocation is a collection of PNG image files in the current working directory whose names derive from the time displayed in the image, and which begin with an index that allows them to be easily sorted from _starting value_ to _0:00_:\n\n    $ gen-countdown-frames --verbose 1\n    Create file '00-countdown-0_59.png' ... done.\n    Create file '01-countdown-0_58.png' ... done.\n    Create file '02-countdown-0_57.png' ... done.\n    ...\n    Create file '57-countdown-0_02.png' ... done.\n    Create file '58-countdown-0_01.png' ... done.\n    Create file '59-countdown-0_00.png' ... done.\n    $ ls -1\n    59-countdown-0_00.png\n    58-countdown-0_01.png\n    57-countdown-0_02.png\n    ...\n\n## Options\n* **-h, --help** - Display the usage message\n* **--width=PX** - Generate image frames whose width is _PX_ pixels [_default: 1280_]\n* **--height=PX** - Generate image frames whose height is _PX_ pixels [_default: 720_]\n* **--font-file=FILENAME** - TrueType font file to use for countdown text [_default: arial.ttf_]\n* **--font-size=PX** - Font size (in pixels) of countdown text [_default: 10% of the image width_]\n* **--font-color=HEX** - Text color (as an RGB or RGBA hex value) [_default: FFFFFFFF_]\n* **--no-zeroes** - Omit leading zeroes from single-digit minutes (when NUM_MINUTES is greater than 9)\n* **--position=LOC** - Rough location of text (with padding) [_default: c_]:\n    * `tl`: top-left\n    * `t`: top-center\n    * `tr`: top-right\n    * `l`: middle-left\n    * `c`: middle-center\n    * `r`: middle-right\n    * `bl`: bottom-left\n    * `b`: bottom-center\n    * `br`: bottom-right\n* **--shadow-color=HEX** - Drop shadow color (as an RGB or RGBA hex value, if any)\n* **--baseline=PX** - Vertical adjustment in pixels (positive values move text up, negative values move text down) [_default: 0_]\n* **--ring-height=PX** - Outer diameter (in pixels) of disappearing ring [_default: 80% of the smaller dimension_]\n* **--ring-thickness=PX** - Thickness (in pixels) of the ring [_default: 10% of ring-height_]\n* **--ring-color=HEX** - Ring color (as an RGB or RGBA hex value) [_default: same as font-color_]\n* **--enable-ring** - Enable ring generation (in addition to numeric countdown)\n* **--disable-text** - Disable text generation (show only ring countdown)\n* **--rotate** - Rotate the generated images 180 degrees\n* **-v, --verbose** - Show verbose output\n\n## Examples\n1280x720 images for 5 minutes of countdown, using white 128pt Arial, positioned in the center of the frame:\n\n`$ gen-countdown-frames 5`\n\n1280x720 images for 5 minutes of countdown, using yellow 128pt Arial, positioned in the bottom-left of the frame:\n\n`$ gen-countdown-frames --font-color FFFF00 --position bl 5`\n\n640x480 images for 1 minute of countdown, using white 24pt Century Gothic, positioned in the bottom-right corner of the frame:\n\n`$ gen-countdown-frames --width 640 --height 480 --font-file GOTHIC.TTF --font-size 24 --position br 1`\n\n1280x720 images for 2 minutes of countdown, rotated 180 degrees:\n\n`$ gen-countdown-frames --rotate 2`\n\n1280x720 images for 3 minutes of countdown with both numeric text and disappearing ring:\n\n`$ gen-countdown-frames --enable-ring 3`\n\n1280x720 images for 1 minute of countdown with custom ring size and color:\n\n`$ gen-countdown-frames --enable-ring --ring-height 500 --ring-thickness 40 --ring-color FF0000 1`\n\n1280x720 images for 2 minutes with only the disappearing ring (no text):\n\n`$ gen-countdown-frames --enable-ring --disable-text 2`\n\n640x480 images for 5 minutes with only numeric text (default behavior):\n\n`$ gen-countdown-frames --width 640 --height 480 5`\n\n# License\nMIT License\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcmpilato%2Fgen-countdown-frames","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcmpilato%2Fgen-countdown-frames","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcmpilato%2Fgen-countdown-frames/lists"}