├── .gitattributes ├── .github └── workflows │ └── android.yml ├── .gitignore ├── .idea ├── .gitignore ├── androidTestResultsUserPreferences.xml ├── appInsightsSettings.xml ├── codeStyles │ ├── Project.xml │ └── codeStyleConfig.xml ├── compiler.xml ├── deploymentTargetDropDown.xml ├── deploymentTargetSelector.xml ├── gradle.xml ├── inspectionProfiles │ └── Project_Default.xml ├── kotlinc.xml ├── migrations.xml ├── misc.xml ├── other.xml ├── render.experimental.xml ├── runConfigurations.xml └── vcs.xml ├── .kotlin └── errors │ └── errors-1729322291665.log ├── LICENSE ├── README.md ├── app ├── .gitignore ├── build.gradle.kts ├── google-services.json ├── proguard-keys.txt ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── xiaoyv │ │ └── bangumi │ │ └── ExampleInstrumentedTest.kt │ ├── main │ ├── AndroidManifest.xml │ ├── assets │ │ └── h5 │ │ │ ├── assets │ │ │ ├── BBCodeView-9E2IN_sa.js │ │ │ ├── BBCodeView-ok635Qnb.css │ │ │ ├── BlogView-p0tVeezS.js │ │ │ ├── BlogView-rpjgMQfG.css │ │ │ ├── BottomSpinnerView-FbERe0wp.js │ │ │ ├── BottomSpinnerView-X9mrmYSF.css │ │ │ ├── IndexView-Gsg00Qd6.js │ │ │ ├── TopicView-BbLA7xc5.css │ │ │ ├── TopicView-b0Nat5PC.js │ │ │ ├── bg_bangumi-zgoKjpW4.png │ │ │ ├── index-ECc4Fme6.css │ │ │ ├── index-a_sggHWe.js │ │ │ └── light-xUZnlCGI.css │ │ │ ├── favicon.ico │ │ │ ├── ic_holder.jpg │ │ │ ├── index.html │ │ │ ├── script │ │ │ ├── bangumi.js │ │ │ └── temp.html │ │ │ └── test.http │ ├── ic_launcher-playstore.png │ ├── ic_launcher_1-playstore.png │ ├── ic_launcher_2-playstore.png │ ├── java │ │ └── com │ │ │ └── xiaoyv │ │ │ └── bangumi │ │ │ ├── StartActivity.kt │ │ │ ├── base │ │ │ ├── BaseListActivity.kt │ │ │ ├── BaseListFragment.kt │ │ │ ├── BaseListStubFragment.kt │ │ │ └── BaseListViewModel.kt │ │ │ ├── helper │ │ │ ├── CommentHelper.kt │ │ │ └── RouteHelper.kt │ │ │ ├── special │ │ │ ├── collection │ │ │ │ ├── CollectionActivity.kt │ │ │ │ ├── CollectionAdapter.kt │ │ │ │ └── CollectionViewModel.kt │ │ │ ├── detect │ │ │ │ ├── ImageDetectActivity.kt │ │ │ │ ├── ImageDetectViewModel.kt │ │ │ │ ├── anime │ │ │ │ │ ├── ImageDetectAnimeActivity.kt │ │ │ │ │ ├── ImageDetectAnimeViewModel.kt │ │ │ │ │ └── result │ │ │ │ │ │ ├── AnimeDetectResultActivity.kt │ │ │ │ │ │ ├── AnimeDetectResultAdapter.kt │ │ │ │ │ │ └── AnimeDetectResultViewModel.kt │ │ │ │ └── character │ │ │ │ │ ├── ImageDetectCharacterActivity.kt │ │ │ │ │ ├── ImageDetectCharacterViewModel.kt │ │ │ │ │ └── result │ │ │ │ │ ├── CharacterDetectResultActivity.kt │ │ │ │ │ ├── CharacterDetectResultAdapter.kt │ │ │ │ │ └── CharacterDetectResultViewModel.kt │ │ │ ├── magnet │ │ │ │ ├── MagnetActivity.kt │ │ │ │ ├── MagnetAdapter.kt │ │ │ │ ├── MagnetApiDialog.kt │ │ │ │ └── MagnetViewModel.kt │ │ │ ├── mikan │ │ │ │ ├── MikanActivity.kt │ │ │ │ ├── MikanAdapter.kt │ │ │ │ ├── MikanViewModel.kt │ │ │ │ └── resource │ │ │ │ │ ├── MikanResourceActivity.kt │ │ │ │ │ └── MikanResourceViewModel.kt │ │ │ ├── picture │ │ │ │ ├── AnimePicturesNetActivity.kt │ │ │ │ └── gallery │ │ │ │ │ ├── AnimeGalleryActivity.kt │ │ │ │ │ ├── AnimeGalleryAdapter.kt │ │ │ │ │ └── AnimeGalleryViewModel.kt │ │ │ ├── subtitle │ │ │ │ ├── SubtitleToolActivity.kt │ │ │ │ └── SubtitleToolViewModel.kt │ │ │ ├── syncer │ │ │ │ ├── SyncerActivity.kt │ │ │ │ ├── SyncerViewModel.kt │ │ │ │ └── list │ │ │ │ │ ├── SyncerListActivity.kt │ │ │ │ │ ├── SyncerListAdapter.kt │ │ │ │ │ ├── SyncerListDialog.kt │ │ │ │ │ └── SyncerListViewModel.kt │ │ │ ├── thunder │ │ │ │ ├── ThunderActivity.kt │ │ │ │ ├── ThunderAdapter.kt │ │ │ │ ├── ThunderDialog.kt │ │ │ │ ├── ThunderViewModel.kt │ │ │ │ ├── page │ │ │ │ │ ├── ThunderTaskAdapter.kt │ │ │ │ │ ├── ThunderTaskFragment.kt │ │ │ │ │ └── ThunderTaskViewModel.kt │ │ │ │ └── torrent │ │ │ │ │ ├── TorrentInfoActivity.kt │ │ │ │ │ ├── TorrentInfoAdapter.kt │ │ │ │ │ └── TorrentInfoViewModel.kt │ │ │ └── widget │ │ │ │ ├── AnimeWidget.kt │ │ │ │ └── AnimeWidgetDataService.kt │ │ │ └── ui │ │ │ ├── HomeActivity.kt │ │ │ ├── HomeAdapter.kt │ │ │ ├── HomeRobot.kt │ │ │ ├── MainViewModel.kt │ │ │ ├── discover │ │ │ ├── DiscoverAdapter.kt │ │ │ ├── DiscoverFragment.kt │ │ │ ├── DiscoverViewModel.kt │ │ │ ├── blog │ │ │ │ ├── BlogAdapter.kt │ │ │ │ ├── BlogFragment.kt │ │ │ │ ├── BlogViewModel.kt │ │ │ │ └── detail │ │ │ │ │ ├── BlogActivity.kt │ │ │ │ │ └── BlogViewModel.kt │ │ │ ├── container │ │ │ │ └── FragmentContainerActivity.kt │ │ │ ├── dollars │ │ │ │ ├── DollarsActivity.kt │ │ │ │ ├── DollarsAdapter.kt │ │ │ │ └── DollarsViewModel.kt │ │ │ ├── group │ │ │ │ ├── GroupAdapter.kt │ │ │ │ ├── GroupFragment.kt │ │ │ │ ├── GroupViewModel.kt │ │ │ │ ├── binder │ │ │ │ │ ├── GroupItemGridBinder.kt │ │ │ │ │ └── GroupItemTopicBinder.kt │ │ │ │ ├── detail │ │ │ │ │ ├── GroupDetailActivity.kt │ │ │ │ │ ├── GroupDetailAdapter.kt │ │ │ │ │ └── GroupDetailViewModel.kt │ │ │ │ ├── list │ │ │ │ │ ├── GroupListActivity.kt │ │ │ │ │ └── GroupListViewModel.kt │ │ │ │ └── topic │ │ │ │ │ ├── GroupTopicsActivity.kt │ │ │ │ │ ├── GroupTopicsAdapter.kt │ │ │ │ │ └── GroupTopicsViewModel.kt │ │ │ ├── home │ │ │ │ ├── HomeAdapter.kt │ │ │ │ ├── HomeFragment.kt │ │ │ │ ├── HomeViewModel.kt │ │ │ │ └── binder │ │ │ │ │ ├── HomeBannerBinder.kt │ │ │ │ │ ├── HomeCalendarBinder.kt │ │ │ │ │ └── HomeCardBinder.kt │ │ │ ├── index │ │ │ │ ├── IndexAdapter.kt │ │ │ │ ├── IndexFragment.kt │ │ │ │ ├── IndexViewModel.kt │ │ │ │ ├── binder │ │ │ │ │ ├── IndexGridBinder.kt │ │ │ │ │ ├── IndexItemBinder.kt │ │ │ │ │ └── IndexTitleBinder.kt │ │ │ │ ├── detail │ │ │ │ │ ├── IndexDetailActivity.kt │ │ │ │ │ ├── IndexDetailAdapter.kt │ │ │ │ │ ├── IndexDetailViewModel.kt │ │ │ │ │ └── page │ │ │ │ │ │ ├── IndexAttachAdapter.kt │ │ │ │ │ │ ├── IndexAttachFragment.kt │ │ │ │ │ │ └── IndexAttachViewModel.kt │ │ │ │ └── list │ │ │ │ │ ├── IndexListActivity.kt │ │ │ │ │ ├── IndexListAdapter.kt │ │ │ │ │ └── IndexListViewModel.kt │ │ │ ├── mono │ │ │ │ ├── MonoAdapter.kt │ │ │ │ ├── MonoFragment.kt │ │ │ │ ├── MonoViewModel.kt │ │ │ │ ├── binder │ │ │ │ │ ├── MonoGridBinder.kt │ │ │ │ │ └── MonoHeaderBinder.kt │ │ │ │ └── list │ │ │ │ │ ├── MonoListActivity.kt │ │ │ │ │ ├── MonoListAdapter.kt │ │ │ │ │ └── MonoListViewModel.kt │ │ │ └── wiki │ │ │ │ ├── WikiFragment.kt │ │ │ │ └── WikiViewModel.kt │ │ │ ├── feature │ │ │ ├── almanac │ │ │ │ ├── AlmanacActivity.kt │ │ │ │ ├── AlmanacAdapter.kt │ │ │ │ └── AlmanacViewModel.kt │ │ │ ├── empty │ │ │ │ ├── EmptyFragment.kt │ │ │ │ └── EmptyViewModel.kt │ │ │ ├── floater │ │ │ │ ├── FloatingKt.kt │ │ │ │ ├── FloatingPermission.java │ │ │ │ └── FloatingWindowManger.kt │ │ │ ├── friendly │ │ │ │ ├── FriendRankImportActivity.kt │ │ │ │ ├── FriendRankImportViewModel.kt │ │ │ │ └── rank │ │ │ │ │ ├── FriendRankDetailActivity.kt │ │ │ │ │ ├── FriendRankDetailAdapter.kt │ │ │ │ │ └── FriendRankDetailViewModel.kt │ │ │ ├── magi │ │ │ │ ├── MagiActivity.kt │ │ │ │ ├── MagiAdapter.kt │ │ │ │ ├── MagiViewModel.kt │ │ │ │ ├── history │ │ │ │ │ ├── MagiHistoryAdapter.kt │ │ │ │ │ ├── MagiHistoryFragment.kt │ │ │ │ │ └── MagiHistoryViewModel.kt │ │ │ │ ├── question │ │ │ │ │ ├── MagiQuestionAdapter.kt │ │ │ │ │ ├── MagiQuestionDialog.kt │ │ │ │ │ ├── MagiQuestionFragment.kt │ │ │ │ │ └── MagiQuestionViewModel.kt │ │ │ │ └── rank │ │ │ │ │ ├── MagiRankAdapter.kt │ │ │ │ │ ├── MagiRankFragment.kt │ │ │ │ │ ├── MagiRankViewModel.kt │ │ │ │ │ └── binder │ │ │ │ │ ├── MagiRankHeaderBinder.kt │ │ │ │ │ └── MagiRankItemBinder.kt │ │ │ ├── message │ │ │ │ ├── MessageActivity.kt │ │ │ │ ├── MessageAdapter.kt │ │ │ │ ├── MessageViewModel.kt │ │ │ │ └── detail │ │ │ │ │ ├── MessageDetailActivity.kt │ │ │ │ │ ├── MessageDetailAdapter.kt │ │ │ │ │ └── MessageDetailViewModel.kt │ │ │ ├── musmme │ │ │ │ ├── MusumeActivity.kt │ │ │ │ ├── MusumeFloater.kt │ │ │ │ └── MusumeViewModel.kt │ │ │ ├── notify │ │ │ │ ├── NotifyActivity.kt │ │ │ │ ├── NotifyAdapter.kt │ │ │ │ └── NotifyViewModel.kt │ │ │ ├── person │ │ │ │ ├── PersonActivity.kt │ │ │ │ ├── PersonAdapter.kt │ │ │ │ ├── PersonViewModel.kt │ │ │ │ ├── character │ │ │ │ │ ├── PersonCharacterAdapter.kt │ │ │ │ │ ├── PersonCharacterFragment.kt │ │ │ │ │ └── PersonCharacterViewModel.kt │ │ │ │ ├── collect │ │ │ │ │ ├── PersonCollectAdapter.kt │ │ │ │ │ ├── PersonCollectFragment.kt │ │ │ │ │ └── PersonCollectViewModel.kt │ │ │ │ ├── cooperate │ │ │ │ │ ├── PersonCooperateAdapter.kt │ │ │ │ │ ├── PersonCooperateFragment.kt │ │ │ │ │ └── PersonCooperateViewModel.kt │ │ │ │ ├── opus │ │ │ │ │ ├── PersonOpusAdapter.kt │ │ │ │ │ ├── PersonOpusFragment.kt │ │ │ │ │ └── PersonOpusViewModel.kt │ │ │ │ ├── overview │ │ │ │ │ ├── PersonOverviewAdapter.kt │ │ │ │ │ ├── PersonOverviewFragment.kt │ │ │ │ │ ├── PersonOverviewViewModel.kt │ │ │ │ │ └── binder │ │ │ │ │ │ ├── PersonOverviewCharacterBinder.kt │ │ │ │ │ │ ├── PersonOverviewGridBinder.kt │ │ │ │ │ │ ├── PersonOverviewOpusBinder.kt │ │ │ │ │ │ ├── PersonOverviewSummaryBinder.kt │ │ │ │ │ │ └── PersonOverviewVoiceBinder.kt │ │ │ │ └── picture │ │ │ │ │ ├── PersonPictureAdapter.kt │ │ │ │ │ ├── PersonPictureFragment.kt │ │ │ │ │ └── PersonPictureViewModel.kt │ │ │ ├── post │ │ │ │ ├── BasePostActivity.kt │ │ │ │ ├── BasePostViewModel.kt │ │ │ │ ├── blog │ │ │ │ │ ├── PostBlogActivity.kt │ │ │ │ │ └── PostBlogViewModel.kt │ │ │ │ ├── preview │ │ │ │ │ ├── PreviewBBCodeActivity.kt │ │ │ │ │ └── PreviewBBCodeViewModel.kt │ │ │ │ └── topic │ │ │ │ │ ├── PostTopicActivity.kt │ │ │ │ │ └── PostTopicViewModel.kt │ │ │ ├── preview │ │ │ │ └── image │ │ │ │ │ ├── PreviewImageActivity.kt │ │ │ │ │ ├── PreviewImageAdapter.kt │ │ │ │ │ ├── PreviewImageViewModel.kt │ │ │ │ │ └── page │ │ │ │ │ ├── PreviewPageFragment.kt │ │ │ │ │ └── PreviewPageViewModel.kt │ │ │ ├── schedule │ │ │ │ ├── ScheduleActivity.kt │ │ │ │ ├── ScheduleAdapter.kt │ │ │ │ ├── ScheduleViewModel.kt │ │ │ │ └── page │ │ │ │ │ ├── SchedulePageAdapter.kt │ │ │ │ │ ├── SchedulePageFragment.kt │ │ │ │ │ └── SchedulePageViewModel.kt │ │ │ ├── scheme │ │ │ │ └── SchemeActivity.kt │ │ │ ├── search │ │ │ │ ├── SearchActivity.kt │ │ │ │ ├── SearchAdapter.kt │ │ │ │ ├── SearchViewModel.kt │ │ │ │ └── detail │ │ │ │ │ ├── SearchDetailActivity.kt │ │ │ │ │ ├── SearchDetailAdapter.kt │ │ │ │ │ ├── SearchDetailViewModel.kt │ │ │ │ │ └── page │ │ │ │ │ ├── SearchDetailKt.kt │ │ │ │ │ ├── index │ │ │ │ │ ├── SearchIndexAdapter.kt │ │ │ │ │ ├── SearchIndexFragment.kt │ │ │ │ │ └── SearchIndexViewModel.kt │ │ │ │ │ ├── media │ │ │ │ │ ├── SearchMediaAdapter.kt │ │ │ │ │ ├── SearchMediaFragment.kt │ │ │ │ │ └── SearchMediaViewModel.kt │ │ │ │ │ ├── tag │ │ │ │ │ ├── SearchTagAdapter.kt │ │ │ │ │ ├── SearchTagFragment.kt │ │ │ │ │ └── SearchTagViewModel.kt │ │ │ │ │ └── topic │ │ │ │ │ ├── SearchTopicAdapter.kt │ │ │ │ │ ├── SearchTopicFragment.kt │ │ │ │ │ └── SearchTopicViewModel.kt │ │ │ ├── setting │ │ │ │ ├── SettingActivity.kt │ │ │ │ ├── SettingViewModel.kt │ │ │ │ ├── block │ │ │ │ │ ├── BlockActivity.kt │ │ │ │ │ ├── BlockAdapter.kt │ │ │ │ │ └── BlockViewModel.kt │ │ │ │ ├── network │ │ │ │ │ ├── NetworkConfigActivity.kt │ │ │ │ │ └── NetworkConfigViewModel.kt │ │ │ │ ├── privacy │ │ │ │ │ ├── PrivacyActivity.kt │ │ │ │ │ ├── PrivacyAdapter.kt │ │ │ │ │ └── PrivacyViewModel.kt │ │ │ │ ├── robot │ │ │ │ │ └── RobotConfigActivity.kt │ │ │ │ ├── tab │ │ │ │ │ └── TabConfigActivity.kt │ │ │ │ ├── translate │ │ │ │ │ └── TranslateConfigActivity.kt │ │ │ │ └── ui │ │ │ │ │ └── UiConfigActivity.kt │ │ │ ├── sign │ │ │ │ ├── in │ │ │ │ │ ├── SignInActivity.kt │ │ │ │ │ └── SignInViewModel.kt │ │ │ │ └── up │ │ │ │ │ ├── SignUpActionActivity.kt │ │ │ │ │ ├── SignUpActivity.kt │ │ │ │ │ ├── SignUpViewModel.kt │ │ │ │ │ └── verify │ │ │ │ │ ├── SignUpVerifyActivity.kt │ │ │ │ │ └── SignUpVerifyViewModel.kt │ │ │ ├── summary │ │ │ │ ├── SummaryActivity.kt │ │ │ │ └── SummaryViewModel.kt │ │ │ ├── tag │ │ │ │ ├── TagDetailActivity.kt │ │ │ │ └── TagDetailViewModel.kt │ │ │ ├── topic │ │ │ │ ├── TopicActivity.kt │ │ │ │ └── TopicViewModel.kt │ │ │ ├── user │ │ │ │ ├── UserActivity.kt │ │ │ │ ├── UserAdapter.kt │ │ │ │ ├── UserViewModel.kt │ │ │ │ ├── bg │ │ │ │ │ ├── ConfigBgActivity.kt │ │ │ │ │ ├── ConfigBgAdapter.kt │ │ │ │ │ └── ConfigBgViewModel.kt │ │ │ │ ├── blog │ │ │ │ │ └── UserBlogActivity.kt │ │ │ │ ├── chart │ │ │ │ │ └── ChartFragment.kt │ │ │ │ ├── mono │ │ │ │ │ └── UserMonoActivity.kt │ │ │ │ ├── overview │ │ │ │ │ ├── UserOverviewAdapter.kt │ │ │ │ │ └── UserOverviewFragment.kt │ │ │ │ └── sign │ │ │ │ │ └── SignFragment.kt │ │ │ ├── web │ │ │ │ └── WebActivity.kt │ │ │ └── yuc │ │ │ │ ├── YucActivity.kt │ │ │ │ ├── YucAdapter.kt │ │ │ │ ├── YucViewModel.kt │ │ │ │ └── detail │ │ │ │ ├── YucDetailActivity.kt │ │ │ │ ├── YucDetailAdapter.kt │ │ │ │ └── YucDetailViewModel.kt │ │ │ ├── media │ │ │ ├── MediaAdapter.kt │ │ │ ├── MediaFragment.kt │ │ │ ├── MediaViewModel.kt │ │ │ ├── action │ │ │ │ ├── MediaEpActionDialog.kt │ │ │ │ ├── MediaIndexActionDialog.kt │ │ │ │ └── MediaSaveActionDialog.kt │ │ │ ├── detail │ │ │ │ ├── MediaDetailActivity.kt │ │ │ │ ├── MediaDetailAdapter.kt │ │ │ │ ├── MediaDetailViewModel.kt │ │ │ │ ├── board │ │ │ │ │ ├── MediaBoardAdapter.kt │ │ │ │ │ ├── MediaBoardFragment.kt │ │ │ │ │ └── MediaBoardViewModel.kt │ │ │ │ ├── chapter │ │ │ │ │ ├── MediaChapterAdapter.kt │ │ │ │ │ ├── MediaChapterFragment.kt │ │ │ │ │ └── MediaChapterViewModel.kt │ │ │ │ ├── character │ │ │ │ │ ├── MediaCharacterAdapter.kt │ │ │ │ │ ├── MediaCharacterFragment.kt │ │ │ │ │ └── MediaCharacterViewModel.kt │ │ │ │ ├── chart │ │ │ │ │ ├── MediaChartFragment.kt │ │ │ │ │ └── MediaChartViewModel.kt │ │ │ │ ├── comments │ │ │ │ │ ├── MediaCommentAdapter.kt │ │ │ │ │ ├── MediaCommentFragment.kt │ │ │ │ │ └── MediaCommentViewModel.kt │ │ │ │ ├── maker │ │ │ │ │ ├── MediaMakerAdapter.kt │ │ │ │ │ ├── MediaMakerFragment.kt │ │ │ │ │ └── MediaMakerViewModel.kt │ │ │ │ ├── overview │ │ │ │ │ ├── OverviewAdapter.kt │ │ │ │ │ ├── OverviewFragment.kt │ │ │ │ │ ├── OverviewViewModel.kt │ │ │ │ │ └── binder │ │ │ │ │ │ ├── OverviewBookBinder.kt │ │ │ │ │ │ ├── OverviewCharacterBinder.kt │ │ │ │ │ │ ├── OverviewCommentBinder.kt │ │ │ │ │ │ ├── OverviewEpBinder.kt │ │ │ │ │ │ ├── OverviewGridBinder.kt │ │ │ │ │ │ ├── OverviewPreviewBinder.kt │ │ │ │ │ │ ├── OverviewRatingBinder.kt │ │ │ │ │ │ ├── OverviewRelativeBinder.kt │ │ │ │ │ │ ├── OverviewSaveBinder.kt │ │ │ │ │ │ ├── OverviewSummaryBinder.kt │ │ │ │ │ │ ├── OverviewTagBinder.kt │ │ │ │ │ │ └── OverviewTourBinder.kt │ │ │ │ ├── preview │ │ │ │ │ ├── MediaPreviewActivity.kt │ │ │ │ │ ├── MediaPreviewAdapter.kt │ │ │ │ │ └── MediaPreviewViewModel.kt │ │ │ │ ├── review │ │ │ │ │ ├── MediaReviewAdapter.kt │ │ │ │ │ ├── MediaReviewFragment.kt │ │ │ │ │ └── MediaReviewViewModel.kt │ │ │ │ ├── score │ │ │ │ │ ├── MediaScoreActivity.kt │ │ │ │ │ ├── MediaScoreAdapter.kt │ │ │ │ │ ├── MediaScoreViewModel.kt │ │ │ │ │ └── page │ │ │ │ │ │ ├── MediaScorePageAdapter.kt │ │ │ │ │ │ ├── MediaScorePageFragment.kt │ │ │ │ │ │ └── MediaScorePageViewModel.kt │ │ │ │ └── state │ │ │ │ │ ├── MediaStateFragment.kt │ │ │ │ │ └── MediaStateViewModel.kt │ │ │ ├── option │ │ │ │ ├── MediaOptionAdapter.kt │ │ │ │ ├── MediaOptionFragment.kt │ │ │ │ └── MediaOptionViewModel.kt │ │ │ └── type │ │ │ │ ├── MediaPageAdapter.kt │ │ │ │ ├── MediaPageFragment.kt │ │ │ │ └── MediaPageViewModel.kt │ │ │ ├── process │ │ │ ├── ProcessAdapter.kt │ │ │ ├── ProcessFragment.kt │ │ │ ├── ProcessViewModel.kt │ │ │ └── page │ │ │ │ ├── ProcessPageAdapter.kt │ │ │ │ ├── ProcessPageFragment.kt │ │ │ │ └── ProcessPageViewModel.kt │ │ │ ├── profile │ │ │ ├── ProfileAdapter.kt │ │ │ ├── ProfileFragment.kt │ │ │ ├── ProfileViewModel.kt │ │ │ ├── edit │ │ │ │ ├── EditProfileActivity.kt │ │ │ │ ├── EditProfileAdapter.kt │ │ │ │ └── EditProfileViewModel.kt │ │ │ └── page │ │ │ │ ├── friend │ │ │ │ ├── UserFriendAdapter.kt │ │ │ │ ├── UserFriendFragment.kt │ │ │ │ └── UserFriendViewModel.kt │ │ │ │ ├── group │ │ │ │ └── UserGroupFragment.kt │ │ │ │ ├── index │ │ │ │ └── UserIndexFragment.kt │ │ │ │ └── save │ │ │ │ ├── SaveListAdapter.kt │ │ │ │ ├── SaveListFragment.kt │ │ │ │ └── SaveListViewModel.kt │ │ │ ├── rakuen │ │ │ ├── RakuenAdapter.kt │ │ │ ├── RakuenFragment.kt │ │ │ ├── RakuenViewModel.kt │ │ │ └── page │ │ │ │ ├── RakuenPageAdapter.kt │ │ │ │ ├── RakuenPageFragment.kt │ │ │ │ └── RakuenPageViewModel.kt │ │ │ └── timeline │ │ │ ├── TimelineAdapter.kt │ │ │ ├── TimelineFragment.kt │ │ │ ├── TimelineViewModel.kt │ │ │ ├── detail │ │ │ ├── TimelineDetailActivity.kt │ │ │ ├── TimelineDetailAdapter.kt │ │ │ └── TimelineDetailViewModel.kt │ │ │ └── page │ │ │ ├── TimelinePageAdapter.kt │ │ │ ├── TimelinePageFragment.kt │ │ │ └── TimelinePageViewModel.kt │ └── res │ │ ├── layout │ │ ├── activity_almanac_item.xml │ │ ├── activity_anime_gallery.xml │ │ ├── activity_anime_gallery_item.xml │ │ ├── activity_anime_pictures.xml │ │ ├── activity_block_item.xml │ │ ├── activity_blog.xml │ │ ├── activity_collection_item.xml │ │ ├── activity_detect_anime_result.xml │ │ ├── activity_detect_anime_result_item.xml │ │ ├── activity_detect_base.xml │ │ ├── activity_detect_character_result.xml │ │ ├── activity_detect_character_result_item.xml │ │ ├── activity_dollars_item.xml │ │ ├── activity_edit_profile.xml │ │ ├── activity_edit_profile_avatar.xml │ │ ├── activity_edit_profile_input.xml │ │ ├── activity_edit_profile_selector.xml │ │ ├── activity_empty_container.xml │ │ ├── activity_friend_rank.xml │ │ ├── activity_group_detail.xml │ │ ├── activity_group_detail_item.xml │ │ ├── activity_home.xml │ │ ├── activity_home_robot.xml │ │ ├── activity_index_detail.xml │ │ ├── activity_list.xml │ │ ├── activity_magi.xml │ │ ├── activity_magnet.xml │ │ ├── activity_magnet_api.xml │ │ ├── activity_magnet_item.xml │ │ ├── activity_main.xml │ │ ├── activity_media_detail.xml │ │ ├── activity_media_detail_header.xml │ │ ├── activity_media_preview_item.xml │ │ ├── activity_media_score.xml │ │ ├── activity_message_detail_input.xml │ │ ├── activity_message_detail_item.xml │ │ ├── activity_mikan_item.xml │ │ ├── activity_musume.xml │ │ ├── activity_notify_item.xml │ │ ├── activity_person.xml │ │ ├── activity_post_topic.xml │ │ ├── activity_preview.xml │ │ ├── activity_preview_bbcode.xml │ │ ├── activity_preview_page.xml │ │ ├── activity_privacy_item.xml │ │ ├── activity_schedule.xml │ │ ├── activity_scheme.xml │ │ ├── activity_search.xml │ │ ├── activity_search_bar.xml │ │ ├── activity_search_detail.xml │ │ ├── activity_search_detail_item.xml │ │ ├── activity_search_detail_tag.xml │ │ ├── activity_search_item.xml │ │ ├── activity_setting.xml │ │ ├── activity_setting_github.xml │ │ ├── activity_setting_robot.xml │ │ ├── activity_setting_tab.xml │ │ ├── activity_setting_translate.xml │ │ ├── activity_setting_ui.xml │ │ ├── activity_sign_in.xml │ │ ├── activity_sign_up.xml │ │ ├── activity_sign_up_action.xml │ │ ├── activity_sign_up_verify.xml │ │ ├── activity_subtitle_tool.xml │ │ ├── activity_summary.xml │ │ ├── activity_syncer.xml │ │ ├── activity_syncer_item.xml │ │ ├── activity_syncer_list_dialog.xml │ │ ├── activity_thunder.xml │ │ ├── activity_timeline_detail_header.xml │ │ ├── activity_timeline_detail_item.xml │ │ ├── activity_topic.xml │ │ ├── activity_torrent_info_item.xml │ │ ├── activity_torrent_info_nav.xml │ │ ├── activity_user.xml │ │ ├── activity_user_bg.xml │ │ ├── activity_user_bg_item.xml │ │ ├── activity_user_container.xml │ │ ├── activity_web.xml │ │ ├── activity_yuc.xml │ │ ├── activity_yuc_detail_item.xml │ │ ├── activity_yuc_item.xml │ │ ├── activity_yuc_item_bak.xml │ │ ├── fragment_blog.xml │ │ ├── fragment_blog_item.xml │ │ ├── fragment_discover.xml │ │ ├── fragment_discover_page.xml │ │ ├── fragment_empty.xml │ │ ├── fragment_friend.xml │ │ ├── fragment_group.xml │ │ ├── fragment_group_item.xml │ │ ├── fragment_group_topic.xml │ │ ├── fragment_group_topic_item.xml │ │ ├── fragment_home.xml │ │ ├── fragment_home_banner.xml │ │ ├── fragment_home_banner_feature.xml │ │ ├── fragment_home_banner_image.xml │ │ ├── fragment_home_calendar.xml │ │ ├── fragment_index_attach_item.xml │ │ ├── fragment_index_grid.xml │ │ ├── fragment_index_item.xml │ │ ├── fragment_list.xml │ │ ├── fragment_list_stub.xml │ │ ├── fragment_magi_history_item.xml │ │ ├── fragment_magi_question.xml │ │ ├── fragment_magi_question_item.xml │ │ ├── fragment_magi_question_last.xml │ │ ├── fragment_magi_rank.xml │ │ ├── fragment_media.xml │ │ ├── fragment_media_action.xml │ │ ├── fragment_media_action_ep.xml │ │ ├── fragment_media_action_index.xml │ │ ├── fragment_media_board_item.xml │ │ ├── fragment_media_chapter_item.xml │ │ ├── fragment_media_character_item.xml │ │ ├── fragment_media_chart.xml │ │ ├── fragment_media_comment_item.xml │ │ ├── fragment_media_maker_item.xml │ │ ├── fragment_media_option.xml │ │ ├── fragment_media_option_item.xml │ │ ├── fragment_media_option_title.xml │ │ ├── fragment_media_page.xml │ │ ├── fragment_media_page_item.xml │ │ ├── fragment_media_review_item.xml │ │ ├── fragment_media_score_item.xml │ │ ├── fragment_overview.xml │ │ ├── fragment_overview_book.xml │ │ ├── fragment_overview_book_item.xml │ │ ├── fragment_overview_character.xml │ │ ├── fragment_overview_character_item.xml │ │ ├── fragment_overview_comment.xml │ │ ├── fragment_overview_ep.xml │ │ ├── fragment_overview_ep_progress.xml │ │ ├── fragment_overview_preview.xml │ │ ├── fragment_overview_preview_item.xml │ │ ├── fragment_overview_rating.xml │ │ ├── fragment_overview_relative.xml │ │ ├── fragment_overview_relative_item.xml │ │ ├── fragment_overview_save.xml │ │ ├── fragment_overview_tag.xml │ │ ├── fragment_overview_tag_item.xml │ │ ├── fragment_overview_tour_item.xml │ │ ├── fragment_person_collect_item.xml │ │ ├── fragment_person_cooperate_item.xml │ │ ├── fragment_person_overview.xml │ │ ├── fragment_person_overview_grid.xml │ │ ├── fragment_person_overview_grid_item.xml │ │ ├── fragment_person_overview_list.xml │ │ ├── fragment_person_overview_list_character.xml │ │ ├── fragment_person_overview_list_opus.xml │ │ ├── fragment_person_overview_list_voice.xml │ │ ├── fragment_process.xml │ │ ├── fragment_process_item.xml │ │ ├── fragment_profile.xml │ │ ├── fragment_profile_page.xml │ │ ├── fragment_profile_page_item.xml │ │ ├── fragment_save_list_item.xml │ │ ├── fragment_schedule_page_item.xml │ │ ├── fragment_super.xml │ │ ├── fragment_super_page.xml │ │ ├── fragment_super_page_item.xml │ │ ├── fragment_thunder_dialog.xml │ │ ├── fragment_thunder_task_item.xml │ │ ├── fragment_timeline.xml │ │ ├── fragment_timeline_page.xml │ │ ├── fragment_timeline_page_grid.xml │ │ ├── fragment_timeline_page_media.xml │ │ ├── fragment_timeline_page_text.xml │ │ ├── fragment_user_chart.xml │ │ ├── fragment_user_friend_item.xml │ │ ├── fragment_user_overview.xml │ │ ├── fragment_user_overview_item.xml │ │ ├── fragment_user_overview_title.xml │ │ ├── fragment_user_sign.xml │ │ └── fragment_wiki.xml │ │ ├── menu │ │ └── bottom_nav_menu.xml │ │ ├── mipmap-anydpi-v26 │ │ ├── ic_launcher_0.xml │ │ ├── ic_launcher_0_round.xml │ │ ├── ic_launcher_1.xml │ │ ├── ic_launcher_1_round.xml │ │ ├── ic_launcher_2.xml │ │ └── ic_launcher_2_round.xml │ │ ├── mipmap-hdpi │ │ ├── ic_launcher_0_foreground.webp │ │ ├── ic_launcher_0_round.webp │ │ ├── ic_launcher_1_foreground.webp │ │ ├── ic_launcher_1_round.webp │ │ ├── ic_launcher_2_foreground.webp │ │ └── ic_launcher_2_round.webp │ │ ├── mipmap-mdpi │ │ ├── ic_launcher_0_foreground.webp │ │ ├── ic_launcher_0_round.webp │ │ ├── ic_launcher_1_foreground.webp │ │ ├── ic_launcher_1_round.webp │ │ ├── ic_launcher_2_foreground.webp │ │ └── ic_launcher_2_round.webp │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher_0_foreground.webp │ │ ├── ic_launcher_0_round.webp │ │ ├── ic_launcher_1_foreground.webp │ │ ├── ic_launcher_1_round.webp │ │ ├── ic_launcher_2_foreground.webp │ │ └── ic_launcher_2_round.webp │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher_0_foreground.webp │ │ ├── ic_launcher_0_round.webp │ │ ├── ic_launcher_1_foreground.webp │ │ ├── ic_launcher_1_round.webp │ │ ├── ic_launcher_2_foreground.webp │ │ └── ic_launcher_2_round.webp │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher_0_foreground.webp │ │ ├── ic_launcher_0_round.webp │ │ ├── ic_launcher_1_foreground.webp │ │ ├── ic_launcher_1_round.webp │ │ ├── ic_launcher_2_foreground.webp │ │ └── ic_launcher_2_round.webp │ │ ├── values-night │ │ └── themes.xml │ │ ├── values │ │ ├── colors.xml │ │ └── themes.xml │ │ └── xml │ │ ├── app_anime_calendar_widget_info.xml │ │ ├── app_backup_rules.xml │ │ └── app_data_extraction_rules.xml │ └── test │ └── java │ └── com │ └── xiaoyv │ └── bangumi │ └── ExampleUnitTest.kt ├── build.gradle.kts ├── gradle.properties ├── gradle ├── libs.versions.toml └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── keystore ├── bangumi.keystore ├── encryption_public_key.pem ├── key.sh ├── output.zip ├── pepk.jar └── why.keystore ├── lib-common ├── .gitignore ├── build.gradle.kts ├── consumer-rules.pro ├── proguard-rules.pro ├── schemas │ ├── com.xiaoyv.common.database.BgmDatabase │ │ ├── 2.json │ │ ├── 3.json │ │ ├── 4.json │ │ ├── 5.json │ │ └── 6.json │ └── com.xiaoyv.common.database.BgmDatabaseRemote │ │ ├── 2.json │ │ ├── 3.json │ │ ├── 4.json │ │ ├── 5.json │ │ └── 6.json └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── xiaoyv │ │ └── common │ │ ├── DouBanTest.kt │ │ ├── DoubanWebRequest.kt │ │ ├── ExampleInstrumentedTest.kt │ │ └── api │ │ └── SignHelper.kt │ ├── main │ ├── AndroidManifest.xml │ ├── assets │ │ ├── bangumi_musume_2d │ │ │ ├── bangumi_musume_2d.1024 │ │ │ │ └── texture_00.png │ │ │ ├── bangumi_musume_2d.cdi3.json │ │ │ ├── bangumi_musume_2d.moc3 │ │ │ ├── bangumi_musume_2d.model3.json │ │ │ ├── motion │ │ │ │ ├── anger.motion3.json │ │ │ │ ├── curious.motion3.json │ │ │ │ ├── doubt.motion3.json │ │ │ │ ├── idle.motion3.json │ │ │ │ ├── smile.motion3.json │ │ │ │ ├── sorrow.motion3.json │ │ │ │ ├── suprise.motion3.json │ │ │ │ └── think.motion3.json │ │ │ └── sounds │ │ │ │ ├── wave29.wav │ │ │ │ ├── wave30.wav │ │ │ │ ├── wave31.wav │ │ │ │ ├── wave32.wav │ │ │ │ ├── wave33.wav │ │ │ │ ├── wave34.wav │ │ │ │ ├── wave35.wav │ │ │ │ ├── wave36.wav │ │ │ │ ├── wave37.wav │ │ │ │ ├── wave38.wav │ │ │ │ ├── wave39.wav │ │ │ │ ├── wave40.wav │ │ │ │ ├── wave41.wav │ │ │ │ ├── wave42.wav │ │ │ │ ├── wave43.wav │ │ │ │ ├── wave44.wav │ │ │ │ ├── wave45.wav │ │ │ │ ├── wave46.wav │ │ │ │ ├── wave47.wav │ │ │ │ ├── wave48.wav │ │ │ │ ├── wave49.wav │ │ │ │ ├── wave50.wav │ │ │ │ ├── wave51.wav │ │ │ │ ├── wave52.wav │ │ │ │ ├── wave53.wav │ │ │ │ ├── wave54.wav │ │ │ │ ├── wave55.wav │ │ │ │ ├── wave56.wav │ │ │ │ ├── wave57.wav │ │ │ │ ├── wave58.wav │ │ │ │ ├── wave59.wav │ │ │ │ └── wave60.wav │ │ ├── config │ │ │ ├── media.js │ │ │ ├── media.options.json │ │ │ ├── mikan │ │ │ │ └── mikan.json │ │ │ └── smiles │ │ │ │ └── helper │ │ │ │ ├── download.sh │ │ │ │ ├── rename.sh │ │ │ │ └── url.txt │ │ ├── image │ │ │ ├── ic_donation.jpg │ │ │ └── info_only.jpg │ │ ├── js │ │ │ ├── dollars.js │ │ │ └── like.json │ │ └── lottie │ │ │ └── lottie_loading.json │ ├── java │ │ └── com │ │ │ └── xiaoyv │ │ │ └── common │ │ │ ├── MainApp.kt │ │ │ ├── api │ │ │ ├── BgmApiManager.kt │ │ │ ├── api │ │ │ │ ├── BgmJsonApi.kt │ │ │ │ └── BgmWebApi.kt │ │ │ ├── converter │ │ │ │ ├── WebDocumentConverter.kt │ │ │ │ └── WebHtmlConverter.kt │ │ │ ├── dns │ │ │ │ └── BgmDns.kt │ │ │ ├── exception │ │ │ │ ├── NeedConfigException.kt │ │ │ │ └── NeedLoginException.kt │ │ │ ├── interceptor │ │ │ │ ├── CommonInterceptor.kt │ │ │ │ ├── CookieInterceptor.kt │ │ │ │ ├── DouBanInterceptor.kt │ │ │ │ └── JsonAuthInterceptor.kt │ │ │ ├── parser │ │ │ │ ├── Parser.kt │ │ │ │ ├── entity │ │ │ │ │ ├── BgmMediaEntity.kt │ │ │ │ │ ├── BlockEntity.kt │ │ │ │ │ ├── BlogDetailEntity.kt │ │ │ │ │ ├── BlogEntity.kt │ │ │ │ │ ├── BrowserEntity.kt │ │ │ │ │ ├── CharacterEntity.kt │ │ │ │ │ ├── CommentFormEntity.kt │ │ │ │ │ ├── CommentTreeEntity.kt │ │ │ │ │ ├── CreatePostEntity.kt │ │ │ │ │ ├── DollarsEntity.kt │ │ │ │ │ ├── FriendEntity.kt │ │ │ │ │ ├── GroupDetailEntity.kt │ │ │ │ │ ├── GroupIndexEntity.kt │ │ │ │ │ ├── HomeIndexBannerEntity.kt │ │ │ │ │ ├── HomeIndexCalendarEntity.kt │ │ │ │ │ ├── HomeIndexCardEntity.kt │ │ │ │ │ ├── HomeIndexEntity.kt │ │ │ │ │ ├── IndexAttachEntity.kt │ │ │ │ │ ├── IndexDetailEntity.kt │ │ │ │ │ ├── IndexEntity.kt │ │ │ │ │ ├── IndexItemEntity.kt │ │ │ │ │ ├── LikeEntity.kt │ │ │ │ │ ├── MagiQuestionEntity.kt │ │ │ │ │ ├── MagiRankEntity.kt │ │ │ │ │ ├── MediaBoardEntity.kt │ │ │ │ │ ├── MediaCharacterEntity.kt │ │ │ │ │ ├── MediaCollectForm.kt │ │ │ │ │ ├── MediaCommentEntity.kt │ │ │ │ │ ├── MediaDetailEntity.kt │ │ │ │ │ ├── MediaMakerEntity.kt │ │ │ │ │ ├── MediaReviewBlogEntity.kt │ │ │ │ │ ├── MediaScoreEntity.kt │ │ │ │ │ ├── MediaStatsEntity.kt │ │ │ │ │ ├── MessageCountEntity.kt │ │ │ │ │ ├── MessageEntity.kt │ │ │ │ │ ├── MikanEntity.kt │ │ │ │ │ ├── MonoEntity.kt │ │ │ │ │ ├── NotifyEntity.kt │ │ │ │ │ ├── PersonEntity.kt │ │ │ │ │ ├── PrivacyEntity.kt │ │ │ │ │ ├── ReportEntity.kt │ │ │ │ │ ├── SampleRelatedEntity.kt │ │ │ │ │ ├── SearchResultEntity.kt │ │ │ │ │ ├── SettingBaseEntity.kt │ │ │ │ │ ├── SignInFormEntity.kt │ │ │ │ │ ├── SignInResultEntity.kt │ │ │ │ │ ├── SignUpResultEntity.kt │ │ │ │ │ ├── SignUpVerifyEntity.kt │ │ │ │ │ ├── SuperTopicEntity.kt │ │ │ │ │ ├── TimelineDetailEntity.kt │ │ │ │ │ ├── TimelineEntity.kt │ │ │ │ │ ├── TimelineReplyEntity.kt │ │ │ │ │ ├── TopicDetailEntity.kt │ │ │ │ │ ├── TopicSampleEntity.kt │ │ │ │ │ └── UserDetailEntity.kt │ │ │ │ └── impl │ │ │ │ │ ├── BlockParser.kt │ │ │ │ │ ├── BlogParser.kt │ │ │ │ │ ├── BrowserParser.kt │ │ │ │ │ ├── CommentParser.kt │ │ │ │ │ ├── DollarsParser.kt │ │ │ │ │ ├── FriendParser.kt │ │ │ │ │ ├── GroupParser.kt │ │ │ │ │ ├── HomeParser.kt │ │ │ │ │ ├── IndexParser.kt │ │ │ │ │ ├── MagiParser.kt │ │ │ │ │ ├── MediaDetailParser.kt │ │ │ │ │ ├── MediaScoreParser.kt │ │ │ │ │ ├── MessageParser.kt │ │ │ │ │ ├── MikanParser.kt │ │ │ │ │ ├── MonoParser.kt │ │ │ │ │ ├── NotifyParser.kt │ │ │ │ │ ├── PersonParser.kt │ │ │ │ │ ├── ReportParser.kt │ │ │ │ │ ├── SearchParser.kt │ │ │ │ │ ├── SettingParser.kt │ │ │ │ │ ├── SignInParser.kt │ │ │ │ │ ├── SignUpParser.kt │ │ │ │ │ ├── SuperParser.kt │ │ │ │ │ ├── TagParser.kt │ │ │ │ │ ├── TimeParser.kt │ │ │ │ │ ├── TopicParser.kt │ │ │ │ │ └── UserParser.kt │ │ │ ├── request │ │ │ │ ├── CreateTokenParam.kt │ │ │ │ ├── EmojiParam.kt │ │ │ │ ├── EpCollectParam.kt │ │ │ │ ├── GithubUpdateParam.kt │ │ │ │ ├── MicrosoftTranslateParam.kt │ │ │ │ ├── SubjectCollectParam.kt │ │ │ │ └── SyncNameParam.kt │ │ │ └── response │ │ │ │ ├── AuthStatusEntity.kt │ │ │ │ ├── AuthTokenEntity.kt │ │ │ │ ├── BaiduTranslateEntity.kt │ │ │ │ ├── BgmStatusEntity.kt │ │ │ │ ├── GalleryEntity.kt │ │ │ │ ├── GithubActionEntity.kt │ │ │ │ ├── GithubContent.kt │ │ │ │ ├── GithubLatestEntity.kt │ │ │ │ ├── GithubPutEntity.kt │ │ │ │ ├── MediaJsonEntity.kt │ │ │ │ ├── MicrosoftJwtPayload.kt │ │ │ │ ├── MicrosoftTranslateEntity.kt │ │ │ │ ├── NotifyEntity.kt │ │ │ │ ├── ReplyResultEntity.kt │ │ │ │ ├── SearchApiIndexEntity.kt │ │ │ │ ├── SearchApiTopicEntity.kt │ │ │ │ ├── UploadResultEntity.kt │ │ │ │ ├── UserEntity.kt │ │ │ │ ├── anime │ │ │ │ ├── AnimeBilibiliEntity.kt │ │ │ │ ├── AnimeMagnetEntity.kt │ │ │ │ ├── AnimeMagnetTypeEntity.kt │ │ │ │ ├── AnimeMalSearchEntity.kt │ │ │ │ ├── AnimeSourceEntity.kt │ │ │ │ ├── AnimeSyncEntity.kt │ │ │ │ ├── AnimeTourEntity.kt │ │ │ │ ├── DetectCharacterEntity.kt │ │ │ │ ├── ImageBooruEntity.kt │ │ │ │ ├── ImageGalleryEntity.kt │ │ │ │ └── ListParcelableWrapEntity.kt │ │ │ │ ├── api │ │ │ │ ├── ApiCalendarEntity.kt │ │ │ │ ├── ApiCharacterEntity.kt │ │ │ │ ├── ApiCollectionEntity.kt │ │ │ │ ├── ApiEpisodeEntity.kt │ │ │ │ ├── ApiSubjectEntity.kt │ │ │ │ ├── ApiUserEntity.kt │ │ │ │ └── ApiUserEpEntity.kt │ │ │ │ ├── base │ │ │ │ ├── BaseListResponse.kt │ │ │ │ ├── BasePage.kt │ │ │ │ ├── BaseResponse.kt │ │ │ │ └── BgmActionResponse.kt │ │ │ │ └── douban │ │ │ │ ├── DouBanImageEntity.kt │ │ │ │ ├── DouBanInterestEntity.kt │ │ │ │ ├── DouBanPhotoEntity.kt │ │ │ │ ├── DouBanSearchEntity.kt │ │ │ │ └── DouBanSuggestEntity.kt │ │ │ ├── config │ │ │ ├── GlobalConfig.kt │ │ │ ├── annotation │ │ │ │ ├── BgmPathType.kt │ │ │ │ ├── BilibiliInterestType.kt │ │ │ │ ├── BilibiliMediaType.kt │ │ │ │ ├── BrowserSortType.kt │ │ │ │ ├── DiscoverType.kt │ │ │ │ ├── DouBanInterestType.kt │ │ │ │ ├── DouBanMediaType.kt │ │ │ │ ├── EpAbbrType.kt │ │ │ │ ├── EpCollectPathType.kt │ │ │ │ ├── EpCollectType.kt │ │ │ │ ├── FeatureType.kt │ │ │ │ ├── FormInputType.kt │ │ │ │ ├── IndexAttachCatType.kt │ │ │ │ ├── IndexTabCatType.kt │ │ │ │ ├── InterestCollectType.kt │ │ │ │ ├── InterestType.kt │ │ │ │ ├── LikeType.kt │ │ │ │ ├── LocalCollectionType.kt │ │ │ │ ├── MagiTabType.kt │ │ │ │ ├── MagiType.kt │ │ │ │ ├── MediaDetailType.kt │ │ │ │ ├── MediaType.kt │ │ │ │ ├── MessageBoxType.kt │ │ │ │ ├── MonoQuery.kt │ │ │ │ ├── PersonTabType.kt │ │ │ │ ├── PrivacyType.kt │ │ │ │ ├── ProfileType.kt │ │ │ │ ├── ReportType.kt │ │ │ │ ├── ScoreStarType.kt │ │ │ │ ├── SearchApiType.kt │ │ │ │ ├── SearchCatType.kt │ │ │ │ ├── SearchType.kt │ │ │ │ ├── SubjectCollectType.kt │ │ │ │ ├── SubjectType.kt │ │ │ │ ├── SubtitleActionType.kt │ │ │ │ ├── SuperType.kt │ │ │ │ ├── ThunderTabType.kt │ │ │ │ ├── TimelinePageType.kt │ │ │ │ ├── TimelineType.kt │ │ │ │ ├── TopicTimeType.kt │ │ │ │ ├── TopicType.kt │ │ │ │ └── UserCenterType.kt │ │ │ ├── bean │ │ │ │ ├── AdapterTypeItem.kt │ │ │ │ ├── AlmanacEntity.kt │ │ │ │ ├── FilterEntity.kt │ │ │ │ ├── HomeIndexFeature.kt │ │ │ │ ├── MediaOptionConfig.kt │ │ │ │ ├── PostAttach.kt │ │ │ │ ├── SampleImageEntity.kt │ │ │ │ ├── SearchItem.kt │ │ │ │ ├── SubtitleResult.kt │ │ │ │ ├── TaskInfoEntity.kt │ │ │ │ ├── TorrentInfoWrap.kt │ │ │ │ ├── WrapData.kt │ │ │ │ ├── YucSectionEntity.kt │ │ │ │ └── tab │ │ │ │ │ ├── DiscoverTab.kt │ │ │ │ │ ├── HomeBottomTab.kt │ │ │ │ │ ├── IndexDetailAttachTab.kt │ │ │ │ │ ├── MagiTab.kt │ │ │ │ │ ├── MediaDetailTab.kt │ │ │ │ │ ├── MediaScoreTab.kt │ │ │ │ │ ├── MediaTab.kt │ │ │ │ │ ├── PersonTab.kt │ │ │ │ │ ├── ProcessTab.kt │ │ │ │ │ ├── ProfileTab.kt │ │ │ │ │ ├── SearchTab.kt │ │ │ │ │ ├── SuperTopicTab.kt │ │ │ │ │ ├── ThunderTab.kt │ │ │ │ │ ├── TimelineTab.kt │ │ │ │ │ └── UserCenterTab.kt │ │ │ └── glide │ │ │ │ ├── OkHttpProgressGlideModule.kt │ │ │ │ ├── ProgressTarget.kt │ │ │ │ └── WrappingTarget.kt │ │ │ ├── database │ │ │ ├── BgmDatabase.kt │ │ │ ├── BgmDatabaseManager.kt │ │ │ ├── BgmDatabaseRemote.kt │ │ │ ├── collection │ │ │ │ ├── Collection.kt │ │ │ │ └── CollectionDao.kt │ │ │ ├── friendly │ │ │ │ ├── FriendlyRank.kt │ │ │ │ ├── FriendlyRankDao.kt │ │ │ │ └── FriendlyStatus.kt │ │ │ └── subject │ │ │ │ ├── SubjectItem.kt │ │ │ │ └── SubjectItemDao.kt │ │ │ ├── helper │ │ │ ├── ActionHelper.kt │ │ │ ├── AudioPlayer.kt │ │ │ ├── BBCodeHelper.kt │ │ │ ├── CacheHelper.kt │ │ │ ├── CollectionHelper.kt │ │ │ ├── CommentPaginationHelper.kt │ │ │ ├── CommentTreeAdapter.kt │ │ │ ├── ConfigHelper.kt │ │ │ ├── FixHelper.kt │ │ │ ├── FullQueryHelper.kt │ │ │ ├── H5PreLoadHelper.kt │ │ │ ├── ImageHelper.kt │ │ │ ├── ImageProcessor.kt │ │ │ ├── MenuHelper.kt │ │ │ ├── MiKanHelper.kt │ │ │ ├── NotifyHelper.kt │ │ │ ├── PositionCropTransformation.kt │ │ │ ├── ReflectHelper.kt │ │ │ ├── SegmentHelper.kt │ │ │ ├── SpConfig.kt │ │ │ ├── SyncerHelper.kt │ │ │ ├── UpdateHelper.kt │ │ │ ├── UserHelper.kt │ │ │ ├── UserTokenHelper.kt │ │ │ ├── VolumeButtonHelper.kt │ │ │ ├── blur │ │ │ │ ├── BlurTransformation.java │ │ │ │ └── FastBlur.java │ │ │ ├── callback │ │ │ │ ├── AutoHideTitleListener.kt │ │ │ │ ├── IdDiffItemCallback.kt │ │ │ │ ├── InterceptTouchListener.kt │ │ │ │ ├── RecyclerItemTouchedListener.kt │ │ │ │ ├── SimpleTabSelectedListener.kt │ │ │ │ ├── SubsamplingEventListener.kt │ │ │ │ ├── SubsamplingTarget.kt │ │ │ │ └── ThemeActivityLifecycleCallback.kt │ │ │ ├── theme │ │ │ │ ├── ThemeHelper.kt │ │ │ │ └── ThemeType.kt │ │ │ └── work │ │ │ │ └── IdleWorker.kt │ │ │ ├── kts │ │ │ ├── AdapterKt.kt │ │ │ ├── AnimeKt.kt │ │ │ ├── BitmapKt.kt │ │ │ ├── BottomNavViewKt.kt │ │ │ ├── CommonKt.kt │ │ │ ├── ContextKt.kt │ │ │ ├── DateKt.kt │ │ │ ├── DialogKts.kt │ │ │ ├── FileExtensionKts.kt │ │ │ ├── FitSystemKt.kt │ │ │ ├── HttpKts.kt │ │ │ ├── ImageViewKt.kt │ │ │ ├── LayzKt.kt │ │ │ ├── LiveDataKt.kt │ │ │ ├── LogKt.kt │ │ │ ├── PermissionKt.kt │ │ │ ├── RegexKt.kt │ │ │ ├── SnackKts.kt │ │ │ ├── StringKt.kt │ │ │ ├── TextViewKt.kt │ │ │ ├── ToolbarKt.kt │ │ │ └── UriKt.kt │ │ │ └── widget │ │ │ ├── appbar │ │ │ ├── AnimeAppBarLayout.kt │ │ │ ├── AnimeCollapsingToolbarLayout.kt │ │ │ └── AnimeToolbar.kt │ │ │ ├── button │ │ │ └── AnimeButton.kt │ │ │ ├── card │ │ │ └── HomeCardView.kt │ │ │ ├── decoration │ │ │ └── GridItemDecoration.java │ │ │ ├── dialog │ │ │ ├── AnimeLoadingDialog.kt │ │ │ ├── AnimeReportDialog.kt │ │ │ └── filter │ │ │ │ ├── FilterHeaderAdapter.kt │ │ │ │ └── FilterOptionDialog.kt │ │ │ ├── emoji │ │ │ ├── UiFaceManager.kt │ │ │ ├── edit │ │ │ │ ├── UiFaceCache.kt │ │ │ │ ├── UiFaceEditView.kt │ │ │ │ └── UiFaceTextView.kt │ │ │ ├── format │ │ │ │ └── FormatGridView.kt │ │ │ ├── grid │ │ │ │ ├── UiFaceGridView.kt │ │ │ │ └── UiFacePanel.kt │ │ │ └── span │ │ │ │ ├── IUiFaceTouchSpan.kt │ │ │ │ ├── UiFaceEditSpan.kt │ │ │ │ └── UiFaceTouchSpan.kt │ │ │ ├── grid │ │ │ ├── EpGridHelper.kt │ │ │ ├── EpGridHorItemAdapter.kt │ │ │ ├── EpGridVerItemAdapter.kt │ │ │ └── EpGridView.kt │ │ │ ├── image │ │ │ ├── AnimeGridImageView.kt │ │ │ ├── AnimeImageView.kt │ │ │ └── AnimeMikanImageView.kt │ │ │ ├── layout │ │ │ └── AnimeConstraintLayout.kt │ │ │ ├── menu │ │ │ ├── AnimeSectionView.kt │ │ │ └── SlideMenuView.kt │ │ │ ├── musume │ │ │ ├── LAppDefine.java │ │ │ ├── LAppDelegate.java │ │ │ ├── LAppLive2DManager.java │ │ │ ├── LAppModel.java │ │ │ ├── LAppMusumeView.kt │ │ │ ├── LAppPal.java │ │ │ ├── LAppSprite.java │ │ │ ├── LAppTextureManager.java │ │ │ ├── LAppView.java │ │ │ ├── LAppWavFileHandler.kt │ │ │ └── TouchManager.java │ │ │ ├── progress │ │ │ └── AnimeEpProgressView.kt │ │ │ ├── reply │ │ │ ├── ReplyCommentDialog.kt │ │ │ └── ReplyCommentViewModel.kt │ │ │ ├── scroll │ │ │ ├── AnimeLinearLayoutManager.kt │ │ │ ├── AnimeNestedScrollView.kt │ │ │ └── AnimeRecyclerView.kt │ │ │ ├── setting │ │ │ ├── DashedLineView.kt │ │ │ ├── SearchOptionView.kt │ │ │ └── SettingItemView.kt │ │ │ ├── star │ │ │ ├── AnimeLineChartViw.kt │ │ │ └── AnimeRatingBar.kt │ │ │ ├── state │ │ │ ├── AnimeChartTipView.kt │ │ │ ├── AnimeGridStateView.kt │ │ │ ├── AnimeStateView.kt │ │ │ └── AnimeSummaryView.kt │ │ │ ├── text │ │ │ ├── AnimeEditTextView.kt │ │ │ └── AnimeTextView.kt │ │ │ └── web │ │ │ ├── WebBase.kt │ │ │ ├── WebConfig.kt │ │ │ ├── WebEmojiListener.kt │ │ │ ├── WebResourceInterceptor.kt │ │ │ └── page │ │ │ ├── BBCodeView.kt │ │ │ ├── BlogView.kt │ │ │ └── TopicView.kt │ └── res │ │ ├── drawable-xxhdpi │ │ ├── bg_login.webp │ │ ├── bg_new_anime_autumn.jpg │ │ ├── bg_new_anime_spring.jpg │ │ ├── bg_new_anime_summer.jpg │ │ ├── bg_new_anime_winter.jpg │ │ ├── ic_balloon_pink.9.png │ │ ├── ic_emoji.png │ │ ├── ic_emoji_blank.webp │ │ ├── ic_logo_banner.png │ │ ├── segment_0.png │ │ ├── segment_1.png │ │ ├── segment_2.png │ │ ├── segment_3.png │ │ ├── segment_4.png │ │ ├── segment_5.png │ │ └── segment_6.png │ │ ├── drawable │ │ ├── ic_action_menu.xml │ │ ├── ic_add.xml │ │ ├── ic_add_circle.xml │ │ ├── ic_add_comment.xml │ │ ├── ic_add_friend.xml │ │ ├── ic_add_index.xml │ │ ├── ic_align_top.xml │ │ ├── ic_arrow_down.xml │ │ ├── ic_bookmark_add.xml │ │ ├── ic_bookmark_added.xml │ │ ├── ic_bottom_group.xml │ │ ├── ic_bottom_home.xml │ │ ├── ic_bottom_profile.xml │ │ ├── ic_bottom_rank.xml │ │ ├── ic_bottom_timeline.xml │ │ ├── ic_calendar.xml │ │ ├── ic_chat.xml │ │ ├── ic_close.xml │ │ ├── ic_collect_to.xml │ │ ├── ic_comment.xml │ │ ├── ic_comment_count.xml │ │ ├── ic_description.xml │ │ ├── ic_dollars.xml │ │ ├── ic_done.xml │ │ ├── ic_edit.xml │ │ ├── ic_email_new.xml │ │ ├── ic_email_normal.xml │ │ ├── ic_file.xml │ │ ├── ic_file_archive.xml │ │ ├── ic_file_audio.xml │ │ ├── ic_file_code.xml │ │ ├── ic_file_image.xml │ │ ├── ic_file_install.xml │ │ ├── ic_file_office.xml │ │ ├── ic_file_txt.xml │ │ ├── ic_file_video.xml │ │ ├── ic_filter.xml │ │ ├── ic_folder.xml │ │ ├── ic_format_bold.xml │ │ ├── ic_format_code.xml │ │ ├── ic_format_color.xml │ │ ├── ic_format_emoji.xml │ │ ├── ic_format_image.xml │ │ ├── ic_format_italic.xml │ │ ├── ic_format_keyboard.xml │ │ ├── ic_format_link.xml │ │ ├── ic_format_mask.xml │ │ ├── ic_format_quote.xml │ │ ├── ic_format_size.xml │ │ ├── ic_format_strikethrough.xml │ │ ├── ic_format_underlined.xml │ │ ├── ic_group_add.xml │ │ ├── ic_group_remove.xml │ │ ├── ic_help.xml │ │ ├── ic_history.xml │ │ ├── ic_icon.xml │ │ ├── ic_image_search.xml │ │ ├── ic_location.xml │ │ ├── ic_magi.xml │ │ ├── ic_manage_search.xml │ │ ├── ic_menu.xml │ │ ├── ic_new.xml │ │ ├── ic_notifications.xml │ │ ├── ic_original.xml │ │ ├── ic_person.xml │ │ ├── ic_person_search.xml │ │ ├── ic_play_round.xml │ │ ├── ic_post_add.xml │ │ ├── ic_preview.xml │ │ ├── ic_process.xml │ │ ├── ic_public.xml │ │ ├── ic_public_off.xml │ │ ├── ic_random.xml │ │ ├── ic_refresh.xml │ │ ├── ic_reply.xml │ │ ├── ic_review.xml │ │ ├── ic_right.xml │ │ ├── ic_round_star.xml │ │ ├── ic_rss.xml │ │ ├── ic_save.xml │ │ ├── ic_search.xml │ │ ├── ic_send.xml │ │ ├── ic_setting.xml │ │ ├── ic_show.xml │ │ ├── ic_star.xml │ │ ├── ic_star_empty.xml │ │ ├── ic_subtitles.xml │ │ ├── ic_sync_cloud.xml │ │ ├── ic_sync_problem.xml │ │ ├── ic_tag.xml │ │ ├── ic_thumb_up.xml │ │ ├── ic_time.xml │ │ ├── ic_timeline.xml │ │ ├── ic_translate.xml │ │ ├── ic_tv.xml │ │ ├── ic_undo.xml │ │ ├── ic_wiki.xml │ │ ├── layer_error.xml │ │ ├── layer_error_1x1.xml │ │ ├── layer_error_3x4.xml │ │ ├── selector_add.xml │ │ ├── selector_btn_advance.xml │ │ ├── selector_emoji.xml │ │ ├── selector_format_menu.xml │ │ ├── selector_format_menu_round.xml │ │ ├── shape_bottom_edge.xml │ │ ├── shape_bottom_edge_corner.xml │ │ ├── shape_circle.xml │ │ ├── shape_cover_mask.xml │ │ ├── shape_cursor.xml │ │ ├── shape_ep.xml │ │ ├── shape_full_corner.xml │ │ ├── shape_message.xml │ │ ├── shape_no.xml │ │ ├── shape_progress_vertical.xml │ │ ├── shape_rank.xml │ │ ├── shape_rank_start.xml │ │ ├── shape_state.xml │ │ └── shape_top_edge_corner.xml │ │ ├── layout │ │ ├── view_chart_grid_state.xml │ │ ├── view_chart_tip.xml │ │ ├── view_comment_chart.xml │ │ ├── view_comment_item.xml │ │ ├── view_comment_item_sub.xml │ │ ├── view_emoji.xml │ │ ├── view_emotion.xml │ │ ├── view_emotion_page.xml │ │ ├── view_emotion_page_item.xml │ │ ├── view_ep_hor_item.xml │ │ ├── view_ep_progress.xml │ │ ├── view_ep_ver_item.xml │ │ ├── view_filter.xml │ │ ├── view_filter_dialog.xml │ │ ├── view_filter_item.xml │ │ ├── view_filter_process.xml │ │ ├── view_format_item.xml │ │ ├── view_home_card.xml │ │ ├── view_home_card_item.xml │ │ ├── view_home_card_mask.xml │ │ ├── view_image_grid.xml │ │ ├── view_index_filter.xml │ │ ├── view_input_line_1.xml │ │ ├── view_input_line_2.xml │ │ ├── view_loading.xml │ │ ├── view_menu_slide.xml │ │ ├── view_option_item.xml │ │ ├── view_panel_emotion.xml │ │ ├── view_panel_more.xml │ │ ├── view_reply_dialog.xml │ │ ├── view_report.xml │ │ ├── view_save_list_filter.xml │ │ ├── view_search_api_filter.xml │ │ ├── view_search_media_filter.xml │ │ ├── view_search_tag_filter.xml │ │ ├── view_section.xml │ │ ├── view_setting_item.xml │ │ ├── view_state.xml │ │ ├── view_summary.xml │ │ ├── widget_anime_calendar.xml │ │ └── widget_anime_calendar_item.xml │ │ ├── values-night │ │ └── themes.xml │ │ └── values │ │ ├── arrays.xml │ │ ├── attrs.xml │ │ ├── colors-theme.xml │ │ ├── colors.xml │ │ ├── dimens.xml │ │ ├── ids.xml │ │ ├── styles-chart.xml │ │ ├── styles.xml │ │ └── themes.xml │ └── test │ └── java │ └── com │ └── xiaoyv │ └── common │ └── ExampleUnitTest.kt ├── lib-doc ├── .idea │ ├── .gitignore │ ├── modules.xml │ ├── runConfigurations │ │ └── Build_Bangumi_for_Android__xiaoyv_.xml │ └── vcs.xml ├── build │ ├── HelpTOC.json │ ├── Map.jhm │ ├── argument.html │ ├── author.html │ ├── config.json │ ├── current.help.version │ ├── download.html │ ├── home.html │ ├── images │ │ ├── completion_procedure.png │ │ ├── completion_procedure_dark.png │ │ ├── convert_table_to_xml.png │ │ ├── convert_table_to_xml_dark.png │ │ ├── new_topic_options.png │ │ └── new_topic_options_dark.png │ ├── index.html │ ├── overview.html │ ├── preview.html │ ├── privacy.html │ ├── question.html │ ├── starter.html │ └── update.html ├── c.list ├── cfg │ └── buildprofiles.xml ├── images │ ├── completion_procedure.png │ ├── completion_procedure_dark.png │ ├── convert_table_to_xml.png │ ├── convert_table_to_xml_dark.png │ ├── new_topic_options.png │ ├── new_topic_options_dark.png │ └── playstore_badge.png ├── redirection-rules.xml ├── topics │ ├── Argument.md │ ├── Author.md │ ├── Download.md │ ├── Home.md │ ├── Overview.md │ ├── Preview.md │ ├── Privacy.md │ ├── Question.md │ ├── Starter.md │ └── Update.md ├── v.list ├── writerside.cfg └── xiaoyv.tree ├── lib-emoji ├── .gitignore ├── build.gradle.kts ├── consumer-rules.pro ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── xiaoyv │ │ └── emoji │ │ └── ExampleInstrumentedTest.kt │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── com │ │ │ └── xiaoyv │ │ │ └── emoji │ │ │ └── BgmEmoji.kt │ └── res │ │ └── drawable │ │ ├── bgm_01.png │ │ ├── bgm_02.png │ │ ├── bgm_03.png │ │ ├── bgm_04.png │ │ ├── bgm_05.png │ │ ├── bgm_06.png │ │ ├── bgm_07.png │ │ ├── bgm_08.png │ │ ├── bgm_09.png │ │ ├── bgm_10.png │ │ ├── bgm_11.gif │ │ ├── bgm_12.png │ │ ├── bgm_13.png │ │ ├── bgm_14.png │ │ ├── bgm_15.png │ │ ├── bgm_16.png │ │ ├── bgm_17.png │ │ ├── bgm_18.png │ │ ├── bgm_19.png │ │ ├── bgm_20.png │ │ ├── bgm_21.png │ │ ├── bgm_22.png │ │ ├── bgm_23.gif │ │ ├── normal_1.gif │ │ ├── normal_10.gif │ │ ├── normal_11.gif │ │ ├── normal_12.gif │ │ ├── normal_13.gif │ │ ├── normal_14.gif │ │ ├── normal_15.gif │ │ ├── normal_16.gif │ │ ├── normal_2.gif │ │ ├── normal_3.gif │ │ ├── normal_4.gif │ │ ├── normal_5.gif │ │ ├── normal_6.gif │ │ ├── normal_7.gif │ │ ├── normal_8.gif │ │ ├── normal_9.gif │ │ ├── tv_01.gif │ │ ├── tv_02.gif │ │ ├── tv_03.gif │ │ ├── tv_04.gif │ │ ├── tv_05.gif │ │ ├── tv_06.gif │ │ ├── tv_07.gif │ │ ├── tv_08.gif │ │ ├── tv_09.gif │ │ ├── tv_10.gif │ │ ├── tv_100.gif │ │ ├── tv_101.gif │ │ ├── tv_102.gif │ │ ├── tv_11.gif │ │ ├── tv_12.gif │ │ ├── tv_13.gif │ │ ├── tv_14.gif │ │ ├── tv_15.gif │ │ ├── tv_16.gif │ │ ├── tv_17.gif │ │ ├── tv_18.gif │ │ ├── tv_19.gif │ │ ├── tv_20.gif │ │ ├── tv_21.gif │ │ ├── tv_22.gif │ │ ├── tv_23.gif │ │ ├── tv_24.gif │ │ ├── tv_25.gif │ │ ├── tv_26.gif │ │ ├── tv_27.gif │ │ ├── tv_28.gif │ │ ├── tv_29.gif │ │ ├── tv_30.gif │ │ ├── tv_31.gif │ │ ├── tv_32.gif │ │ ├── tv_33.gif │ │ ├── tv_34.gif │ │ ├── tv_35.gif │ │ ├── tv_36.gif │ │ ├── tv_37.gif │ │ ├── tv_38.gif │ │ ├── tv_39.gif │ │ ├── tv_40.gif │ │ ├── tv_41.gif │ │ ├── tv_42.gif │ │ ├── tv_43.gif │ │ ├── tv_44.gif │ │ ├── tv_45.gif │ │ ├── tv_46.gif │ │ ├── tv_47.gif │ │ ├── tv_48.gif │ │ ├── tv_49.gif │ │ ├── tv_50.gif │ │ ├── tv_51.gif │ │ ├── tv_52.gif │ │ ├── tv_53.gif │ │ ├── tv_54.gif │ │ ├── tv_55.gif │ │ ├── tv_56.gif │ │ ├── tv_57.gif │ │ ├── tv_58.gif │ │ ├── tv_59.gif │ │ ├── tv_60.gif │ │ ├── tv_61.gif │ │ ├── tv_62.gif │ │ ├── tv_63.gif │ │ ├── tv_64.gif │ │ ├── tv_65.gif │ │ ├── tv_66.gif │ │ ├── tv_67.gif │ │ ├── tv_68.gif │ │ ├── tv_69.gif │ │ ├── tv_70.gif │ │ ├── tv_71.gif │ │ ├── tv_72.gif │ │ ├── tv_73.gif │ │ ├── tv_74.gif │ │ ├── tv_75.gif │ │ ├── tv_76.gif │ │ ├── tv_77.gif │ │ ├── tv_78.gif │ │ ├── tv_79.gif │ │ ├── tv_80.gif │ │ ├── tv_81.gif │ │ ├── tv_82.gif │ │ ├── tv_83.gif │ │ ├── tv_84.gif │ │ ├── tv_85.gif │ │ ├── tv_86.gif │ │ ├── tv_87.gif │ │ ├── tv_88.gif │ │ ├── tv_89.gif │ │ ├── tv_90.gif │ │ ├── tv_91.gif │ │ ├── tv_92.gif │ │ ├── tv_93.gif │ │ ├── tv_94.gif │ │ ├── tv_95.gif │ │ ├── tv_96.gif │ │ ├── tv_97.gif │ │ ├── tv_98.gif │ │ └── tv_99.gif │ └── test │ └── java │ └── com │ └── xiaoyv │ └── emoji │ └── ExampleUnitTest.kt ├── lib-h5 ├── .gitignore ├── .vscode │ └── extensions.json ├── index.html ├── package-lock.json ├── package.json ├── public │ ├── favicon.ico │ ├── ic_holder.jpg │ ├── script │ │ ├── bangumi.js │ │ └── temp.html │ └── test.http ├── src │ ├── App.vue │ ├── assets │ │ ├── css │ │ │ └── light.css │ │ └── image │ │ │ ├── bg_bangumi.png │ │ │ ├── ic_like.svg │ │ │ └── ic_more.svg │ ├── components │ │ ├── BottomRobotView.vue │ │ ├── BottomSpinnerView.vue │ │ ├── CommentView.vue │ │ ├── EmojiView.vue │ │ ├── ImageView.vue │ │ └── RelativeItemView.vue │ ├── main.ts │ ├── pages │ │ ├── IndexView.vue │ │ ├── bbcode │ │ │ └── BBCodeView.vue │ │ ├── blog │ │ │ └── BlogView.vue │ │ └── topic │ │ │ └── TopicView.vue │ ├── router │ │ ├── index.ts │ │ └── routes.ts │ ├── style.scss │ ├── util │ │ ├── common.ts │ │ ├── dollars.css │ │ ├── dollars.js │ │ └── interface │ │ │ ├── BlogDetailEntity.ts │ │ │ ├── CommentFormEntity.ts │ │ │ ├── CommentReplyEntity.ts │ │ │ ├── CommentTreeEntity.ts │ │ │ ├── EmojiParam.ts │ │ │ ├── LikeActionEntity.ts │ │ │ ├── SampleRelateEntity.ts │ │ │ └── TopicDetailEntity.ts │ └── vite-env.d.ts ├── tsconfig.json ├── tsconfig.node.json └── vite.config.ts ├── lib-i18n ├── .gitignore ├── build.gradle.kts ├── consumer-rules.pro ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── xiaoyv │ │ └── bangumi │ │ └── i18n │ │ └── ExampleInstrumentedTest.kt │ ├── main │ ├── AndroidManifest.xml │ └── res │ │ ├── values-en │ │ └── strings.xml │ │ ├── values-ja │ │ └── strings.xml │ │ ├── values-zh-rTW │ │ └── strings.xml │ │ └── values │ │ └── strings.xml │ └── test │ └── java │ └── com │ └── xiaoyv │ └── bangumi │ └── i18n │ └── ExampleUnitTest.kt ├── lib-live2d ├── .gitignore ├── build.gradle.kts ├── libs │ └── Live2DCubismCore.aar ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── xiaoyv │ │ └── live │ │ └── ExampleInstrumentedTest.kt │ ├── main │ ├── AndroidManifest.xml │ └── java │ │ └── com │ │ └── live2d │ │ └── sdk │ │ └── cubism │ │ └── framework │ │ ├── CubismCdiJson.java │ │ ├── CubismDefaultParameterId.java │ │ ├── CubismFramework.java │ │ ├── CubismFrameworkConfig.java │ │ ├── CubismModelSettingJson.java │ │ ├── ICubismModelSetting.java │ │ ├── effect │ │ ├── CubismBreath.java │ │ ├── CubismEyeBlink.java │ │ ├── CubismPose.java │ │ └── package-info.java │ │ ├── exception │ │ ├── CubismException.java │ │ ├── CubismJsonParseException.java │ │ ├── CubismJsonRuntimeException.java │ │ ├── CubismJsonSyntaxErrorException.java │ │ ├── CubismRuntimeException.java │ │ └── package-info.java │ │ ├── id │ │ ├── CubismId.java │ │ ├── CubismIdManager.java │ │ └── package-info.java │ │ ├── math │ │ ├── CubismMath.java │ │ ├── CubismMatrix44.java │ │ ├── CubismModelMatrix.java │ │ ├── CubismTargetPoint.java │ │ ├── CubismVector2.java │ │ ├── CubismViewMatrix.java │ │ └── package-info.java │ │ ├── model │ │ ├── CubismMoc.java │ │ ├── CubismModel.java │ │ ├── CubismModelUserData.java │ │ ├── CubismModelUserDataJson.java │ │ ├── CubismUserModel.java │ │ └── package-info.java │ │ ├── motion │ │ ├── ACubismMotion.java │ │ ├── CubismExpressionMotion.java │ │ ├── CubismMotion.java │ │ ├── CubismMotionInternal.java │ │ ├── CubismMotionJson.java │ │ ├── CubismMotionManager.java │ │ ├── CubismMotionQueueEntry.java │ │ ├── CubismMotionQueueManager.java │ │ ├── ICubismMotionEventFunction.java │ │ ├── IFinishedMotionCallback.java │ │ └── package-info.java │ │ ├── physics │ │ ├── CubismPhysics.java │ │ ├── CubismPhysicsFunctions.java │ │ ├── CubismPhysicsInternal.java │ │ ├── CubismPhysicsJson.java │ │ └── package-info.java │ │ ├── rendering │ │ ├── CubismRenderer.java │ │ ├── android │ │ │ ├── CubismClippingContext.java │ │ │ ├── CubismClippingManagerAndroid.java │ │ │ ├── CubismDrawableInfoCachesHolder.java │ │ │ ├── CubismOffscreenSurfaceAndroid.java │ │ │ ├── CubismRendererAndroid.java │ │ │ ├── CubismRendererProfileAndroid.java │ │ │ ├── CubismShaderAndroid.java │ │ │ ├── CubismShaderPrograms.java │ │ │ └── package-info.java │ │ └── package-info.java │ │ ├── type │ │ └── csmRectF.java │ │ └── utils │ │ ├── CubismDebug.java │ │ ├── jsonparser │ │ ├── ACubismJsonValue.java │ │ ├── CubismJson.java │ │ ├── CubismJsonArray.java │ │ ├── CubismJsonBoolean.java │ │ ├── CubismJsonErrorValue.java │ │ ├── CubismJsonLexer.java │ │ ├── CubismJsonNullValue.java │ │ ├── CubismJsonNumber.java │ │ ├── CubismJsonObject.java │ │ ├── CubismJsonString.java │ │ ├── CubismJsonToken.java │ │ └── package-info.java │ │ └── package-info.java │ └── test │ └── java │ └── com │ └── xiaoyv │ └── live │ └── ExampleUnitTest.kt ├── lib-script ├── .gitignore ├── bgm │ ├── GroupTopic.db │ └── bgm-script.jar ├── build.gradle.kts ├── libs │ └── utils-1.1.jar └── src │ └── main │ └── java │ └── com │ └── xiaoyv │ └── script │ ├── BgmScript.kt │ ├── IndexScript.kt │ ├── Kts.kt │ ├── Main.kt │ ├── MiKan.kt │ ├── database │ ├── BgmScriptDataBase.kt │ └── dao │ │ ├── IndexDao.kt │ │ ├── RakuenDao.kt │ │ └── SubjectDao.kt │ ├── entity │ └── BgmScriptIndexEntity.kt │ ├── i18n │ └── LanguageScript.kt │ ├── mikan.json │ └── mikan_bak.json ├── lib-subtitle ├── .gitignore ├── build.gradle.kts ├── consumer-rules.pro ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── xiaoyv │ │ └── subtitle │ │ └── ExampleInstrumentedTest.kt │ ├── main │ ├── AndroidManifest.xml │ └── java │ │ └── com │ │ └── xiaoyv │ │ └── subtitle │ │ ├── api │ │ ├── SubmergeAPI.kt │ │ ├── TimedLinesAPI.kt │ │ ├── constant │ │ │ └── FontName.kt │ │ ├── parser │ │ │ ├── ASSParser.java │ │ │ ├── BaseParser.kt │ │ │ ├── ParserFactory.kt │ │ │ ├── SRTParser.kt │ │ │ ├── SubtitleParser.kt │ │ │ └── exception │ │ │ │ ├── InvalidAssSubException.kt │ │ │ │ ├── InvalidColorCode.kt │ │ │ │ ├── InvalidFileException.kt │ │ │ │ ├── InvalidSRTSubException.kt │ │ │ │ └── InvalidSubException.kt │ │ ├── subtitle │ │ │ ├── ass │ │ │ │ ├── ASSSub.java │ │ │ │ ├── ASSTime.java │ │ │ │ ├── Events.java │ │ │ │ ├── ScriptInfo.java │ │ │ │ └── V4Style.java │ │ │ ├── common │ │ │ │ ├── SubtitleLine.java │ │ │ │ ├── SubtitleTime.java │ │ │ │ ├── TimedLine.kt │ │ │ │ ├── TimedObject.kt │ │ │ │ └── TimedTextFile.kt │ │ │ ├── config │ │ │ │ ├── Font.kt │ │ │ │ └── SimpleSubConfig.kt │ │ │ └── srt │ │ │ │ ├── SRTLine.java │ │ │ │ ├── SRTSub.java │ │ │ │ └── SRTTime.java │ │ └── utils │ │ │ ├── ColorUtils.kt │ │ │ ├── ConversionUtils.kt │ │ │ ├── FileUtils.kt │ │ │ ├── IOUtils.kt │ │ │ ├── NumberUtils.kt │ │ │ ├── PropertyUtils.kt │ │ │ ├── StringUtils.kt │ │ │ └── icu │ │ │ └── text │ │ │ ├── CharsetDetector.java │ │ │ ├── CharsetMatch.java │ │ │ ├── CharsetRecog_2022.java │ │ │ ├── CharsetRecog_UTF8.java │ │ │ ├── CharsetRecog_Unicode.java │ │ │ ├── CharsetRecog_mbcs.java │ │ │ ├── CharsetRecog_sbcs.java │ │ │ └── CharsetRecognizer.java │ │ └── media │ │ ├── MediaSubtitleExtractor.kt │ │ └── entity │ │ └── FFProbeEntity.kt │ └── test │ └── java │ └── com │ └── xiaoyv │ └── subtitle │ └── ExampleUnitTest.kt ├── lib-thunder ├── .gitignore ├── build.gradle.kts ├── consumer-rules.pro ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── xiaoyv │ │ └── thunder │ │ └── ExampleInstrumentedTest.kt │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── com │ │ │ ├── xiaoyv │ │ │ └── thunder │ │ │ │ └── Thunder.kt │ │ │ └── xunlei │ │ │ ├── download │ │ │ ├── BlockingItem.java │ │ │ ├── Daemon.java │ │ │ ├── DownloadInfo.java │ │ │ ├── Downloads.kt │ │ │ ├── LinuxFileCommand.java │ │ │ └── XLTaskHelper.java │ │ │ └── downloadlib │ │ │ ├── XLDownloadManager.kt │ │ │ ├── XLLoader.java │ │ │ ├── android │ │ │ ├── XLLog.kt │ │ │ └── XLTool.kt │ │ │ └── parameter │ │ │ ├── BtIndexSet.kt │ │ │ ├── BtSubTaskDetail.kt │ │ │ ├── BtTaskParam.kt │ │ │ ├── BtTaskStatus.kt │ │ │ ├── CIDTaskParam.kt │ │ │ ├── DcdnPeerResParam.kt │ │ │ ├── EmuleTaskParam.kt │ │ │ ├── ErrorCodeToMsg.kt │ │ │ ├── GetBooleanParam.kt │ │ │ ├── GetDownloadHead.kt │ │ │ ├── GetDownloadLibVersion.kt │ │ │ ├── GetFileName.kt │ │ │ ├── GetTaskId.kt │ │ │ ├── HLSTaskParam.kt │ │ │ ├── InitParam.kt │ │ │ ├── MagnetTaskParam.kt │ │ │ ├── MaxDownloadSpeedParam.kt │ │ │ ├── P2spTaskParam.kt │ │ │ ├── PeerResourceParam.kt │ │ │ ├── ServerResourceParam.kt │ │ │ ├── SetIndexInfoParam.kt │ │ │ ├── ThunderUrlInfo.kt │ │ │ ├── TorrentFileInfo.kt │ │ │ ├── TorrentInfo.kt │ │ │ ├── UploadControlParam.kt │ │ │ ├── UploadInfo.kt │ │ │ ├── UrlQuickInfo.kt │ │ │ ├── XLConstant.kt │ │ │ ├── XLFirstMediaState.kt │ │ │ ├── XLPremiumResInfo.kt │ │ │ ├── XLProductInfo.kt │ │ │ ├── XLRangeInfo.kt │ │ │ ├── XLSessionInfo.kt │ │ │ ├── XLTaskInfo.kt │ │ │ ├── XLTaskInfoEx.kt │ │ │ └── XLTaskLocalUrl.kt │ └── jniLibs │ │ ├── arm64-v8a │ │ └── libthunder.so │ │ └── armeabi-v7a │ │ └── libthunder.so │ └── test │ └── java │ └── com │ └── xiaoyv │ └── thunder │ └── ExampleUnitTest.kt └── settings.gradle.kts /.gitattributes: -------------------------------------------------------------------------------- 1 | *.db filter=lfs diff=lfs merge=lfs -text 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/caches 5 | /.idea/libraries 6 | /.idea/modules.xml 7 | /.idea/workspace.xml 8 | /.idea/navEditor.xml 9 | /.idea/assetWizardSettings.xml 10 | .DS_Store 11 | /build 12 | /captures 13 | .externalNativeBuild 14 | .cxx 15 | local.properties 16 | /app/release/ 17 | -------------------------------------------------------------------------------- /.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # Default ignored files 2 | /shelf/ 3 | /workspace.xml 4 | -------------------------------------------------------------------------------- /.idea/codeStyles/codeStyleConfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | -------------------------------------------------------------------------------- /.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/deploymentTargetDropDown.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/kotlinc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | -------------------------------------------------------------------------------- /.idea/migrations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 10 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 10 | -------------------------------------------------------------------------------- /.idea/other.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | -------------------------------------------------------------------------------- /.idea/render.experimental.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.kotlin/errors/errors-1729322291665.log: -------------------------------------------------------------------------------- 1 | kotlin version: 2.0.20 2 | error message: The daemon has terminated unexpectedly on startup attempt #1 with error code: 0. The daemon process output: 3 | 1. Kotlin compile daemon is ready 4 | 5 | -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /app/src/main/assets/h5/assets/BBCodeView-ok635Qnb.css: -------------------------------------------------------------------------------- 1 | .bbcode[data-v-a57e7426]{width:100%;padding:16px;font-size:16px;display:flex;flex-direction:column;word-break:break-word} 2 | -------------------------------------------------------------------------------- /app/src/main/assets/h5/assets/IndexView-Gsg00Qd6.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./index-a_sggHWe.js";const n={};function r(c,t){return null}const o=e(n,[["render",r]]);export{o as default}; 2 | -------------------------------------------------------------------------------- /app/src/main/assets/h5/assets/bg_bangumi-zgoKjpW4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/app/src/main/assets/h5/assets/bg_bangumi-zgoKjpW4.png -------------------------------------------------------------------------------- /app/src/main/assets/h5/assets/light-xUZnlCGI.css: -------------------------------------------------------------------------------- 1 | :root{--primary-color: #A23662;--surface-color: #FFFBFF;--on-primary-color: #FFFFFF;--on-surface-color: #201A1B;--on-surface-variant-color: #514347;--surface-container-color: #eeeeee} 2 | -------------------------------------------------------------------------------- /app/src/main/assets/h5/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/app/src/main/assets/h5/favicon.ico -------------------------------------------------------------------------------- /app/src/main/assets/h5/ic_holder.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/app/src/main/assets/h5/ic_holder.jpg -------------------------------------------------------------------------------- /app/src/main/ic_launcher-playstore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/app/src/main/ic_launcher-playstore.png -------------------------------------------------------------------------------- /app/src/main/ic_launcher_1-playstore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/app/src/main/ic_launcher_1-playstore.png -------------------------------------------------------------------------------- /app/src/main/ic_launcher_2-playstore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/app/src/main/ic_launcher_2-playstore.png -------------------------------------------------------------------------------- /app/src/main/java/com/xiaoyv/bangumi/special/detect/ImageDetectViewModel.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.bangumi.special.detect 2 | 3 | import android.net.Uri 4 | import com.xiaoyv.blueprint.base.mvvm.normal.BaseViewModel 5 | import com.xiaoyv.common.widget.setting.SearchOptionView 6 | 7 | /** 8 | * ImageDetectViewModel 9 | * 10 | * @author why 11 | * @since 11/18/23 12 | */ 13 | abstract class ImageDetectViewModel : BaseViewModel() { 14 | open val searchOptions: List 15 | get() = emptyList() 16 | 17 | abstract fun onImageSelected(imageUri: Uri, selectedOptions: List) 18 | } -------------------------------------------------------------------------------- /app/src/main/java/com/xiaoyv/bangumi/ui/discover/wiki/WikiViewModel.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.bangumi.ui.discover.wiki 2 | 3 | import com.xiaoyv.blueprint.base.mvvm.normal.BaseViewModel 4 | 5 | /** 6 | * Class: [WikiViewModel] 7 | * 8 | * @author why 9 | * @since 11/24/23 10 | */ 11 | class WikiViewModel : BaseViewModel() -------------------------------------------------------------------------------- /app/src/main/java/com/xiaoyv/bangumi/ui/feature/empty/EmptyViewModel.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.bangumi.ui.feature.empty 2 | 3 | import com.xiaoyv.blueprint.base.mvvm.normal.BaseViewModel 4 | 5 | /** 6 | * Class: [EmptyViewModel] 7 | * 8 | * @author why 9 | * @since 11/24/23 10 | */ 11 | class EmptyViewModel : BaseViewModel() -------------------------------------------------------------------------------- /app/src/main/java/com/xiaoyv/bangumi/ui/feature/musmme/MusumeViewModel.kt: -------------------------------------------------------------------------------- 1 | @file:Suppress("SpellCheckingInspection") 2 | 3 | package com.xiaoyv.bangumi.ui.feature.musmme 4 | 5 | import com.xiaoyv.blueprint.base.mvvm.normal.BaseViewModel 6 | 7 | /** 8 | * Class: [MusumeViewModel] 9 | * 10 | * @author why 11 | * @since 11/25/23 12 | */ 13 | class MusumeViewModel : BaseViewModel() -------------------------------------------------------------------------------- /app/src/main/java/com/xiaoyv/bangumi/ui/feature/post/preview/PreviewBBCodeViewModel.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.bangumi.ui.feature.post.preview 2 | 3 | import com.xiaoyv.blueprint.base.mvvm.normal.BaseViewModel 4 | 5 | /** 6 | * Class: [PreviewBBCodeViewModel] 7 | * 8 | * @author why 9 | * @since 12/16/23 10 | */ 11 | class PreviewBBCodeViewModel : BaseViewModel() { 12 | var code: String = "" 13 | 14 | } -------------------------------------------------------------------------------- /app/src/main/java/com/xiaoyv/bangumi/ui/media/MediaViewModel.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.bangumi.ui.media 2 | 3 | import androidx.lifecycle.MutableLiveData 4 | import com.xiaoyv.blueprint.base.mvvm.normal.BaseViewModel 5 | import com.xiaoyv.common.config.bean.MediaOptionConfig 6 | 7 | /** 8 | * Class: [MediaViewModel] 9 | * 10 | * @author why 11 | * @since 11/24/23 12 | */ 13 | class MediaViewModel : BaseViewModel() { 14 | internal val currentSelectedOptionItem = 15 | MutableLiveData>>(mutableMapOf()) 16 | } -------------------------------------------------------------------------------- /app/src/main/java/com/xiaoyv/bangumi/ui/media/detail/score/MediaScoreViewModel.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.bangumi.ui.media.detail.score 2 | 3 | import com.xiaoyv.blueprint.base.mvvm.normal.BaseViewModel 4 | import com.xiaoyv.common.config.annotation.MediaType 5 | 6 | /** 7 | * Class: [MediaScoreViewModel] 8 | * 9 | * @author why 10 | * @since 1/22/24 11 | */ 12 | class MediaScoreViewModel : BaseViewModel() { 13 | internal var forFriend: Boolean = false 14 | internal var mediaId: String = "" 15 | 16 | @MediaType 17 | internal var mediaType: String = MediaType.TYPE_UNKNOWN 18 | } -------------------------------------------------------------------------------- /app/src/main/java/com/xiaoyv/bangumi/ui/media/detail/state/MediaStateViewModel.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.bangumi.ui.media.detail.state 2 | 3 | import com.xiaoyv.blueprint.base.mvvm.normal.BaseViewModel 4 | 5 | /** 6 | * Class: [MediaStateViewModel] 7 | * 8 | * @author why 9 | * @since 11/24/23 10 | */ 11 | class MediaStateViewModel : BaseViewModel() -------------------------------------------------------------------------------- /app/src/main/java/com/xiaoyv/bangumi/ui/process/ProcessViewModel.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.bangumi.ui.process 2 | 3 | import com.xiaoyv.blueprint.base.mvvm.normal.BaseViewModel 4 | 5 | /** 6 | * Class: [ProcessViewModel] 7 | * 8 | * @author why 9 | * @since 12/24/23 10 | */ 11 | class ProcessViewModel : BaseViewModel() { 12 | 13 | } -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_anime_pictures.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_empty_container.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_privacy_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_friend.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_home.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_wiki.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher_0_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher_1_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher_2_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher_0_foreground.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/app/src/main/res/mipmap-hdpi/ic_launcher_0_foreground.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher_0_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/app/src/main/res/mipmap-hdpi/ic_launcher_0_round.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher_1_foreground.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/app/src/main/res/mipmap-hdpi/ic_launcher_1_foreground.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher_1_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/app/src/main/res/mipmap-hdpi/ic_launcher_1_round.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher_2_foreground.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/app/src/main/res/mipmap-hdpi/ic_launcher_2_foreground.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher_2_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/app/src/main/res/mipmap-hdpi/ic_launcher_2_round.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher_0_foreground.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/app/src/main/res/mipmap-mdpi/ic_launcher_0_foreground.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher_0_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/app/src/main/res/mipmap-mdpi/ic_launcher_0_round.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher_1_foreground.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/app/src/main/res/mipmap-mdpi/ic_launcher_1_foreground.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher_1_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/app/src/main/res/mipmap-mdpi/ic_launcher_1_round.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher_2_foreground.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/app/src/main/res/mipmap-mdpi/ic_launcher_2_foreground.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher_2_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/app/src/main/res/mipmap-mdpi/ic_launcher_2_round.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher_0_foreground.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/app/src/main/res/mipmap-xhdpi/ic_launcher_0_foreground.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher_0_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/app/src/main/res/mipmap-xhdpi/ic_launcher_0_round.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher_1_foreground.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/app/src/main/res/mipmap-xhdpi/ic_launcher_1_foreground.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher_1_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/app/src/main/res/mipmap-xhdpi/ic_launcher_1_round.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher_2_foreground.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/app/src/main/res/mipmap-xhdpi/ic_launcher_2_foreground.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher_2_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/app/src/main/res/mipmap-xhdpi/ic_launcher_2_round.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher_0_foreground.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/app/src/main/res/mipmap-xxhdpi/ic_launcher_0_foreground.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher_0_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/app/src/main/res/mipmap-xxhdpi/ic_launcher_0_round.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher_1_foreground.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/app/src/main/res/mipmap-xxhdpi/ic_launcher_1_foreground.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher_1_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/app/src/main/res/mipmap-xxhdpi/ic_launcher_1_round.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher_2_foreground.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/app/src/main/res/mipmap-xxhdpi/ic_launcher_2_foreground.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher_2_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/app/src/main/res/mipmap-xxhdpi/ic_launcher_2_round.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher_0_foreground.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/app/src/main/res/mipmap-xxxhdpi/ic_launcher_0_foreground.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher_0_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/app/src/main/res/mipmap-xxxhdpi/ic_launcher_0_round.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher_1_foreground.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/app/src/main/res/mipmap-xxxhdpi/ic_launcher_1_foreground.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher_1_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/app/src/main/res/mipmap-xxxhdpi/ic_launcher_1_round.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher_2_foreground.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/app/src/main/res/mipmap-xxxhdpi/ic_launcher_2_foreground.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher_2_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/app/src/main/res/mipmap-xxxhdpi/ic_launcher_2_round.webp -------------------------------------------------------------------------------- /app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #FFFFFF 4 | -------------------------------------------------------------------------------- /app/src/main/res/xml/app_backup_rules.xml: -------------------------------------------------------------------------------- 1 | 8 | 9 | 13 | -------------------------------------------------------------------------------- /build.gradle.kts: -------------------------------------------------------------------------------- 1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 | plugins { 3 | alias(libs.plugins.androidApplication) apply false 4 | alias(libs.plugins.jetbrainsKotlinAndroid) apply false 5 | alias(libs.plugins.jetbrainsKotlinJvm) apply false 6 | alias(libs.plugins.androidLibrary) apply false 7 | alias(libs.plugins.googleKsp) apply false 8 | alias(libs.plugins.googleServices) apply false 9 | } 10 | 11 | buildscript { 12 | dependencies { 13 | classpath(libs.firebase.crashlytics.gradle) 14 | } 15 | } -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx2048M -Dkotlin.daemon.jvm.options\="-Xmx2048M" -Dfile.encoding\=UTF-8 2 | android.nonTransitiveRClass=true 3 | android.useAndroidX=true 4 | kotlin.code.style=official 5 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Fri Nov 24 18:22:33 CST 2023 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip 5 | zipStoreBase=GRADLE_USER_HOME 6 | zipStorePath=wrapper/dists 7 | -------------------------------------------------------------------------------- /keystore/bangumi.keystore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/keystore/bangumi.keystore -------------------------------------------------------------------------------- /keystore/key.sh: -------------------------------------------------------------------------------- 1 | java -jar pepk.jar --keystore=./bangumi.keystore --alias=bangumi --output=output.zip --include-cert --rsa-aes-encryption --encryption-key-path=./encryption_public_key.pem -------------------------------------------------------------------------------- /keystore/output.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/keystore/output.zip -------------------------------------------------------------------------------- /keystore/pepk.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/keystore/pepk.jar -------------------------------------------------------------------------------- /keystore/why.keystore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/keystore/why.keystore -------------------------------------------------------------------------------- /lib-common/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /lib-common/consumer-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-common/consumer-rules.pro -------------------------------------------------------------------------------- /lib-common/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /lib-common/src/main/assets/bangumi_musume_2d/bangumi_musume_2d.1024/texture_00.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-common/src/main/assets/bangumi_musume_2d/bangumi_musume_2d.1024/texture_00.png -------------------------------------------------------------------------------- /lib-common/src/main/assets/bangumi_musume_2d/bangumi_musume_2d.moc3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-common/src/main/assets/bangumi_musume_2d/bangumi_musume_2d.moc3 -------------------------------------------------------------------------------- /lib-common/src/main/assets/bangumi_musume_2d/sounds/wave29.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-common/src/main/assets/bangumi_musume_2d/sounds/wave29.wav -------------------------------------------------------------------------------- /lib-common/src/main/assets/bangumi_musume_2d/sounds/wave30.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-common/src/main/assets/bangumi_musume_2d/sounds/wave30.wav -------------------------------------------------------------------------------- /lib-common/src/main/assets/bangumi_musume_2d/sounds/wave31.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-common/src/main/assets/bangumi_musume_2d/sounds/wave31.wav -------------------------------------------------------------------------------- /lib-common/src/main/assets/bangumi_musume_2d/sounds/wave32.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-common/src/main/assets/bangumi_musume_2d/sounds/wave32.wav -------------------------------------------------------------------------------- /lib-common/src/main/assets/bangumi_musume_2d/sounds/wave33.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-common/src/main/assets/bangumi_musume_2d/sounds/wave33.wav -------------------------------------------------------------------------------- /lib-common/src/main/assets/bangumi_musume_2d/sounds/wave34.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-common/src/main/assets/bangumi_musume_2d/sounds/wave34.wav -------------------------------------------------------------------------------- /lib-common/src/main/assets/bangumi_musume_2d/sounds/wave35.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-common/src/main/assets/bangumi_musume_2d/sounds/wave35.wav -------------------------------------------------------------------------------- /lib-common/src/main/assets/bangumi_musume_2d/sounds/wave36.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-common/src/main/assets/bangumi_musume_2d/sounds/wave36.wav -------------------------------------------------------------------------------- /lib-common/src/main/assets/bangumi_musume_2d/sounds/wave37.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-common/src/main/assets/bangumi_musume_2d/sounds/wave37.wav -------------------------------------------------------------------------------- /lib-common/src/main/assets/bangumi_musume_2d/sounds/wave38.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-common/src/main/assets/bangumi_musume_2d/sounds/wave38.wav -------------------------------------------------------------------------------- /lib-common/src/main/assets/bangumi_musume_2d/sounds/wave39.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-common/src/main/assets/bangumi_musume_2d/sounds/wave39.wav -------------------------------------------------------------------------------- /lib-common/src/main/assets/bangumi_musume_2d/sounds/wave40.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-common/src/main/assets/bangumi_musume_2d/sounds/wave40.wav -------------------------------------------------------------------------------- /lib-common/src/main/assets/bangumi_musume_2d/sounds/wave41.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-common/src/main/assets/bangumi_musume_2d/sounds/wave41.wav -------------------------------------------------------------------------------- /lib-common/src/main/assets/bangumi_musume_2d/sounds/wave42.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-common/src/main/assets/bangumi_musume_2d/sounds/wave42.wav -------------------------------------------------------------------------------- /lib-common/src/main/assets/bangumi_musume_2d/sounds/wave43.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-common/src/main/assets/bangumi_musume_2d/sounds/wave43.wav -------------------------------------------------------------------------------- /lib-common/src/main/assets/bangumi_musume_2d/sounds/wave44.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-common/src/main/assets/bangumi_musume_2d/sounds/wave44.wav -------------------------------------------------------------------------------- /lib-common/src/main/assets/bangumi_musume_2d/sounds/wave45.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-common/src/main/assets/bangumi_musume_2d/sounds/wave45.wav -------------------------------------------------------------------------------- /lib-common/src/main/assets/bangumi_musume_2d/sounds/wave46.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-common/src/main/assets/bangumi_musume_2d/sounds/wave46.wav -------------------------------------------------------------------------------- /lib-common/src/main/assets/bangumi_musume_2d/sounds/wave47.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-common/src/main/assets/bangumi_musume_2d/sounds/wave47.wav -------------------------------------------------------------------------------- /lib-common/src/main/assets/bangumi_musume_2d/sounds/wave48.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-common/src/main/assets/bangumi_musume_2d/sounds/wave48.wav -------------------------------------------------------------------------------- /lib-common/src/main/assets/bangumi_musume_2d/sounds/wave49.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-common/src/main/assets/bangumi_musume_2d/sounds/wave49.wav -------------------------------------------------------------------------------- /lib-common/src/main/assets/bangumi_musume_2d/sounds/wave50.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-common/src/main/assets/bangumi_musume_2d/sounds/wave50.wav -------------------------------------------------------------------------------- /lib-common/src/main/assets/bangumi_musume_2d/sounds/wave51.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-common/src/main/assets/bangumi_musume_2d/sounds/wave51.wav -------------------------------------------------------------------------------- /lib-common/src/main/assets/bangumi_musume_2d/sounds/wave52.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-common/src/main/assets/bangumi_musume_2d/sounds/wave52.wav -------------------------------------------------------------------------------- /lib-common/src/main/assets/bangumi_musume_2d/sounds/wave53.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-common/src/main/assets/bangumi_musume_2d/sounds/wave53.wav -------------------------------------------------------------------------------- /lib-common/src/main/assets/bangumi_musume_2d/sounds/wave54.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-common/src/main/assets/bangumi_musume_2d/sounds/wave54.wav -------------------------------------------------------------------------------- /lib-common/src/main/assets/bangumi_musume_2d/sounds/wave55.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-common/src/main/assets/bangumi_musume_2d/sounds/wave55.wav -------------------------------------------------------------------------------- /lib-common/src/main/assets/bangumi_musume_2d/sounds/wave56.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-common/src/main/assets/bangumi_musume_2d/sounds/wave56.wav -------------------------------------------------------------------------------- /lib-common/src/main/assets/bangumi_musume_2d/sounds/wave57.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-common/src/main/assets/bangumi_musume_2d/sounds/wave57.wav -------------------------------------------------------------------------------- /lib-common/src/main/assets/bangumi_musume_2d/sounds/wave58.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-common/src/main/assets/bangumi_musume_2d/sounds/wave58.wav -------------------------------------------------------------------------------- /lib-common/src/main/assets/bangumi_musume_2d/sounds/wave59.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-common/src/main/assets/bangumi_musume_2d/sounds/wave59.wav -------------------------------------------------------------------------------- /lib-common/src/main/assets/bangumi_musume_2d/sounds/wave60.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-common/src/main/assets/bangumi_musume_2d/sounds/wave60.wav -------------------------------------------------------------------------------- /lib-common/src/main/assets/config/media.js: -------------------------------------------------------------------------------- 1 | var tmp = []; 2 | document.querySelectorAll("ul.grouped:nth-child(2) li a").forEach(item => { 3 | tmp.push({ 4 | title: item.innerText, 5 | value: item.href.replace("https://bangumi.tv/anime/browser", "") 6 | }) 7 | }); 8 | console.log(JSON.stringify(tmp)); -------------------------------------------------------------------------------- /lib-common/src/main/assets/config/smiles/helper/download.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # 设置文件路径 4 | FILE_PATH="url.txt" 5 | 6 | # 检查文件是否存在 7 | if [ ! -f "$FILE_PATH" ]; then 8 | echo "File $FILE_PATH not found." 9 | exit 1 10 | fi 11 | 12 | # 逐行读取文件,下载并保存图片 13 | while IFS= read -r URL; do 14 | # 提取文件名和目录路径 15 | FILENAME=$(basename "$URL") 16 | DIR_PATH=$(echo "$URL" | sed 's~^[[:alnum:]]*://~~; s~/[^/]*$~~') 17 | 18 | # 创建目录结构 19 | mkdir -p "$DIR_PATH" 20 | 21 | # 使用 curl 下载并保存图片 22 | curl -o "$DIR_PATH/$FILENAME" "$URL" 23 | done < "$FILE_PATH" 24 | 25 | echo "Download completed." 26 | -------------------------------------------------------------------------------- /lib-common/src/main/assets/config/smiles/helper/rename.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # 查找当前目录下的所有文件(不包括文件夹) 4 | files=$(find . -maxdepth 1 -type f) 5 | 6 | # 添加前缀 7 | for file in $files; do 8 | # 获取文件名 9 | filename=$(basename "$file") 10 | 11 | # 添加前缀并重命名文件 12 | mv "$filename" "normal_$filename" 13 | done 14 | 15 | echo "Prefix added to files." 16 | -------------------------------------------------------------------------------- /lib-common/src/main/assets/image/ic_donation.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-common/src/main/assets/image/ic_donation.jpg -------------------------------------------------------------------------------- /lib-common/src/main/assets/image/info_only.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-common/src/main/assets/image/info_only.jpg -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/api/exception/NeedConfigException.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.api.exception 2 | 3 | /** 4 | * Class: [NeedConfigException] 5 | * 6 | * @author why 7 | * @since 11/27/23 8 | */ 9 | class NeedConfigException(override val message: String?) : IllegalStateException(message) -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/api/exception/NeedLoginException.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.api.exception 2 | 3 | /** 4 | * Class: [NeedLoginException] 5 | * 6 | * @author why 7 | * @since 11/27/23 8 | */ 9 | class NeedLoginException(override val message: String?) : IllegalStateException(message) -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/api/parser/entity/BgmMediaEntity.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.api.parser.entity 2 | 3 | import android.os.Parcelable 4 | import androidx.annotation.Keep 5 | import kotlinx.parcelize.Parcelize 6 | 7 | /** 8 | * Class: [BgmMediaEntity] 9 | */ 10 | @Keep 11 | @Parcelize 12 | data class BgmMediaEntity( 13 | var title: String = "", 14 | var attention: String = "", 15 | var image: String = "", 16 | var id: String = "", 17 | ) : Parcelable -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/api/parser/entity/BlockEntity.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.api.parser.entity 2 | 3 | import android.os.Parcelable 4 | import androidx.annotation.Keep 5 | import com.xiaoyv.common.helper.callback.IdEntity 6 | import kotlinx.parcelize.Parcelize 7 | 8 | /** 9 | * Class: [BlockEntity] 10 | * 11 | * @author why 12 | * @since 12/17/23 13 | */ 14 | @Keep 15 | @Parcelize 16 | data class BlockEntity( 17 | override var id: String = "", 18 | var numberId: String = "", 19 | var name: String = "", 20 | ) : Parcelable, IdEntity 21 | -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/api/parser/entity/BlogEntity.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.api.parser.entity 2 | 3 | /** 4 | * Class: [BlogEntity] 5 | * 6 | * @author why 7 | * @since 11/28/23 8 | */ 9 | data class BlogEntity( 10 | var id: String = "", 11 | var title: String = "", 12 | var image: String = "", 13 | var time: String = "", 14 | var content: String = "", 15 | var commentCount: Int = 0, 16 | var mediaName: String = "", 17 | var recentUserName: String = "", 18 | var recentUserId: String = "", 19 | var nestingProfile: Boolean = false, 20 | ) 21 | -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/api/parser/entity/CreatePostEntity.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.api.parser.entity 2 | 3 | import android.os.Parcelable 4 | import androidx.annotation.Keep 5 | import kotlinx.parcelize.Parcelize 6 | 7 | /** 8 | * Class: [CreatePostEntity] 9 | * 10 | * @author why 11 | * @since 12/2/23 12 | */ 13 | @Keep 14 | @Parcelize 15 | data class CreatePostEntity( 16 | var title: String = "", 17 | var content: String = "", 18 | var tags: String = "", 19 | var isPublic: Boolean = true, 20 | var draft: Boolean = false, 21 | ) : Parcelable -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/api/parser/entity/FriendEntity.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.api.parser.entity 2 | 3 | import android.os.Parcelable 4 | import androidx.annotation.Keep 5 | import com.xiaoyv.common.helper.callback.IdEntity 6 | import kotlinx.parcelize.Parcelize 7 | 8 | /** 9 | * Class: [FriendEntity] 10 | * 11 | * @author why 12 | * @since 12/14/23 13 | */ 14 | @Keep 15 | @Parcelize 16 | data class FriendEntity( 17 | override var id: String = "", 18 | var avatar: String = "", 19 | var name: String = "", 20 | var gh: String = "", 21 | ) : IdEntity, Parcelable 22 | -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/api/parser/entity/HomeIndexCalendarEntity.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.api.parser.entity 2 | 3 | import android.os.Parcelable 4 | import androidx.annotation.Keep 5 | import kotlinx.parcelize.Parcelize 6 | 7 | /** 8 | * Class: [HomeIndexCalendarEntity] 9 | * 10 | * @author why 11 | * @since 11/25/23 12 | */ 13 | @Keep 14 | @Parcelize 15 | data class HomeIndexCalendarEntity( 16 | var tip: String = "", 17 | var today: List = emptyList(), 18 | var tomorrow: List = emptyList(), 19 | ) : Parcelable 20 | -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/api/parser/entity/HomeIndexCardEntity.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.api.parser.entity 2 | 3 | import android.os.Parcelable 4 | import androidx.annotation.Keep 5 | import kotlinx.parcelize.Parcelize 6 | 7 | 8 | @Keep 9 | @Parcelize 10 | data class HomeIndexCardEntity( 11 | var title: String = "", 12 | var titleType: String = "", 13 | var images: List = emptyList(), 14 | ) : Parcelable -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/api/parser/entity/HomeIndexEntity.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.api.parser.entity 2 | 3 | import android.os.Parcelable 4 | import androidx.annotation.Keep 5 | import kotlinx.parcelize.Parcelize 6 | 7 | /** 8 | * Class: [HomeIndexEntity] 9 | * 10 | * @author why 11 | * @since 11/24/23 12 | */ 13 | @Keep 14 | @Parcelize 15 | data class HomeIndexEntity( 16 | var banner: HomeIndexBannerEntity = HomeIndexBannerEntity(), 17 | var images: List = emptyList(), 18 | var calendar: HomeIndexCalendarEntity = HomeIndexCalendarEntity(), 19 | ) : Parcelable -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/api/parser/entity/MediaMakerEntity.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.api.parser.entity 2 | 3 | /** 4 | * Class: [MediaMakerEntity] 5 | * 6 | * @author why 7 | * @since 11/29/23 8 | */ 9 | data class MediaMakerEntity( 10 | var id: String = "", 11 | var avatar: String = "", 12 | var titleCn: String = "", 13 | var titleNative: String = "", 14 | var personInfo: List = emptyList(), 15 | var commentCount: String = "", 16 | var tip: String = "" 17 | ) 18 | -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/api/parser/entity/MessageCountEntity.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.api.parser.entity 2 | 3 | import android.os.Parcelable 4 | import androidx.annotation.Keep 5 | import kotlinx.parcelize.Parcelize 6 | 7 | /** 8 | * Class: [MessageCountEntity] 9 | * 10 | * @author why 11 | * @since 12/9/23 12 | */ 13 | @Keep 14 | @Parcelize 15 | data class MessageCountEntity( 16 | var unRead: Int = 0, 17 | var receiveCount: Int = 0, 18 | var sendCount: Int = 0, 19 | ) : Parcelable 20 | -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/api/parser/entity/ReportEntity.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.api.parser.entity 2 | 3 | import android.os.Parcelable 4 | import androidx.annotation.Keep 5 | import kotlinx.parcelize.Parcelize 6 | 7 | /** 8 | * Class: [ReportEntity] 9 | * 10 | * @author why 11 | * @since 12/14/23 12 | */ 13 | @Keep 14 | @Parcelize 15 | data class ReportEntity( 16 | var hiddenForm: Map = emptyMap(), 17 | ) : Parcelable 18 | -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/api/parser/entity/SignInFormEntity.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.api.parser.entity 2 | 3 | import android.os.Parcelable 4 | import kotlinx.parcelize.Parcelize 5 | 6 | /** 7 | * Class: [SignInFormEntity] 8 | * 9 | * @author why 10 | * @since 11/25/23 11 | */ 12 | @Parcelize 13 | data class SignInFormEntity( 14 | var forms: HashMap = hashMapOf(), 15 | var hasLogin: Boolean = false, 16 | var loginInfo: SignInResultEntity? = null 17 | ) : Parcelable -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/api/parser/entity/SignInResultEntity.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.api.parser.entity 2 | 3 | import android.os.Parcelable 4 | import com.xiaoyv.common.api.response.UserEntity 5 | import kotlinx.parcelize.Parcelize 6 | 7 | /** 8 | * Class: [SignInResultEntity] 9 | * 10 | * @author why 11 | * @since 11/25/23 12 | */ 13 | @Parcelize 14 | data class SignInResultEntity( 15 | var error: String? = null, 16 | var success: Boolean = false, 17 | var message: String = "", 18 | var userEntity: UserEntity = UserEntity(isEmpty = true) 19 | ) : Parcelable -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/api/parser/entity/SignUpResultEntity.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.api.parser.entity 2 | 3 | import android.os.Parcelable 4 | import com.xiaoyv.common.api.response.UserEntity 5 | import kotlinx.parcelize.Parcelize 6 | 7 | /** 8 | * Class: [SignUpResultEntity] 9 | * 10 | * @author why 11 | * @since 11/25/23 12 | */ 13 | @Parcelize 14 | data class SignUpResultEntity( 15 | var error: String? = null, 16 | var success: Boolean = false, 17 | var message: String = "", 18 | var forms: HashMap = hashMapOf() 19 | ) : Parcelable -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/api/parser/entity/SignUpVerifyEntity.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.api.parser.entity 2 | 3 | import android.os.Parcelable 4 | import com.xiaoyv.common.api.response.UserEntity 5 | import kotlinx.parcelize.Parcelize 6 | 7 | /** 8 | * Class: [SignUpVerifyEntity] 9 | * 10 | * @author why 11 | * @since 11/25/23 12 | */ 13 | @Parcelize 14 | data class SignUpVerifyEntity( 15 | var error: String? = null, 16 | var success: Boolean = false, 17 | var message: String = "", 18 | ) : Parcelable -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/api/parser/impl/ReportParser.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.api.parser.impl 2 | 3 | import com.xiaoyv.common.api.parser.entity.ReportEntity 4 | import org.jsoup.nodes.Element 5 | 6 | /** 7 | * @author why 8 | * @since 12/14/23 9 | */ 10 | fun Element.parserReportForm(): ReportEntity { 11 | val entity = ReportEntity() 12 | entity.hiddenForm = select("input[type=hidden], input[type=submit]") 13 | .map { it.attr("name") to it.attr("value") } 14 | .associate { it } 15 | return entity 16 | } -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/api/parser/impl/TagParser.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.api.parser.impl 2 | 3 | import com.xiaoyv.common.api.parser.entity.SearchResultEntity 4 | import com.xiaoyv.common.config.annotation.BgmPathType 5 | import org.jsoup.nodes.Element 6 | 7 | /** 8 | * @author why 9 | * @since 12/10/23 10 | */ 11 | fun Element.parserTagDetail(): List { 12 | // 标签详情页面复用 BgmPathType.TYPE_SEARCH_SUBJECT 的解析逻辑 13 | return parserSearchResult(BgmPathType.TYPE_SEARCH_SUBJECT) 14 | } -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/api/request/CreateTokenParam.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.api.request 2 | 3 | import android.os.Parcelable 4 | import androidx.annotation.Keep 5 | import com.google.gson.annotations.SerializedName 6 | import kotlinx.parcelize.Parcelize 7 | 8 | /** 9 | * Class: [CreateTokenParam] 10 | * 11 | * @author why 12 | * @since 11/27/23 13 | */ 14 | @Keep 15 | @Parcelize 16 | data class CreateTokenParam( 17 | @SerializedName("name") 18 | var name: String = "Bangumi for Android", 19 | @SerializedName("duration_days") 20 | var durationDays: Int = 365 21 | ) : Parcelable -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/api/request/EmojiParam.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.api.request 2 | 3 | import android.os.Parcelable 4 | import androidx.annotation.Keep 5 | import com.google.gson.annotations.SerializedName 6 | import kotlinx.parcelize.Parcelize 7 | 8 | @Keep 9 | @Parcelize 10 | data class EmojiParam( 11 | @SerializedName("enable") var enable: Boolean = false, 12 | @SerializedName("likeType") var likeType: String = "", 13 | @SerializedName("likeMainId") var likeMainId: String = "", 14 | @SerializedName("likeCommentId") var likeCommentId: String = "", 15 | ) : Parcelable -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/api/request/MicrosoftTranslateParam.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.api.request 2 | 3 | import android.os.Parcelable 4 | import androidx.annotation.Keep 5 | import com.google.gson.annotations.SerializedName 6 | import kotlinx.parcelize.Parcelize 7 | 8 | 9 | /** 10 | * Class: [MicrosoftTranslateParam] 11 | * 12 | * @author why 13 | * @since 1/29/24 14 | */ 15 | @Keep 16 | @Parcelize 17 | data class MicrosoftTranslateParam( 18 | @SerializedName("Text") 19 | var text: String? = null, 20 | ) : Parcelable -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/api/request/SyncNameParam.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.api.request 2 | 3 | import android.os.Parcelable 4 | import com.google.gson.annotations.SerializedName 5 | import kotlinx.parcelize.Parcelize 6 | 7 | /** 8 | * Class: [SyncNameParam] 9 | * 10 | * @author why 11 | * @since 1/27/24 12 | */ 13 | @Parcelize 14 | data class SyncNameParam( 15 | @SerializedName("id") var id: String = "", 16 | @SerializedName("name") var name: String? = null, 17 | @SerializedName("type") var type: Int? = null, 18 | ) : Parcelable -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/api/response/BgmStatusEntity.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.api.response 2 | 3 | import android.os.Parcelable 4 | import androidx.annotation.Keep 5 | import com.google.gson.annotations.SerializedName 6 | import kotlinx.parcelize.Parcelize 7 | 8 | /** 9 | * Class: [BgmStatusEntity] 10 | * 11 | * @author why 12 | * @since 12/9/23 13 | */ 14 | @Keep 15 | @Parcelize 16 | data class BgmStatusEntity( 17 | @SerializedName("status") 18 | var status: String? = null 19 | ) : Parcelable -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/api/response/GithubPutEntity.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.api.response 2 | 3 | import android.os.Parcelable 4 | import androidx.annotation.Keep 5 | import com.google.gson.annotations.SerializedName 6 | import kotlinx.parcelize.Parcelize 7 | 8 | 9 | /** 10 | * Class: [GithubPutEntity] 11 | * 12 | * @author why 13 | * @since 1/3/24 14 | */ 15 | @Keep 16 | @Parcelize 17 | data class GithubPutEntity( 18 | @SerializedName("content") 19 | var content: GithubContent? = null, 20 | ) : Parcelable -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/api/response/MicrosoftJwtPayload.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.api.response 2 | 3 | import com.google.gson.annotations.SerializedName 4 | 5 | data class MicrosoftJwtPayload(@SerializedName("exp") val expirationTime: Long) -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/api/response/NotifyEntity.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.api.response 2 | 3 | import android.os.Parcelable 4 | import androidx.annotation.Keep 5 | import com.google.gson.annotations.SerializedName 6 | import kotlinx.parcelize.Parcelize 7 | 8 | 9 | /** 10 | * Class: [NotifyEntity] 11 | * 12 | * @author why 13 | * @since 12/8/23 14 | */ 15 | @Keep 16 | @Parcelize 17 | data class NotifyEntity( 18 | @SerializedName("count") 19 | var count: Int? = null 20 | ) : Parcelable -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/api/response/anime/ListParcelableWrapEntity.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.api.response.anime 2 | 3 | import android.os.Parcelable 4 | import androidx.annotation.Keep 5 | import kotlinx.parcelize.Parcelize 6 | import kotlinx.parcelize.RawValue 7 | 8 | /** 9 | * Class: [ListParcelableWrapEntity] 10 | * 11 | * @author why 12 | * @since 11/21/23 13 | */ 14 | @Keep 15 | @Parcelize 16 | data class ListParcelableWrapEntity(var list: List<@RawValue T>) : Parcelable 17 | -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/api/response/base/BaseListResponse.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.api.response.base 2 | 3 | import androidx.annotation.Keep 4 | import com.google.gson.annotations.SerializedName 5 | import kotlinx.parcelize.Parcelize 6 | 7 | /** 8 | * BaseListResponse 9 | * 10 | * @author why 11 | * @since 11/18/23 12 | */ 13 | @Keep 14 | @Parcelize 15 | class BaseListResponse( 16 | @SerializedName("total") var total: Int = 0, 17 | @SerializedName("limit") var limit: Int = 0, 18 | @SerializedName("offset") var offset: Int = 0, 19 | ) : BaseResponse>() 20 | -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/api/response/base/BaseResponse.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.api.response.base 2 | 3 | import android.os.Parcelable 4 | import androidx.annotation.Keep 5 | import kotlinx.parcelize.Parcelize 6 | import kotlinx.parcelize.RawValue 7 | 8 | /** 9 | * BaseResponse 10 | * 11 | * @author why 12 | * @since 11/18/23 13 | */ 14 | @Keep 15 | @Parcelize 16 | open class BaseResponse( 17 | open val code: Int = 0, 18 | open val msg: String? = "", 19 | open val message: String? = "", 20 | open val data: @RawValue T? = null 21 | ) : Parcelable 22 | -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/api/response/base/BgmActionResponse.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.api.response.base 2 | 3 | import android.os.Parcelable 4 | import androidx.annotation.Keep 5 | import kotlinx.parcelize.Parcelize 6 | import kotlinx.parcelize.RawValue 7 | 8 | /** 9 | * BaseResponse 10 | * 11 | * @author why 12 | * @since 11/18/23 13 | */ 14 | @Keep 15 | @Parcelize 16 | open class BgmActionResponse( 17 | val status: String? = "", 18 | val data: @RawValue T?, 19 | ) : Parcelable { 20 | 21 | val isOk: Boolean 22 | get() = status.orEmpty().equals("ok", true) 23 | } 24 | -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/api/response/douban/DouBanImageEntity.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.api.response.douban 2 | 3 | import android.os.Parcelable 4 | import androidx.annotation.Keep 5 | import com.google.gson.annotations.SerializedName 6 | import kotlinx.parcelize.Parcelize 7 | 8 | @Keep 9 | @Parcelize 10 | data class DouBanImageEntity( 11 | @SerializedName("height") 12 | var height: Int = 0, 13 | @SerializedName("size") 14 | var size: Long = 0, 15 | @SerializedName("url") 16 | var url: String? = null, 17 | @SerializedName("width") 18 | var width: Int = 0, 19 | ) : Parcelable -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/config/annotation/LikeType.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.config.annotation 2 | 3 | import androidx.annotation.StringDef 4 | 5 | /** 6 | * Class: [LikeType] 7 | * 8 | * @author why 9 | * @since 11/25/23 10 | */ 11 | @StringDef( 12 | LikeType.TYPE_TOPIC 13 | ) 14 | @Retention(AnnotationRetention.SOURCE) 15 | annotation class LikeType { 16 | companion object { 17 | const val TYPE_TOPIC = "8" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/config/annotation/LocalCollectionType.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.config.annotation 2 | 3 | import androidx.annotation.IntDef 4 | 5 | /** 6 | * Class: [LocalCollectionType] 7 | * 8 | * @author why 9 | * @since 1/3/24 10 | */ 11 | @IntDef( 12 | LocalCollectionType.TYPE_BLOG, 13 | LocalCollectionType.TYPE_TOPIC 14 | ) 15 | @Retention(AnnotationRetention.SOURCE) 16 | annotation class LocalCollectionType { 17 | companion object { 18 | const val TYPE_TOPIC = 1 19 | const val TYPE_BLOG = 2 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/config/annotation/MessageBoxType.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.config.annotation 2 | 3 | import androidx.annotation.StringDef 4 | 5 | /** 6 | * Class: [MessageBoxType] 7 | * 8 | * @author why 9 | * @since 11/25/23 10 | */ 11 | @StringDef( 12 | MessageBoxType.TYPE_INBOX, 13 | MessageBoxType.TYPE_OUTBOX 14 | ) 15 | @Retention(AnnotationRetention.SOURCE) 16 | annotation class MessageBoxType { 17 | companion object { 18 | const val TYPE_INBOX = "inbox" 19 | const val TYPE_OUTBOX = "outbox" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/config/annotation/PrivacyType.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.config.annotation 2 | 3 | import androidx.annotation.IntDef 4 | 5 | /** 6 | * Class: [PrivacyType] 7 | * 8 | * @author why 9 | * @since 11/25/23 10 | */ 11 | @IntDef( 12 | PrivacyType.TYPE_ALL, 13 | PrivacyType.TYPE_FRIEND, 14 | PrivacyType.TYPE_NONE 15 | ) 16 | @Retention(AnnotationRetention.SOURCE) 17 | annotation class PrivacyType { 18 | companion object { 19 | const val TYPE_ALL = 0 20 | const val TYPE_FRIEND = 1 21 | const val TYPE_NONE = 2 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/config/annotation/SearchApiType.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.config.annotation 2 | 3 | import androidx.annotation.StringDef 4 | 5 | /** 6 | * Class: [SearchApiType] 7 | * 8 | * @author why 9 | * @since 12/10/23 10 | */ 11 | @StringDef( 12 | SearchApiType.TYPE_INDEX, 13 | SearchApiType.TYPE_GROUP_TOPIC, 14 | ) 15 | @Retention(AnnotationRetention.SOURCE) 16 | annotation class SearchApiType { 17 | companion object { 18 | const val TYPE_INDEX = "index" 19 | const val TYPE_GROUP_TOPIC = "group-topic" 20 | } 21 | } -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/config/annotation/ThunderTabType.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.config.annotation 2 | 3 | import androidx.annotation.StringDef 4 | 5 | /** 6 | * Class: [ThunderTabType] 7 | * 8 | * @author why 9 | * @since 11/25/23 10 | */ 11 | @StringDef( 12 | ThunderTabType.TYPE_DOWNLOADING, 13 | ThunderTabType.TYPE_DOWNLOADED, 14 | ) 15 | @Retention(AnnotationRetention.SOURCE) 16 | annotation class ThunderTabType { 17 | companion object { 18 | const val TYPE_DOWNLOADING = "downloading" 19 | const val TYPE_DOWNLOADED = "downloaded" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/config/bean/AdapterTypeItem.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.config.bean 2 | 3 | data class AdapterTypeItem( 4 | var entity: Any, 5 | var type: Int, 6 | var title: String = "", 7 | ) -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/config/bean/AlmanacEntity.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.config.bean 2 | 3 | import android.os.Parcelable 4 | import androidx.annotation.Keep 5 | import com.xiaoyv.common.helper.callback.IdEntity 6 | import kotlinx.parcelize.Parcelize 7 | 8 | /** 9 | * Class: [AlmanacEntity] 10 | * 11 | * @author why 12 | * @since 12/10/23 13 | */ 14 | @Keep 15 | @Parcelize 16 | data class AlmanacEntity( 17 | override var id: String = "", 18 | var image: String = "" 19 | ) : Parcelable,IdEntity 20 | -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/config/bean/PostAttach.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.config.bean 2 | 3 | import android.os.Parcelable 4 | import androidx.annotation.Keep 5 | import com.xiaoyv.common.helper.callback.IdEntity 6 | import kotlinx.parcelize.Parcelize 7 | 8 | /** 9 | * Class: [PostAttach] 10 | * 11 | * @author why 12 | * @since 12/6/23 13 | */ 14 | @Parcelize 15 | @Keep 16 | data class PostAttach( 17 | override var id: String = "", 18 | var image: String = "", 19 | var title: String = "", 20 | var type: String = "", 21 | ) : Parcelable, IdEntity -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/config/bean/SampleImageEntity.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.config.bean 2 | 3 | import android.os.Parcelable 4 | import androidx.annotation.Keep 5 | import com.xiaoyv.common.helper.callback.IdEntity 6 | import kotlinx.parcelize.Parcelize 7 | 8 | /** 9 | * Class: [SampleImageEntity] 10 | * 11 | * @author why 12 | * @since 12/6/23 13 | */ 14 | @Parcelize 15 | @Keep 16 | data class SampleImageEntity( 17 | override var id: String = "", 18 | var image: String = "", 19 | var title: String = "", 20 | var desc: String = "", 21 | var type: String = "", 22 | ) : Parcelable, IdEntity -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/config/bean/SubtitleResult.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.config.bean 2 | 3 | import android.os.Parcelable 4 | import com.xiaoyv.common.config.annotation.SubtitleActionType 5 | import com.xiaoyv.subtitle.api.subtitle.common.TimedLine 6 | import com.xiaoyv.subtitle.api.subtitle.common.TimedTextFile 7 | import kotlinx.parcelize.Parcelize 8 | import java.io.File 9 | 10 | @Parcelize 11 | data class SubtitleResult( 12 | var file: File, 13 | var timedTextFile: TimedTextFile, 14 | @SubtitleActionType var actionType: Int 15 | ) : Parcelable 16 | -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/config/bean/TaskInfoEntity.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.config.bean 2 | 3 | import android.os.Parcelable 4 | import com.xiaoyv.common.helper.callback.IdEntity 5 | import com.xunlei.downloadlib.parameter.XLTaskInfo 6 | import kotlinx.parcelize.Parcelize 7 | 8 | /** 9 | * Class: [TaskInfoEntity] 10 | * 11 | * @author why 12 | * @since 3/23/24 13 | */ 14 | @Parcelize 15 | data class TaskInfoEntity( 16 | override var id: String = "", 17 | var xlTaskInfo: XLTaskInfo? = null, 18 | ) : Parcelable, IdEntity 19 | -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/config/bean/WrapData.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.config.bean 2 | 3 | import android.os.Parcelable 4 | import androidx.annotation.Keep 5 | import kotlinx.parcelize.Parcelize 6 | import kotlinx.parcelize.RawValue 7 | 8 | @Keep 9 | @Parcelize 10 | data class WrapData( 11 | var data: @RawValue T? = null, 12 | ) : Parcelable -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/config/bean/YucSectionEntity.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.config.bean 2 | 3 | import com.xiaoyv.common.helper.callback.IdEntity 4 | 5 | /** 6 | * Class: [YucSectionEntity] 7 | * 8 | * @author why 9 | * @since 3/19/24 10 | */ 11 | data class YucSectionEntity( 12 | override var id: String, 13 | ) : IdEntity 14 | -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/config/bean/tab/DiscoverTab.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.config.bean.tab 2 | 3 | import android.os.Parcelable 4 | import com.xiaoyv.common.config.annotation.DiscoverType 5 | import kotlinx.parcelize.Parcelize 6 | 7 | /** 8 | * Class: [DiscoverTab] 9 | * 10 | * @author why 11 | * @since 11/25/23 12 | */ 13 | @Parcelize 14 | data class DiscoverTab( 15 | var title: String, 16 | 17 | @DiscoverType 18 | var type: String 19 | ) : Parcelable -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/config/bean/tab/HomeBottomTab.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.config.bean.tab 2 | 3 | import androidx.annotation.DrawableRes 4 | import com.xiaoyv.common.config.annotation.FeatureType 5 | 6 | /** 7 | * Class: [HomeBottomTab] 8 | * 9 | * @author why 10 | * @since 12/31/23 11 | */ 12 | data class HomeBottomTab( 13 | var title: String, 14 | var id: Int, 15 | @DrawableRes var icon: Int, 16 | @FeatureType var type: String, 17 | ) 18 | -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/config/bean/tab/IndexDetailAttachTab.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.config.bean.tab 2 | 3 | import android.os.Parcelable 4 | import com.xiaoyv.common.config.annotation.IndexTabCatType 5 | import kotlinx.parcelize.Parcelize 6 | 7 | /** 8 | * Class: [IndexDetailAttachTab] 9 | * 10 | * @author why 11 | * @since 11/25/23 12 | */ 13 | @Parcelize 14 | data class IndexDetailAttachTab( 15 | var title: String, 16 | @IndexTabCatType var type: String, 17 | ) : Parcelable -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/config/bean/tab/MagiTab.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.config.bean.tab 2 | 3 | import android.os.Parcelable 4 | import com.xiaoyv.common.config.annotation.MagiTabType 5 | import kotlinx.parcelize.Parcelize 6 | 7 | /** 8 | * Class: [MagiTab] 9 | * 10 | * @author why 11 | * @since 11/25/23 12 | */ 13 | @Parcelize 14 | data class MagiTab( 15 | var title: String, 16 | 17 | @MagiTabType 18 | var type: String 19 | ) : Parcelable -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/config/bean/tab/MediaDetailTab.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.config.bean.tab 2 | 3 | import android.os.Parcelable 4 | import com.xiaoyv.common.config.annotation.MediaDetailType 5 | import kotlinx.parcelize.Parcelize 6 | 7 | /** 8 | * Class: [MediaDetailTab] 9 | * 10 | * @author why 11 | * @since 11/25/23 12 | */ 13 | @Parcelize 14 | data class MediaDetailTab( 15 | var title: String, 16 | 17 | @MediaDetailType 18 | var type: String 19 | ) : Parcelable -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/config/bean/tab/MediaScoreTab.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.config.bean.tab 2 | 3 | import android.os.Parcelable 4 | import com.xiaoyv.common.config.annotation.InterestType 5 | import com.xiaoyv.common.config.annotation.ProfileType 6 | import kotlinx.parcelize.Parcelize 7 | 8 | /** 9 | * Class: [MediaScoreTab] 10 | * 11 | * @author why 12 | * @since 11/25/23 13 | */ 14 | @Parcelize 15 | data class MediaScoreTab( 16 | var title: String, 17 | 18 | @InterestType 19 | var type: String 20 | ) : Parcelable -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/config/bean/tab/MediaTab.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.config.bean.tab 2 | 3 | import android.os.Parcelable 4 | import com.xiaoyv.common.config.annotation.MediaType 5 | import kotlinx.parcelize.Parcelize 6 | 7 | /** 8 | * Class: [MediaTab] 9 | * 10 | * @author why 11 | * @since 11/25/23 12 | */ 13 | @Parcelize 14 | data class MediaTab( 15 | var title: String, 16 | @MediaType 17 | var type: String 18 | ) : Parcelable -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/config/bean/tab/PersonTab.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.config.bean.tab 2 | 3 | import android.os.Parcelable 4 | import com.xiaoyv.common.config.annotation.PersonTabType 5 | import kotlinx.parcelize.Parcelize 6 | 7 | /** 8 | * Class: [PersonTab] 9 | * 10 | * @author why 11 | * @since 11/25/23 12 | */ 13 | @Parcelize 14 | data class PersonTab( 15 | var title: String, 16 | 17 | @PersonTabType 18 | var type: Int 19 | ) : Parcelable -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/config/bean/tab/ProcessTab.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.config.bean.tab 2 | 3 | import android.os.Parcelable 4 | import com.xiaoyv.common.config.annotation.MediaType 5 | import kotlinx.parcelize.Parcelize 6 | 7 | /** 8 | * Class: [ProcessTab] 9 | * 10 | * @author why 11 | * @since 11/25/23 12 | */ 13 | @Parcelize 14 | data class ProcessTab( 15 | var title: String, 16 | @MediaType 17 | var type: String, 18 | ) : Parcelable -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/config/bean/tab/ProfileTab.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.config.bean.tab 2 | 3 | import android.os.Parcelable 4 | import com.xiaoyv.common.config.annotation.ProfileType 5 | import kotlinx.parcelize.Parcelize 6 | 7 | /** 8 | * Class: [ProfileTab] 9 | * 10 | * @author why 11 | * @since 11/25/23 12 | */ 13 | @Parcelize 14 | data class ProfileTab( 15 | var title: String, 16 | 17 | @ProfileType 18 | var type: String 19 | ) : Parcelable -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/config/bean/tab/SearchTab.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.config.bean.tab 2 | 3 | import android.os.Parcelable 4 | import com.xiaoyv.common.config.annotation.ProfileType 5 | import com.xiaoyv.common.config.annotation.SearchType 6 | import kotlinx.parcelize.Parcelize 7 | 8 | /** 9 | * Class: [SearchTab] 10 | * 11 | * @author why 12 | * @since 11/25/23 13 | */ 14 | @Parcelize 15 | data class SearchTab( 16 | var title: String, 17 | 18 | @SearchType 19 | var type: String 20 | ) : Parcelable -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/config/bean/tab/SuperTopicTab.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.config.bean.tab 2 | 3 | import android.os.Parcelable 4 | import com.xiaoyv.common.config.annotation.SuperType 5 | import kotlinx.parcelize.Parcelize 6 | 7 | /** 8 | * Class: [SuperTopicTab] 9 | * 10 | * @author why 11 | * @since 11/25/23 12 | */ 13 | @Parcelize 14 | data class SuperTopicTab( 15 | var title: String, 16 | @SuperType 17 | var type: String 18 | ) : Parcelable -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/config/bean/tab/ThunderTab.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.config.bean.tab 2 | 3 | import android.os.Parcelable 4 | import com.xiaoyv.common.config.annotation.DiscoverType 5 | import com.xiaoyv.common.config.annotation.ThunderTabType 6 | import kotlinx.parcelize.Parcelize 7 | 8 | /** 9 | * Class: [ThunderTab] 10 | * 11 | * @author why 12 | * @since 11/25/23 13 | */ 14 | @Parcelize 15 | data class ThunderTab( 16 | var title: String, 17 | 18 | @ThunderTabType 19 | var type: String 20 | ) : Parcelable -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/config/bean/tab/TimelineTab.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.config.bean.tab 2 | 3 | import android.os.Parcelable 4 | import com.xiaoyv.common.config.annotation.TimelineType 5 | import kotlinx.parcelize.Parcelize 6 | 7 | /** 8 | * Class: [TimelineTab] 9 | * 10 | * @author why 11 | * @since 11/25/23 12 | */ 13 | @Parcelize 14 | data class TimelineTab( 15 | var title: String, 16 | @TimelineType 17 | var timelineType: String, 18 | var userId: String = "" 19 | ) : Parcelable -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/config/bean/tab/UserCenterTab.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.config.bean.tab 2 | 3 | import android.os.Parcelable 4 | import com.xiaoyv.common.config.annotation.UserCenterType 5 | import kotlinx.parcelize.Parcelize 6 | 7 | /** 8 | * Class: [UserCenterTab] 9 | * 10 | * @author why 11 | * @since 11/25/23 12 | */ 13 | @Parcelize 14 | data class UserCenterTab( 15 | var title: String, 16 | 17 | @UserCenterType 18 | var type: Int 19 | ) : Parcelable -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/database/friendly/FriendlyStatus.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.database.friendly 2 | 3 | import android.os.Parcelable 4 | import androidx.annotation.Keep 5 | import androidx.room.ColumnInfo 6 | import androidx.room.Entity 7 | import com.xiaoyv.common.database.BgmDatabase 8 | import kotlinx.parcelize.Parcelize 9 | 10 | @Keep 11 | @Parcelize 12 | data class FriendlyStatus( 13 | @ColumnInfo("uid") var uid: String, 14 | @ColumnInfo("score_count") var scoreCount: Int 15 | ) : Parcelable 16 | -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/database/subject/SubjectItemDao.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.database.subject 2 | 3 | import androidx.room.Dao 4 | import androidx.room.Query 5 | import com.xiaoyv.common.database.BgmDatabaseRemote 6 | 7 | @Dao 8 | interface SubjectItemDao { 9 | 10 | @Query("SELECT * FROM ${BgmDatabaseRemote.TABLE_NAME_SUBJECT}") 11 | fun getAll(): List 12 | 13 | @Query("SELECT * FROM ${BgmDatabaseRemote.TABLE_NAME_SUBJECT} WHERE name = :name or name_cn = :name") 14 | fun getByName(name: String): List 15 | } 16 | -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/helper/callback/SimpleTabSelectedListener.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.helper.callback 2 | 3 | import com.google.android.material.tabs.TabLayout 4 | 5 | /** 6 | * Class: [SimpleTabSelectedListener] 7 | * 8 | * @author why 9 | * @since 12/27/23 10 | */ 11 | interface SimpleTabSelectedListener : TabLayout.OnTabSelectedListener { 12 | override fun onTabSelected(p0: TabLayout.Tab?) { 13 | } 14 | 15 | override fun onTabUnselected(p0: TabLayout.Tab?) { 16 | } 17 | 18 | override fun onTabReselected(p0: TabLayout.Tab?) { 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/kts/ContextKt.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.kts 2 | 3 | import android.content.Context 4 | import android.view.LayoutInflater 5 | 6 | /** 7 | * @author why 8 | * @since 11/25/23 9 | */ 10 | val Context.inflater: LayoutInflater get() = LayoutInflater.from(this) -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/kts/HttpKts.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.kts 2 | 3 | import okhttp3.OkHttpClient 4 | import java.util.concurrent.TimeUnit 5 | 6 | /** 7 | * timeout 8 | * 9 | * @author why 10 | * @since 12/25/23 11 | */ 12 | fun OkHttpClient.Builder.timeout(seconds: Long): OkHttpClient.Builder { 13 | return this 14 | .callTimeout(seconds, TimeUnit.SECONDS) 15 | .readTimeout(seconds, TimeUnit.SECONDS) 16 | .writeTimeout(seconds, TimeUnit.SECONDS) 17 | .connectTimeout(seconds, TimeUnit.SECONDS) 18 | } -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/kts/LiveDataKt.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.kts 2 | 3 | import androidx.lifecycle.MutableLiveData 4 | 5 | inline fun MutableLiveData.clear() { 6 | value = null 7 | } -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/kts/LogKt.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.kts 2 | 3 | import android.util.Log 4 | import com.blankj.utilcode.util.AppUtils 5 | 6 | 7 | /** 8 | * @author why 9 | * @since 11/24/23 10 | */ 11 | fun debugLog(msg: Any? = null, tag: String = "Debug") { 12 | if (AppUtils.isAppDebug().not()) return 13 | Log.i(tag, msg.toString()) 14 | } 15 | 16 | inline fun debugLog(tag: String = "Debug", value: () -> Any?) { 17 | if (AppUtils.isAppDebug().not()) return 18 | Log.i(tag, value().toString()) 19 | } -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/kts/RegexKt.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.kts 2 | 3 | /** 4 | * @author why 5 | * @since 12/15/23 6 | */ 7 | fun Regex.groupValueOne(targetText: String): String { 8 | return groupValue(targetText, 1) 9 | } 10 | 11 | fun Regex.groupValue(targetText: String, group: Int): String { 12 | return find(targetText)?.groupValues?.getOrNull(group).orEmpty() 13 | } 14 | -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/widget/button/AnimeButton.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.widget.button 2 | 3 | import android.content.Context 4 | import android.util.AttributeSet 5 | import com.google.android.material.button.MaterialButton 6 | 7 | /** 8 | * Class: [AnimeButton] 9 | * 10 | * @author why 11 | * @since 11/30/23 12 | */ 13 | class AnimeButton @JvmOverloads constructor( 14 | context: Context, attrs: AttributeSet? = null 15 | ) : MaterialButton(context, attrs) -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/widget/emoji/span/IUiFaceTouchSpan.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.widget.emoji.span 2 | 3 | import android.view.View 4 | 5 | /** 6 | * ITouchableSpan 7 | * 8 | * @author why 9 | * @since 2012-03-20 10 | */ 11 | interface IUiFaceTouchSpan { 12 | fun setPressed(pressed: Boolean) 13 | 14 | fun onClick(widget: View) 15 | } -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/widget/musume/LAppWavFileHandler.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.widget.musume 2 | 3 | import com.xiaoyv.common.helper.AudioPlayer 4 | import com.xiaoyv.common.helper.ConfigHelper 5 | 6 | class LAppWavFileHandler(private val filePath: String) : Thread() { 7 | 8 | override fun run() { 9 | if (ConfigHelper.isRobotVoiceEnable.not()) return 10 | 11 | runCatching { 12 | AudioPlayer.instance 13 | .play(LAppDelegate.getInstance().activity.assets.openFd(filePath)) 14 | } 15 | } 16 | } -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/widget/text/AnimeEditTextView.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.widget.text 2 | 3 | import android.content.Context 4 | import android.util.AttributeSet 5 | import com.google.android.material.textfield.TextInputEditText 6 | 7 | /** 8 | * Class: [AnimeEditTextView] 9 | * 10 | * @author why 11 | * @since 11/25/23 12 | */ 13 | open class AnimeEditTextView @JvmOverloads constructor( 14 | context: Context, attrs: AttributeSet? = null, 15 | ) : TextInputEditText(context, attrs) -------------------------------------------------------------------------------- /lib-common/src/main/java/com/xiaoyv/common/widget/text/AnimeTextView.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.common.widget.text 2 | 3 | import android.content.Context 4 | import android.util.AttributeSet 5 | import com.google.android.material.textview.MaterialTextView 6 | 7 | /** 8 | * Class: [AnimeTextView] 9 | * 10 | * @author why 11 | * @since 11/24/23 12 | */ 13 | open class AnimeTextView @JvmOverloads constructor( 14 | context: Context, attrs: AttributeSet? = null 15 | ) : MaterialTextView(context, attrs) -------------------------------------------------------------------------------- /lib-common/src/main/res/drawable-xxhdpi/bg_login.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-common/src/main/res/drawable-xxhdpi/bg_login.webp -------------------------------------------------------------------------------- /lib-common/src/main/res/drawable-xxhdpi/bg_new_anime_autumn.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-common/src/main/res/drawable-xxhdpi/bg_new_anime_autumn.jpg -------------------------------------------------------------------------------- /lib-common/src/main/res/drawable-xxhdpi/bg_new_anime_spring.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-common/src/main/res/drawable-xxhdpi/bg_new_anime_spring.jpg -------------------------------------------------------------------------------- /lib-common/src/main/res/drawable-xxhdpi/bg_new_anime_summer.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-common/src/main/res/drawable-xxhdpi/bg_new_anime_summer.jpg -------------------------------------------------------------------------------- /lib-common/src/main/res/drawable-xxhdpi/bg_new_anime_winter.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-common/src/main/res/drawable-xxhdpi/bg_new_anime_winter.jpg -------------------------------------------------------------------------------- /lib-common/src/main/res/drawable-xxhdpi/ic_balloon_pink.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-common/src/main/res/drawable-xxhdpi/ic_balloon_pink.9.png -------------------------------------------------------------------------------- /lib-common/src/main/res/drawable-xxhdpi/ic_emoji.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-common/src/main/res/drawable-xxhdpi/ic_emoji.png -------------------------------------------------------------------------------- /lib-common/src/main/res/drawable-xxhdpi/ic_emoji_blank.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-common/src/main/res/drawable-xxhdpi/ic_emoji_blank.webp -------------------------------------------------------------------------------- /lib-common/src/main/res/drawable-xxhdpi/ic_logo_banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-common/src/main/res/drawable-xxhdpi/ic_logo_banner.png -------------------------------------------------------------------------------- /lib-common/src/main/res/drawable-xxhdpi/segment_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-common/src/main/res/drawable-xxhdpi/segment_0.png -------------------------------------------------------------------------------- /lib-common/src/main/res/drawable-xxhdpi/segment_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-common/src/main/res/drawable-xxhdpi/segment_1.png -------------------------------------------------------------------------------- /lib-common/src/main/res/drawable-xxhdpi/segment_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-common/src/main/res/drawable-xxhdpi/segment_2.png -------------------------------------------------------------------------------- /lib-common/src/main/res/drawable-xxhdpi/segment_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-common/src/main/res/drawable-xxhdpi/segment_3.png -------------------------------------------------------------------------------- /lib-common/src/main/res/drawable-xxhdpi/segment_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-common/src/main/res/drawable-xxhdpi/segment_4.png -------------------------------------------------------------------------------- /lib-common/src/main/res/drawable-xxhdpi/segment_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-common/src/main/res/drawable-xxhdpi/segment_5.png -------------------------------------------------------------------------------- /lib-common/src/main/res/drawable-xxhdpi/segment_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-common/src/main/res/drawable-xxhdpi/segment_6.png -------------------------------------------------------------------------------- /lib-common/src/main/res/drawable/ic_action_menu.xml: -------------------------------------------------------------------------------- 1 | 7 | 8 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /lib-common/src/main/res/drawable/ic_add.xml: -------------------------------------------------------------------------------- 1 | 7 | 8 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /lib-common/src/main/res/drawable/ic_add_comment.xml: -------------------------------------------------------------------------------- 1 | 7 | 8 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /lib-common/src/main/res/drawable/ic_align_top.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /lib-common/src/main/res/drawable/ic_arrow_down.xml: -------------------------------------------------------------------------------- 1 | 7 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /lib-common/src/main/res/drawable/ic_bottom_home.xml: -------------------------------------------------------------------------------- 1 | 7 | 8 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /lib-common/src/main/res/drawable/ic_bottom_profile.xml: -------------------------------------------------------------------------------- 1 | 7 | 8 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /lib-common/src/main/res/drawable/ic_bottom_timeline.xml: -------------------------------------------------------------------------------- 1 | 7 | 8 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /lib-common/src/main/res/drawable/ic_calendar.xml: -------------------------------------------------------------------------------- 1 | 7 | 8 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /lib-common/src/main/res/drawable/ic_collect_to.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /lib-common/src/main/res/drawable/ic_dollars.xml: -------------------------------------------------------------------------------- 1 | 7 | 8 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /lib-common/src/main/res/drawable/ic_done.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /lib-common/src/main/res/drawable/ic_edit.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /lib-common/src/main/res/drawable/ic_file.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /lib-common/src/main/res/drawable/ic_file_code.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /lib-common/src/main/res/drawable/ic_file_image.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /lib-common/src/main/res/drawable/ic_file_txt.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /lib-common/src/main/res/drawable/ic_folder.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /lib-common/src/main/res/drawable/ic_format_italic.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /lib-common/src/main/res/drawable/ic_format_quote.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /lib-common/src/main/res/drawable/ic_format_size.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /lib-common/src/main/res/drawable/ic_magi.xml: -------------------------------------------------------------------------------- 1 | 7 | 8 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /lib-common/src/main/res/drawable/ic_manage_search.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /lib-common/src/main/res/drawable/ic_menu.xml: -------------------------------------------------------------------------------- 1 | 7 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /lib-common/src/main/res/drawable/ic_original.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /lib-common/src/main/res/drawable/ic_person.xml: -------------------------------------------------------------------------------- 1 | 7 | 8 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /lib-common/src/main/res/drawable/ic_preview.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /lib-common/src/main/res/drawable/ic_random.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /lib-common/src/main/res/drawable/ic_refresh.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /lib-common/src/main/res/drawable/ic_right.xml: -------------------------------------------------------------------------------- 1 | 7 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /lib-common/src/main/res/drawable/ic_send.xml: -------------------------------------------------------------------------------- 1 | 7 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /lib-common/src/main/res/drawable/ic_star.xml: -------------------------------------------------------------------------------- 1 | 7 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /lib-common/src/main/res/drawable/ic_star_empty.xml: -------------------------------------------------------------------------------- 1 | 7 | 8 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /lib-common/src/main/res/drawable/ic_thumb_up.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /lib-common/src/main/res/drawable/selector_add.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /lib-common/src/main/res/drawable/selector_btn_advance.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /lib-common/src/main/res/drawable/selector_emoji.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /lib-common/src/main/res/drawable/selector_format_menu.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /lib-common/src/main/res/drawable/shape_bottom_edge.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 10 | -------------------------------------------------------------------------------- /lib-common/src/main/res/drawable/shape_bottom_edge_corner.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 13 | -------------------------------------------------------------------------------- /lib-common/src/main/res/drawable/shape_circle.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /lib-common/src/main/res/drawable/shape_cursor.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /lib-common/src/main/res/drawable/shape_ep.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 10 | -------------------------------------------------------------------------------- /lib-common/src/main/res/drawable/shape_full_corner.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /lib-common/src/main/res/drawable/shape_message.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 9 | 10 | 11 | 12 | 16 | -------------------------------------------------------------------------------- /lib-common/src/main/res/drawable/shape_no.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /lib-common/src/main/res/drawable/shape_rank.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /lib-common/src/main/res/drawable/shape_rank_start.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /lib-common/src/main/res/drawable/shape_state.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 8 | -------------------------------------------------------------------------------- /lib-common/src/main/res/drawable/shape_top_edge_corner.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 13 | -------------------------------------------------------------------------------- /lib-common/src/main/res/layout/view_panel_emotion.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /lib-common/src/main/res/layout/view_panel_more.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /lib-common/src/main/res/values/attrs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /lib-common/src/main/res/values/ids.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /lib-common/src/main/res/values/styles-chart.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 13 | -------------------------------------------------------------------------------- /lib-doc/.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # Default ignored files 2 | /shelf/ 3 | /workspace.xml 4 | -------------------------------------------------------------------------------- /lib-doc/.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /lib-doc/.idea/runConfigurations/Build_Bangumi_for_Android__xiaoyv_.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | -------------------------------------------------------------------------------- /lib-doc/.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /lib-doc/build/config.json: -------------------------------------------------------------------------------- 1 | {"productVersion":"1.0.0","productId":".","stage":"release","downloadTitle":"Get Bangumi for Android","keymaps":{},"searchMaxHits":75,"productName":"Bangumi for Android"} -------------------------------------------------------------------------------- /lib-doc/build/current.help.version: -------------------------------------------------------------------------------- 1 | 1.0.0 -------------------------------------------------------------------------------- /lib-doc/build/images/completion_procedure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-doc/build/images/completion_procedure.png -------------------------------------------------------------------------------- /lib-doc/build/images/completion_procedure_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-doc/build/images/completion_procedure_dark.png -------------------------------------------------------------------------------- /lib-doc/build/images/convert_table_to_xml.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-doc/build/images/convert_table_to_xml.png -------------------------------------------------------------------------------- /lib-doc/build/images/convert_table_to_xml_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-doc/build/images/convert_table_to_xml_dark.png -------------------------------------------------------------------------------- /lib-doc/build/images/new_topic_options.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-doc/build/images/new_topic_options.png -------------------------------------------------------------------------------- /lib-doc/build/images/new_topic_options_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-doc/build/images/new_topic_options_dark.png -------------------------------------------------------------------------------- /lib-doc/build/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | You will be redirected shortly 5 | 6 |

