DownVid
1000개 이상의 사이트를 지원하고, 인터페이스가 간결하며 macOS·Windows·Linux에서 모두 사용 가능
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗A director's whole box office career, in one page. Type a name to see their total worldwide gross, the domestic/international split, their biggest hits, every film's numbers and a gross-over-time chart. Read it as a web page or save it as a PDF. Data from IMDb, no API key needed.
https://github.com/user-attachments/assets/66c4b5af-6700-4060-b24a-40b216f3c60b
The welcome page. Enter a name or an IMDb id, pick a format and press Get the report.
Top half of the web report for Christopher Nolan. Full files: PDF · HTML
The same report as a PDF: a summary page with the top films, the full filmography and the career chart.
| Director | Films | HTML | |
|---|---|---|---|
| Christopher Nolan | 13 | christopher-nolan.pdf | christopher-nolan.html |
| Greta Gerwig | 4 | greta-gerwig.pdf | greta-gerwig.html |
| Steven Spielberg | 36 | steven-spielberg.pdf | steven-spielberg.html |
GitHub previews the PDFs in the browser, but it shows HTML files as source code. To see the page, download the file (Raw, then save) and open it in a browser. Images are embedded, so it works offline.
These were generated on 2026-10-17. The numbers change as IMDb updates its data.
Requires Python 3.10 or newer.
git clone <repo-url>
cd DirectorsBoxOfficeSummary
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements-dev.txt
uvicorn app:app --reload
Open http://127.0.0.1:8000. You don't need an account, key or .env file.
nm0634240, from the director's IMDb URL).
Case and accents don't matter. A clear match opens the report straight away ("nolan" finds
Christopher Nolan). If the name is ambiguous ("Paul Anderson"), you get a list of up to
five people to choose from./report/<nm id>.html and /report/<nm id>.pdf, so you can link to them directly.app.py and vercel.json are all it
needs). Keep such a deployment private: see the disclaimer below.The CLI writes the same reports to files. Only the runtime dependencies are needed
(pip install -r requirements.txt).
$ python main.py
Director's full name: Christopher Nolan
Found Christopher Nolan (nm0634240). Fetching filmography...
13 film(s).
Output format [pdf/html/both] (pdf): both
Building PDF...
Saved output/Christopher Nolan.pdf
Downloading 14 image(s)...
Saved output/Christopher Nolan.html
pdf, html or both. The first letter is enough, and a blank answer means
pdf.output/<Director Name>.pdf and .html. The folder is created on
first run. Unlike the web page, the CLI's HTML file embeds all images, so it works offline.Both formats contain:
A4 pages with a fixed layout. The chart always gets the last page to itself. With more than 15 films that page switches to landscape, and the x-axis labels rotate or wrap so that every title stays readable. Here is Spielberg's chart, with 36 films:
All CSS and JavaScript are inlined (the CLI also inlines the images, giving a single offline file).
The report includes released feature films that the person is credited as directing. Shorts, TV movies, direct-to-video titles and unreleased or abandoned projects are left out.
All amounts are in US dollars. A missing figure is shown as -:
-. For example, RRR's
budget is listed in Indian rupees.One run makes three requests to IMDb's GraphQL endpoint (caching.graphql.imdb.com): a
name search, the director's profile and their directing credits with box office data. For
the HTML page it also downloads the portrait and posters as small thumbnails. Dropped
connections, rate limits and server errors are retried with exponential backoff. If the API returns an error, the run stops
rather than producing a report with missing films.
main.py prompts, file output; wires the layers together
app.py the same pipeline as a web app (FastAPI)
src/
movies.py domain: API JSON -> Director / Movie, search ranking, totals, top films
imdb_api.py IMDb GraphQL queries
http_client.py HTTP with retries
pdf.py, chart.py PDF renderer (fpdf2) and matplotlib chart
html_page.py HTML renderer, with svg_chart.py and assets/ (CSS + JS)
images.py downloads the images for the HTML page as data URIs
search_page.py the web app's search page
tests/ offline tests for the HTML output and the web routes
examples/ the sample reports linked above
Everything under src/ is free of side effects, and all I/O happens in main.py and app.py.
pytest
The tests run offline and cover the HTML renderer (escaping, missing values, placeholders,
chart ordering, number formatting) and the web routes (redirects, candidate list, error
pages, PDF output). They need requirements-dev.txt.
This is a personal, non-commercial project and is not affiliated with IMDb. It uses IMDb's unofficial, undocumented GraphQL API. Every response includes IMDb's notice that "public, commercial, and/or non-private use" of the data is not allowed, and IMDb's Conditions of Use prohibit automated access. The endpoint can change or be blocked without warning. Posters and portraits belong to their respective owners.