Turn your GitHub star growth into a scrolling video.
Project description
star-growth
Turn your GitHub star growth into a scrolling MP4 or GIF animation with a single command-line tool.
Install
pip install star-growth
FFmpeg is pulled in automatically through imageio-ffmpeg, but make sure your platform can build wheels for Pillow and MoviePy.
Quick start
Run the CLI after installing the package:
star-growth --owner esubaalew --repo run
Short flags are available too. For example, the following writes a GIF preview:
star-growth -u esubaalew -r run -o stars.gif -f gif
The command fetches the latest stargazers, renders a GitHub-style card, and writes star_growth.mp4 in the working directory.
By default the tool creates an MP4. Pass -f gif / --format gif (or end the --output value with .gif) to write an animated GIF instead. Only MP4 and GIF are currently supported.
Popular options
-o stars.mp4/--output stars.mp4– customise the export path (a numeric suffix prevents overwrites)-f gif/--format gif– export an animated GIF instead of an MP4-s 2024-01-01/--start-date 2024-01-01– only include stars on/after this UTC date (supports ISO 8601 timestamps)-E 2024-01-31/--end-date 2024-01-31– only include stars on/before this UTC date (full-day ranges when you omit a time)-d 8/--duration 8and-p 24/--fps 24– tune animation pacing-m 30/--max-entries 30– limit the number of rows rendered-t "My stars"/--title "My stars"– override the header label-e linear/--easing linear– swap the easing curve-F frames//--frames-dir frames/– specify a directory for intermediate PNGs-k/--keep-frames– keep the intermediate PNGs after rendering-T $TOKEN/--token $TOKEN– use a GitHub personal access token-w 5/--timeout 5– shrink the GitHub request timeout-R 5/--max-retries 5– increase retry attempts-b 1.5/--retry-backoff 1.5– adjust retry backoff seconds-a 8/--avatar-workers 8– change avatar download concurrency-q/--no-progress– hide the frame rendering progress bar
Run star-growth --help or star-growth --version for more details.
Sample output
Watch the full MP4 generated from the latest stargazers on esubaalew/run.
Use it from Python
from star_growth import StarsAnimationConfig, generate_scrolling_stars
config = StarsAnimationConfig(
owner="octocat",
repo="Hello-World",
output="stars.mp4",
)
video_path = generate_scrolling_stars(config)
print(f"Video saved to {video_path}")
Frames are written to a temporary directory and cleaned up automatically. Pass cleanup_frames=False (or --keep-frames on the CLI) to inspect them.
Set output_format="gif" (or --format gif) if you want to generate an animated GIF instead of an MP4. Other containers aren't supported today, so choose whichever suits the platform you're sharing on.
Develop locally
python -m venv .venv
source .venv/bin/activate
pip install -e .[dev]
pytest
The editable install keeps the CLI (star-growth) in sync with your workspace changes.
Release automation
Tags that follow the v* pattern trigger the Release GitHub Actions workflow. To publish to PyPI, add a repository secret named PYPI_API_TOKEN containing an API token created in your PyPI account ("Publish" scope). The workflow will build the wheel and source tarball and upload them to https://pypi.org/project/star-growth/.
Troubleshooting
- Missing avatars – GitHub occasionally rate-limits avatar requests; initials placeholders are rendered when that happens.
- Fonts look off – Install
DejaVuSanslocally or update the font paths insidestar_growth/generator.py. - Large repositories – Provide a personal access token and raise
--max-retries/--retry-backoffwhen you expect heavy traffic.
Be mindful of GitHub's terms of service and the privacy expectations of your stargazers when sharing renders.
License
Released under the Apache License 2.0 by Esubalew Chekol. See the upstream copy at github.com/esubaalew/star-growth for the canonical license record.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file star_growth-0.2.0.tar.gz.
File metadata
- Download URL: star_growth-0.2.0.tar.gz
- Upload date:
- Size: 18.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
098a3dc76cbe5fb58924448d2c71e8c268b752f1513f9f302c982c2b6fdfb59c
|
|
| MD5 |
c12d78a27b6da9f7a39f87494fefb8c4
|
|
| BLAKE2b-256 |
fcf075fb68c6ab489ca135f8da4058a87b3fae078cc42cebc527b4921e9a3ebc
|
File details
Details for the file star_growth-0.2.0-py3-none-any.whl.
File metadata
- Download URL: star_growth-0.2.0-py3-none-any.whl
- Upload date:
- Size: 23.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b2dfc6eb05509f139055eec0807c59898abf47fb5d26bb9345bfc1c859b185b9
|
|
| MD5 |
ceb82a10907b5dcb023f8a079fe6961b
|
|
| BLAKE2b-256 |
1b66dbb283956608f62b72fa49a14962cd28de4c87bd84111be359087a278317
|