{"id":13708390,"url":"https://github.com/nandenjin/twinkle-parser","last_synced_at":"2026-01-16T03:50:58.409Z","repository":{"id":38013818,"uuid":"181019443","full_name":"nandenjin/twinkle-parser","owner":"nandenjin","description":"Parse CSV from https://kdb.tsukuba.ac.jp to structured JSON.","archived":false,"fork":false,"pushed_at":"2025-05-05T22:37:05.000Z","size":3022,"stargazers_count":10,"open_issues_count":7,"forks_count":1,"subscribers_count":3,"default_branch":"dev","last_synced_at":"2025-05-05T23:32:21.902Z","etag":null,"topics":["cli","imagine-the-future","university-of-tsukuba"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/nandenjin.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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}},"created_at":"2019-04-12T14:01:46.000Z","updated_at":"2025-05-05T22:36:51.000Z","dependencies_parsed_at":"2023-02-17T07:01:14.842Z","dependency_job_id":"2aedaa08-c23d-4900-8707-74d61a0ce5c8","html_url":"https://github.com/nandenjin/twinkle-parser","commit_stats":null,"previous_names":[],"tags_count":41,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nandenjin%2Ftwinkle-parser","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nandenjin%2Ftwinkle-parser/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nandenjin%2Ftwinkle-parser/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nandenjin%2Ftwinkle-parser/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nandenjin","download_url":"https://codeload.github.com/nandenjin/twinkle-parser/tar.gz/refs/heads/dev","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252693471,"owners_count":21789696,"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":["cli","imagine-the-future","university-of-tsukuba"],"created_at":"2024-08-02T23:00:21.686Z","updated_at":"2026-01-16T03:50:58.398Z","avatar_url":"https://github.com/nandenjin.png","language":"TypeScript","funding_links":[],"categories":["公式サービス関連"],"sub_categories":["KdB"],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg width=\"200\" src=\"https://storage.googleapis.com/twinkle-resouces/common/bldg-cl.png\" alt=\"\"\u003e\n  \u003ch1\u003etwinkle-parser\u003c/h1\u003e\n  \u003cp\u003e\n    \u003ca href=\"https://www.npmjs.com/package/twinkle-parser\" target=\"_blank\" rel=\"noopener\"\u003e\u003cimg alt=\"npm version\" src=\"https://img.shields.io/npm/v/twinkle-parser.svg?style=flat-square\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://codeclimate.com/github/nandenjin/twinkle-parser/maintainability\"\u003e\u003cimg alt=\"Code Climate maintainability\" src=\"https://img.shields.io/codeclimate/maintainability/nandenjin/twinkle-parser?style=flat-square\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://codecov.io/gh/nandenjin/twinkle-parser\"\u003e\u003cimg alt=\"Codecov\" src=\"https://img.shields.io/codecov/c/gh/nandenjin/twinkle-parser?style=flat-square\"\u003e\u003c/a\u003e\n    \u003cspan\u003e\u003cimg src=\"http://img.shields.io/badge/license-MIT-blue.svg?style=flat-square\"\u003e\u003c/span\u003e\n  \u003c/p\u003e\n  \u003cp\u003eParse CSV from https://kdb.tsukuba.ac.jp to structured JSON.\u003c/p\u003e\n\u003c/div\u003e\n\n## Usage\n\n### From CLI\n\n#### Quick use\n\n```shell\nnpx twinkle-parser data_from_kdb.csv\n```\n\n#### Global Install\n\n```shell\n# Install with NPM\nnpm install -g twinkle-parser\n\n# Install with yarn\nyarn add --global twinkle-parser\n\n# Then\ntwinkle-parser data_from_kdb.csv\n```\n\n#### Use inside repo\n\n```shell\n# * Inside repo directory\n# Install dependencies\nyarn\n\n# Parse\nyarn run parse data_from_kdb.csv\n```\n\n### As API\n\n```shell\n# Install with NPM\nnpm install twinkle-parser\n\n# Install with yarn\nyarn add twinkle-parser\n```\n\n```js\nconst parse = require('twinkle-parser')\nconst data = parse('CSV string here') // -\u003e KDBData\n```\n\n### CLI options\n\n| Option                      |                                                                   |\n| --------------------------- | ----------------------------------------------------------------- |\n| `-o PATH` / `--output PATH` | Export result to a file at the `PATH` instead of to stdout.       |\n| `-p` / `--pretty`           | Prettify json output.                                             |\n| `--fields`                  | Fields to be included (comma-separated, specifing all if not set) |\n| `-h` / `--help`             | Print help \u0026 usage.                                               |\n| `-v` / `--version`          | Print version info\n\n## Output Format\n\n```jsonc\n{\n  \"COURSE_ID\": {\n\n    \"title\": \"Twinkle\",\n\n    // Class type (defined value by original data)\n    \"type\": 1,\n\n    // Course unit\n    \"unit\": 1,\n\n    // Course target grades\n    \"targets\": [1, 2],\n\n    // Terms \u0026 Modules\n    // 0 = Spring A, 1 = Spring B, ...\n    \"termStr\": \"春AB\",\n    \"terms\": [ 0, 1 ],\n\n    // Day \u0026 Period sets\n    \"periodStr\": \"月1-3\\n水4-6\",\n    \"periods\": [\n      // [ Days( 0 = Sun. 1 = Mon. ... ), Periods ]\n      [ [ 1 ], [ 0, 1, 2 ] ],\n      [ [ 3 ], [ 4, 5, 6 ] ]\n    ],\n\n    // Rooms\n    \"rooms\": [ \"7A106\", \"7C202\" ],\n\n    // Instructors\n    \"instructors\": [ \"筑波 太郎\" ],\n\n    // Overview \u0026 Remarks\n    \"overview\": \"\",\n    \"remarks\": \"\"\n\n    // Last update in unix time\n    \"updatedAt\": 1583390263000\n  }\n}\n```\n\n## TypeScript Support\n\nTypeScript supported! 🎉\n\n```ts\n// This will be imported with types\nimport parse from 'twinkle-parser'\n\n// And types for output data are also available\nimport { KDBData, KDBCourse } from 'twinkle-parser'\n```\n\n## Contribution\n\nIssue or PR submissions are welcome.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnandenjin%2Ftwinkle-parser","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnandenjin%2Ftwinkle-parser","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnandenjin%2Ftwinkle-parser/lists"}