{"id":23763920,"url":"https://github.com/tomashubelbauer/csfd-digest","last_synced_at":"2026-03-22T15:30:19.160Z","repository":{"id":47552428,"uuid":"197744142","full_name":"TomasHubelbauer/csfd-digest","owner":"TomasHubelbauer","description":"Scrapes CSFD.cz for cinema schedules and allows annotating movies with interest level. Notifies about new movies found since the last time.","archived":false,"fork":false,"pushed_at":"2024-05-02T00:18:27.000Z","size":14348,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-05-02T03:54:50.212Z","etag":null,"topics":["cinema","csfd","puppeteer","scraper","screening","screenings"],"latest_commit_sha":null,"homepage":"https://tomashubelbauer.github.io/csfd-digest","language":"JavaScript","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/TomasHubelbauer.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":"2019-07-19T09:26:34.000Z","updated_at":"2024-05-04T01:27:11.626Z","dependencies_parsed_at":"2024-03-13T02:46:38.560Z","dependency_job_id":"c93d9639-5951-4167-9c9b-12dd4a5c5b3e","html_url":"https://github.com/TomasHubelbauer/csfd-digest","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TomasHubelbauer%2Fcsfd-digest","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TomasHubelbauer%2Fcsfd-digest/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TomasHubelbauer%2Fcsfd-digest/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TomasHubelbauer%2Fcsfd-digest/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TomasHubelbauer","download_url":"https://codeload.github.com/TomasHubelbauer/csfd-digest/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239937698,"owners_count":19721484,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["cinema","csfd","puppeteer","scraper","screening","screenings"],"created_at":"2024-12-31T22:13:52.521Z","updated_at":"2026-03-22T15:30:19.078Z","avatar_url":"https://github.com/TomasHubelbauer.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Puppeteer CSFD.cz Scraper\r\n\r\n![](https://github.com/tomashubelbauer/puppeteer-csfd-scraper/workflows/github-pages/badge.svg)\r\n\r\n[**LIVE**](https://tomashubelbauer.github.io/csfd-digest)\r\n\r\nScrapes CSFD.cz for cinema schedules and allows annotating movies with interest\r\nlevel. Notifies about new movies coming out.\r\n\r\n## Running\r\n\r\nRun `npm start` to run the scraper script (runs in GitHub Actions).\r\n\r\nRun `npx serve .` to serve the contents of the repository directory.\r\n\r\nAccess http://localhost:5000 to visit the old app (HTML).\r\n\r\nRun `npm start` in `cra` in addition (to keep serving `docs` for the proxy) and\r\naccess http://localhost:3000 to visit the new app (React).\r\n\r\n## To-Do\r\n\r\n### Remove local storage items for movies no longer in the data\r\n\r\n(including deletions) so the local storage doesn't just grow indefinitely.\r\n\r\n### Scrape all cities, not just Prague and add a switcher and geolocation integration\r\n\r\n### Order selected cinemas first then unselected to avoid concealing selection with scroll\r\n\r\n### Add a timeline kind control to the movie page for screenings\r\n\r\nif I can come up with a useful and good looking one.\r\n\r\n### Use a better cinema picker (all/remembered cinemas by default)\r\n\r\nclicking opens a list / a map in a modal and each cinema shows the number of movies.\r\n\r\n### Add a search \u0026 filter strip between cinemas and movies \r\n\r\nWhere movies can be searched for, watched/deleted can be enabled to be displayed and a release year\r\nmay be selected (maybe a check for \"recent movies only\" [this and last year]).\r\n\r\n### Add a notification when marking movies as watched and deleted\r\n\r\nwith an undo button (not for probably and maybe as those do not hide when tagged).\r\n\r\n### See if I can link directly to purchase from the time slot\r\n\r\nfor cinemas which have online ticket sales.\r\n\r\n### Remove time slots which are not up to date\r\n\r\n(index gets refreshed daily so in the\r\nevening some times might have already passed), cut them off 10 minutes after\r\nmovie start (in case you show up just on time to buy tickets skipping the ads,\r\nyou should still see the movie in the app).\r\n\r\n### Display production country and original title if available\r\n\r\n### Display a date range in the card to see how much time is left to see the movie\r\n\r\nAlso add a badge along the lines of \"Ends soon\" or something if just a few days.\r\n\r\n### Scrape and display movie ratings in the cards\r\n\r\n### Use the history API instead of hashes\r\n\r\nto avoid the problem where closing the\r\nmovie popup by clearing the hash scrolls the page up (as well as general history\r\npollution).\r\n\r\n### Fix player fullscreen dismissing the popup for some reason\r\n\r\n(probably the scroll to dismiss handler).\r\n\r\n### Hook up Esc to dismiss the modal\r\n\r\n### Consider running the pipeline with Puppeteer-Firefox in parallel with Chrome\r\n\r\nto benchmark how stable it is (failing this one will not fail the CI).\r\n\r\n- https://github.com/GoogleChrome/puppeteer/tree/master/experimental/puppeteer-firefox\r\n- https://aslushnikov.github.io/ispuppeteerfirefoxready/\r\n- https://www.npmjs.com/package/puppeteer-firefox\r\n\r\n### Minimize modal top margin on mobile\r\n\r\n### Make the YouTube embed 100% modal width on mobile\r\n\r\n### Reset modal scroll position when opening new movie on mobile\r\n\r\n### See if modal scroll can be made smooth like main scroll in iOS Safari\r\n\r\n### Display a note if no screening dates are available in the selected cinemas\r\n\r\n(How can this happen? Yet it does for some movies.)\r\n\r\n### Add in and out transition animation for the popup\r\n\r\n### Fix 3D animation perspective for the tile shake on mobile\r\n\r\nor remove it is weird.\r\n\r\n### Render the movie popup by loading the movie file when opened in both versions\r\n\r\n### Fix some movies not getting deleted - not in index but have data files\r\n\r\n### Send descriptions in the email with new movies\r\n\r\n### Consider rendering the movie gallery statically into the HTML\r\n\r\nUse JavaScript only for things like hiding and stuff.\r\nMaybe use react-snap or react-snapshot.\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftomashubelbauer%2Fcsfd-digest","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftomashubelbauer%2Fcsfd-digest","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftomashubelbauer%2Fcsfd-digest/lists"}