{"id":25876639,"url":"https://github.com/eatradish/felgens","last_synced_at":"2025-03-02T10:32:51.952Z","repository":{"id":65331060,"uuid":"571173555","full_name":"eatradish/felgens","owner":"eatradish","description":"Bilibili live danmu websocket library","archived":false,"fork":false,"pushed_at":"2023-06-14T04:52:43.000Z","size":78,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-02T00:38:22.944Z","etag":null,"topics":["bilibili-live","rust","websocket"],"latest_commit_sha":null,"homepage":"","language":"Rust","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/eatradish.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}},"created_at":"2022-11-27T12:11:36.000Z","updated_at":"2024-01-12T18:49:28.000Z","dependencies_parsed_at":"2023-01-31T05:46:18.456Z","dependency_job_id":null,"html_url":"https://github.com/eatradish/felgens","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eatradish%2Ffelgens","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eatradish%2Ffelgens/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eatradish%2Ffelgens/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eatradish%2Ffelgens/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eatradish","download_url":"https://codeload.github.com/eatradish/felgens/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241444006,"owners_count":19963749,"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":["bilibili-live","rust","websocket"],"created_at":"2025-03-02T10:32:46.762Z","updated_at":"2025-03-02T10:32:51.944Z","avatar_url":"https://github.com/eatradish.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# felgens\nBilibili live danmu websocket library\n\n[![asciicast](https://asciinema.org/a/zQIlXtbOQCIzlghjDxpaBbcHJ.png)](https://asciinema.org/a/zQIlXtbOQCIzlghjDxpaBbcHJ)\n\n\n## Usage\n\n```rust\nuse anyhow::Result;\nuse felgens::{ws_socket_object, WsStreamMessageType};\nuse tokio::sync::mpsc::{self, UnboundedReceiver};\n\n#[tokio::main]\nasync fn main() {\n   let (tx, rx) = mpsc::unbounded_channel();\n\n   // bilibili live room id (true id): 22746343\n\n   let ws = ws_socket_object(tx, 22746343);\n\n   if let Err(e) = tokio::select! {v = ws =\u003e v, v = recv(rx) =\u003e v} {\n       eprintln!(\"{}\", e);\n   }\n}\n\nasync fn recv(mut rx: UnboundedReceiver\u003cWsStreamMessageType\u003e) -\u003e Result\u003c()\u003e {\n   while let Some(msg) = rx.recv().await {\n       println!(\"{:?}\", msg);\n   }\n\n   Ok(())\n}\n```\nOr run `cargo run --example danmu`\n\n## To-do!\n\n- [x] 弹幕\n- [x] SC\n- [x] xxx 进了该房间\n- [ ] 礼物\n- [ ] 红包\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Featradish%2Ffelgens","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Featradish%2Ffelgens","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Featradish%2Ffelgens/lists"}