From d5cc6507cb7f832b2b86afb57b52054913376429 Mon Sep 17 00:00:00 2001 From: Knowit Date: Thu, 30 Apr 2026 19:23:52 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E9=A3=9E=E6=8E=A7=20std=20topical=20in?= =?UTF-8?q?dex=20(79=20projects)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Topical index for std-origin flight-controller projects. Combines data/state/oshwhub_listing_full.jsonl listing fields with each project's metadata.json (license, source completeness, editor_version). Useful as a flat per-topic reference vs the global projects.md sorted purely by stars. 77 added this batch (commit 29530e0) + 2 prior. 75 have editor source, 4 are attachments-only on upstream. scripts/build_feikong_index.py is reproducible: source of truth lives in data/state/ + data/raw/, no hand-editing. --- docs/feikong_std77.md | 141 ++++++++++++++++++++++++++++++++ scripts/build_feikong_index.py | 144 +++++++++++++++++++++++++++++++++ 2 files changed, 285 insertions(+) create mode 100644 docs/feikong_std77.md create mode 100644 scripts/build_feikong_index.py diff --git a/docs/feikong_std77.md b/docs/feikong_std77.md new file mode 100644 index 0000000..e555612 --- /dev/null +++ b/docs/feikong_std77.md @@ -0,0 +1,141 @@ +# 飞控 / Flight-Controller Projects (std) + +_主题定向索引:oshwhub `origin=std` 且 `name` 或 `introduction` 含「飞控」字样_ + +**当前**:79 个项目 · 75 个有可编辑器源 · 4 个仅附件(upstream 没编辑器 session) + +> 数据来源:`data/state/oshwhub_listing_full.jsonl` + 每项 `data/raw/oshwhub//metadata.json` +> 排序:likes 倒序 + +| # | Title | Author | License | Source | Editor | ❤️ Likes | ⭐ Stars | 🍴 Forks | 👁 Views | Grade | +|---|-------|--------|---------|--------|--------|--------:|--------:|--------:|--------:|------:| +| 1 | [SuperUAV](https://oshwhub.com/aeromodeller/superuav)
[`b3884754…`](../data/raw/oshwhub/b38847543af34f64bd034e24c94c130e/) | [Aeromodeller](https://oshwhub.com/aeromodeller) | GPL 3.0 | ✅ 2 docs | 6.5.15 | 481 | 1,117 | 198 | 57,303 | 4 | +| 2 | [STM F405飞控 bf inav 穿越机 固定翼飞控](https://oshwhub.com/zl4430/mpu-6500-280)
[`d53cd4f3…`](../data/raw/oshwhub/d53cd4f3355c45319a36b19cc9ff252e/) | [左手DIY](https://oshwhub.com/zl4430) | Public Domain | ✅ 1 docs | 6.5.22 | 373 | 799 | 281 | 103,656 | 4 | +| 3 | [#第八届立创电赛#四轴飞行器Liguanxi-UAV(空心杯无人机飞控)](https://oshwhub.com/liguanxi/si-zhou-fei-xing-qi-ESP-Liguanxi)
[`eb1e9ddf…`](../data/raw/oshwhub/eb1e9ddf771f47d1b898e4157f3f35f9/) | [liguanxi](https://oshwhub.com/liguanxi) | GPL 3.0 | ✅ 2 docs | 6.5.34 | 277 | 741 | 278 | 74,635 | 1 | +| 4 | [NAZE32飞控](https://oshwhub.com/caisheng/naze32-fei-kong)
[`3019f17a…`](../data/raw/oshwhub/3019f17a449249a18390c46594f03cfb/) | [蔡子](https://oshwhub.com/caisheng) | MIT | ✅ 6 docs | 6.4.25 | 261 | 552 | 292 | 56,827 | 4 | +| 5 | [空心杯四轴穿越机](https://oshwhub.com/death/naze32-kong-xin-bei-si-zhou)
[`b8ade899…`](../data/raw/oshwhub/b8ade899f37149e1b562c8f38369fb5a/) | [SaekiSayaka](https://oshwhub.com/death) | Public Domain | ✅ 2 docs | 6.5.23 | 186 | 474 | 216 | 53,256 | 3 | +| 6 | [AT32F437飞控](https://oshwhub.com/pdwdw/at32f437)
[`bd3d092f…`](../data/raw/oshwhub/bd3d092f63dd4b6f88eba099ef0e3c81/) | [辉光管](https://oshwhub.com/pdwdw) | GPL 3.0 | ✅ 2 docs | 6.5.34 | 180 | 401 | 273 | 53,725 | 3 | +| 7 | [AT32国产飞控(30.5*30.5)](https://oshwhub.com/sheep_finder/guo-chan-fei-kong)
[`b5c6a75f…`](../data/raw/oshwhub/b5c6a75f91804bd1b4992b07c7e77b78/) | [sheep_finder](https://oshwhub.com/sheep_finder) | GPL 3.0 | ✅ 3 docs | 6.5.39 | 176 | 366 | 392 | 28,549 | 2 | +| 8 | [GLDrone_PX4](https://oshwhub.com/guanglun/gldrone_px4)
[`6625cbb0…`](../data/raw/oshwhub/6625cbb0a1fe46dda75500fd781193e0/) | [guanglun](https://oshwhub.com/guanglun) | MIT | ✅ 6 docs | 6.4.31 | 139 | 347 | 155 | 36,790 | 4 | +| 9 | [elrs-rx-2.4g-pwm](https://oshwhub.com/vinvaa/elrs-rx-2-4g-pwm)
[`d72f8b54…`](../data/raw/oshwhub/d72f8b540e8946d3bf2a1de764b7fc63/) | [vinvaa & xi0n9Fpv](https://oshwhub.com/vinvaa) | GPL 3.0 | ✅ 6 docs | 6.5.23 | 128 | 247 | 124 | 31,997 | 3 | +| 10 | [2021年G题-植保飞行器+380844A](https://oshwhub.com/ni-kan-wo-shuo-di-dui-fou-dui/2021-niang-ti-zhi-bao-fei-xing-qi)
[`5089e537…`](../data/raw/oshwhub/5089e537f97d4be1a13252fb120f9962/) | [你看我说的对不队](https://oshwhub.com/ni-kan-wo-shuo-di-dui-fou-dui) | CC-BY-NC-SA 3.0 | ✅ 3 docs | 6.4.25 | 89 | 127 | 26 | 18,447 | 4 | +| 11 | [2021年 G题 植保飞行器 639423A队](https://oshwhub.com/dahjdksakdlshjkads/g-zhi-bao-fei-xing-qi)
[`8394447d…`](../data/raw/oshwhub/8394447d1bf7406daf1e58458bfd5262/) | [dahjdksakdlshjkads](https://oshwhub.com/dahjdksakdlshjkads) | CC-BY-NC-SA 3.0 | ✅ 6 docs | 6.4.30 | 74 | 140 | 17 | 21,796 | 3 | +| 12 | [ESP32四轴飞行器(飞控)](https://oshwhub.com/liguanxi/esp32-fei-kong_copy_copy)
[`5cd6d5e7…`](../data/raw/oshwhub/5cd6d5e7f3d44e79a072b90b12324b08/) | [liguanxi](https://oshwhub.com/liguanxi) | GPL 3.0 | ✅ 2 docs | 6.5.29 | 70 | 197 | 56 | 25,542 | 3 | +| 13 | [STM32F722飞控](https://oshwhub.com/cgncm/STM32F722flightcontrol)
[`fac8abdb…`](../data/raw/oshwhub/fac8abdbdb364d01882656f1b0c623e1/) | [CGNCM](https://oshwhub.com/cgncm) | GPL 3.0 | ✅ 5 docs | 6.5.23 | 59 | 128 | 85 | 19,512 | 1 | +| 14 | [FLYWOOF411V2+ELRS 2.4G集成飞控](https://oshwhub.com/yd-ai/flywoof411v2-2-4)
[`36b532a2…`](../data/raw/oshwhub/36b532a2150a4252920b60c765e5e614/) | [yd-AI](https://oshwhub.com/yd-ai) | Public Domain | ✅ 2 docs | 6.5.15 | 58 | 138 | 73 | 13,601 | 3 | +| 15 | [F405穿越机飞控](https://oshwhub.com/czf0823/pcb_2020-07-30_01-02-38_2020-11-29_00-04-17)
[`0d78cbbf…`](../data/raw/oshwhub/0d78cbbf29b24363a639b0848aa68b01/) | [陈晓芳](https://oshwhub.com/czf0823) | GPL 3.0 | ✅ 3 docs | 6.4.7 | 57 | 148 | 69 | 23,199 | 2 | +| 16 | [15元飞控,带详细教程](https://oshwhub.com/fgdfhdr/kai-yuan-fei-kong)
[`d698304c…`](../data/raw/oshwhub/d698304c0e8e4d86a0d23045b1e3d5f2/) | [荣妹儿科技](https://oshwhub.com/fgdfhdr) | LGPL 3.0 | ✅ 2 docs | 6.5.46 | 57 | 174 | 107 | 17,833 | 1 | +| 17 | [AT32AIO 20孔飞控板](https://oshwhub.com/cai20070410/at32-20-kong-aio-fei-kong-ban)
[`48919432…`](../data/raw/oshwhub/48919432e4dc44d3b59ccc4a3ed4367a/) | [cai](https://oshwhub.com/cai20070410) | CC BY-NC-SA 4.0 | ✅ 6 docs | 6.5.40 | 52 | 130 | 108 | 10,420 | 1 | +| 18 | [NAZE32飞控的3寸穿越机](https://oshwhub.com/kaguyamokou/naze32-fei-kong-re_copy)
[`c132a9a4…`](../data/raw/oshwhub/c132a9a400ea4ddbbae8fd499a587b10/) | [蓬莱的树海](https://oshwhub.com/kaguyamokou) | GPL 3.0 | ✅ 3 docs | 6.5.29 | 51 | 147 | 31 | 18,828 | 3 | +| 19 | [【2023电赛】G题-消防无人机](https://oshwhub.com/fjbf/wu-ren-ji-di-ban)
[`405e72f7…`](../data/raw/oshwhub/405e72f7ef4d449ca781a8de06df9fec/) | [飞机不废](https://oshwhub.com/fjbf) | CC BY-NC 3.0 | ✅ 2 docs | 6.5.34 | 44 | 148 | 38 | 21,765 | 1 | +| 20 | [MWC空心杯飞控+萝莉控4通接收(已修复小问题)](https://oshwhub.com/HatsuneMikuHD/mwc-kong-xin-bei-fei-kong)
[`9bf5f7dd…`](../data/raw/oshwhub/9bf5f7dd40c346d58b2d056b6ea32133/) | [HatsuneMikuHD](https://oshwhub.com/HatsuneMikuHD) | GPL 3.0 | ✅ 2 docs | 6.4.7 | 43 | 122 | 24 | 16,419 | 2 | +| 21 | [F411飞控](https://oshwhub.com/yang_xw0011/F411fei-kong)
[`a77dbfeb…`](../data/raw/oshwhub/a77dbfeb1a894aa5979946b008bdc142/) | [自动挖掘机](https://oshwhub.com/yang_xw0011) | MIT | 📎 attachments-only | — | 40 | 83 | 35 | 15,127 | 2 | +| 22 | [NAZE32飞控板](https://oshwhub.com/caisheng/naze32-fei-kong-ban)
[`8f828882…`](../data/raw/oshwhub/8f828882c3344e10b37bf0a63cbc4351/) | [蔡子](https://oshwhub.com/caisheng) | GPL 3.0 | ✅ 2 docs | 6.3.35 | 39 | 98 | 34 | 14,381 | 2 | +| 23 | [MATEK F411固定翼飞控](https://oshwhub.com/zl4430/matek-f411-gu-ding-yi-fei-kong)
[`24adb01d…`](../data/raw/oshwhub/24adb01d49b04090b3a7e2ad549f3db0/) | [左手DIY](https://oshwhub.com/zl4430) | Public Domain | ✅ 1 docs | 6.4.31 | 37 | 95 | 21 | 17,285 | 3 | +| 24 | [AT32F437固定翼飞控](https://oshwhub.com/pdwdw/at32f437_copy)
[`5a7cfbca…`](../data/raw/oshwhub/5a7cfbca532548e2be9bc8bf78118e9d/) | [辉光管](https://oshwhub.com/pdwdw) | GPL 3.0 | ✅ 2 docs | 6.5.34 | 35 | 101 | 67 | 15,533 | 3 | +| 25 | [小四轴飞控(简化版)](https://oshwhub.com/nevet/fly_main_board)
[`ebcaa9ec…`](../data/raw/oshwhub/ebcaa9ec6f0044548d8b85adb58876b3/) | [Nevet](https://oshwhub.com/nevet) | GPL 3.0 | ✅ 2 docs | 6.5.8 | 34 | 97 | 29 | 16,088 | 3 | +| 26 | [STM32F103C8T6核心板](https://oshwhub.com/TWENTYY/c8t6-littleboard)
[`a4635267…`](../data/raw/oshwhub/a4635267bd234524a2a8656d0b185f25/) | [TWENTYY](https://oshwhub.com/TWENTYY) | GPL 3.0 | ✅ 2 docs | 6.3.53 | 32 | 93 | 101 | 14,150 | 2 | +| 27 | [F4飞控-适配DOBBY四轴无刷机架](https://oshwhub.com/xiao5333/F4fei-kong-shi-pei-DOBBYsi-zhou-)
[`855bf2c3…`](../data/raw/oshwhub/855bf2c36ffb4d4da4e4552b909937a0/) | [xiao5333](https://oshwhub.com/xiao5333) | GPL 3.0 | 📎 attachments-only | — | 30 | 63 | 16 | 7,418 | 3 | +| 28 | [STM32H743飞控](https://oshwhub.com/yang_xw0011/STM32H743fei-kong)
[`511e178a…`](../data/raw/oshwhub/511e178ad2e04bc7a70b588429530901/) | [自动挖掘机](https://oshwhub.com/yang_xw0011) | MIT | 📎 attachments-only | — | 30 | 55 | 11 | 14,136 | 1 | +| 29 | [AT32F435mini飞控](https://oshwhub.com/pdwdw/at32f435mini)
[`2393aa2d…`](../data/raw/oshwhub/2393aa2df637442c88c9a1db9283bacb/) | [辉光管](https://oshwhub.com/pdwdw) | LGPL 3.0 | ✅ 2 docs | 6.5.22 | 29 | 68 | 58 | 10,081 | 1 | +| 30 | [M8N GPS北斗集成5883罗盘](https://oshwhub.com/humphreylin/m8n-gps)
[`771611ba…`](../data/raw/oshwhub/771611ba49464cddaf455d4180f6dcef/) | [HumphreyLin](https://oshwhub.com/humphreylin) | GPL 3.0 | ✅ 2 docs | 6.5.23 | 28 | 67 | 54 | 11,057 | 2 | +| 31 | [P900数传电台](https://oshwhub.com/yang_xw0011/P900shuo-zhuan-dian-tai)
[`78dd4bf7…`](../data/raw/oshwhub/78dd4bf7e1c94c1e82b34c5509874cc6/) | [自动挖掘机](https://oshwhub.com/yang_xw0011) | MIT | 📎 attachments-only | — | 28 | 48 | 20 | 7,483 | 2 | +| 32 | [MWC飞控 (arduino)](https://oshwhub.com/lantianyu/mwc-fei-kong_copy)
[`d98362d9…`](../data/raw/oshwhub/d98362d96dec4952877c780682480425/) | [繁星*兮雨](https://oshwhub.com/lantianyu) | unknown | ✅ 3 docs | 6.4.2 | 26 | 75 | 42 | 10,087 | 1 | +| 33 | [F411固定翼小飞控](https://oshwhub.com/ss2s/f411-gu-ding-yi-xiao-fei-kong)
[`22667286…`](../data/raw/oshwhub/22667286817e4541bad270659d826c23/) | [ss2s](https://oshwhub.com/ss2s) | GPL 3.0 | ✅ 6 docs | 6.5.25 | 25 | 78 | 84 | 7,249 | 1 | +| 34 | [菜鸟F405飞控](https://oshwhub.com/vyvb/cai-niao-405-fei-kong)
[`88504826…`](../data/raw/oshwhub/8850482672624280a15fe8e504c2fe5e/) | [一只只吃不睡的猫](https://oshwhub.com/vyvb) | Public Domain | ✅ 11 docs | 6.5.22 | 23 | 57 | 75 | 5,958 | 1 | +| 35 | [【2023电赛】电赛 · Drone-duino基于ESP32的无人机](https://oshwhub.com/balala-the-first/NUEDC-Drone)
[`967b8688…`](../data/raw/oshwhub/967b8688006d4add9cbe1ded0c078744/) | [巴啦啦一号](https://oshwhub.com/balala-the-first) | GPL 3.0 | ✅ 2 docs | 6.5.29 | 23 | 53 | 7 | 9,431 | 1 | +| 36 | [M8030_GPS模块30孔](https://oshwhub.com/humphreylin/gps-mu-kuai-30-kong)
[`7c227fd5…`](../data/raw/oshwhub/7c227fd50bcd410fbfec06823bc17bd7/) | [HumphreyLin](https://oshwhub.com/humphreylin) | GPL 3.0 | ✅ 2 docs | 6.5.27 | 22 | 67 | 31 | 10,395 | 4 | +| 37 | [GLDrone_PX4_R329](https://oshwhub.com/guanglun/gldrone_px4_r329)
[`1e07c432…`](../data/raw/oshwhub/1e07c432fe174955bc2a015bc96fae8a/) | [guanglun](https://oshwhub.com/guanglun) | MIT | ✅ 8 docs | 6.4.31 | 22 | 47 | 42 | 7,383 | 3 | +| 38 | [17元固定翼飞控,双层板、单面布局](https://oshwhub.com/fgdfhdr/kai-yuan-15-yuan-gu-ding-yi-fei-kong)
[`41dbabaa…`](../data/raw/oshwhub/41dbabaaf5f04a8385d5eb701246bbb3/) | [荣妹儿科技](https://oshwhub.com/fgdfhdr) | GPL 3.0 | ✅ 1 docs | 6.5.39 | 22 | 39 | 31 | 3,134 | 1 | +| 39 | [Maruko小四轴飞控](https://oshwhub.com/chocolatem/maruko)
[`1f574fed…`](../data/raw/oshwhub/1f574fed507041ab99b08ecce0c187db/) | [大丸子](https://oshwhub.com/chocolatem) | BSD | ✅ 2 docs | 6.5.27 | 21 | 58 | 19 | 14,202 | 2 | +| 40 | [2023年G题【空地协同智能消防系统】打飞控的](https://oshwhub.com/px4yyds/flight)
[`6aa77666…`](../data/raw/oshwhub/6aa77666cf3344fcb549249b24cf81e8/) | [打飞控的](https://oshwhub.com/px4yyds) | GPL 3.0 | ✅ 2 docs | 6.5.34 | 21 | 61 | 6 | 9,034 | 1 | +| 41 | [Flying-RC_F405-SE-v2.0 F405飞控](https://oshwhub.com/hljjmsr/flying-rc_f405-se-v2-0)
[`db13a559…`](../data/raw/oshwhub/db13a559a8ff42d2a5ebe462a8d42cd8/) | [hljjmsr](https://oshwhub.com/hljjmsr) | GPL 3.0 | ✅ 4 docs | 6.4.25 | 21 | 46 | 30 | 12,651 | 1 | +| 42 | [萝丽三代遥控万用改装板](https://oshwhub.com/onlylgb/loli-zui-xiao-ban)
[`44b3175b…`](../data/raw/oshwhub/44b3175b9aae45acb274d626c1c44d0c/) | [onlylgb](https://oshwhub.com/onlylgb) | LGPL | ✅ 4 docs | 6.5.27 | 20 | 48 | 39 | 5,226 | 2 | +| 43 | [SA380开源无人机](https://oshwhub.com/sora380/fei-kong-2024)
[`feaac332…`](../data/raw/oshwhub/feaac33200624098bd924a0e381c9314/) | [Sora380](https://oshwhub.com/sora380) | GPL 3.0 | ✅ 5 docs | 6.5.43 | 19 | 36 | 17 | 4,319 | 1 | +| 44 | [FlyingRC-F4Wing-MK2](https://oshwhub.com/hljjmsr/flyingrc-f4wing-mk2)
[`59710834…`](../data/raw/oshwhub/597108341aa64e6e8ec6979fd3842403/) | [hljjmsr](https://oshwhub.com/hljjmsr) | GPL 3.0 | ✅ 10 docs | 6.5.9 | 19 | 28 | 23 | 5,651 | 1 | +| 45 | [f103飞控](https://oshwhub.com/heiyoo/f103-fei-kong)
[`0a2640a3…`](../data/raw/oshwhub/0a2640a3779b4ca29c9e247acecc7e4d/) | [heiyoo](https://oshwhub.com/heiyoo) | Public Domain | ✅ 6 docs | 6.4.25 | 19 | 47 | 12 | 8,329 | 0 | +| 46 | [控制类+飞控类+电源类+openmv一体化双核主控板](https://oshwhub.com/666666666666/kong-zhi-lei-fei-kong-lei-dian-yuan-lei-openmv-yi-ti-hua-shuang-hu-zhu-kong-ban)
[`6bb663af…`](../data/raw/oshwhub/6bb663af9d8b4ebe8ff124827eef99c3/) | [666666666666](https://oshwhub.com/666666666666) | unknown | ✅ 2 docs | 6.2.31 | 18 | 63 | 16 | 9,435 | 2 | +| 47 | [esp8266陀螺仪飞控](https://oshwhub.com/tgjohn/esp8266-tuo-luo-yi-fei-kong_copy)
[`65335d91…`](../data/raw/oshwhub/65335d9112d54952974fa1118adb91d8/) | [tgjohn](https://oshwhub.com/tgjohn) | Public Domain | ✅ 4 docs | 6.5.23 | 18 | 32 | 9 | 5,670 | 1 | +| 48 | [航模遥控器用单通道实现用按键控制选择飞控的8种模式电路](https://oshwhub.com/baihe6600/dan-tong-dao-shi-xian-yong-an-jian-kong-zhi-xuan-zhai-8-zhong-mu-shi-dian-lu)
[`aae761ed…`](../data/raw/oshwhub/aae761ed020849a39161569468190dd8/) | [荒野老白](https://oshwhub.com/baihe6600) | Public Domain | ✅ 2 docs | 6.5.3 | 17 | 37 | 10 | 7,258 | 3 | +| 49 | [AT32国产飞控 两层单面便于手搓版](https://oshwhub.com/cai20070410/at32f437-fei-kong)
[`5525d220…`](../data/raw/oshwhub/5525d220614d4bc391d7ec21f7b47dca/) | [cai](https://oshwhub.com/cai20070410) | GPL 3.0 | ✅ 7 docs | 6.5.28 | 17 | 31 | 21 | 8,330 | 1 | +| 50 | [FlyingRC-F405-SLEEK-V1.0](https://oshwhub.com/hljjmsr/flyingrc-f405-sleek-v1-0)
[`12df52a6…`](../data/raw/oshwhub/12df52a6905f47cba2585d0c5145ab93/) | [hljjmsr](https://oshwhub.com/hljjmsr) | GPL 3.0 | ✅ 9 docs | 6.5.5 | 16 | 37 | 43 | 7,966 | 3 | +| 51 | [飞控隔板30x30](https://oshwhub.com/vinvaa/fei-kong-ge-ban-30x30)
[`4579b351…`](../data/raw/oshwhub/4579b351047f4acfb9bbc67e0204fc4e/) | [vinvaa & xi0n9Fpv](https://oshwhub.com/vinvaa) | GPL 3.0 | ✅ 1 docs | 6.5.23 | 15 | 25 | 11 | 2,253 | 1 | +| 52 | [100A电流检测模块](https://oshwhub.com/HumphreyLin/100a-dian-liu-ji)
[`0e155b75…`](../data/raw/oshwhub/0e155b75aeec408e9341221affd9f174/) | [HumphreyLin](https://oshwhub.com/HumphreyLin) | GPL 3.0 | ✅ 2 docs | 6.5.5 | 14 | 38 | 16 | 6,384 | 3 | +| 53 | [LED航灯WS2812](https://oshwhub.com/caisheng/chuan-yue-jiled-hang-dengws2812)
[`abc4175d…`](../data/raw/oshwhub/abc4175dee5f4d1b9755ac10185cc1be/) | [蔡子](https://oshwhub.com/caisheng) | MIT | ✅ 5 docs | 6.4.25 | 14 | 37 | 12 | 4,593 | 0 | +| 54 | [FlyingRC_AT32_FC-V0.1](https://oshwhub.com/hljjmsr/flyingrc_at32_fc-v0-1)
[`ed9da861…`](../data/raw/oshwhub/ed9da86147f842b6b3d1971efedb6b63/) | [hljjmsr](https://oshwhub.com/hljjmsr) | GPL 3.0 | ✅ 9 docs | 6.5.22 | 12 | 24 | 24 | 3,514 | 1 | +| 55 | [F405-Wing 0603 mk4飞控](https://oshwhub.com/yuanfpv/f405-wing)
[`44d54988…`](../data/raw/oshwhub/44d54988eb9b4728baa5425d1f8d4909/) | [YuanCoding](https://oshwhub.com/yuanfpv) | GPL 3.0 | ✅ 15 docs | 6.5.23 | 9 | 32 | 34 | 4,933 | 1 | +| 56 | [空心杯AIO飞控(stm32f103c8t6主控)](https://oshwhub.com/hechuzhiyou/kong-xin-bei-AIOfei-kong-stm32f1)
[`6d3086f1…`](../data/raw/oshwhub/6d3086f16a3d4f01a45f227b562c7395/) | [hechuzhiyou](https://oshwhub.com/hechuzhiyou) | GPL 3.0 | ✅ 3 docs | 6.5.23 | 9 | 40 | 33 | 8,179 | 0 | +| 57 | [acododaF7mini固定翼适用分电板V1.1](https://oshwhub.com/InFinityGamer/acododaf7mini-gu-ding-yi-shi-yong-fen-dian-ban_copy)
[`34ff342c…`](../data/raw/oshwhub/34ff342c4f4945489f5e82f560ffbe35/) | [InFinityGamer](https://oshwhub.com/InFinityGamer) | GPL 3.0 | ✅ 2 docs | 6.4.32 | 8 | 21 | 18 | 3,041 | 3 | +| 58 | [AT32固定翼飞控配套2~12s 3A BEC 电流计小板](https://oshwhub.com/pdwdw/3A-bec)
[`3c08c82c…`](../data/raw/oshwhub/3c08c82cf217422281865d44586aaad5/) | [辉光管](https://oshwhub.com/pdwdw) | GPL 3.0 | ✅ 2 docs | 6.5.22 | 8 | 21 | 16 | 3,705 | 1 | +| 59 | [FlyingRC-F4swamp-V1.0](https://oshwhub.com/hljjmsr/flyingrc-f4swamp-v1-0)
[`a2096bc0…`](../data/raw/oshwhub/a2096bc0c616444d9d386eb89862611e/) | [hljjmsr](https://oshwhub.com/hljjmsr) | GPL 3.0 | ✅ 10 docs | 6.5.1 | 8 | 9 | 9 | 1,777 | 0 | +| 60 | [MPU6050姿态传感模块](https://oshwhub.com/ld_xk/mpu6050-zi-tai-chuan-gan-mu-kuai)
[`19dc7dd5…`](../data/raw/oshwhub/19dc7dd513c5477c93b33f41993003e3/) | [ld_xk](https://oshwhub.com/ld_xk) | GPL 3.0 | ✅ 2 docs | 6.4.7 | 7 | 24 | 14 | 7,133 | 2 | +| 61 | [管爷f437mini(未验证)](https://oshwhub.com/wszq/guan-ye-f437mini_copy)
[`5ca34de0…`](../data/raw/oshwhub/5ca34de062904302a4209193309792b8/) | [本堂町小春](https://oshwhub.com/wszq) | GPL 3.0 | ✅ 2 docs | 6.5.29 | 7 | 7 | 0 | 1,870 | 1 | +| 62 | [F4v3ProMini](https://oshwhub.com/wl177/f4v3promini)
[`429c8455…`](../data/raw/oshwhub/429c8455a41d40ca941841983e8cacd9/) | [wl177](https://oshwhub.com/wl177) | GPL 3.0 | ✅ 2 docs | 6.5.28 | 7 | 15 | 11 | 2,103 | 1 | +| 63 | [(新)AT32AIO 20孔飞控板V2](https://oshwhub.com/cai20070410/at32-20-kong-aio-fei-kong-ban_copy)
[`4b1becb0…`](../data/raw/oshwhub/4b1becb00f4d4c65832451d2e7f49d5f/) | [cai](https://oshwhub.com/cai20070410) | CC BY-NC-SA 4.0 | ✅ 2 docs | 6.5.51 | 6 | 11 | 16 | 796 | 1 | +| 64 | [F405火箭飞控板载ELRS数传](https://oshwhub.com/cai20070410/f405-huo-jian-fei-kong-50-63)
[`246a02b1…`](../data/raw/oshwhub/246a02b1831c454a9d7ad54e148d7986/) | [cai](https://oshwhub.com/cai20070410) | GPL 3.0 | ✅ 6 docs | 6.5.40 | 6 | 33 | 28 | 3,376 | 1 | +| 65 | [穿越机飞控飞固定翼 分电板带电流计](https://oshwhub.com/zl4430/fei-kong-dian-liu-ji)
[`c5b584cc…`](../data/raw/oshwhub/c5b584cc76684301b11c91798db939d2/) | [左手DIY](https://oshwhub.com/zl4430) | Public Domain | ✅ 2 docs | 6.5.37 | 6 | 18 | 11 | 3,310 | 1 | +| 66 | [GLDRONE_ESP32_PX4_PICO](https://oshwhub.com/guanglun/gldrone_esp32_px4_pico)
[`80917167…`](../data/raw/oshwhub/80917167bd054411912962e3e4252bad/) | [guanglun](https://oshwhub.com/guanglun) | MIT | ✅ 7 docs | 6.5.15 | 5 | 8 | 6 | 2,135 | 1 | +| 67 | [HyFlightctrl](https://oshwhub.com/Hyacincher/HyFlightctrl)
[`61f8b9f8…`](../data/raw/oshwhub/61f8b9f8c1f14471933abfa307bf2d90/) | [Hyacincher](https://oshwhub.com/Hyacincher) | GPL 3.0 | ✅ 3 docs | 6.4.25 | 4 | 12 | 10 | 1,757 | 3 | +| 68 | [Swift F405 固定翼飞控 V1.0](https://oshwhub.com/airbus15/matek-f405-wse-hua-xiang-ji-fei-kong-v1-0)
[`dce335ad…`](../data/raw/oshwhub/dce335ad0d0c43cfba93bf8d2a142acc/) | [AIRBUS15](https://oshwhub.com/airbus15) | GPL 3.0 | ✅ 6 docs | 6.5.46 | 4 | 15 | 18 | 1,355 | 1 | +| 69 | [电动涵道飞控公开](https://oshwhub.com/littlesunny2001/flycontrol_copy)
[`b5c7cd3c…`](../data/raw/oshwhub/b5c7cd3c3758432f909a8eb2f829358f/) | [littlesunny2001](https://oshwhub.com/littlesunny2001) | GPL 3.0 | ✅ 2 docs | 6.5.5 | 4 | 10 | 2 | 1,852 | 0 | +| 70 | [V3s_FlyController](https://oshwhub.com/Nccer/my_v3s_copy)
[`6e222e8c…`](../data/raw/oshwhub/6e222e8ca40549009c60f5892f4e37fd/) | [Nccer](https://oshwhub.com/Nccer) | GPL 3.0 | ✅ 3 docs | 6.5.1 | 4 | 7 | 2 | 2,288 | 0 | +| 71 | [MATEK F405 WSE 滑翔机飞控主控板部分](https://oshwhub.com/airbus15/matek-f405-wse-fc)
[`7ced1bbf…`](../data/raw/oshwhub/7ced1bbf350443938663c53151583a93/) | [AIRBUS15](https://oshwhub.com/airbus15) | GPL 3.0 | ✅ 4 docs | 6.5.46 | 3 | 5 | 5 | 570 | 1 | +| 72 | [F405-Wing-usb](https://oshwhub.com/yuanfpv/f405-wing-usb)
[`03983a6a…`](../data/raw/oshwhub/03983a6a52df4d9d8115a4a0fe8ca830/) | [YuanCoding](https://oshwhub.com/yuanfpv) | GPL 3.0 | ✅ 2 docs | 6.5.23 | 3 | 2 | 12 | 1,780 | 1 | +| 73 | [MWC_AIRPLANE_V2](https://oshwhub.com/thecrazyboy/mwc_airplane_copy)
[`2e6315ee…`](../data/raw/oshwhub/2e6315eee4944072a6e408b0951c74f2/) | [thecrazyboy](https://oshwhub.com/thecrazyboy) | GPL 3.0 | ✅ 6 docs | 6.4.7 | 2 | 4 | 6 | 1,312 | 1 | +| 74 | [MWC_AIRPLANE_V3](https://oshwhub.com/thecrazyboy/mwc_airplane_copy_copy)
[`792d7ef0…`](../data/raw/oshwhub/792d7ef0379641f3b853b6c2143b4235/) | [thecrazyboy](https://oshwhub.com/thecrazyboy) | GPL 3.0 | ✅ 7 docs | 6.4.17 | 1 | 7 | 5 | 1,930 | 2 | +| 75 | [IST8310外置罗盘](https://oshwhub.com/airbus15/ist8310-luo-pan)
[`91a69b9f…`](../data/raw/oshwhub/91a69b9fbe8841cdb8d73c5bea93158d/) | [AIRBUS15](https://oshwhub.com/airbus15) | GPL 3.0 | ✅ 3 docs | 6.5.34 | 1 | 6 | 6 | 495 | 1 | +| 76 | [Lora1280_Radio](https://oshwhub.com/qjay/lora1280radio)
[`99618f1e…`](../data/raw/oshwhub/99618f1edce54a258388688ae1c2c15d/) | [qjay](https://oshwhub.com/qjay) | Public Domain | ✅ 5 docs | 6.5.28 | 1 | 3 | 0 | 1,083 | 1 | +| 77 | [MATEK F405 WSE 滑翔机飞控电源板部分](https://oshwhub.com/airbus15/matek-f405-wse-hua-xiang-ji-fei-kong-dian-yuan-ban-bu-fen)
[`025eab68…`](../data/raw/oshwhub/025eab68656a4f80992a8349ffc3ecb4/) | [AIRBUS15](https://oshwhub.com/airbus15) | GPL 3.0 | ✅ 3 docs | 6.5.46 | 0 | 3 | 1 | 397 | 1 | +| 78 | [MATEK F405 WSE 飞控USB板部分](https://oshwhub.com/airbus15/matek-f405-wse-fei-kong-usb-ban-bu-fen)
[`8ee22e5a…`](../data/raw/oshwhub/8ee22e5a5bf9430ab1b87d738eca794c/) | [AIRBUS15](https://oshwhub.com/airbus15) | GPL 3.0 | ✅ 2 docs | 6.5.46 | 0 | 2 | 0 | 320 | 1 | +| 79 | [m1_mh743_ada_v4](https://oshwhub.com/JumperShao/m1_mh743_ada_v4)
[`21817f8f…`](../data/raw/oshwhub/21817f8fcf2d4e36b96f8e00c33a5c93/) | [JumperShao](https://oshwhub.com/JumperShao) | GPL 3.0 | ✅ 1 docs | 6.4.31 | 0 | 1 | 2 | 1,074 | 0 | + +## License 分布 + +- `GPL 3.0` — 50 +- `Public Domain` — 10 +- `MIT` — 8 +- `CC-BY-NC-SA 3.0` — 2 +- `LGPL 3.0` — 2 +- `CC BY-NC-SA 4.0` — 2 +- `unknown` — 2 +- `CC BY-NC 3.0` — 1 +- `BSD` — 1 +- `LGPL` — 1 + +## Editor 版本分布(有源工程的项目) + +- `6.5.23` — 9 +- `6.4.25` — 6 +- `6.5.34` — 6 +- `6.5.22` — 5 +- `6.5.46` — 5 +- `6.4.31` — 4 +- `6.4.7` — 4 +- `6.5.29` — 4 +- `6.5.15` — 3 +- `6.5.27` — 3 +- `6.5.28` — 3 +- `6.5.5` — 3 +- `6.5.1` — 2 +- `6.5.39` — 2 +- `6.5.40` — 2 +- `6.2.31` — 1 +- `6.3.35` — 1 +- `6.3.53` — 1 +- `6.4.17` — 1 +- `6.4.2` — 1 +- `6.4.30` — 1 +- `6.4.32` — 1 +- `6.5.25` — 1 +- `6.5.3` — 1 +- `6.5.37` — 1 +- `6.5.43` — 1 +- `6.5.51` — 1 +- `6.5.8` — 1 +- `6.5.9` — 1 + +## 重新生成 + +```bash +uv run python scripts/build_feikong_index.py +``` diff --git a/scripts/build_feikong_index.py b/scripts/build_feikong_index.py new file mode 100644 index 0000000..2697ffc --- /dev/null +++ b/scripts/build_feikong_index.py @@ -0,0 +1,144 @@ +"""Build docs/feikong_std77.md — topical index of std 飞控 projects. + +Selection: origin=std AND ('飞控' in name OR '飞控' in introduction) +Source: data/state/oshwhub_listing_full.jsonl (full-corpus listing snapshot) +Augmented from each project's data/raw/oshwhub//metadata.json: + - license + - source completeness (editor docs vs attachments-only) + - editor_version +""" + +from __future__ import annotations + +import json +from pathlib import Path + +REPO = Path(__file__).resolve().parent.parent +LISTING = REPO / "data" / "state" / "oshwhub_listing_full.jsonl" +RAW_ROOT = REPO / "data" / "raw" / "oshwhub" +OUT = REPO / "docs" / "feikong_std77.md" + + +def collect() -> list[dict]: + rows: list[dict] = [] + for ln in LISTING.read_text(encoding="utf-8").splitlines(): + if not ln.strip(): + continue + it = json.loads(ln) + if it.get("origin") != "std": + continue + name = it.get("name") or "" + intro = it.get("introduction") or "" + if "飞控" not in name and "飞控" not in intro: + continue + uuid = it["uuid"] + meta_p = RAW_ROOT / uuid / "metadata.json" + meta: dict = {} + if meta_p.is_file(): + meta = json.loads(meta_p.read_text(encoding="utf-8")) + rows.append({"listing": it, "meta": meta}) + return rows + + +def render(rows: list[dict]) -> str: + out: list[str] = [] + w = out.append + + n_total = len(rows) + n_have_meta = sum(1 for r in rows if r["meta"]) + n_with_source = sum(1 for r in rows if (r["meta"].get("source_documents") or [])) + n_attachments_only = n_have_meta - n_with_source + + w("# 飞控 / Flight-Controller Projects (std)") + w("") + w(f"_主题定向索引:oshwhub `origin=std` 且 `name` 或 `introduction` 含「飞控」字样_") + w("") + w( + f"**当前**:{n_total} 个项目 · {n_with_source} 个有可编辑器源 · " + f"{n_attachments_only} 个仅附件(upstream 没编辑器 session)" + ) + w("") + w( + "> 数据来源:`data/state/oshwhub_listing_full.jsonl` + 每项 `data/raw/oshwhub//metadata.json`" + ) + w("> 排序:likes 倒序") + w("") + rows.sort( + key=lambda r: -((r["listing"].get("count") or {}).get("like", 0)) + ) + w( + "| # | Title | Author | License | Source | Editor | " + "❤️ Likes | ⭐ Stars | 🍴 Forks | 👁 Views | Grade |" + ) + w( + "|---|-------|--------|---------|--------|--------|" + "--------:|--------:|--------:|--------:|------:|" + ) + for i, r in enumerate(rows, 1): + it = r["listing"] + m = r["meta"] + c = it.get("count") or {} + uuid = it["uuid"] + title = it.get("name") or "?" + url = f"https://oshwhub.com/{it['path']}" + author_user = (it.get("owner") or {}).get("username") or "?" + author_disp = (it.get("owner") or {}).get("nickname") or author_user + title_link = f"[{title}]({url})" + dir_link = f"[`{uuid[:8]}…`](../data/raw/oshwhub/{uuid}/)" + author_link = f"[{author_disp}](https://oshwhub.com/{author_user})" + license_str = m.get("license") or "—" + # source completeness label + if not m: + source_label = "❌ 未抓" + elif m.get("source_documents"): + n_docs = len(m["source_documents"]) + source_label = f"✅ {n_docs} docs" + else: + source_label = "📎 attachments-only" + editor = m.get("editor_version") or "—" + w( + f"| {i} | {title_link}
{dir_link} | {author_link} | {license_str} | " + f"{source_label} | {editor} | " + f"{c.get('like', 0):,} | {c.get('star', 0):,} | {c.get('fork', 0):,} | " + f"{c.get('views', 0):,} | {it.get('grade') or 0} |" + ) + w("") + w("## License 分布") + w("") + lic_count: dict[str, int] = {} + for r in rows: + lic = r["meta"].get("license") or "(未抓)" + lic_count[lic] = lic_count.get(lic, 0) + 1 + for lic, n in sorted(lic_count.items(), key=lambda x: -x[1]): + w(f"- `{lic}` — {n}") + w("") + w("## Editor 版本分布(有源工程的项目)") + w("") + ed_count: dict[str, int] = {} + for r in rows: + if r["meta"].get("source_documents"): + ed = r["meta"].get("editor_version") or "(unknown)" + ed_count[ed] = ed_count.get(ed, 0) + 1 + for ed, n in sorted(ed_count.items(), key=lambda x: (-x[1], x[0])): + w(f"- `{ed}` — {n}") + w("") + w("## 重新生成") + w("") + w("```bash") + w("uv run python scripts/build_feikong_index.py") + w("```") + w("") + return "\n".join(out) + + +def main() -> int: + rows = collect() + md = render(rows) + OUT.parent.mkdir(parents=True, exist_ok=True) + OUT.write_text(md, encoding="utf-8") + print(f"wrote {OUT} ({len(rows)} projects)") + return 0 + + +if __name__ == "__main__": + raise SystemExit(main())