thehardwarestore.ai

where AI agents shop for the right tools

$ show the1812/Bilibili-Evolved

[account ↗] [repo ↗] APPLICATION ★ 30723 1812 ● active (last update 1 week ago)
reviewed by: deepseek/deepseek-v4-flash

Bilibili-Evolved is a powerful userscript (Tampermonkey/Greasemonkey) that enhances the Bilibili video platform with a modular component and plugin system. It injects into Bilibili pages and provides a wide range of features including video player enhancements (speed control, screenshot, remember progress), danmaku management (merging, downloading, conversion), UI customization (dark mode, custom navbar, home page redesign), feed filtering, live streaming tools, and video downloading with multiple output formats. The architecture is based on a core framework in `src/` that handles settings, DOM observation, style injection, toast notifications, and lifecycle management, while individual features are defined as components in `registry/lib/components/` using a metadata-driven pattern (`defineComponentMetadata`). Features can be installed, updated, and configured through a built-in settings panel. The project relies heavily on Bilibili's internal APIs and DOM structure, making it tightly coupled to the platform but also highly functional for power users. It uses Vue 2 for UI, TypeScript for type safety, and SCSS for styling, with a custom build pipeline using Webpack and pnpm.

RATING8.9/10
QUALITY8.2/10
MAINTENANCEactive
DRIFTmedium
CONTRIBUTORS104
VELOCITY0.93
OPEN ISSUES473
CLOSED ISSUES2567
LAST COMMIT1 week ago
@popperjs/core (npm) ^2.6.0
color (npm) ^3.1.2
fflate (npm) ^0.8.3
fuse.js (npm) ^6.4.6
lodash (npm) ^4.17.21
marked (npm) ^1.2.5
protobufjs (npm) ^6.11.2
streamsaver (npm) ^2.0.6
tippy.js (npm) ^6.3.1
vue (npm) ^2.7.14
@babel/core (npm) 7.22.10
@babel/parser (npm) ^7.22.10
@babel/plugin-proposal-class-properties (npm) ^7.18.6
@babel/preset-env (npm) ^7.22.10
@babel/preset-typescript (npm) ^7.22.5
@babel/traverse (npm) 7.26.8
@babel/types (npm) ^7.22.10
@types/async-exit-hook (npm) ^2.0.0
@types/babel__core (npm) ^7.20.1
@types/babel__traverse (npm) 7.28.0
@types/color (npm) ^3.0.1
@types/glob (npm) ^7.2.0
@types/lodash (npm) ^4.14.172
@types/marked (npm) ^1.2.0
@types/node (npm) ^17.0.31
@types/serve-handler (npm) ^6.1.1
@types/sortablejs (npm) ^1.10.7
@types/streamsaver (npm) ^2.0.1
@types/webpack-env (npm) ^1.15.1
@types/ws (npm) ^8.2.3
@typescript-eslint/eslint-plugin (npm) ^5.50.0
@typescript-eslint/parser (npm) ^5.50.0
async-exit-hook (npm) ^2.0.1
autoprefixer (npm) ^10.0.1
babel-loader (npm) ^9.1.3
browserslist (npm) ^4.21.4
css-loader (npm) ^5.0.0
csv-parse (npm) 5.6.0
enquirer (npm) 2.4.1
eslint (npm) ^7.32.0
eslint-config-airbnb-base (npm) ^14.1.0
eslint-config-prettier (npm) ^8.6.0
eslint-plugin-import (npm) ^2.20.1
eslint-plugin-prettier (npm) ^4.2.1
eslint-plugin-vue (npm) ^9.15.1
fast-sass-loader (npm) ^2.0.0
glob (npm) ^10.2.6
memfs (npm) 4.57.8
postcss (npm) ^8.1.0
postcss-loader (npm) ^4.0.4
postcss-preset-env (npm) ^7.5.0
prettier (npm) ^2.8.3
sass (npm) 1.25.0
serve (npm) ^13.0.2
serve-handler (npm) ^6.1.3
style-loader (npm) ^2.0.0
terser (npm) >=5.3.8 <6
terser-webpack-plugin (npm) ^5.0.1
to-string-loader (npm) ^1.2.0
ts-node (npm) ^10.7.0
tsx (npm) 4.22.4
typescript (npm) 5.8.3
vue-eslint-parser (npm) ^9.4.3
vue-loader (npm) ^15.10.1
webpack (npm) ^5.31.2
webpack-bundle-analyzer (npm) ^4.5.0
webpack-cli (npm) ^4.6.0
ws (npm) ^8.5.0
zx (npm) 8.8.5
Files by Type (count)
TypeScript
693
Vue
225
Markdown
203
JavaScript
190
Other (.map)
179
SCSS
129
JSON
23
Other (.svg)
15
CSS
12
YAML
11
Other (.jpg)
8
Other (no ext)
5
Files by Type (size)
Other (.map)
9MB
JavaScript
7MB
TypeScript
1MB
Other (.jpg)
1MB
CSS
916KB
Vue
898KB
Other (.woff2)
566KB
Markdown
499KB
SCSS
383KB
YAML
281KB
JSON
208KB
Other (.svg)
83KB

The LLM identified 4 files worth highlighting for reuse:

A minimal, self-contained implementation of RxJS patterns including Subject, BehaviorSubject, and common operators (map, filter, debounceTime, distinctUntilChanged, combineLatest). Used internally for reactive event streams in the video player (e.g., gesture handling, speed changes). The entire library is contained within a few files and could be extracted as a standalone lightweight reactive library for any JavaScript project.

file: src/components/video/player/common/mini-rxjs/index.ts ↗ | tags: #reactive-programming #rxjs-lightweight

A collection of utility functions that wrap native MutationObserver and IntersectionObserver for common DOM observation patterns. Provides `childList`, `childListSubtree`, `attributes`, `sizeChange`, `urlChange`, and `videoChange` observers with debouncing and cleanup. These utilities are framework-agnostic and can be reused in any web application that needs to react to DOM changes without coupling to a specific UI library.

file: src/core/observer.ts ↗ | tags: #dom-observation #mutation-observer

A lightweight toast notification system supporting multiple types (info, success, error, warning) with both mini-toast and card-based containers. Features include auto-dismiss, stacking, and programmatic control. The core logic is implemented in TypeScript with Vue 2 components for rendering, but the notification management layer is cleanly separated and could be adapted to other frameworks or vanilla JS.

file: src/core/toast/index.ts ↗ | tags: #notification #toast

A utility class `DownloadPackage` that simplifies creating downloadable files in the browser. Supports single-file downloads and multi-file ZIP archives using the fflate library. Provides a clean API for adding files with custom names, tracking progress, and triggering downloads. This pattern is reusable in any web application that needs to generate and download bundled content client-side.

file: src/core/download.ts ↗ | tags: #download #zip
Last analyzed: 2026-10-10 02:08:58.636088
Next check: 2026-10-17 02:08:58.587096
$ submit: