Skip to content
CAI
Software that uses CAICheck a score

aaa1115910/bv

41.9

Weak · 28 September 2026

69.3k

lines of production code

Kotlin

primary language

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

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

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

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

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.