{"id":15960878,"url":"https://github.com/cxuesong/openccsharp","last_synced_at":"2025-05-07T04:21:27.906Z","repository":{"id":73100912,"uuid":"422937803","full_name":"CXuesong/OpenCCSharp","owner":"CXuesong","description":"[WIP] a .NET library for Chinese text script variant conversion.","archived":false,"fork":false,"pushed_at":"2024-10-02T15:01:40.000Z","size":101,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-31T06:11:28.190Z","etag":null,"topics":["chinese-conversion","opencc"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CXuesong.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}},"created_at":"2021-10-30T16:46:22.000Z","updated_at":"2024-10-02T15:01:44.000Z","dependencies_parsed_at":"2023-03-15T05:00:13.405Z","dependency_job_id":null,"html_url":"https://github.com/CXuesong/OpenCCSharp","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CXuesong%2FOpenCCSharp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CXuesong%2FOpenCCSharp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CXuesong%2FOpenCCSharp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CXuesong%2FOpenCCSharp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CXuesong","download_url":"https://codeload.github.com/CXuesong/OpenCCSharp/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252811104,"owners_count":21807893,"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":["chinese-conversion","opencc"],"created_at":"2024-10-07T15:22:15.499Z","updated_at":"2025-05-07T04:21:27.885Z","avatar_url":"https://github.com/CXuesong.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# OpenCC#\n\n[![Build Status](https://github.com/CXuesong/OpenCCSharp/actions/workflows/OpenCCSharp.yml/badge.svg?branch=main)](https://github.com/CXuesong/OpenCCSharp/actions/workflows/OpenCCSharp.yml) | [![Build Status](https://github.com/CXuesong/OpenCCSharp/actions/workflows/Benchmark.yml/badge.svg?branch=main)](https://github.com/CXuesong/OpenCCSharp/actions/workflows/Benchmark.yml) \n\nOpenCCSharp is a (WIP) .NET 8 library for Chinese text script variant conversion. This project is inspired by [BYVoid/OpenCC](https://github.com/BYVoid/OpenCC), and used similar approach in word segmentation. This project also used the same conversion dictionary in OpenCC project.\n\n\u003e While the v0.0.1-int.6 of the packages support both .NET 6.0 and .NET 8.0, further versions might drop support for .NET 6.0 as this .NET SDK reaching its EOL.\n\n\u003e  This library is in its very early INT phase and its API is still subject to drastic changes. There is also much optimizations yet to be employed.\n\nTo install the NuGet package with preset Chinese variant converters, use\n\n```powershell\n#  Package Management Console\nInstall-Package CXuesong.OpenCCSharp.Presets -Prerelease\n#  .NET CLI\ndotnet add package CXuesong.OpenCCSharp.Presets --prerelease\n```\n\nFor now there is no detailed usage documented here, but you can getting started by playing with `OpenCCSharp.Presets.ChineseConversionPresets`.\n\nThis project also powers [OpenCC# WebApp](https://github.com/CXuesong/OpenCCSharp.WebApp), a serverless Chinese variant conversion web app, with the help of WASM.\n\n## Packages\n\n* [CXuesong.OpenCCSharp.Conversion](https://www.nuget.org/packages/CXuesong.OpenCCSharp.Conversion) | ![NuGet version (CXuesong.OpenCCSharp.Conversion)](https://img.shields.io/nuget/vpre/CXuesong.OpenCCSharp.Conversion.svg?style=flat-square) ![NuGet version (CXuesong.OpenCCSharp.Conversion)](https://img.shields.io/nuget/dt/CXuesong.OpenCCSharp.Conversion.svg?style=flat-square)\n    * Provides object model and data structure for variant conversion.\n* [CXuesong.OpenCCSharp.Presets](https://www.nuget.org/packages/CXuesong.OpenCCSharp.Presets) | ![NuGet version (CXuesong.OpenCCSharp.Presets)](https://img.shields.io/nuget/vpre/CXuesong.OpenCCSharp.Presets.svg?style=flat-square)![NuGet version (CXuesong.OpenCCSharp)](https://img.shields.io/nuget/dt/CXuesong.OpenCCSharp.Presets.svg?style=flat-square)\n    * Provides pre-configured Chinese variant converters.\n\n## Build\n\nWith Visual Studio 2022 or VSCode + .NET SDK 6.\n\n## Benchmark\n\nCurrently, this library looks generally [3x faster](https://github.com/BYVoid/OpenCC#benchmark-%E5%9F%BA%E6%BA%96%E6%B8%AC%E8%A9%A6) than the OpenCC library implemented in native C++ on Ubuntu.\n\n\u003cdetails\u003e\n\u003csummary\u003eOpen CC benchmark output\u003c/summary\u003e\n\nCompared benchmarks: BM_Convert/x v.s. DupSequence\n\nhttps://github.com/BYVoid/OpenCC/actions/runs/10229279965/job/28302747342\n\n```\n1: Test command: /home/runner/work/OpenCC/OpenCC/build/perf/src/benchmark/performance\n1: Working Directory: /home/runner/work/OpenCC/OpenCC/build/perf/src/benchmark\n1: Test timeout computed to be: 1500\n1: 2024-08-03T16:08:09+00:00\n1: Running /home/runner/work/OpenCC/OpenCC/build/perf/src/benchmark/performance\n1: Run on (4 X 3218.97 MHz CPU s)\n1: CPU Caches:\n1:   L1 Data 32 KiB (x2)\n1:   L1 Instruction 32 KiB (x2)\n1:   L2 Unified 512 KiB (x2)\n1:   L3 Unified 32768 KiB (x1)\n1: Load Average: 0.92, 0.41, 0.15\n1: ------------------------------------------------------------------\n1: Benchmark                        Time             CPU   Iterations\n1: ------------------------------------------------------------------\n1: BM_Initialization/hk2s        1.09 ms         1.09 ms          638\n1: BM_Initialization/hk2t       0.152 ms        0.151 ms         4618\n1: BM_Initialization/jp2t       0.235 ms        0.235 ms         2974\n1: BM_Initialization/s2hk        30.2 ms         30.2 ms           23\n1: BM_Initialization/s2t         29.6 ms         29.6 ms           24\n1: BM_Initialization/s2tw        29.7 ms         29.7 ms           24\n1: BM_Initialization/s2twp       30.0 ms         30.0 ms           23\n1: BM_Initialization/t2hk       0.072 ms        0.072 ms         9975\n1: BM_Initialization/t2jp       0.185 ms        0.184 ms         3795\n1: BM_Initialization/t2s        0.959 ms        0.959 ms          731\n1: BM_Initialization/tw2s        1.01 ms         1.01 ms          692\n1: BM_Initialization/tw2sp       1.24 ms         1.24 ms          563\n1: BM_Initialization/tw2t       0.097 ms        0.097 ms         7209\n1: BM_Convert2M                   385 ms          385 ms            2\n1: BM_Convert/100               0.757 ms        0.757 ms          929\n1: BM_Convert/1000               7.74 ms         7.74 ms           90\n1: BM_Convert/10000              79.3 ms         79.3 ms            9\n1: BM_Convert/100000              837 ms          837 ms            1\n1/1 Test #1: BenchmarkTest ....................   Passed   17.54 sec\n\n100% tests passed, 0 tests failed out of 1\n```\n\u003c/details\u003e\n\n### Test cases\n\n* OpenCCTest: Measuring the time and memory footprint when executing original OpenCC tests (`BM_Initialization/*`), excl. loading preset conversion rules. \n* BulkConversionTest: Measuring the time and memory footprint when executing original OpenCC tests (`BM_Convert*`), excl. loading preset conversion rules. \n* PresetLoadTest: Measuring the time and memory footprint when loading the preset conversion rules with `ChineseConversionPresets.GetConverterAsync`.\n\n### Legends\n\n```\n  Mean        : Arithmetic mean of all measurements\n  Error       : Half of 99.9% confidence interval\n  StdDev      : Standard deviation of all measurements\n  Gen 0       : GC Generation 0 collects per 1000 operations\n  Gen 1       : GC Generation 1 collects per 1000 operations\n  Gen 2       : GC Generation 2 collects per 1000 operations\n  Allocated   : Allocated memory per single operation (managed only, inclusive, 1KB = 1024B)\n  1 ms        : 1 Millisecond (0.001 sec)\n```\n\n### Windows\n\n``` ini\nBenchmarkDotNet v0.14.0, Windows 10 (10.0.20348.2582) (Hyper-V)\nAMD EPYC 7763, 1 CPU, 4 logical and 2 physical cores\n.NET SDK 8.0.303\n  [Host]     : .NET 8.0.7 (8.0.724.31311), X64 RyuJIT AVX2\n  DefaultJob : .NET 8.0.7 (8.0.724.31311), X64 RyuJIT AVX2\n```\n| Method     | arguments                    | Mean      | Error     | StdDev    | Gen0   | Allocated |\n|----------- |----------------------------- |----------:|----------:|----------:|-------:|----------:|\n| **OpenCCTest** | **HK -\u0026gt; Hans [hk2s]**            |  **3.886 μs** | **0.0205 μs** | **0.0182 μs** | **0.0458** |     **832 B** |\n| **OpenCCTest** | **HK -\u0026gt; Hant [hk2t]**            |  **1.936 μs** | **0.0038 μs** | **0.0033 μs** | **0.0191** |     **344 B** |\n| **OpenCCTest** | **Hans -\u0026gt; HK [s2hk]**            |  **4.298 μs** | **0.0220 μs** | **0.0184 μs** | **0.0610** |    **1112 B** |\n| **OpenCCTest** | **Hans -\u0026gt; Hant [s2t]**           | **32.660 μs** | **0.0617 μs** | **0.0547 μs** | **0.1221** |    **2312 B** |\n| **OpenCCTest** | **Hans -\u0026gt; TW [s2twp]**           | **18.815 μs** | **0.0367 μs** | **0.0287 μs** | **0.0916** |    **1752 B** |\n| **OpenCCTest** | **Hant -\u0026gt; HK [t2hk]**            |  **1.228 μs** | **0.0029 μs** | **0.0026 μs** | **0.0267** |     **472 B** |\n| **OpenCCTest** | **Hant -\u0026gt; Hans [t2s]**           | **11.406 μs** | **0.0163 μs** | **0.0145 μs** | **0.0305** |     **512 B** |\n| **OpenCCTest** | **Kyujitai -\u0026gt; Shinjitai [t2jp]** |  **2.961 μs** | **0.0116 μs** | **0.0103 μs** | **0.0381** |     **672 B** |\n| **OpenCCTest** | **Shinjitai -\u0026gt; Kyujitai [jp2t]** |  **5.546 μs** | **0.0102 μs** | **0.0080 μs** | **0.0381** |     **680 B** |\n| **OpenCCTest** | **TW -\u0026gt; Hans [tw2sp]**           | **21.923 μs** | **0.0240 μs** | **0.0224 μs** | **0.0610** |    **1512 B** |\n| **OpenCCTest** | **TW -\u0026gt; Hant [tw2t]**            |  **8.032 μs** | **0.0214 μs** | **0.0189 μs** | **0.0305** |     **536 B** |\n\n| Method             | arguments                                       | Mean         | Error       | StdDev    | Gen0    | Gen1    | Gen2    | Allocated  |\n|------------------- |------------------------------------------------ |-------------:|------------:|----------:|--------:|--------:|--------:|-----------:|\n| **BulkConversionTest** | **DupSequence 100 Hant -\u0026gt; Hans (2700 chars)**       |     **223.3 μs** |     **0.19 μs** |   **0.16 μs** |  **0.2441** |       **-** |       **-** |    **5.41 KB** |\n| **BulkConversionTest** | **DupSequence 1000 Hant -\u0026gt; Hans (27000 chars)**     |   **2,226.0 μs** |     **3.84 μs** |   **3.40 μs** |       **-** |       **-** |       **-** |   **52.88 KB** |\n| **BulkConversionTest** | **DupSequence 10000 Hant -\u0026gt; Hans (270000 chars)**   |  **23,196.8 μs** |   **104.14 μs** |  **97.41 μs** | **93.7500** | **93.7500** | **93.7500** |  **528.29 KB** |\n| **BulkConversionTest** | **DupSequence 100000 Hant -\u0026gt; Hans (2700000 chars)** | **221,964.1 μs** | **1,001.78 μs** | **937.07 μs** |       **-** |       **-** |       **-** | **5273.91 KB** |\n| **BulkConversionTest** | **Zuozhuan Hans -\u0026gt; Hant (629833 chars)**            | **132,030.2 μs** |   **292.90 μs** | **273.98 μs** |       **-** |       **-** |       **-** | **1230.53 KB** |\n\n| Method         | fromVariant | toVariant | Mean         | Error      | StdDev     | Gen0     | Gen1     | Gen2    | Allocated  |\n|--------------- |------------ |---------- |-------------:|-----------:|-----------:|---------:|---------:|--------:|-----------:|\n| **PresetLoadTest** | **Hans**        | **Hant**      | **23,272.27 μs** | **318.163 μs** | **297.610 μs** | **468.7500** | **281.2500** | **62.5000** | **8437.38 KB** |\n| **PresetLoadTest** | **Hans**        | **HK**        | **22,383.29 μs** | **149.199 μs** | **132.261 μs** | **468.7500** | **218.7500** | **62.5000** | **8443.69 KB** |\n| **PresetLoadTest** | **Hans**        | **TW**        | **25,596.93 μs** | **165.259 μs** | **154.583 μs** | **531.2500** | **437.5000** | **62.5000** | **8570.07 KB** |\n| **PresetLoadTest** | **Hant**        | **Hans**      |    **953.79 μs** |   **4.662 μs** |   **3.893 μs** |  **19.5313** |   **7.8125** |       **-** |  **340.11 KB** |\n| **PresetLoadTest** | **Hant**        | **HK**        |     **49.87 μs** |   **0.404 μs** |   **0.338 μs** |   **0.4883** |        **-** |       **-** |    **8.83 KB** |\n| **PresetLoadTest** | **Hant**        | **TW**        |    **328.96 μs** |   **2.975 μs** |   **2.323 μs** |   **7.8125** |   **1.9531** |       **-** |  **134.37 KB** |\n| **PresetLoadTest** | **Kyujitai**    | **Shinjitai** |    **110.13 μs** |   **1.419 μs** |   **1.258 μs** |   **1.4648** |        **-** |       **-** |   **29.24 KB** |\n| **PresetLoadTest** | **Shinjitai**   | **Kyujitai**  |    **188.91 μs** |   **2.178 μs** |   **1.930 μs** |   **3.9063** |        **-** |       **-** |    **64.1 KB** |\n| **PresetLoadTest** | **HK**          | **Hans**      |  **1,068.99 μs** |   **4.964 μs** |   **4.145 μs** |  **15.6250** |        **-** |       **-** |  **377.47 KB** |\n| **PresetLoadTest** | **HK**          | **Hant**      |    **142.35 μs** |   **2.732 μs** |   **3.455 μs** |   **2.4414** |        **-** |       **-** |   **39.96 KB** |\n| **PresetLoadTest** | **TW**          | **Hans**      |  **1,315.98 μs** |  **17.470 μs** |  **14.588 μs** |  **23.4375** |   **7.8125** |       **-** |  **491.61 KB** |\n| **PresetLoadTest** | **TW**          | **Hant**      |    **370.78 μs** |   **7.387 μs** |   **6.909 μs** |   **7.8125** |   **1.9531** |       **-** |  **154.05 KB** |\n\n### Linux (Ubuntu)\n\n``` ini\nBenchmarkDotNet v0.14.0, Ubuntu 22.04.4 LTS (Jammy Jellyfish)\nAMD EPYC 7763, 1 CPU, 4 logical and 2 physical cores\n.NET SDK 8.0.303\n  [Host]     : .NET 8.0.7 (8.0.724.31311), X64 RyuJIT AVX2\n  DefaultJob : .NET 8.0.7 (8.0.724.31311), X64 RyuJIT AVX2\n```\n| Method     | arguments                    | Mean      | Error     | StdDev    | Gen0   | Allocated |\n|----------- |----------------------------- |----------:|----------:|----------:|-------:|----------:|\n| **OpenCCTest** | **HK -\u0026gt; Hans [hk2s]**            |  **4.059 μs** | **0.0228 μs** | **0.0191 μs** | **0.0076** |     **832 B** |\n| **OpenCCTest** | **HK -\u0026gt; Hant [hk2t]**            |  **1.917 μs** | **0.0113 μs** | **0.0094 μs** | **0.0038** |     **344 B** |\n| **OpenCCTest** | **Hans -\u0026gt; HK [s2hk]**            |  **4.252 μs** | **0.0074 μs** | **0.0062 μs** | **0.0076** |    **1112 B** |\n| **OpenCCTest** | **Hans -\u0026gt; Hant [s2t]**           | **31.786 μs** | **0.2386 μs** | **0.2232 μs** |      **-** |    **2312 B** |\n| **OpenCCTest** | **Hans -\u0026gt; TW [s2twp]**           | **17.514 μs** | **0.0852 μs** | **0.0755 μs** |      **-** |    **1752 B** |\n| **OpenCCTest** | **Hant -\u0026gt; HK [t2hk]**            |  **1.188 μs** | **0.0060 μs** | **0.0056 μs** | **0.0038** |     **472 B** |\n| **OpenCCTest** | **Hant -\u0026gt; Hans [t2s]**           | **10.442 μs** | **0.0553 μs** | **0.0518 μs** |      **-** |     **512 B** |\n| **OpenCCTest** | **Kyujitai -\u0026gt; Shinjitai [t2jp]** |  **3.051 μs** | **0.0106 μs** | **0.0099 μs** | **0.0076** |     **672 B** |\n| **OpenCCTest** | **Shinjitai -\u0026gt; Kyujitai [jp2t]** |  **5.683 μs** | **0.0255 μs** | **0.0239 μs** | **0.0076** |     **680 B** |\n| **OpenCCTest** | **TW -\u0026gt; Hans [tw2sp]**           | **20.195 μs** | **0.0904 μs** | **0.0801 μs** |      **-** |    **1512 B** |\n| **OpenCCTest** | **TW -\u0026gt; Hant [tw2t]**            |  **7.689 μs** | **0.0734 μs** | **0.0687 μs** |      **-** |     **536 B** |\n\n| Method             | arguments                                       | Mean         | Error       | StdDev      | Gen0    | Gen1    | Gen2    | Allocated  |\n|------------------- |------------------------------------------------ |-------------:|------------:|------------:|--------:|--------:|--------:|-----------:|\n| **BulkConversionTest** | **DupSequence 100 Hant -\u0026gt; Hans (2700 chars)**       |     **219.0 μs** |     **0.99 μs** |     **0.88 μs** |       **-** |       **-** |       **-** |    **5.41 KB** |\n| **BulkConversionTest** | **DupSequence 1000 Hant -\u0026gt; Hans (27000 chars)**     |   **2,208.0 μs** |     **9.52 μs** |     **8.44 μs** |       **-** |       **-** |       **-** |   **52.88 KB** |\n| **BulkConversionTest** | **DupSequence 10000 Hant -\u0026gt; Hans (270000 chars)**   |  **22,112.3 μs** |    **74.00 μs** |    **65.60 μs** | **93.7500** | **93.7500** | **93.7500** |  **527.85 KB** |\n| **BulkConversionTest** | **DupSequence 100000 Hant -\u0026gt; Hans (2700000 chars)** | **222,195.1 μs** | **2,005.28 μs** | **1,875.74 μs** |       **-** |       **-** |       **-** | **5273.91 KB** |\n| **BulkConversionTest** | **Zuozhuan Hans -\u0026gt; Hant (629833 chars)**            | **127,994.6 μs** |   **430.43 μs** |   **402.63 μs** |       **-** |       **-** |       **-** | **1230.53 KB** |\n\n| Method         | fromVariant | toVariant | Mean         | Error      | StdDev     | Median       | Gen0     | Gen1    | Gen2    | Allocated  |\n|--------------- |------------ |---------- |-------------:|-----------:|-----------:|-------------:|---------:|--------:|--------:|-----------:|\n| **PresetLoadTest** | **Hans**        | **Hant**      | **22,507.68 μs** | **223.761 μs** | **209.306 μs** | **22,432.45 μs** |  **93.7500** | **93.7500** | **62.5000** | **8424.13 KB** |\n| **PresetLoadTest** | **Hans**        | **HK**        | **22,539.12 μs** |  **91.660 μs** |  **81.254 μs** | **22,516.46 μs** |  **93.7500** | **93.7500** | **62.5000** | **8430.44 KB** |\n| **PresetLoadTest** | **Hans**        | **TW**        | **24,090.32 μs** |  **68.093 μs** |  **56.860 μs** | **24,080.34 μs** | **156.2500** | **62.5000** | **62.5000** | **8556.82 KB** |\n| **PresetLoadTest** | **Hant**        | **Hans**      |  **1,028.78 μs** |  **18.979 μs** |  **17.753 μs** |  **1,027.27 μs** |   **3.9063** |       **-** |       **-** |  **339.55 KB** |\n| **PresetLoadTest** | **Hant**        | **HK**        |     **34.86 μs** |   **1.558 μs** |   **4.595 μs** |     **32.40 μs** |        **-** |       **-** |       **-** |     **8.8 KB** |\n| **PresetLoadTest** | **Hant**        | **TW**        |    **352.72 μs** |   **6.252 μs** |  **13.853 μs** |    **349.84 μs** |        **-** |       **-** |       **-** |  **134.09 KB** |\n| **PresetLoadTest** | **Kyujitai**    | **Shinjitai** |    **126.33 μs** |   **2.880 μs** |   **8.493 μs** |    **127.69 μs** |        **-** |       **-** |       **-** |    **29.2 KB** |\n| **PresetLoadTest** | **Shinjitai**   | **Kyujitai**  |    **218.44 μs** |   **4.341 μs** |  **10.649 μs** |    **219.17 μs** |        **-** |       **-** |       **-** |   **63.96 KB** |\n| **PresetLoadTest** | **HK**          | **Hans**      |  **1,149.91 μs** |  **18.179 μs** |  **20.935 μs** |  **1,144.17 μs** |   **3.9063** |       **-** |       **-** |  **376.92 KB** |\n| **PresetLoadTest** | **HK**          | **Hant**      |    **139.83 μs** |   **2.965 μs** |   **8.695 μs** |    **138.59 μs** |        **-** |       **-** |       **-** |   **39.89 KB** |\n| **PresetLoadTest** | **TW**          | **Hans**      |  **1,373.88 μs** |  **21.879 μs** |  **24.318 μs** |  **1,368.58 μs** |   **5.8594** |  **1.9531** |       **-** |  **490.77 KB** |\n| **PresetLoadTest** | **TW**          | **Hant**      |    **373.56 μs** |   **7.362 μs** |  **14.531 μs** |    **367.88 μs** |        **-** |       **-** |       **-** |  **153.77 KB** |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcxuesong%2Fopenccsharp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcxuesong%2Fopenccsharp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcxuesong%2Fopenccsharp/lists"}