| Crates.io | bms-table |
| lib.rs | bms-table |
| version | 0.12.1 |
| created_at | 2025-08-04 20:03:14.029795+00 |
| updated_at | 2026-01-20 20:09:42.970309+00 |
| description | BMS (Be-Music Source) difficulty table parser & fetcher |
| homepage | |
| repository | https://github.com/MiyakoMeow/bms-table-rs |
| max_upload_size | |
| id | 1781112 |
| size | 187,727 |
A Rust library to fetch and parse BMS difficulty tables. It can build a complete data structure from a web page or a header JSON, covering the header, courses, trophies and chart items, and it provides APIs to fetch lists of tables.
<meta name="bmstable"> (requires scraper).BmsTableHeader; unrecognized fields are preserved in extra.BmsTableData, supporting a plain array of ChartItem structure.md5/sha256 lists in courses to ChartItem; when level is missing, fill with "0".reqwest, which implicitly enables scraper).serde: serialization/deserialization support (enabled by default).scraper: HTML parsing and bmstable header URL extraction (enabled by default; implicitly enabled by reqwest).reqwest: network fetching implementation (enabled by default; requires the tokio runtime).BmsTable: top-level data structure containing header and data.BmsTableHeader: header metadata; unrecognized fields are preserved in extra.BmsTableData: chart data as an array.CourseInfo: course information; supports automatically converting md5/sha256 lists to chart items.ChartItem: a chart item; empty strings are deserialized as None.Trophy: trophy requirements (max miss rate, minimum score rate).fetch::reqwest::Fetcher: one-stop network fetcher wrapper around a reusable reqwest::Client.Fetcher::fetch_table(url): fetch and parse a complete table from a web page or a header JSON source.Fetcher::fetch_table_with_raw(url): return both the parsed table and the original header/data JSON texts.Fetcher::fetch_table_list(url): fetch a list of difficulty tables.Fetcher::fetch_table_list_with_raw(url): return the list items along with the original JSON text.fetch::get_web_header_json_value(str): parse a response string into header JSON or its URL (HeaderQueryContent).fetch::extract_bmstable_url(html): extract the bmstable header URL from HTML.examples/single_fetch_list.rs: fetch the table list once and print the first few items.examples/multi_fetch.rs: concurrently fetch multiple tables and print progress and results.docs.rs: https://docs.rs/bms-tableLicensed under the Apache-2.0 license.