{"id":51317976,"url":"https://github.com/thisago/ytextractor","last_synced_at":"2026-07-01T09:31:48.266Z","repository":{"id":48075839,"uuid":"392462206","full_name":"thisago/ytextractor","owner":"thisago","description":"Youtube data extractor","archived":false,"fork":false,"pushed_at":"2023-11-02T12:41:09.000Z","size":1230,"stargazers_count":13,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-05-02T04:17:56.696Z","etag":null,"topics":["extractor","library","nim","scraper","youtube"],"latest_commit_sha":null,"homepage":"https://thisago.github.io/ytextractor/examples/web/","language":"Nim","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/thisago.png","metadata":{"files":{"readme":"readme.md","changelog":"changelog.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2021-08-03T21:34:33.000Z","updated_at":"2023-12-27T11:16:05.000Z","dependencies_parsed_at":"2023-01-19T17:03:31.577Z","dependency_job_id":"30b44960-10ef-4712-ab23-20ac36f9b793","html_url":"https://github.com/thisago/ytextractor","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/thisago/ytextractor","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thisago%2Fytextractor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thisago%2Fytextractor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thisago%2Fytextractor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thisago%2Fytextractor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thisago","download_url":"https://codeload.github.com/thisago/ytextractor/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thisago%2Fytextractor/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35001648,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-01T02:00:05.325Z","response_time":130,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["extractor","library","nim","scraper","youtube"],"created_at":"2026-07-01T09:31:45.858Z","updated_at":"2026-07-01T09:31:48.261Z","avatar_url":"https://github.com/thisago.png","language":"Nim","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ytextractor\n\n\u003e **Note**:\n\u003e An new version with async, NodeJS support and more fixes are in development\n\u003e at branch `dev-v1.2`\n\n**Y**ou**t**ube data **extractor**\n\nExtracts the data of a Youtube url.\nbut more will be added soon!\n\nThe objective is extract every data that don't need authentication\n\n---\n\n## Features\n\n\u003cdetails\u003e\n\u003csummary\u003eExtracted Info\u003c/summary\u003e\n\n- **Video url**\n  - Video info\n    - [x] Id (video code)\n    - [x] Title\n    - [x] Description\n    - [x] Thumbnails\n    - [x] Embed\n    - [x] Publish date\n    - [x] Upload date\n    - [x] Length\n    - [x] Family friendly\n    - [x] Unlisted\n    - [x] Private\n    - [x] Live (is live)\n    - [x] Channel\n    - [x] Views\n    - [x] Category\n    - [x] Likes\n    - [x] Keywords\n    - [x] Captions URLs \n  - Channel\n    - [x] Name\n    - [x] Id\n    - [x] Url\n    - [x] Subscribers\n    - [x] Channel icons\n    - [x] Hidden subscribers (bool)\n- **Channel url**\n  - [x] Id\n  - [x] Url\n  - [x] Name\n  - [x] Subscribers\n  - [x] Channel icons\n  - [x] Hidden subscribers (bool)\n  - [x] Family safe\n  - [x] Tags\n  - [x] Description (about)\n  - [x] Banners\n  - [x] Links\n    - [x] Primary\n    - [x] Secondary\n  - [x] Highlighted playlists videos\n  - [x] Highlighted video\n    - [x] Id (video code)\n    - [x] Title\n    - [x] Description\n    - [ ] Thumbnails\n    - [x] Views\n    - [x] Rounded publish date\n    - [x] Badges\n      - [x] Name\n      - [x] Icon\n      - [x] IconType\n      - [x] Style\n\n- [x] Video captions\n\n- **Video data**\n  - [ ] Subtitles\n  - [ ] Comments\n    - [ ] Comments of comments\n  - Livechat\n    - [ ] Realtime\n    - [ ] Replay\n- [ ] Search results\n- [ ] All videos from channel/user\n- [ ] All videos of playlist (a seq of videos)\n\u003c/details\u003e\n\n### JS (browser) target avaliable!\n\n[Online example](https://thisago.github.io/ytextractor/examples/web/)\n\nAn example can be found in [`examples/web`](examples/web).\n\nUnfortunately the implementation isn't async, soon it will be fixed\n\n**TODO:** Add captions extraction to JS example\n\n---\n\n## Usage\n\n### [`video.nim`](src/ytextractor/video.nim)\n\n```nim\nimport ytextractor\necho extractVideo \"7on15IWC2u4\"\n```\nor\n```nim\nimport ytextractor\nvar vid = initYoutubeVideo \"7on15IWC2u4\".videoId\ndiscard vid.update()\necho vid\n```\n\n---\n\n### [`channel.nim`](src/ytextractor/channel.nim)\n\n```nim\nimport ytextractor\necho extractChannel \"https://www.youtube.com/c/taofledermaus\"\n```\nor\n```nim\nimport ytextractor\nvar channel = initYoutubeChannel \"https://www.youtube.com/c/taofledermaus\".channelId\ndiscard channel.update(home)\necho channel\n```\n\n---\n\n### [`captions.nim`](src/ytextractor/captions.nim)\n\n```nim\nimport ytextractor\necho \"7on15IWC2u4\".extractVideo.captions[0].url.extractCaptions\n```\nor\n```nim\nimport ytextractor\nvar captions = initYoutubecaptions()\ndiscard captions.update \"7on15IWC2u4\".extractVideo.captions[0].url\necho captions\n```\n\n---\n\n## Installation\n\nMinimum [Nim](https://nim-lang.org) version is `1.2.2`\n\nPlease choice one installation method:\n\n- Automatically with nimble\n  ```bash\n  nimble install ytextractor\n  ```\nOr\n- Manually\n  ```bash\n  git clone https://github.com/thisago/ytextractor\n  cd ytextractor/\n  nimble install\n  ```\n\n---\n\n## Docs\n\nA online docs is hosted in [Github Pages](https://thisago.github.io/ytextractor/docs/ytextractor.html)\n\n---\n\n## TODO\n\n- [ ] Usage guide (not only Nim)\n- [ ] Make requests async\n- [ ] Use API https://www.youtube.com/youtubei/v1/browse to get channel data\n      instead using simple page request\n- [ ] Add tests for captions sub module\n\n---\n\n## Useful links\n\n### [nlitsme/youtube_tool](https://github.com/nlitsme/youtube_tool)\n\nPython3 parser\\\nWith a \"How it works\" section\n\n---\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthisago%2Fytextractor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthisago%2Fytextractor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthisago%2Fytextractor/lists"}