Redirecting…

7 | Click here if you are not redirected. 8 | 9 | 10 | -------------------------------------------------------------------------------- /lib-doc/c.list: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /lib-doc/images/completion_procedure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-doc/images/completion_procedure.png -------------------------------------------------------------------------------- /lib-doc/images/completion_procedure_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-doc/images/completion_procedure_dark.png -------------------------------------------------------------------------------- /lib-doc/images/convert_table_to_xml.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-doc/images/convert_table_to_xml.png -------------------------------------------------------------------------------- /lib-doc/images/convert_table_to_xml_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-doc/images/convert_table_to_xml_dark.png -------------------------------------------------------------------------------- /lib-doc/images/new_topic_options.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-doc/images/new_topic_options.png -------------------------------------------------------------------------------- /lib-doc/images/new_topic_options_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-doc/images/new_topic_options_dark.png -------------------------------------------------------------------------------- /lib-doc/images/playstore_badge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-doc/images/playstore_badge.png -------------------------------------------------------------------------------- /lib-doc/redirection-rules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 10 | Created after removal of "隐私政策" from Bangumi for Android 11 | privacy.html 12 | 13 | -------------------------------------------------------------------------------- /lib-doc/topics/Author.md: -------------------------------------------------------------------------------- 1 | # 关于作者 2 | 3 | Overview articles give background information and provide context to a particular subject. 4 | Their goal is to explain a concept, not to teach or give instructions. 5 | 6 | ## What is product/service/concept 7 | 8 | Provide some background and context, explain choices and alternatives. 9 | 10 | ## Glossary 11 | 12 | A definition list or a glossary: 13 | 14 | First Term 15 | : This is the definition of the first term. 16 | 17 | Second Term 18 | : This is the definition of the second term. 19 | -------------------------------------------------------------------------------- /lib-doc/topics/Overview.md: -------------------------------------------------------------------------------- 1 | # 功能介绍 2 | 3 | Overview articles give background information and provide context to a particular subject. 4 | Their goal is to explain a concept, not to teach or give instructions. 5 | 6 | ## What is product/service/concept 7 | 8 | Provide some background and context, explain choices and alternatives. 9 | 10 | ## Glossary 11 | 12 | A definition list or a glossary: 13 | 14 | First Term 15 | : This is the definition of the first term. 16 | 17 | Second Term 18 | : This is the definition of the second term. 19 | -------------------------------------------------------------------------------- /lib-doc/topics/Update.md: -------------------------------------------------------------------------------- 1 | # 更新记录 2 | 3 | Overview articles give background information and provide context to a particular subject. 4 | Their goal is to explain a concept, not to teach or give instructions. 5 | 6 | ## What is product/service/concept 7 | 8 | Provide some background and context, explain choices and alternatives. 9 | 10 | ## Glossary 11 | 12 | A definition list or a glossary: 13 | 14 | First Term 15 | : This is the definition of the first term. 16 | 17 | Second Term 18 | : This is the definition of the second term. 19 | -------------------------------------------------------------------------------- /lib-doc/v.list: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /lib-doc/writerside.cfg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /lib-emoji/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /lib-emoji/consumer-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/consumer-rules.pro -------------------------------------------------------------------------------- /lib-emoji/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/bgm_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/bgm_01.png -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/bgm_02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/bgm_02.png -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/bgm_03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/bgm_03.png -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/bgm_04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/bgm_04.png -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/bgm_05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/bgm_05.png -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/bgm_06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/bgm_06.png -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/bgm_07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/bgm_07.png -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/bgm_08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/bgm_08.png -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/bgm_09.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/bgm_09.png -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/bgm_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/bgm_10.png -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/bgm_11.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/bgm_11.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/bgm_12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/bgm_12.png -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/bgm_13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/bgm_13.png -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/bgm_14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/bgm_14.png -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/bgm_15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/bgm_15.png -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/bgm_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/bgm_16.png -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/bgm_17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/bgm_17.png -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/bgm_18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/bgm_18.png -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/bgm_19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/bgm_19.png -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/bgm_20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/bgm_20.png -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/bgm_21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/bgm_21.png -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/bgm_22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/bgm_22.png -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/bgm_23.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/bgm_23.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/normal_1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/normal_1.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/normal_10.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/normal_10.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/normal_11.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/normal_11.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/normal_12.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/normal_12.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/normal_13.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/normal_13.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/normal_14.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/normal_14.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/normal_15.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/normal_15.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/normal_16.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/normal_16.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/normal_2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/normal_2.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/normal_3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/normal_3.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/normal_4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/normal_4.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/normal_5.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/normal_5.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/normal_6.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/normal_6.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/normal_7.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/normal_7.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/normal_8.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/normal_8.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/normal_9.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/normal_9.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_01.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_01.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_02.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_02.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_03.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_03.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_04.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_04.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_05.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_05.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_06.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_06.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_07.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_07.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_08.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_08.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_09.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_09.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_10.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_10.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_100.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_100.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_101.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_101.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_102.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_102.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_11.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_11.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_12.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_12.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_13.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_13.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_14.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_14.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_15.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_15.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_16.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_16.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_17.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_17.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_18.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_18.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_19.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_19.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_20.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_20.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_21.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_21.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_22.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_22.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_23.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_23.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_24.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_24.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_25.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_25.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_26.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_26.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_27.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_27.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_28.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_28.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_29.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_29.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_30.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_30.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_31.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_31.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_32.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_32.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_33.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_33.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_34.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_34.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_35.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_35.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_36.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_36.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_37.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_37.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_38.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_38.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_39.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_39.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_40.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_40.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_41.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_41.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_42.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_42.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_43.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_43.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_44.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_44.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_45.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_45.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_46.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_46.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_47.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_47.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_48.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_48.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_49.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_49.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_50.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_50.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_51.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_51.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_52.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_52.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_53.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_53.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_54.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_54.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_55.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_55.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_56.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_56.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_57.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_57.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_58.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_58.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_59.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_59.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_60.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_60.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_61.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_61.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_62.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_62.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_63.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_63.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_64.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_64.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_65.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_65.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_66.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_66.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_67.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_67.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_68.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_68.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_69.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_69.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_70.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_70.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_71.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_71.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_72.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_72.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_73.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_73.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_74.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_74.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_75.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_75.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_76.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_76.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_77.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_77.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_78.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_78.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_79.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_79.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_80.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_80.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_81.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_81.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_82.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_82.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_83.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_83.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_84.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_84.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_85.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_85.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_86.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_86.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_87.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_87.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_88.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_88.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_89.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_89.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_90.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_90.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_91.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_91.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_92.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_92.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_93.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_93.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_94.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_94.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_95.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_95.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_96.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_96.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_97.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_97.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_98.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_98.gif -------------------------------------------------------------------------------- /lib-emoji/src/main/res/drawable/tv_99.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-emoji/src/main/res/drawable/tv_99.gif -------------------------------------------------------------------------------- /lib-emoji/src/test/java/com/xiaoyv/emoji/ExampleUnitTest.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.emoji 2 | 3 | import org.junit.Test 4 | 5 | import org.junit.Assert.* 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * See [testing documentation](http://d.android.com/tools/testing). 11 | */ 12 | class ExampleUnitTest { 13 | @Test 14 | fun addition_isCorrect() { 15 | assertEquals(4, 2 + 2) 16 | } 17 | } -------------------------------------------------------------------------------- /lib-h5/.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | pnpm-debug.log* 8 | lerna-debug.log* 9 | 10 | node_modules 11 | dist 12 | dist-ssr 13 | *.local 14 | 15 | # Editor directories and files 16 | .vscode/* 17 | !.vscode/extensions.json 18 | .idea 19 | .DS_Store 20 | *.suo 21 | *.ntvs* 22 | *.njsproj 23 | *.sln 24 | *.sw? 25 | -------------------------------------------------------------------------------- /lib-h5/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": ["Vue.volar", "Vue.vscode-typescript-vue-plugin"] 3 | } 4 | -------------------------------------------------------------------------------- /lib-h5/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 8 | Bangumi for Android 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /lib-h5/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-h5/public/favicon.ico -------------------------------------------------------------------------------- /lib-h5/public/ic_holder.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-h5/public/ic_holder.jpg -------------------------------------------------------------------------------- /lib-h5/src/App.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 10 | 16 | -------------------------------------------------------------------------------- /lib-h5/src/assets/css/light.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --primary-color: #A23662; 3 | --surface-color: #FFFBFF; 4 | --on-primary-color: #FFFFFF; 5 | --on-surface-color: #201A1B; 6 | --on-surface-variant-color: #514347; 7 | --surface-container-color: #eeeeee; 8 | } -------------------------------------------------------------------------------- /lib-h5/src/assets/image/bg_bangumi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-h5/src/assets/image/bg_bangumi.png -------------------------------------------------------------------------------- /lib-h5/src/main.ts: -------------------------------------------------------------------------------- 1 | import {createApp} from 'vue'; 2 | import App from './App.vue'; 3 | import router from "./router"; 4 | import './style.scss'; 5 | 6 | // PC端调试时加载 light.css 7 | if (window.android == null) { 8 | import("./assets/css/light.css"); 9 | } 10 | 11 | createApp(App) 12 | .use(router) 13 | .mount('#app'); 14 | -------------------------------------------------------------------------------- /lib-h5/src/pages/IndexView.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 8 | 9 | -------------------------------------------------------------------------------- /lib-h5/src/router/index.ts: -------------------------------------------------------------------------------- 1 | import {createRouter, createWebHashHistory} from 'vue-router' 2 | import routes from "./routes.ts"; 3 | 4 | const router = createRouter({ 5 | routes, 6 | history: createWebHashHistory() 7 | }); 8 | 9 | export default router 10 | -------------------------------------------------------------------------------- /lib-h5/src/util/dollars.css: -------------------------------------------------------------------------------- 1 | #chatBox { 2 | width: 100% !important; 3 | margin: 16px !important; 4 | } 5 | 6 | #chatList { 7 | width: 100% !important; 8 | } 9 | 10 | #chatList ul { 11 | margin: 16px !important; 12 | } 13 | 14 | #chatList div.bubble div.content { 15 | max-width: 100% !important; 16 | } 17 | 18 | textarea[name=message] { 19 | } -------------------------------------------------------------------------------- /lib-h5/src/util/interface/CommentFormEntity.ts: -------------------------------------------------------------------------------- 1 | export interface CommentFormEntity { 2 | action: string; 3 | inputs: { 4 | formhash: string; 5 | lastview: string; 6 | submit: string; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /lib-h5/src/util/interface/CommentTreeEntity.ts: -------------------------------------------------------------------------------- 1 | import {LikeActionEntity} from "./LikeActionEntity.ts"; 2 | import {EmojiParam} from "./EmojiParam.ts"; 3 | 4 | export interface CommentTreeEntity { 5 | id: string; 6 | mineId: string; 7 | floor: string; 8 | time: string; 9 | userAvatar: string; 10 | userName: string; 11 | userId: string; 12 | replyContent: string; 13 | replyJs: string; 14 | replyQuote: string; 15 | topicSubReply: CommentTreeEntity[]; 16 | emojiParam: EmojiParam; 17 | emojis: Array; 18 | } 19 | -------------------------------------------------------------------------------- /lib-h5/src/util/interface/EmojiParam.ts: -------------------------------------------------------------------------------- 1 | export interface EmojiParam { 2 | enable: boolean; 3 | likeType: string; 4 | likeMainId: string; 5 | likeCommentId: string; 6 | } -------------------------------------------------------------------------------- /lib-h5/src/util/interface/LikeActionEntity.ts: -------------------------------------------------------------------------------- 1 | export interface LikeActionEntity { 2 | type: number; 3 | main_id: number; 4 | value: string; 5 | total: number; 6 | emoji: string; 7 | selected: boolean; 8 | users: { 9 | "username": string; 10 | "nickname": string; 11 | }[]; 12 | } -------------------------------------------------------------------------------- /lib-h5/src/util/interface/SampleRelateEntity.ts: -------------------------------------------------------------------------------- 1 | export interface SampleRelateEntity { 2 | title: string; 3 | items: RelateItem[]; 4 | } 5 | 6 | export interface RelateItem { 7 | image: string; 8 | imageLink: string; 9 | title: string; 10 | titleLink: string; 11 | } 12 | -------------------------------------------------------------------------------- /lib-h5/tsconfig.node.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "composite": true, 4 | "skipLibCheck": true, 5 | "module": "ESNext", 6 | "moduleResolution": "bundler", 7 | "allowSyntheticDefaultImports": true 8 | }, 9 | "include": ["vite.config.ts"] 10 | } 11 | -------------------------------------------------------------------------------- /lib-h5/vite.config.ts: -------------------------------------------------------------------------------- 1 | import {defineConfig} from 'vite' 2 | import vue from '@vitejs/plugin-vue' 3 | 4 | // https://vitejs.dev/config/ 5 | export default defineConfig({ 6 | base: "./", 7 | server: { 8 | port: 5173 9 | }, 10 | plugins: [vue()], 11 | build: { 12 | chunkSizeWarningLimit: 3000, 13 | outDir: "../app/src/main/assets/h5/", 14 | emptyOutDir: true 15 | } 16 | }) 17 | -------------------------------------------------------------------------------- /lib-i18n/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /lib-i18n/consumer-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-i18n/consumer-rules.pro -------------------------------------------------------------------------------- /lib-i18n/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /lib-i18n/src/test/java/com/xiaoyv/bangumi/i18n/ExampleUnitTest.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.bangumi.i18n 2 | 3 | import org.junit.Test 4 | 5 | import org.junit.Assert.* 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * See [testing documentation](http://d.android.com/tools/testing). 11 | */ 12 | class ExampleUnitTest { 13 | @Test 14 | fun addition_isCorrect() { 15 | assertEquals(4, 2 + 2) 16 | } 17 | } -------------------------------------------------------------------------------- /lib-live2d/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /lib-live2d/libs/Live2DCubismCore.aar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-live2d/libs/Live2DCubismCore.aar -------------------------------------------------------------------------------- /lib-live2d/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /lib-live2d/src/main/java/com/live2d/sdk/cubism/framework/effect/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provide the function to add motion information to the model in an effect-like manner, such as automatic blinking and lip-sync. 3 | */ 4 | package com.live2d.sdk.cubism.framework.effect; 5 | -------------------------------------------------------------------------------- /lib-live2d/src/main/java/com/live2d/sdk/cubism/framework/exception/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provide the exception classes about Cubism SDK Framework. 3 | */ 4 | package com.live2d.sdk.cubism.framework.exception; 5 | -------------------------------------------------------------------------------- /lib-live2d/src/main/java/com/live2d/sdk/cubism/framework/id/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provide the function to manage parameter names, part names, and drawable names set in the model with the Cubism SDK original type. 3 | */ 4 | package com.live2d.sdk.cubism.framework.id; 5 | -------------------------------------------------------------------------------- /lib-live2d/src/main/java/com/live2d/sdk/cubism/framework/math/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provide the function for arthmetic operations required for operating and drawing models, such as matrix and vector calculations. 3 | */ 4 | package com.live2d.sdk.cubism.framework.math; 5 | -------------------------------------------------------------------------------- /lib-live2d/src/main/java/com/live2d/sdk/cubism/framework/model/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provide various functions (generate, update, destroy) for handling models. 3 | */ 4 | package com.live2d.sdk.cubism.framework.model; 5 | -------------------------------------------------------------------------------- /lib-live2d/src/main/java/com/live2d/sdk/cubism/framework/motion/ICubismMotionEventFunction.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright(c) Live2D Inc. All rights reserved. 3 | * 4 | * Use of this source code is governed by the Live2D Open Software license 5 | * that can be found at http://live2d.com/eula/live2d-open-software-license-agreement_en.html. 6 | */ 7 | 8 | package com.live2d.sdk.cubism.framework.motion; 9 | 10 | public interface ICubismMotionEventFunction { 11 | void apply( 12 | CubismMotionQueueManager caller, 13 | String eventValue, 14 | Object customData 15 | ); 16 | } 17 | -------------------------------------------------------------------------------- /lib-live2d/src/main/java/com/live2d/sdk/cubism/framework/motion/IFinishedMotionCallback.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright(c) Live2D Inc. All rights reserved. 3 | * 4 | * Use of this source code is governed by the Live2D Open Software license 5 | * that can be found at http://live2d.com/eula/live2d-open-software-license-agreement_en.html. 6 | */ 7 | 8 | package com.live2d.sdk.cubism.framework.motion; 9 | 10 | /** 11 | * モーション再生終了コールバック 12 | */ 13 | public interface IFinishedMotionCallback { 14 | void execute(ACubismMotion motion); 15 | } 16 | -------------------------------------------------------------------------------- /lib-live2d/src/main/java/com/live2d/sdk/cubism/framework/motion/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provide various functions (motion playback, parameter blending) for applying motion data to models. 3 | */ 4 | package com.live2d.sdk.cubism.framework.motion; 5 | -------------------------------------------------------------------------------- /lib-live2d/src/main/java/com/live2d/sdk/cubism/framework/physics/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provide functions for applying physics-based deformation operations to models. 3 | */ 4 | package com.live2d.sdk.cubism.framework.physics; 5 | -------------------------------------------------------------------------------- /lib-live2d/src/main/java/com/live2d/sdk/cubism/framework/rendering/android/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provide the renderer that implemetns graphics instructions for rendering models on the Android platform. 3 | */ 4 | package com.live2d.sdk.cubism.framework.rendering.android; 5 | -------------------------------------------------------------------------------- /lib-live2d/src/main/java/com/live2d/sdk/cubism/framework/rendering/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provide the renderer that implements graphics instructions for rendering models on various platforms. 3 | */ 4 | package com.live2d.sdk.cubism.framework.rendering; 5 | -------------------------------------------------------------------------------- /lib-live2d/src/main/java/com/live2d/sdk/cubism/framework/utils/jsonparser/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provide a function of JSON parser. 3 | */ 4 | package com.live2d.sdk.cubism.framework.utils.jsonparser; 5 | -------------------------------------------------------------------------------- /lib-live2d/src/main/java/com/live2d/sdk/cubism/framework/utils/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provide utility functions such as a JSON parser and log output. 3 | */ 4 | package com.live2d.sdk.cubism.framework.utils; 5 | -------------------------------------------------------------------------------- /lib-live2d/src/test/java/com/xiaoyv/live/ExampleUnitTest.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.live 2 | 3 | import org.junit.Test 4 | 5 | import org.junit.Assert.* 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * See [testing documentation](http://d.android.com/tools/testing). 11 | */ 12 | class ExampleUnitTest { 13 | @Test 14 | fun addition_isCorrect() { 15 | assertEquals(4, 2 + 2) 16 | } 17 | } -------------------------------------------------------------------------------- /lib-script/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | /bgm/Bangumi 原生安卓 - 文档集.xlsx 3 | -------------------------------------------------------------------------------- /lib-script/bgm/GroupTopic.db: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:dc6333d7e7e1e59932ce54d25ad541b026eec1adaed9d33b3db4c93efe4b4f63 3 | size 125681664 4 | -------------------------------------------------------------------------------- /lib-script/bgm/bgm-script.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-script/bgm/bgm-script.jar -------------------------------------------------------------------------------- /lib-script/libs/utils-1.1.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-script/libs/utils-1.1.jar -------------------------------------------------------------------------------- /lib-script/src/main/java/com/xiaoyv/script/database/dao/SubjectDao.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.script.database.dao 2 | 3 | /** 4 | * Class: [SubjectDao] 5 | * 6 | * @author why 7 | * @since 1/15/24 8 | */ 9 | data class SubjectDao( 10 | var id: Long = 0, 11 | var name: String = "", 12 | var name_cn: String = "", 13 | var type: Int = 0, 14 | var nsfw: Boolean = false, 15 | ) 16 | -------------------------------------------------------------------------------- /lib-subtitle/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /lib-subtitle/consumer-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-subtitle/consumer-rules.pro -------------------------------------------------------------------------------- /lib-subtitle/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /lib-subtitle/src/main/java/com/xiaoyv/subtitle/api/subtitle/common/TimedLine.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.subtitle.api.subtitle.common 2 | 3 | import java.io.Serializable 4 | 5 | /** 6 | * Simple object that contains a text line with a time 7 | * 8 | */ 9 | interface TimedLine : Serializable, Comparable, Comparator { 10 | /** 11 | * Get the text lines 12 | * 13 | * @return textLines 14 | */ 15 | fun getTextLines(): ArrayList 16 | 17 | /** 18 | * Get the timed object 19 | * 20 | * @return the time 21 | */ 22 | fun getTime(): TimedObject 23 | } -------------------------------------------------------------------------------- /lib-subtitle/src/main/java/com/xiaoyv/subtitle/api/subtitle/config/SimpleSubConfig.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.subtitle.api.subtitle.config 2 | 3 | import com.xiaoyv.subtitle.api.subtitle.common.TimedTextFile 4 | import java.io.Serializable 5 | 6 | data class SimpleSubConfig @JvmOverloads constructor( 7 | var styleName: String? = null, 8 | var sub: TimedTextFile<*>, 9 | var fontconfig: Font = Font(), 10 | var alignment: Int = 0, 11 | var verticalMargin: Int = 10, 12 | ) : Serializable 13 | -------------------------------------------------------------------------------- /lib-subtitle/src/main/java/com/xiaoyv/subtitle/api/utils/IOUtils.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.subtitle.api.utils 2 | 3 | import java.io.IOException 4 | import java.io.InputStream 5 | 6 | object IOUtils { 7 | @JvmStatic 8 | @Throws(IOException::class) 9 | fun toByteArray(stream: InputStream): ByteArray { 10 | return stream.readBytes() 11 | } 12 | } -------------------------------------------------------------------------------- /lib-subtitle/src/main/java/com/xiaoyv/subtitle/api/utils/NumberUtils.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.subtitle.api.utils 2 | 3 | object NumberUtils { 4 | @JvmStatic 5 | fun toDouble(trim: String?): Double { 6 | return trim.orEmpty().toDoubleOrNull() ?: 0.0 7 | } 8 | 9 | @JvmStatic 10 | fun toInt(value: String?): Int { 11 | return value.orEmpty().toIntOrNull() ?: 0 12 | } 13 | 14 | @JvmStatic 15 | fun toFloat(trim: String?): Float { 16 | return trim.orEmpty().toFloatOrNull() ?: 0f 17 | } 18 | } -------------------------------------------------------------------------------- /lib-subtitle/src/test/java/com/xiaoyv/subtitle/ExampleUnitTest.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.subtitle 2 | 3 | import org.junit.Test 4 | 5 | import org.junit.Assert.* 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * See [testing documentation](http://d.android.com/tools/testing). 11 | */ 12 | class ExampleUnitTest { 13 | @Test 14 | fun addition_isCorrect() { 15 | assertEquals(4, 2 + 2) 16 | } 17 | } -------------------------------------------------------------------------------- /lib-thunder/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /lib-thunder/consumer-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-thunder/consumer-rules.pro -------------------------------------------------------------------------------- /lib-thunder/src/main/java/com/xunlei/downloadlib/parameter/BtSubTaskDetail.kt: -------------------------------------------------------------------------------- 1 | package com.xunlei.downloadlib.parameter 2 | 3 | import android.os.Parcelable 4 | import androidx.annotation.Keep 5 | import kotlinx.parcelize.Parcelize 6 | 7 | @Keep 8 | @Parcelize 9 | data class BtSubTaskDetail( 10 | @Keep @JvmField var mFileIndex: Int = 0, 11 | @Keep @JvmField var mIsSelect: Boolean = false, 12 | @Keep @JvmField var mTaskInfo: XLTaskInfo = XLTaskInfo(), 13 | ) : Parcelable 14 | -------------------------------------------------------------------------------- /lib-thunder/src/main/java/com/xunlei/downloadlib/parameter/GetBooleanParam.kt: -------------------------------------------------------------------------------- 1 | package com.xunlei.downloadlib.parameter 2 | 3 | import android.os.Parcelable 4 | import androidx.annotation.Keep 5 | import kotlinx.parcelize.Parcelize 6 | 7 | @Keep 8 | @Parcelize 9 | data class GetBooleanParam( 10 | @Keep @JvmField var mValue: Boolean = false, 11 | ) : Parcelable { 12 | 13 | fun getValue(): Boolean { 14 | return mValue 15 | } 16 | } -------------------------------------------------------------------------------- /lib-thunder/src/main/java/com/xunlei/downloadlib/parameter/GetDownloadHead.kt: -------------------------------------------------------------------------------- 1 | package com.xunlei.downloadlib.parameter 2 | 3 | import android.os.Parcelable 4 | import androidx.annotation.Keep 5 | import kotlinx.parcelize.Parcelize 6 | 7 | @Keep 8 | @Parcelize 9 | data class GetDownloadHead( 10 | @Keep @JvmField var mHttpResponse: String? = null, 11 | @Keep @JvmField var mHttpState: Int = -1, 12 | ) : Parcelable 13 | -------------------------------------------------------------------------------- /lib-thunder/src/main/java/com/xunlei/downloadlib/parameter/GetDownloadLibVersion.kt: -------------------------------------------------------------------------------- 1 | package com.xunlei.downloadlib.parameter 2 | 3 | import android.os.Parcelable 4 | import androidx.annotation.Keep 5 | import kotlinx.parcelize.Parcelize 6 | 7 | @Keep 8 | @Parcelize 9 | data class GetDownloadLibVersion( 10 | @Keep @JvmField var mVersion: String? = null, 11 | ) : Parcelable { 12 | 13 | fun getVersion(): String { 14 | return mVersion.orEmpty() 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /lib-thunder/src/main/java/com/xunlei/downloadlib/parameter/GetFileName.kt: -------------------------------------------------------------------------------- 1 | package com.xunlei.downloadlib.parameter 2 | 3 | import android.os.Parcelable 4 | import androidx.annotation.Keep 5 | import kotlinx.parcelize.Parcelize 6 | 7 | @Keep 8 | @Parcelize 9 | data class GetFileName( 10 | @Keep @JvmField var mFileName: String? = null, 11 | ) : Parcelable { 12 | 13 | fun getFileName(): String { 14 | return mFileName.orEmpty() 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /lib-thunder/src/main/java/com/xunlei/downloadlib/parameter/GetTaskId.kt: -------------------------------------------------------------------------------- 1 | package com.xunlei.downloadlib.parameter 2 | 3 | import android.os.Parcelable 4 | import androidx.annotation.Keep 5 | import kotlinx.parcelize.Parcelize 6 | 7 | @Keep 8 | @Parcelize 9 | data class GetTaskId( 10 | @Keep @JvmField var mTaskId: Long = 0, 11 | ) : Parcelable { 12 | 13 | fun getTaskId(): Long { 14 | return mTaskId 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /lib-thunder/src/main/java/com/xunlei/downloadlib/parameter/MaxDownloadSpeedParam.kt: -------------------------------------------------------------------------------- 1 | package com.xunlei.downloadlib.parameter 2 | 3 | import androidx.annotation.Keep 4 | import android.os.Parcelable 5 | import kotlinx.parcelize.Parcelize 6 | 7 | @Keep 8 | @Parcelize 9 | data class MaxDownloadSpeedParam( 10 | @Keep @JvmField var mSpeed: Long = 0 11 | ) : Parcelable 12 | -------------------------------------------------------------------------------- /lib-thunder/src/main/java/com/xunlei/downloadlib/parameter/ThunderUrlInfo.kt: -------------------------------------------------------------------------------- 1 | package com.xunlei.downloadlib.parameter 2 | 3 | import androidx.annotation.Keep 4 | import android.os.Parcelable 5 | import kotlinx.parcelize.Parcelize 6 | 7 | @Keep 8 | @Parcelize 9 | data class ThunderUrlInfo( 10 | @Keep @JvmField var mUrl: String? = null 11 | ) : Parcelable 12 | -------------------------------------------------------------------------------- /lib-thunder/src/main/java/com/xunlei/downloadlib/parameter/TorrentFileInfo.kt: -------------------------------------------------------------------------------- 1 | package com.xunlei.downloadlib.parameter 2 | 3 | import android.os.Parcelable 4 | import androidx.annotation.Keep 5 | import kotlinx.parcelize.Parcelize 6 | 7 | @Keep 8 | @Parcelize 9 | data class TorrentFileInfo( 10 | @Keep @JvmField var mFileIndex: Int = 0, 11 | @Keep @JvmField var mFileName: String? = null, 12 | @Keep @JvmField var mFileSize: Long = 0, 13 | @Keep @JvmField var mRealIndex: Int = 0, 14 | @Keep @JvmField var mSubPath: String? = null 15 | ) : Parcelable 16 | -------------------------------------------------------------------------------- /lib-thunder/src/main/java/com/xunlei/downloadlib/parameter/UploadControlParam.kt: -------------------------------------------------------------------------------- 1 | package com.xunlei.downloadlib.parameter 2 | 3 | import androidx.annotation.Keep 4 | import android.os.Parcelable 5 | import kotlinx.parcelize.Parcelize 6 | 7 | @Keep 8 | @Parcelize 9 | data class UploadControlParam( 10 | @Keep @JvmField var allowUploadNetWorkType: Int = 0, 11 | @Keep @JvmField var maxUploadBytes: Long = 0, 12 | @Keep @JvmField var maxUploadTime: Long = 0, 13 | @Keep @JvmField var uploadForNoTask: Boolean = false, 14 | @Keep @JvmField var uploadInterval: Long = 0 15 | ) : Parcelable 16 | -------------------------------------------------------------------------------- /lib-thunder/src/main/java/com/xunlei/downloadlib/parameter/UrlQuickInfo.kt: -------------------------------------------------------------------------------- 1 | package com.xunlei.downloadlib.parameter 2 | 3 | import android.os.Parcelable 4 | import androidx.annotation.Keep 5 | import kotlinx.parcelize.Parcelize 6 | 7 | @Keep 8 | @Parcelize 9 | data class UrlQuickInfo( 10 | @Keep @JvmField var mContentType: String? = null, 11 | @Keep @JvmField var mFileNameAdvice: String? = null, 12 | @Keep @JvmField var mFileSize: Long = 0, 13 | @Keep @JvmField @XLConstant.QuickInfoState var mState: Int = 0, 14 | ) : Parcelable 15 | -------------------------------------------------------------------------------- /lib-thunder/src/main/java/com/xunlei/downloadlib/parameter/XLFirstMediaState.kt: -------------------------------------------------------------------------------- 1 | package com.xunlei.downloadlib.parameter 2 | 3 | import androidx.annotation.Keep 4 | import android.os.Parcelable 5 | import kotlinx.parcelize.Parcelize 6 | 7 | @Keep 8 | @Parcelize 9 | data class XLFirstMediaState( 10 | @Keep @JvmField var blockCount: Int = 0, 11 | @Keep @JvmField var disposeError: Int = 0, 12 | @Keep @JvmField var recvedCount: Int = 0, 13 | @Keep @JvmField var startRelateMs: Long = 0, 14 | @Keep @JvmField var state: Int = 0, 15 | @Keep @JvmField var stopRelateMs: Long = 0 16 | ) : Parcelable 17 | -------------------------------------------------------------------------------- /lib-thunder/src/main/java/com/xunlei/downloadlib/parameter/XLProductInfo.kt: -------------------------------------------------------------------------------- 1 | package com.xunlei.downloadlib.parameter 2 | 3 | import android.os.Parcelable 4 | import androidx.annotation.Keep 5 | import kotlinx.parcelize.Parcelize 6 | 7 | @Keep 8 | @Parcelize 9 | data class XLProductInfo( 10 | @Keep @JvmField var mProductKey: String? = null, 11 | @Keep @JvmField var mProductName: String? = null, 12 | ) : Parcelable 13 | -------------------------------------------------------------------------------- /lib-thunder/src/main/java/com/xunlei/downloadlib/parameter/XLRangeInfo.kt: -------------------------------------------------------------------------------- 1 | package com.xunlei.downloadlib.parameter 2 | 3 | import androidx.annotation.Keep 4 | import android.os.Parcelable 5 | import kotlinx.parcelize.Parcelize 6 | 7 | @Keep 8 | @Parcelize 9 | data class XLRangeInfo( 10 | @Keep @JvmField var mRangeInfo: String? = null 11 | ) : Parcelable 12 | -------------------------------------------------------------------------------- /lib-thunder/src/main/java/com/xunlei/downloadlib/parameter/XLSessionInfo.kt: -------------------------------------------------------------------------------- 1 | package com.xunlei.downloadlib.parameter 2 | 3 | import android.os.Parcelable 4 | import androidx.annotation.Keep 5 | import kotlinx.parcelize.Parcelize 6 | 7 | @Keep 8 | @Parcelize 9 | data class XLSessionInfo( 10 | @Keep @JvmField var mSendByte: Long = 0, 11 | @Keep @JvmField var mStartTime: Long = 0, 12 | ) : Parcelable 13 | -------------------------------------------------------------------------------- /lib-thunder/src/main/java/com/xunlei/downloadlib/parameter/XLTaskLocalUrl.kt: -------------------------------------------------------------------------------- 1 | package com.xunlei.downloadlib.parameter 2 | 3 | import android.os.Parcelable 4 | import androidx.annotation.Keep 5 | import kotlinx.parcelize.Parcelize 6 | 7 | @Keep 8 | @Parcelize 9 | data class XLTaskLocalUrl( 10 | @Keep 11 | @JvmField 12 | var mStrUrl: String? = null, 13 | ) : Parcelable 14 | -------------------------------------------------------------------------------- /lib-thunder/src/main/jniLibs/arm64-v8a/libthunder.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-thunder/src/main/jniLibs/arm64-v8a/libthunder.so -------------------------------------------------------------------------------- /lib-thunder/src/main/jniLibs/armeabi-v7a/libthunder.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaoyvyv/bangumi/632a803548848201a33d1f0ed73e31dedf342bc8/lib-thunder/src/main/jniLibs/armeabi-v7a/libthunder.so -------------------------------------------------------------------------------- /lib-thunder/src/test/java/com/xiaoyv/thunder/ExampleUnitTest.kt: -------------------------------------------------------------------------------- 1 | package com.xiaoyv.thunder 2 | 3 | import org.junit.Test 4 | 5 | import org.junit.Assert.* 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * See [testing documentation](http://d.android.com/tools/testing). 11 | */ 12 | class ExampleUnitTest { 13 | @Test 14 | fun addition_isCorrect() { 15 | assertEquals(4, 2 + 2) 16 | } 17 | } --------------------------------------------------------------------------------