{"id":38877257,"url":"https://github.com/bangumi-data/helper","last_synced_at":"2026-01-17T14:37:08.638Z","repository":{"id":44967438,"uuid":"68460881","full_name":"bangumi-data/helper","owner":"bangumi-data","description":"Helper for Bangumi Data","archived":false,"fork":false,"pushed_at":"2025-12-22T07:02:39.000Z","size":513,"stargazers_count":16,"open_issues_count":0,"forks_count":3,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-12-23T18:47:02.708Z","etag":null,"topics":["cli"],"latest_commit_sha":null,"homepage":null,"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/bangumi-data.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2016-09-17T15:34:41.000Z","updated_at":"2025-12-22T07:02:43.000Z","dependencies_parsed_at":"2023-10-12T18:37:27.743Z","dependency_job_id":"5e5ab8ed-da55-4498-91de-0fd99b7d5d11","html_url":"https://github.com/bangumi-data/helper","commit_stats":{"total_commits":141,"total_committers":5,"mean_commits":28.2,"dds":"0.18439716312056742","last_synced_commit":"a33a8a3791fea468b36969d806e54f3d0aaa8bd2"},"previous_names":[],"tags_count":44,"template":false,"template_full_name":null,"purl":"pkg:github/bangumi-data/helper","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bangumi-data%2Fhelper","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bangumi-data%2Fhelper/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bangumi-data%2Fhelper/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bangumi-data%2Fhelper/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bangumi-data","download_url":"https://codeload.github.com/bangumi-data/helper/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bangumi-data%2Fhelper/sbom","scorecard":{"id":225157,"data":{"date":"2025-08-11","repo":{"name":"github.com/bangumi-data/helper","commit":"19a680fe8b289643cd77a43b825b8726b753e3a6"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.5,"checks":[{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Maintained","score":10,"reason":"13 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":1,"reason":"Found 3/27 approved changesets -- score normalized to 1","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 6 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-17T03:37:46.821Z","repository_id":44967438,"created_at":"2025-08-17T03:37:46.821Z","updated_at":"2025-08-17T03:37:46.821Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28510108,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T13:38:16.342Z","status":"ssl_error","status_checked_at":"2026-01-17T13:37:44.060Z","response_time":85,"last_error":"SSL_read: 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":["cli"],"created_at":"2026-01-17T14:37:08.571Z","updated_at":"2026-01-17T14:37:08.631Z","avatar_url":"https://github.com/bangumi-data.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Bangumi Data Helper\n\n[![Node version](https://badgen.net/npm/node/bangumi-data-helper?icon=https://simpleicons.now.sh/node-dot-js/fff)](https://nodejs.org)\n[![NPM version](https://badgen.net/npm/v/bangumi-data-helper?icon=npm)](https://www.npmjs.com/package/bangumi-data-helper)\n[![License](https://badgen.net/npm/license/bangumi-data-helper?icon=https://api.iconify.design/octicon:law.svg?color=white)](https://github.com/bangumi-data/helper/blob/master/LICENSE)\n\nBangumi Data Helper 是一个命令行辅助工具，用于简化 [Bangumi Data](https://github.com/bangumi-data/bangumi-data) 的数据维护工作。bdh 可以完成大多数的重复性工作，但由于各个站点各个信息的不确定因素较多，爬取到的结果还需人工审核一遍。\n\n## Installation\n\n```bash\nnpm i -g bangumi-data-helper\n```\n\n适用于 [![Bangumi Data version](https://badgen.net/badge/bangumi-data/0.3.x)](https://github.com/bangumi-data/bangumi-data)\n\n## Usage\n\n需要在 bangumi-data 项目目录下运行。\n\n```bash\n# 查看帮助\nbdh --help\n# 生成某季度的初始数据\nbdh create 2016q4\n# 更新某月的番组数据\nbdh update 201610\n# 根据bangumi添加番剧数据\nbdh add 207195\n# 根据bangumi添加番剧数据, 并同时添加1个放送站点\nbdh add 207195 nicovideo:yurucamp\n# 根据bangumi添加番剧数据, 并同时添加多个放送站点\nbdh add 207195 nicovideo:yurucamp gamer:89804\n# 交互式地手动增加某月的放送站点\nbdh edit 201610\n# 补完某站的所有番剧\nbdh hokan iqiyi\n# 补充所有 end 字段为空的番剧\nbdh end\n# 清理已下架番组\nbdh cleanup bilibili\n# 使用代理\nHTTP_PROXY=http://127.0.0.1:1087 bdh hokan nicovideo\n```\n\n### `bdh create \u003cseason\u003e`\n\n该命令会根据 [cal.syoboi.jp](http://cal.syoboi.jp/quarter/) 的数据，创建指定季度的初始数据，包括日文标题、英文标题、官网、放送开始时间、番剧类型、Bangumi.tv 对应条目。有些番组不包含放送开始时间，这些数据会被放入 `data/items/0000/00.json` 待人工处理。\n\n### `bdh update \u003cmonth\u003e`\n\n在添加维护放送站点信息时，可以在 `sites` 数组中添加[番剧页面链接](https://github.com/bangumi-data/bangumi-data/blob/master/CONTRIBUTING.md#%E7%AB%99%E7%82%B9-url-%E6%8B%BC%E6%8E%A5)或包含 `site` 和 `id` 信息的对象，例如：\n\n```js\n{\n  // ...\n  \"sites\": [\n    \"http://www.iqiyi.com/a_19rrh9uqb5.html\",\n    // 或者\n    {\n      \"site\": \"iqiyi\",\n      \"id\": \"a_19rrh9uqb5\"\n    }\n  ]\n}\n```\n\n在当前文件修改完后，可以运行该指令把当前文件所有番剧的 `sites` 数组处理成符合规范的格式，非模型定义的字段会被自动去除。注意，由于部分站点放送开始时间为无规律的中文，难以用程序解析，需要手动转换。\n\n### `bdh add \u003cbangumiId\u003e [siteList..]`\n\n根据Bangumi上的数据添加番剧数据, 可以同时添加放送站点信息。\n\n### `bdh edit \u003cmonth\u003e`\n\n交互式地手动添加番剧放送站点信息。\n\n### `bdh hokan \u003csite\u003e`\n\nhokan 即为补完（[番組補完計画](https://github.com/bangumi-data/bangumi-data/issues/11)），其工作模式为：爬取到某站所有的番剧数据，然后自动过滤掉已存在于 bangumi-data 的番剧和[排除列表](https://github.com/bangumi-data/helper/tree/master/exclusions)里的番剧，剩下的就是待添加或待排除的番剧。\n\n执行该指令后，会在 `data/items/0000/\u003csite\u003e.json` 下输出待补完数据。复制番剧对象到 `sites` 数组中按 `bdh update \u003cmonth\u003e` 继续后续流程。对于非正常番剧（如乱入的[站方自制节目](https://www.iqiyi.com/a_19rrh5w971.html)、特典、广播剧、舞台剧、特摄、真人版等），请 PR 添加到[排除列表](https://github.com/bangumi-data/helper/tree/master/exclusions)。\n\n### `bdh end`\n\n运行该指令将寻找所有 end 字段为空的番剧并尝试补充。只会补充放送结束时间在本月之前的番剧，也就是说，某番剧本月 1 日完结，在本月 30 日运行该指令是无效的。\n\n### `bdh cleanup \u003csite\u003e`\n\n清理某站已下架番组，其工作模式为：爬取该站`hokan`的番剧数据，然后比对存在于bangumi-data 的番剧，擭得可能已下架的番剧，在再次确定已下架后从番剧数据中清除\n\n## Status\n\n下表列举了当前自动化情况，✔️表示可以自动获取，✖️表示不能，⭕表示需要手动修改，🚧表示待修。\n\n| site      | begin | 补完 | 自动匹配现有番组 | 清理 |\n| --------- | ----- | --- | --------------- | ---- |\n| abema     | ✖️    | ✔️  | ✔️             | ✔️  |\n| acfun     | ✔️    | ✔️  | ✔️             | ✔️  |\n| bilibili  | ✔️    | ✔️  | ✔️             | ✔️  |\n| bilibili_hk_mo_tw |✔️|✔️| ✔️             | ✔️  |\n| bilibili_hk_mo| ✔️| ✔️  | ✔️             | ✔️  |\n| bilibili_tw | ✔️  | ✔️  | ✔️             | ✔️  |\n| crunchyroll | ✔️    | ✔️  | ✔️           | ✔️  |\n| danime    | ✔️    | ✔️  | ✔️             | ✔️  |\n| disneyplus| ✖️    | ✔️  | ✔️             | ✔️  |\n| gamer     | ✔️    | ✔️  | ✔️             | ✔️  |\n| gamer_hk  | ✔️    | ✔️  | ✔️             | ✔️  |\n| iqiyi     | ✔️    | ✔️  | ✖️             | ✖️  |\n| letv      | ✖️    | ✔️  | ✖️             | ✔️  |\n| mgtv      | ✔️    | 🚧  | ✖️             | ✖️  |\n| mytv      | ✔️    | ✔️  | ✔️             | ✔️  |\n| netflix   | ✖️    | ✔️❓| ✔️             | ✔️  |\n| nicovideo | ✔️    | ✔️  | ✔️             | ✖️  |\n| prime     | ✖️    | ✔️  | ✔️             | ✔️  |\n| qq        | ⭕    | ✔️  | ✖️             | ✖️  |\n| tropics   | ✔️    | ✔️  | ✔️             | ✔️  |\n| unext     | ✔️    | ✔️  | ✔️             | ✔️  |\n| viu       | ✔️    | ✔️  | ✔️             | ✔️  |\n| youku     | ✔️    | 🚧  | ✖️             | ✖️  |\n| youtube   | ⭕    | ✔️  | ✔️             | ✔️  |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbangumi-data%2Fhelper","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbangumi-data%2Fhelper","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbangumi-data%2Fhelper/lists"}