{"id":23070256,"url":"https://github.com/markbattistella/video-chapter-injector","last_synced_at":"2026-05-03T06:33:10.976Z","repository":{"id":229283787,"uuid":"775965237","full_name":"markbattistella/video-chapter-injector","owner":"markbattistella","description":"Chapter Injector is an electron app which quickly allows you to inject non-linear video editor markers into video files as chapter points.","archived":false,"fork":false,"pushed_at":"2024-03-27T05:00:29.000Z","size":22893,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-03T10:18:17.657Z","etag":null,"topics":["avid","chapter","chapters","editing","editing-videos","electron","electron-app","final-cut-pro","injection","media-composer","premiere-pro","video"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":false,"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/markbattistella.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}},"created_at":"2024-03-22T12:04:38.000Z","updated_at":"2024-03-27T09:21:27.000Z","dependencies_parsed_at":"2024-03-27T06:33:21.110Z","dependency_job_id":null,"html_url":"https://github.com/markbattistella/video-chapter-injector","commit_stats":null,"previous_names":["markbattistella/video-chapter-injector"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/markbattistella/video-chapter-injector","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/markbattistella%2Fvideo-chapter-injector","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/markbattistella%2Fvideo-chapter-injector/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/markbattistella%2Fvideo-chapter-injector/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/markbattistella%2Fvideo-chapter-injector/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/markbattistella","download_url":"https://codeload.github.com/markbattistella/video-chapter-injector/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/markbattistella%2Fvideo-chapter-injector/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32560437,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-03T03:21:47.309Z","status":"ssl_error","status_checked_at":"2026-05-03T03:21:43.884Z","response_time":103,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: 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":["avid","chapter","chapters","editing","editing-videos","electron","electron-app","final-cut-pro","injection","media-composer","premiere-pro","video"],"created_at":"2024-12-16T06:25:29.428Z","updated_at":"2026-05-03T06:33:10.958Z","avatar_url":"https://github.com/markbattistella.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n# Chapter Injector\n\n![Languages](https://img.shields.io/badge/Languages-Javascript%20|%20NodeJS-white?labelColor=orange\u0026style=flat)\n\n![Platforms](https://img.shields.io/badge/Platforms-Windows%20|%20macOS-white?labelColor=gray\u0026style=flat)\n\n![Licence](https://img.shields.io/badge/Licence-MIT-white?labelColor=blue\u0026style=flat)\n\n\u003c/div\u003e\n\nChapter Injector is an electron app which quickly allows you to inject non-linear video editor markers into video files as chapter points.\n\n## Usage\n\nThe app is very simple and easy to use.\n\n1. Select an MP4 or MOV video file\n\n1. Add in the CSV formatted chapter points to the text field\n\n1. Press the `Inject Chapters` button\n\n1. Done!\n\n## How to format chapters\n\nThe text field area accepts any text, however only proper formatted text will allow the injection to work.\n\nIt expects to receive CSV data where the columns are separated by tab spaces (`\\t`), commas (`,`), or pipes (`|`).\n\nThe app will automatically detect the delimiter based on the majority found in the text field (ie. the most tabs, commas, or pipes).\n\n### Example chapter data\n\n#### Tabs\n\n```csv\n00:00:30:00  V1  Blue  Chapter 01\n00:01:00:00  V1  Blue  Chapter 02\n00:01:30:00  V1  Blue  Chapter 03\n00:02:00:00  V1  Blue  Chapter 04\n00:02:30:00  V1  Blue  Chapter 05\n```\n\n#### Commas\n\n```csv\n00:00:30:00,V1,Blue,Chapter 01\n00:01:00:00,V1,Blue,Chapter 02\n00:01:30:00,V1,Blue,Chapter 03\n00:02:00:00,V1,Blue,Chapter 04\n00:02:30:00,V1,Blue,Chapter 05\n```\n\n#### Pipes\n\n```csv\n00:00:30:00|V1|Blue|Chapter 01\n00:01:00:00|V1|Blue|Chapter 02\n00:01:30:00|V1|Blue|Chapter 03\n00:02:00:00|V1|Blue|Chapter 04\n00:02:30:00|V1|Blue|Chapter 05\n```\n\n\u003e [!Note]\n\u003e Only the first and last columns are used. Anything in-between is ignored.\n\n### Column data\n\nThe app expects at least two columns for the CSV chapter data. If there are more than two columns then only the **first and last columns are used**.\n\nThe first column is the timecode in the format of `HH:MM:SS:FF`.\n\nThe second column is the chapter title.\n\n## Running it\n\nWhen you run the app, it extracts the location of the input MP4 or MOV file, and will output the new file next to it.\n\nThe new file will have a suffix `_withChapters` to the end of it.\n\nInjecting chapters does not re-encode or alter the video file. It only adds in new metadata.\n\n---\n\n## For developers\n\n### Command line - development mode\n\nThis opens the console automatically and enables live reloading.\n\n```sh\nnpm run start:dev\n```\n\n### Command line - production mode\n\n```sh\nnpm run start\n```\n\n### Files\n\n| File | Description |\n|-|-|\n| `preload.mjs` | This is to expose the Electron / NodeJS APIs between the app and `renderer.mjs` |\n| `renderer.mjs` | This is called in the `index.html` and initialises the app |\n| `event-listeners.mjs` | Contains all the event listeners - click, keydown, etc. There are some shortcut key presses, mainly for debugging at this point |\n| `helpers.mjs` | Helper functions that are neither app logic or UI components |\n| `ui-components.mjs` | Builds the app UI |\n| `app-logic.mjs` | All the app logic in terms of processing the data into chapter files, injecting it into the file, etc. |\n\n---\n\n## Contributing\n\nContributions are more than welcome. If you find a bug or have an idea for an enhancement, please open an issue or provide a pull request. Please follow the code style present in the current code base when making contributions.\n\n## License\n\nThis package is released under the MIT license.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarkbattistella%2Fvideo-chapter-injector","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmarkbattistella%2Fvideo-chapter-injector","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarkbattistella%2Fvideo-chapter-injector/lists"}