aaa1115910/bv
41.9
Weak · 28 September 2026
69.3k
lines of production code
Kotlin
primary language
2
measurements over time
What this system is
This system is a third-party Android client library and application suite designed to interact with the Bilibili video platform. It provides a comprehensive API layer that handles authentication, video playback metadata, social feeds, and live streaming data via both HTTP and gRPC protocols. The application modules implement a custom video player with advanced features like danmaku rendering and subtitle support, packaged for both mobile and Android TV interfaces.
How it got here
2022–2023 — API client expansion and model unification
36 changes.
This period focused on establishing the foundational build infrastructure and expanding the Bilibili API client to support a comprehensive set of features. Significant work involved refactoring the repository layer to enable dual-mode HTTP and gRPC communication, while introducing extensive data models for video playback, user interactions, search, and live streaming. The effort culminated in robust integration testing and the addition of diverse authentication methods, including SMS and QR login flows.
2024–2025 — Android client and API expansion
24 changes.
This period focused on building the Android and Android TV client applications, introducing a comprehensive video player with Jetpack Compose UIs, gesture controls, and advanced playback settings. Simultaneously, the bili-api module expanded significantly with new entity models for PGC and UGC content, danmaku mask support, and extensive gRPC protocol definitions for core Bilibili services.
Features
Add BCC and SRT subtitle parsing and encoding support
The bili-subtitle module now supports parsing and encoding both Bilibili Closed Caption (BCC) and standard SRT subtitle formats. This introduces the ability to read BCC JSON structures (including styling metadata like font size and color) and SRT text files, converting them into a unified internal representation, and conversely, encoding internal subtitle data back into either BCC JSON or SRT text formats.
bili-subtitle · high confidence
Add Hotword entity for search trending data
A new Hotword data class has been introduced in the search entity package to represent trending search terms. This class includes fields for the keyword, display name, and an optional icon, and provides factory methods to map data from various HTTP response structures (web hotwords, app square data, and app trending data) into a unified format.
bili-api/src/main/kotlin/dev/aaa1115910/biliapi/entity/search · high confidence
Add history data models for Bilibili API responses
Introduced the HistoryData, HistoryItem, and HistoryInfo data classes to represent the structure of video history records returned by the Bilibili API. These models support deserialization of history lists, including pagination cursors, tab filters, and detailed item information such as view timestamps, progress, and media identifiers (oid, cid, bvid).
bili-api/src/main/kotlin/dev/aaa1115910/biliapi/http/entity/history · high confidence
Add mobile app project scaffolding and image viewer library
The mobile application directory is initialized with standard Android build configuration files, including ProGuard rules and a manifest declaring activities for the main UI, video playback, login, user space, settings, and QR code token handling. Additionally, a comprehensive Compose-based image viewer library is added to the project, providing components for image galleries, full-screen previews with vertical drag-to-dismiss gestures, and high-performance canvas-based rendering with block decoding.
app/mobile · high confidence
Added Ktor Jsoup HTTP client plugin
A new Ktor plugin has been introduced that automatically parses HTTP response bodies into Jsoup Document objects. This allows API consumers to receive structured HTML or XML content directly, with built-in support for HTML and XML content types, simplifying the process of scraping or processing web page data within the Bili API.
bili-api/src/main/kotlin/com · high confidence
Added Material Symbols for subtitles icons
The symbols module now includes Kotlin interfaces for the Subtitles, SubtitlesOff, and SubtitlesGear icons, exposing their rounded variants as ImageVector resources for use in the application.
symbols · high confidence
Added PGC feed and index data models
New entity classes have been introduced in the PGC module to support content feeds and catalog indexing. PgcFeedData and PgcItem now model feed responses, including support for V3 feed structures with ranked items, while PgcIndexData and IndexParams provide the data structures and filter enums (such as order, area, and season status) required for querying the PGC catalog index.
bili-api/src/main/kotlin/dev/aaa1115910/biliapi/entity/pgc · high confidence
Added SMS login support with new data models
The API now supports SMS-based login for the app client. This change introduces new Kotlin data classes in the login entity package to handle the SMS authentication flow: \Captcha\ for human-machine verification tokens, \SmsLoginResult\ for parsing and mapping SMS login responses (including access tokens, refresh tokens, and session cookies), and supporting QR login models (\QrLoginData\, \QrLoginResult\, \WebCookies\) which are also added in this location. Users can now authenticate using a phone number and verification code, with the library handling the extraction of necessary session data from the server response.
bili-api/src/main/kotlin/dev/aaa1115910/biliapi/entity/login · high confidence
Added data models and filter definitions for the new anime index API
This change introduces the supporting data structures for the newly added anime index endpoints. It includes \IndexResult.kt\, which defines the serialization models for the API response (including season details, badges, and episode info), and several configuration files (\IndexFilter.kt\, \IndexFilterArea.kt\, \IndexFilterProducerId.kt\, \IndexFilterStyle.kt\, \IndexOrder.kt\) that map the available filtering options (such as genre, region, producer, and sort order) to their corresponding API codes and display labels for different content types like anime, movies, and variety shows.
bili-api/src/main/kotlin/dev/aaa1115910/biliapi/http/entity/index · high confidence
Added data models for tablet QR, app QR, and SMS login flows
New serialization entities have been introduced in the login package to support additional authentication methods. This includes CaptchaData for handling Geetest verification tokens, AppQRDataRequest and AppQRLoginData for app-based QR code login responses, WebQR request and response structures for web QR login, and SendSmsResponse and SmsLoginResponse for SMS-based login flows, enabling the API to parse responses from these specific login endpoints.
bili-api/src/main/kotlin/dev/aaa1115910/biliapi/http/entity/login · high confidence
Added data models for the Bilibili App recommendation feed
New Kotlin serialization classes (RcmdIndexData, RcmdTopData) have been added to the home entity package to support parsing the Bilibili App's recommendation feed API responses. These models define the structure for recommendation items, including video metadata (aid, cid, bvid), configuration settings, and UI-related fields, enabling the API client to correctly deserialize and handle data from the app's recommendation endpoints.
bili-api/src/main/kotlin/dev/aaa1115910/biliapi/http/entity/home · high confidence
Added data models for the recommendation API response
Introduced new Kotlin data classes (RecommendData, RecommendPage) to represent the structure of the recommendation interface response, including UGC items and pagination details.
bili-api/src/main/kotlin/dev/aaa1115910/biliapi/entity/home · high confidence
Added data models for video comment viewing and pagination
New entity classes have been introduced in the \bili-api\ to support viewing video comments and their nested replies. This includes \Comment\ and \CommentsData\ for parsing comment lists, \CommentRepliesData\ for handling nested reply threads, \CommentPage\ and \CommentReplyPage\ for pagination state, and \CommentSort\ for ordering options (Hot, HotAndTime, Time). These models enable the application to fetch, display, and paginate through video comments and secondary replies.
bili-api/src/main/kotlin/dev/aaa1115910/biliapi/entity/reply · high confidence
Added data models for video comments and UI layers
The API library now includes new Kotlin data classes to parse video comment structures and UI layer configurations. Comment.kt defines the schema for comment data, including nested reply structures, user metadata, and content formatting details like emojis and jump URLs. CommentReplyData.kt provides the wrapper for paginated comment replies. Layers.kt introduces models for parsing fallback UI layers, supporting resources such as images, animations, and native draws with position and rendering specifications.
bili-api/src/main/kotlin/dev/aaa1115910/biliapi/http/entity/reply · high confidence
Added example responses for live event stream commands
Added JSON5/JSON example response files for various live event stream commands in the \bili-api/example-response/live-event\ directory. The new examples cover commands such as \COMBO\_SEND\, \DANMU\_MSG\, \ENTRY\_EFFECT\, \GUARD\_BUY\, \HOT\_RANK\_CHANGED\, \HOT\_RANK\_SETTLEMENT\, \HOT\_ROOM\_NOTIFY\, \INTERACT\_WORD\, \LIKE\_INFO\_V3\_CLICK\, \LIKE\_INFO\_V3\_UPDATE\, \LIVE\_INTERACTIVE\_GAME\, \LIVE\_MULTI\_VIEW\_CHANGE\, \NOTICE\_MSG\, \ONLINE\_RANK\_COUNT\, \ONLINE\_RANK\_TOP3\, \ONLINE\_RANK\_V2\, \PREPARING\, \ROOM\_REAL\_TIME\_MESSAGE\_UPDATE\, \SEND\_GIFT\, \STOP\_LIVE\_ROOM\_LIST\, \SUPER\_CHAT\_ENTRANCE\, \SUPER\_CHAT\_MESSAGE\, \SUPER\_CHAT\_MESSAGE\_JPN\, \USER\_TOAST\_MSG\, \WATCHED\_CHANGE\, and \WIDGET\_BANNER\.
bili-api/example-response · high confidence
Added gRPC protocol buffer definitions for Bilibili API services
The bili-api/grpc module now includes a comprehensive set of new .proto files defining the gRPC interfaces and message structures for various Bilibili services. These additions cover core functionality such as video playback URLs (including paid courses/cheese), dynamic feed creation and management, danmaku (bullet comment) services, and real-time broadcast messaging (including live room events, push notifications, and laser targeting). The diff also introduces protocol definitions for user authentication tickets, service health probes, and detailed user avatar rendering specifications, establishing the contract for client-server communication in these areas.
bili-api/grpc, bili-api/grpc/proto/bilibili/live · high confidence
Added gRPC protocol buffers for video archives, feed cards, and dynamic feeds
This change introduces a comprehensive set of new Protocol Buffer definitions in the \bili-api/grpc/proto/bilibili\ directory, establishing the API contracts for several core app features. It defines the \Archive\ service and data models (including \Arc\, \Author\, \Rights\, and \Page\) for video metadata and playback arguments. It also specifies the \Card\ service with various cover types (e.g., \SmallCoverV5\, \LargeCoverV1\) and ad structures (\AdInfo\) for the feed interface. Additionally, it adds the \Dynamic\ service (v1 and v2) for social feeds, \Distribution\ settings for user preferences and cloud configs, and \History\ and \Search\ interfaces, effectively laying the groundwork for video playback, content discovery, and user interaction features.
bili-api/grpc/proto/bilibili · high confidence
Added mobile search API definitions
Introduced the gRPC protocol buffer definitions for the mobile search feature, including the Search service with RPCs for searching all results, searching by specific type, and searching for comics, along with the associated request and response message structures.
bili-api/grpc/proto/bilibili/polymer · high confidence
Added proxy data models for video playback URLs
Introduced new Kotlin data classes in the \proxy\ package to represent video playback URL responses, including \ProxyWebPlayUrlData\, \ProxyAppPlayUrlData\, and associated DASH structure models. These models support the new capability to retrieve playback addresses via a proxy server, with specific fields like \lastPlaycid\ updated to use \Long\ to handle larger identifiers.
bili-api/src/main/kotlin/dev/aaa1115910/biliapi/http/entity/proxy · high confidence
Added shared player utilities for danmaku masking and video shot preview
The shared player module now includes new components to support advanced video playback features. AkDanmakuPlayer provides a Composable wrapper for the Kuaishou AkDanmaku library to render danmaku overlays. DanmakuMaskModifiers introduces helper functions to apply visual masks to video content, supporting both SVG-based web masks and binary mob masks. Additionally, VideoShotExtends adds logic to extract and cache specific frames from video shots, including a test Composable for previewing these frames in a grid layout.
player/shared/src/main/kotlin/dev/aaa1115910/bv/player, player/shared/src/main/kotlin/dev/aaa1115910/bv/player/util · high confidence
App initialization, data storage, and background services
The shared module now initializes the application environment by setting up Koin dependency injection, configuring Firebase analytics and crashlytics (disabled in debug builds), and starting a local HTTP server. It introduces a new Room database (version 3) to persist user profiles and search history, alongside a DataStore manager for application preferences. Background tasks include updating a user blacklist and migrating legacy login credentials into the new database structure.
app/shared · high confidence
Expanded user entity models for diverse dynamic types and user space data
The API now supports a wider variety of user feed content and user profile data. New entity models in the \bili-api\ user package allow parsing of text, image-text, forwarded, live recommendation, and PGC dynamics (previously limited to video-only), as well as dedicated models for user space video lists, followed users, watch history, and 'watch later' lists. This enables the application to correctly display and interact with these richer content types and user-specific lists.
bili-api/src/main/kotlin/dev/aaa1115910/biliapi/entity/user · high confidence
Expanded user profile and relationship data models
The API now exposes richer user profile details and social graph data. Users can access comprehensive profile information including NFT avatar support, detailed VIP membership labels, level experience, professional qualifications, and system notices. The update also introduces structured models for user relationships, allowing retrieval of follow lists with grouping and special-follow flags, as well as detailed mutual relationship states and statistics.
bili-api/src/main/kotlin/dev/aaa1115910/biliapi/http/entity/user · high confidence
Initial project setup and repository structure
This change establishes the foundational structure for the BV Android application. It introduces the MIT License, a .gitignore file for build artifacts, and a README.md documenting the app's features and installation methods. The project is configured as a Gradle-based Android application using Jetpack Compose, targeting Android 6.0+, and includes a Git submodule for shared libraries.
(repo-wide) · high confidence
Initial release of the Android TV application
This change introduces the complete Android TV client, establishing the app's entry point and core navigation structure. The main activity implements a startup sequence that checks network connectivity and user lock status before displaying the home screen, while also blocking access for users in mainland China. The application registers a comprehensive set of activities for video playback, search, user account management, and settings, all built using Jetpack Compose and themed with the TV-specific BVTheme.
app/tv · high confidence
Introduce core video player abstraction with ExoMedia3 implementation
The player/core module now provides a structured video playback foundation, introducing an AbstractVideoPlayer interface and a VideoPlayerListener for standardized event handling (play, pause, buffering, errors). It includes a Compose-based BvVideoPlayer UI component that renders the video using AndroidView with ExoPlayer's PlayerView. The core logic is implemented via ExoMediaPlayer, which leverages Media3 (ExoPlayer) and integrates a custom OkHttp client (OkHttpUtil) for SSL handling and request headers. A PlayerFactory pattern is established to instantiate players with configurable options like user-agent, referer, and FFmpeg audio renderer support.
player/core · high confidence
Introduces configurable playback modes and detailed video/audio settings
The player now supports multiple playback modes (Single, Sequential, Single Loop, List Loop) and exposes granular controls for video resolution (up to 8K and HDR), audio quality (including Dolby Atmos and Hi-Res), and video codecs (AVC, HEVC, AV1). This change also adds structured data models for managing video lists, including support for multi-part videos and series, alongside updated Danmaku and subtitle configuration options.
player/shared/src/main/kotlin/dev/aaa1115910/bv/player/entity · high confidence
New API entity models for playback, favorites, and UI components
This change introduces a new set of data classes in the \bili-api\ entity package to support updated API responses and new features. \PlayData\ and \CodeType\ provide structured models for video playback information, including support for multiple codecs (H.264, H.265, AV1), Dolby Audio, and FLAC lossless audio, enabling users to access higher quality and diverse audio formats. \Favorite\ defines the data structures for user favorite folders and items, reflecting changes in how favorites are stored and retrieved. \CarouselData\ and \Picture\ add support for displaying carousel banners and comment images, improving the visual presentation of content in the app.
bili-api/src/main/kotlin/dev/aaa1115910/biliapi/entity · high confidence
New HTTP entity models for subtitles, favorites, and web navigation
This change introduces new Kotlin data classes for serializing Bilibili API responses in three areas. In the subtitle module, it adds models for subtitle metadata, list items, and author details. In the user favorite module, it adds models for favorite folder information, folder lists, individual favorite items, and associated count information. In the web module, it adds models for navigation response data, including WBI image keys, and a generic hover text/image model.
bili-api/src/main/kotlin/dev/aaa1115910/biliapi/http/entity/subtitle, bili-api/src/main/kotlin/dev/aaa1115910/biliapi/http/entity/user/favorite, bili-api/src/main/kotlin/dev/aaa1115910/biliapi/http/entity/web · high confidence
New TV player controller UI components
The TV player's on-screen controller has been rebuilt with new Compose UI components. This adds a bottom subtitle overlay for displaying captions, a video info panel showing title and clock, a seek controller with video shot previews for scrubbing, a settings menu for resolution, codec, danmaku, and subtitles, a video list controller for navigating episodes and parts, and state tips for buffering, errors, and payment requirements.
player/tv/src/main/kotlin/dev/aaa1115910/bv/player/tv/controller · high confidence
New TV player menu interface with closed caption, danmaku, and playback controls
The TV player now includes a comprehensive on-screen menu system for adjusting playback settings. Users can manage closed captions (switching tracks, adjusting size, opacity, and padding), configure danmaku (toggle types, adjust scale, opacity, area, and mask), and modify playback parameters such as resolution, video codec, aspect ratio, play speed, and audio track. The menu also provides a dedicated section for selecting the playback mode. This interface is built using Compose for TV, featuring a navigation sidebar and detailed sub-menus with keyboard focus management.
player/tv/src/main/kotlin/dev/aaa1115910/bv/player/tv/controller/playermenu · high confidence
New data model for the popular videos API response
A new Kotlin data structure has been introduced to represent the response from the popular videos endpoint. This model defines the structure of the returned list of UGC (User Generated Content) items, along with pagination details such as the next page size, page number, and app index, enabling clients to properly parse and navigate through popular video listings.
bili-api/src/main/kotlin/dev/aaa1115910/biliapi/entity/rank · high confidence
New data models for season index, following list, and broadcast timeline
The API layer now includes dedicated entity classes to support three distinct season-related capabilities: a new season index interface (IndexResultData, IndexResultItem, Badge), a refactored following/subscribe interface (FollowingSeasonData, FollowingSeason, FollowingSeasonType, FollowingSeasonStatus), and a refactored broadcast schedule/timeline interface (Timeline, TimelineEp, TimelineFilter). These models define the structure for fetching indexed content, managing followed series with type and status filters, and viewing upcoming episode schedules, including mappings from both web and app HTTP response formats.
bili-api/src/main/kotlin/dev/aaa1115910/biliapi/entity/season · high confidence
New mobile video player with interactive seek bar and media3 integration
The mobile player module now includes a new \BvPlayer\ Compose UI that integrates with the Media3 ExoPlayer engine for video and audio playback. This update introduces a custom \VideoSeekBar\ component that supports both dragging and tapping to seek, along with a \MaterialDarkTheme\ for consistent styling. The player also handles dynamic video aspect ratios and integrates with the AkDanmaku library for subtitle rendering.
player/mobile/src/main/kotlin/dev/aaa1115910/bv/player/mobile · high confidence
New search API data models for suggestions, results, and trending keywords
This change introduces a comprehensive set of Kotlin data classes in the \bili-api\ search module to support structured parsing of Bilibili's search-related endpoints. The new models include \KeywordSuggest\ for handling search suggestions, \SearchResult\ and its associated item types (such as \SearchVideoResult\, \SearchMediaResult\, \SearchBiliUserResult\, and \SearchArticleResult\) for parsing detailed search results, and \SearchSquare\ classes (\WebSearchSquareData\, \AppSearchSquareData\, \SearchTendingData\) for displaying trending topics and hot keywords on both web and app interfaces. These entities enable the API client to correctly deserialize and present search suggestions, categorized search results, and trending content to users.
bili-api/src/main/kotlin/dev/aaa1115910/biliapi/http/entity/search · high confidence
New season and episode data models for Bilibili video API
Added new Kotlin data classes (Episode, PgcSeason, UgcSeason, SeasonDetail, Section) in the bili-api module to represent Bilibili season/episode structures. These models unify parsing from both Web and App API responses, supporting fields like episode titles, cover images, durations, and user progress, and enabling proper display of series lists and non-main content in PGC details.
bili-api/src/main/kotlin/dev/aaa1115910/biliapi/entity/video/season · high confidence
New utility library for logging, focus management, and UI helpers
The utils module now provides a suite of helper functions for the application. Logging is enhanced with KLogger extensions that automatically forward messages to Firebase Crashlytics and Analytics, while a new FirebaseUtil object manages initialization and collection settings. For UI interactions, the module introduces Compose modifiers for handling back presses, conditional styling, and a robust focus request mechanism that retries after a delay if the initial attempt fails. Additional utilities include a timer wrapper for countdown and periodic tasks, a duration formatter that displays hours for long videos, and helper functions for showing toasts and swapping state lists.
utils · high confidence
Support for parsing danmaku mask files to prevent text overlap
Added the DanmakuMask entity and its associated data classes (DanmakuMaskSegment, DanmakuMaskFrame, DanmakuWebMaskFrame, DanmakuMobMaskFrame) to parse binary mask files. This enables the API to handle web (SVG) and mobile (image) mask data, which defines regions where danmaku comments should not appear, thereby preventing visual overlap with video content.
bili-api/src/main/kotlin/dev/aaa1115910/biliapi/entity/danmaku · high confidence
Architecture
Added build configuration files to player submodules
The player module's subdirectories (core, mobile, shared, tv) now include .gitignore files to exclude build artifacts and ProGuard configuration files (proguard-rules.pro and consumer-rules.pro) to support code shrinking and obfuscation during the build process.
player · high confidence
Build system initialization and configuration
The buildSrc module has been introduced to centralize build configuration. It defines core app settings including SDK versions (compile/target 36, min 23), JDK 21, and versioning logic that incorporates git commit data. It also configures Protobuf by explicitly listing used protocol buffer files and excluding unused ones, and handles the availability check for Google Services JSON.
buildSrc · high confidence
Behavioural changes
Centralized API signing and HTTP request utilities
The library now includes a centralized HTTP utility module in \bili-api/src/main/kotlin/dev/aaa1115910/biliapi/http/util\ that handles API signature generation and request preparation. This introduces automatic signing for App-end requests (using \encAppPost\ and \encAppGet\) and WBI signatures for web requests (using \encWbi\), ensuring that access tokens are hidden in logs and that GET requests with tokens correctly compute the necessary app signs. It also adds configuration objects for App (\BiliAppConf\) and Web (\BiliWebConf\) environments, utilities for generating Buvid identifiers, Zlib compression/decompression helpers, and a custom serializer for enum-to-int mapping, standardizing how API requests are constructed and signed before transmission.
bili-api/src/main/kotlin/dev/aaa1115910/biliapi/http/util · high confidence
Expanded dynamic content model to support diverse post types
The API entity models for dynamic posts have been updated to support a wider variety of content types beyond just videos. New data classes including \DynamicDetailResponse\ and an expanded \DynamicResponse\ structure now parse fields for reposts, live streams, and other dynamic formats, enabling the application to correctly display and handle these new post types.
bili-api/src/main/kotlin/dev/aaa1115910/biliapi/http/entity/dynamic · high confidence
Expanded video entity models for detailed metadata and playback support
The video API layer now includes comprehensive data models for richer video interactions. New entities support PGC (professional content) playback via \PlayUrlResponse\ and \PlayUrlV2Data\, and handle multi-part videos and creator collections through \UgcSeason\ and \VideoInfo\ (which now exposes \pages\ and \ugcSeason\). Video detail responses have been restructured to include \Tags\, \Related\ videos, and \HotShare\ data, while \VideoMoreInfo\ provides user-specific context like playback progress and subtitle availability. Additional models for \Timeline\ (broadcast schedules), \Tag\ details, and \VideoShot\ (progress bar previews) have been added to support these features.
bili-api/src/main/kotlin/dev/aaa1115910/biliapi/http/entity/video · high confidence
HTTP API layer restructured into modular client and proxy implementations
The HTTP API implementation in \bili-api\ has been reorganized into distinct modules: \BiliHttpApi\ handles standard Bilibili API calls, \BiliHttpProxyApi\ provides a separate client for proxy-based requests (supporting custom ports), \BiliLiveHttpApi\ manages live streaming endpoints, \BiliPassportHttpApi\ handles authentication (including new App-side QR login and SMS login), and \BiliPlusHttpApi\ interfaces with the BiliPlus service. This change introduces dedicated HTTP clients for each domain, updates login mechanisms to support tablet-style QR codes and SMS, and adds proxy support for search and playback operations.
bili-api/src/main/kotlin/dev/aaa1115910/biliapi/http · high confidence
Initial app configuration and ProGuard rules
The app module is initialized with essential build configurations. A .gitignore file is added to exclude build artifacts and sensitive files like google-services.json. A Compose compiler configuration file is introduced to optimize specific Kotlin and AndroidX classes. Most significantly, comprehensive ProGuard rules are defined to prevent obfuscation from breaking critical functionality, specifically preserving Ktor network requests, LibVLC video playback, gRPC/bilibili RPC interfaces, and various serialization and logging libraries.
app · high confidence
Introduce dedicated TV player UI with custom seek bar and playback controls
The TV player interface has been refactored into a new module (:player:tv) with a dedicated Compose-based UI. This introduces a custom VideoSeekBar component that supports animated aspect-ratio transitions, custom seek-bar thumbs (including JSON-based icons), and position display formatting. The main BvPlayer composable now integrates these UI elements alongside danmaku configuration, subtitle controls, and playback mode options, providing a cohesive TV-optimized viewing experience.
player/tv/src/main/kotlin/dev/aaa1115910/bv/player/tv · high confidence
New UGC entity models and deprecated region data classes
Added UgcItem as a unified data class for user-generated content, with factory methods to parse items from various sources including recommendation feeds, video info, and region lists. Introduced UgcTypeV2 enum with updated category IDs and codenames to replace the deprecated UgcType. Added new region-specific data classes (UgcFeedData, UgcRegionData, UgcRegionListData) for handling paginated content feeds, with the older region data classes marked as deprecated in favor of the new v2 approach.
bili-api/src/main/kotlin/dev/aaa1115910/biliapi/entity/ugc · high confidence
New animated seek bar with wavy track and Lottie thumb
The player now uses a custom seek bar component that features an animated 'wavy' active track line and a distinct Lottie-based thumb indicator. The seek bar displays the playback position and buffered percentage using a wavy line animation that can be toggled on or off, and the thumb changes its Lottie animation state (idle, forward, or backward) to provide visual feedback during seeking operations.
player/shared/src/main/kotlin/dev/aaa1115910/bv/player/seekbar · high confidence
New mobile player UI with gesture controls and settings menus
The mobile player interface has been rebuilt using Jetpack Compose, introducing a new controller layer that supports full-screen, mini-player, and overlay modes. Users can now interact with the player via gesture controls for seeking, volume, and brightness, with visual feedback tips. A new settings panel provides access to playback speed, resolution, audio, codec, danmaku (comment) configuration, and play mode options, while the video list menu supports navigation through multi-part videos and UGC seasons.
player/mobile/src/main/kotlin/dev/aaa1115910/bv/player/mobile/controller · high confidence
Repository layer refactored to support dual API modes and gRPC
The repository layer has been restructured to introduce a unified \ApiType\ (Web vs. App) pattern across all data access classes, including \AuthRepository\, \LoginRepository\, \UserRepository\, \VideoDetailRepository\, and others. This change enables the application to switch between standard HTTP endpoints and the newer gRPC-based App interfaces for operations such as video playback, comments, search, and user interactions. Additionally, \ChannelRepository\ now manages separate gRPC channels for default and custom proxy connections, and \AuthRepository\ centralizes session state (such as \sessData\ and \accessToken\) to support multi-user switching and consistent authentication across the new dual-mode architecture.
bili-api/src/main/kotlin/dev/aaa1115910/biliapi/repositories · high confidence
Restructured gRPC client infrastructure and error handling
The gRPC module now uses a new Channel utility to manage connections, applying a MetadataInterceptor that injects specific Bilibili headers (authorization, device, locale, network) into every call. This change also introduces a dedicated error-handling mechanism that parses gRPC status details to extract and throw user-friendly messages from common.ErrorProto, replacing the previous error parsing logic.
bili-api/src/main/kotlin/dev/aaa1115910/biliapi/grpc · high confidence
Updated season and follow data models to match API changes
The HTTP entity models in the season package have been refactored to align with updated Bilibili API responses. New data classes (AppSeasonData, WebSeasonData, Episode, SeasonSection, Follow, etc.) were introduced to replace previous structures, incorporating fields for activity entrances, channel entrances, and detailed episode metadata. The change also updates the follow/subscription logic to handle both web and app-specific data formats, ensuring that season details, episode progress, and subscription status are correctly parsed and displayed.
bili-api/src/main/kotlin/dev/aaa1115910/biliapi/http/entity/season · high confidence
Video entity models updated to support new API interfaces and data types
The video entity models in the API layer have been refactored to support new Bilibili API endpoints and data structures. Key changes include switching the \aid\ and \cid\ identifiers from \int\ to \long\ to prevent overflow issues, adding support for video chapters (\VideoPage\) and multi-part content, and introducing new entities for subtitles (\Subtitle\), video tags (\Tag\), and progress bar preview thumbnails (\VideoShot\). The \VideoDetail\ model now integrates these new fields and supports parsing from both the legacy HTTP API and the newer gRPC-based \bilibili.app.view.v1\ interfaces, ensuring compatibility with updated backend services.
bili-api/src/main/kotlin/dev/aaa1115910/biliapi/entity/video · high confidence
Test coverage
1 commit adding/updating tests in bili-api/src/test/resources; Added integration tests for API repositories; Added integration tests for Bili API HTTP, Live, Passport, and WebSocket endpoints; Added tests for SMS login functionality; Added tests for danmaku mask file parsing.
Dependencies
Initial Gradle build configuration and dependency management setup
This change introduces the foundational Gradle build configuration for the project. It establishes the Gradle wrapper (version 8.14.3) and defines version catalogs for build plugins and AndroidX libraries. Key build tooling includes Android Gradle Plugin 8.11.1, Kotlin 2.2.0, and KSP 2.2.0. The dependency catalog specifies versions for core AndroidX components such as Compose (1.8.3), Material3 (1.5.0-alpha03), Media3 (1.8.0-rc01), and Navigation (2.9.2), alongside integrations for Firebase Crashlytics and Google Services.
gradle · high confidence
Initial project structure and dependency configuration
This change introduces the foundational Gradle build configuration for the application, establishing a multi-module architecture that includes app, player, API, and utility subprojects. It defines the core dependency catalog in \gradle/libs.versions.toml\, specifying versions for key libraries such as Koin (4.1.0), Ktor (3.1.3), Firebase (BOM 34.0.0), and Media3, while configuring the Android application and library modules to use the Compose compiler and Kotlin DSL.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Score
- CAI 42 → 42 (-0.1)
- Rubric changed (rubric-2026.09.8 → rubric-2026.09.16) — scores are not directly comparable.
Lenses
- Code Health 85 → 85 (+0.0)
- Architecture 95 → 85 (-9.3)
- Maturity 31 → 31 (-0.1)
- Readiness 44 → 38 (-5.6)
- Security 40 → 40 (+0.0)
- Performance 100 (new)
Resolved (2)
- Most significant orphaned file (app/mobile/src/main/kotlin/com/origeek/imageViewer/viewer/ImageComposeCanvas.kt)
- Near-duplicate member pair (112 shared lines) (player/mobile/src/main/kotlin/dev/aaa1115910/bv/player/mobile/BvPlayer.kt)
New (14)
- Documentation: no installation or build instructions (README.md)
- Documentation: no licence statement (README.md)
- Documentation: no project overview (README.md)
- Documentation: no usage examples (README.md)
- Most significant orphaned file (app/tv/src/main/kotlin/dev/aaa1115910/bv/tv/screens/user/UserInfoScreen.kt)
- Near-duplicate member pair (112 shared lines) (player/tv/src/main/kotlin/dev/aaa1115910/bv/player/tv/BvPlayer.kt)
- No ADRs found
- Off the main sequence: :app:shared
- Off the main sequence: :bili-subtitle
- Off the main sequence: :utils
- Split app/mobile
- Split app/shared
- Split app/tv
- Split bili-api
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
aaa1115910/bv was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 28 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 0e454c06e954b00df7a0a5a6873c9f18a7f9d0f5 — the exact code this score is about.
- Scored under rubric-2026.09.16 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-2d9048c36d26.