gitextract_76v9j0zk/ ├── .editorconfig ├── .env.example ├── .git-blame-ignore-revs ├── .gitattributes ├── .github/ │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ ├── bug-report.zh-CN.yml │ │ └── feature-report.zh-CN.yml │ ├── PULL_REQUEST_TEMPLATE.md │ ├── dependabot.yml │ └── workflows/ │ ├── nightly-build.yml │ └── release.yml ├── .gitignore ├── .ncurc.yaml ├── .node-version ├── .npmrc ├── .nvmrc ├── .prettierignore ├── .prettierrc.yaml ├── .stylelintignore ├── .stylelintrc.yml ├── .vscode/ │ ├── extensions.json │ ├── launch.json │ ├── mcp.json │ └── settings.json ├── CHANGELOG.md ├── LICENSE.txt ├── README.md ├── SECURITY.md ├── ThirdPartyNotices.txt ├── build/ │ ├── entitlements.mac.inherit.plist │ ├── entitlements.mac.plist │ ├── icon.icns │ └── nsis-installer.nsh ├── commitlint.config.js ├── design/ │ ├── player.sketch │ └── video_platform.sketch ├── dev-app-update.yml ├── docs/ │ ├── Conventional_Commits.md │ ├── Develop.md │ ├── HarmonyOS_Electron.md │ ├── Loong_Electron.md │ └── Mcp.md ├── electron-builder.yml ├── electron.vite.config.ts ├── eslint.config.js ├── package.json ├── packages/ │ └── shared/ │ ├── config/ │ │ ├── appinfo.ts │ │ ├── cmsAction.ts │ │ ├── constant.ts │ │ ├── data.ts │ │ ├── dns.ts │ │ ├── env.ts │ │ ├── film.ts │ │ ├── ipcChannel.ts │ │ ├── live.ts │ │ ├── logger.ts │ │ ├── notification.ts │ │ ├── parse.ts │ │ ├── req.ts │ │ ├── setting.ts │ │ ├── shortcut.ts │ │ ├── tblSetting.ts │ │ ├── theme.ts │ │ ├── userAgent.ts │ │ ├── window.ts │ │ └── xmlOptions.ts │ ├── locales/ │ │ ├── index.ts │ │ └── lang/ │ │ ├── en-US/ │ │ │ ├── aigc.ts │ │ │ ├── common.ts │ │ │ ├── component.ts │ │ │ ├── index.ts │ │ │ ├── media.ts │ │ │ ├── pages/ │ │ │ │ ├── assets/ │ │ │ │ │ ├── binary-help.md │ │ │ │ │ ├── custom-player.md │ │ │ │ │ ├── disclaimer.md │ │ │ │ │ ├── lab-edit-help.md │ │ │ │ │ ├── live-epg.md │ │ │ │ │ └── live-logo.md │ │ │ │ ├── browser.ts │ │ │ │ ├── film.ts │ │ │ │ ├── index.ts │ │ │ │ ├── lab.ts │ │ │ │ ├── live.ts │ │ │ │ ├── md.ts │ │ │ │ ├── moment.ts │ │ │ │ ├── parse.ts │ │ │ │ ├── player.ts │ │ │ │ ├── plugin.ts │ │ │ │ └── setting.ts │ │ │ └── system.ts │ │ ├── zh-CN/ │ │ │ ├── aigc.ts │ │ │ ├── common.ts │ │ │ ├── component.ts │ │ │ ├── index.ts │ │ │ ├── media.ts │ │ │ ├── pages/ │ │ │ │ ├── assets/ │ │ │ │ │ ├── binary-help.md │ │ │ │ │ ├── custom-player.md │ │ │ │ │ ├── disclaimer.md │ │ │ │ │ ├── lab-edit-help.md │ │ │ │ │ ├── live-epg.md │ │ │ │ │ └── live-logo.md │ │ │ │ ├── browser.ts │ │ │ │ ├── film.ts │ │ │ │ ├── index.ts │ │ │ │ ├── lab.ts │ │ │ │ ├── live.ts │ │ │ │ ├── md.ts │ │ │ │ ├── moment.ts │ │ │ │ ├── parse.ts │ │ │ │ ├── player.ts │ │ │ │ ├── plugin.ts │ │ │ │ └── setting.ts │ │ │ └── system.ts │ │ └── zh-TW/ │ │ ├── aigc.ts │ │ ├── common.ts │ │ ├── component.ts │ │ ├── index.ts │ │ ├── media.ts │ │ ├── pages/ │ │ │ ├── assets/ │ │ │ │ ├── binary-help.md │ │ │ │ ├── custom-player.md │ │ │ │ ├── disclaimer.md │ │ │ │ ├── lab-edit-help.md │ │ │ │ ├── live-epg.md │ │ │ │ └── live-logo.md │ │ │ ├── browser.ts │ │ │ ├── film.ts │ │ │ ├── index.ts │ │ │ ├── lab.ts │ │ │ ├── live.ts │ │ │ ├── md.ts │ │ │ ├── moment.ts │ │ │ ├── parse.ts │ │ │ ├── player.ts │ │ │ ├── plugin.ts │ │ │ └── setting.ts │ │ └── system.ts │ ├── modules/ │ │ ├── __tests__/ │ │ │ ├── camelcase.test.ts │ │ │ ├── headers.test.ts │ │ │ ├── obj.test.ts │ │ │ └── validate.test.ts │ │ ├── cache.ts │ │ ├── camelcase.ts │ │ ├── crypto/ │ │ │ ├── core/ │ │ │ │ ├── base.ts │ │ │ │ ├── encode.ts │ │ │ │ ├── encrypt/ │ │ │ │ │ ├── aes.ts │ │ │ │ │ ├── crypto.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── rsa.ts │ │ │ │ │ └── sm.ts │ │ │ │ └── mac.ts │ │ │ ├── index.ts │ │ │ ├── modules/ │ │ │ │ └── atob-btoa.ts │ │ │ ├── type.ts │ │ │ └── utils/ │ │ │ ├── base.ts │ │ │ ├── forge.ts │ │ │ └── wordArray.ts │ │ ├── date.ts │ │ ├── function.ts │ │ ├── headers.ts │ │ ├── ip.ts │ │ ├── lrucache.ts │ │ ├── obj.ts │ │ ├── request/ │ │ │ ├── axios/ │ │ │ │ ├── Axios.ts │ │ │ │ ├── AxiosCancel.ts │ │ │ │ └── AxiosTransform.ts │ │ │ ├── constants.ts │ │ │ ├── index.ts │ │ │ ├── sse/ │ │ │ │ ├── Sse.ts │ │ │ │ ├── SseCancel.ts │ │ │ │ └── SseTransform.ts │ │ │ ├── type.ts │ │ │ ├── utils.ts │ │ │ └── ws/ │ │ │ ├── Ws.ts │ │ │ ├── WsCancel.ts │ │ │ └── WsTransform.ts │ │ ├── schedule.ts │ │ ├── singleton.ts │ │ ├── size.ts │ │ ├── toString.ts │ │ ├── validate.ts │ │ └── zip/ │ │ ├── 7z.ts │ │ ├── gz.ts │ │ ├── index.ts │ │ ├── tgz.ts │ │ └── zip.ts │ └── types/ │ ├── barrage.ts │ ├── cms.ts │ ├── common.ts │ ├── db.ts │ ├── sift.ts │ └── systeminfo.ts ├── patches/ │ ├── @oplayer-core-npm-1.2.38-beta.2-66bf7d6252.patch │ ├── @oplayer-torrent-npm-1.2.25-beta.2-6efddccea2.patch │ ├── artplayer@5.4.0.patch │ ├── atomically-npm-1.7.0-e742e5293b.patch │ ├── dplayer@1.32.7.patch │ ├── electron-devtools-installer-npm-4.0.0-ea55a28d94.patch │ ├── electron-updater-npm-6.7.0-47b11bb0d4.patch │ ├── file-stream-rotator-npm-0.6.1-eab45fb13d.patch │ ├── libsql-npm-0.4.7-444e260fb1.patch │ └── shaka-player-npm-4.13.0-5e61f852f3.patch ├── pnpm-workspace.yaml ├── resources/ │ ├── scripts/ │ │ ├── download.js │ │ ├── install-bun.js │ │ ├── install-ffmpeg.js │ │ ├── install-ffprobe.js │ │ └── install-uv.js │ ├── t3Catopen/ │ │ ├── cat.js │ │ ├── crypto-js.js │ │ ├── http.js │ │ ├── mod.js │ │ ├── similarity.js │ │ ├── sortName.js │ │ └── spider.js │ └── t3PyBase/ │ ├── __tests__/ │ │ ├── demo.py │ │ ├── logger.py │ │ └── test.py │ ├── base/ │ │ ├── htmlParser.py │ │ └── spider.py │ ├── main.py │ ├── pyproject.toml │ └── requirements.txt ├── scripts/ │ ├── after-pack.js │ ├── artifact-build-completed.js │ ├── before-pack.js │ ├── generate-changelog.js │ ├── generate-license.js │ ├── minidump.js │ ├── notarize.js │ ├── version.js │ └── win-sign.js ├── src/ │ ├── main/ │ │ ├── electron.d.ts │ │ ├── env.d.ts │ │ ├── index.ts │ │ ├── ipc.ts │ │ ├── services/ │ │ │ ├── AppLocale.ts │ │ │ ├── AppService.ts │ │ │ ├── AppUpdater.ts │ │ │ ├── BinaryService.ts │ │ │ ├── CdpElectron.ts │ │ │ ├── ConfigManager.ts │ │ │ ├── ContextMenu.ts │ │ │ ├── DbService/ │ │ │ │ ├── crud/ │ │ │ │ │ ├── analyze.ts │ │ │ │ │ ├── channel.ts │ │ │ │ │ ├── history.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── iptv.ts │ │ │ │ │ ├── plugin.ts │ │ │ │ │ ├── setting.ts │ │ │ │ │ ├── site.ts │ │ │ │ │ └── star.ts │ │ │ │ ├── index.ts │ │ │ │ ├── migrations/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── migrate-3_3_1.ts │ │ │ │ │ ├── migrate-3_3_10.ts │ │ │ │ │ ├── migrate-3_3_2.ts │ │ │ │ │ ├── migrate-3_3_4.ts │ │ │ │ │ ├── migrate-3_3_5.ts │ │ │ │ │ ├── migrate-3_3_7.ts │ │ │ │ │ ├── migrate-3_3_8.ts │ │ │ │ │ ├── migrate-3_3_9.ts │ │ │ │ │ ├── migrate-3_4_0.ts │ │ │ │ │ └── migrate-3_4_1.ts │ │ │ │ └── schemas/ │ │ │ │ ├── analyze.ts │ │ │ │ ├── channel.ts │ │ │ │ ├── history.ts │ │ │ │ ├── index.ts │ │ │ │ ├── iptv.ts │ │ │ │ ├── plugin.ts │ │ │ │ ├── setting.ts │ │ │ │ ├── site.ts │ │ │ │ └── star.ts │ │ │ ├── FFmpegService.ts │ │ │ ├── FastifyService/ │ │ │ │ ├── fastify.d.ts │ │ │ │ ├── index.ts │ │ │ │ ├── routes/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── v0/ │ │ │ │ │ │ └── proxy/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ └── v1/ │ │ │ │ │ ├── aigc/ │ │ │ │ │ │ ├── chat.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── memory.ts │ │ │ │ │ │ └── utils/ │ │ │ │ │ │ ├── chat.ts │ │ │ │ │ │ └── memory.ts │ │ │ │ │ ├── data/ │ │ │ │ │ │ ├── cloud.ts │ │ │ │ │ │ ├── db.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── utils/ │ │ │ │ │ │ └── data.ts │ │ │ │ │ ├── file/ │ │ │ │ │ │ ├── film.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── manage.ts │ │ │ │ │ ├── film/ │ │ │ │ │ │ ├── cms/ │ │ │ │ │ │ │ ├── adapter/ │ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ │ ├── t0Xml.ts │ │ │ │ │ │ │ │ ├── t1Json.ts │ │ │ │ │ │ │ │ ├── t3Alist.ts │ │ │ │ │ │ │ │ ├── t3AppGet.ts │ │ │ │ │ │ │ │ ├── t3AppYsV2.ts │ │ │ │ │ │ │ │ ├── t3Catopen/ │ │ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ │ │ ├── inject.ts │ │ │ │ │ │ │ │ │ └── worker.ts │ │ │ │ │ │ │ │ ├── t3Drpy/ │ │ │ │ │ │ │ │ │ ├── decrypt.ts │ │ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ │ │ ├── inject.ts │ │ │ │ │ │ │ │ │ ├── templates.ts │ │ │ │ │ │ │ │ │ └── worker.ts │ │ │ │ │ │ │ │ ├── t3Py.ts │ │ │ │ │ │ │ │ ├── t3Xbpq/ │ │ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ │ │ ├── methods.ts │ │ │ │ │ │ │ │ │ └── rule.ts │ │ │ │ │ │ │ │ ├── t3Xyq.ts │ │ │ │ │ │ │ │ ├── t4Catvod.ts │ │ │ │ │ │ │ │ ├── t4DrpyJs0.ts │ │ │ │ │ │ │ │ └── t4Drpys.ts │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ └── utils/ │ │ │ │ │ │ │ ├── cache.ts │ │ │ │ │ │ │ └── cms.ts │ │ │ │ │ │ ├── edit/ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ └── utils/ │ │ │ │ │ │ │ └── sift.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── rec/ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ └── utils/ │ │ │ │ │ │ │ ├── barrage.ts │ │ │ │ │ │ │ ├── douban.ts │ │ │ │ │ │ │ └── hot.ts │ │ │ │ │ │ └── site.ts │ │ │ │ │ ├── live/ │ │ │ │ │ │ ├── channel.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── iptv.ts │ │ │ │ │ │ └── utils/ │ │ │ │ │ │ ├── channel.ts │ │ │ │ │ │ └── epg.ts │ │ │ │ │ ├── moment/ │ │ │ │ │ │ ├── history.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── moment.ts │ │ │ │ │ │ └── star.ts │ │ │ │ │ ├── parse/ │ │ │ │ │ │ ├── analyze.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── parse.ts │ │ │ │ │ │ └── utils/ │ │ │ │ │ │ └── mediaDirect.ts │ │ │ │ │ ├── plugin/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── setting/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ └── system/ │ │ │ │ │ ├── binary.ts │ │ │ │ │ ├── cdp.ts │ │ │ │ │ ├── ffmpeg.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── other.ts │ │ │ │ │ ├── process.ts │ │ │ │ │ └── utils/ │ │ │ │ │ ├── m3u8.ts │ │ │ │ │ └── sniffer.ts │ │ │ │ └── schemas/ │ │ │ │ ├── base.ts │ │ │ │ ├── v0/ │ │ │ │ │ └── proxy.ts │ │ │ │ └── v1/ │ │ │ │ ├── aigc/ │ │ │ │ │ ├── chat.ts │ │ │ │ │ └── memory.ts │ │ │ │ ├── data/ │ │ │ │ │ ├── cloud.ts │ │ │ │ │ └── db.ts │ │ │ │ ├── file/ │ │ │ │ │ ├── film.ts │ │ │ │ │ └── manage.ts │ │ │ │ ├── flim/ │ │ │ │ │ ├── cms.ts │ │ │ │ │ ├── edit.ts │ │ │ │ │ ├── rec.ts │ │ │ │ │ └── site.ts │ │ │ │ ├── live/ │ │ │ │ │ ├── channel.ts │ │ │ │ │ └── iptv.ts │ │ │ │ ├── moment/ │ │ │ │ │ ├── history.ts │ │ │ │ │ ├── moment.ts │ │ │ │ │ └── star.ts │ │ │ │ ├── parse/ │ │ │ │ │ ├── analyze.ts │ │ │ │ │ └── parse.ts │ │ │ │ ├── plugin.ts │ │ │ │ ├── setting.ts │ │ │ │ └── system/ │ │ │ │ ├── binary.ts │ │ │ │ ├── cdp.ts │ │ │ │ ├── ffmpeg.ts │ │ │ │ ├── other.ts │ │ │ │ └── process.ts │ │ │ ├── FileStorage.ts │ │ │ ├── LoggerService.ts │ │ │ ├── MenuService.ts │ │ │ ├── NotificationService.ts │ │ │ ├── PluginService.ts │ │ │ ├── ProtocolClient.ts │ │ │ ├── ProxyManager.ts │ │ │ ├── PythonService.ts │ │ │ ├── ShortcutService.ts │ │ │ ├── StorageService/ │ │ │ │ ├── ICloudStorage.ts │ │ │ │ ├── WebdavStorage.ts │ │ │ │ └── index.ts │ │ │ ├── ThemeService.ts │ │ │ ├── TrayService.ts │ │ │ ├── WebviewService.ts │ │ │ ├── WindowService.ts │ │ │ └── __tests__/ │ │ │ └── ProxyManager.test.ts │ │ ├── types/ │ │ │ ├── argv.ts │ │ │ ├── server.ts │ │ │ └── tvbox.ts │ │ └── utils/ │ │ ├── argv.ts │ │ ├── file.ts │ │ ├── hiker/ │ │ │ ├── baseSpider.ts │ │ │ ├── crypto.ts │ │ │ ├── htmlParser.ts │ │ │ ├── index.ts │ │ │ ├── inject.ts │ │ │ ├── jinja.ts │ │ │ ├── local.ts │ │ │ ├── proxy.ts │ │ │ ├── request/ │ │ │ │ ├── asyncAxios.ts │ │ │ │ ├── syncFetch.ts │ │ │ │ └── syncRequest.ts │ │ │ ├── ruleParse.ts │ │ │ ├── similarity.ts │ │ │ └── ua.ts │ │ ├── ip.ts │ │ ├── path.ts │ │ ├── process.ts │ │ ├── request/ │ │ │ └── index.ts │ │ ├── shell.ts │ │ ├── systeminfo.ts │ │ └── tool.ts │ ├── preload/ │ │ ├── index.ts │ │ ├── preload.d.ts │ │ └── utils/ │ │ ├── dom.ts │ │ └── loading.ts │ └── renderer/ │ ├── index.html │ └── src/ │ ├── App.vue │ ├── api/ │ │ ├── aigc.ts │ │ ├── data.ts │ │ ├── film.ts │ │ ├── live.ts │ │ ├── moment.ts │ │ ├── parse.ts │ │ ├── plugin.ts │ │ ├── proxy.ts │ │ ├── setting.ts │ │ └── system.ts │ ├── components/ │ │ ├── action/ │ │ │ ├── components/ │ │ │ │ ├── ActionSection.vue │ │ │ │ ├── BrowserActionSection.vue │ │ │ │ ├── FormActionSection.vue │ │ │ │ ├── HelpActionSection.vue │ │ │ │ └── MsgBoxActionSection.vue │ │ │ ├── index.vue │ │ │ └── utils.ts │ │ ├── aigc/ │ │ │ └── index.vue │ │ ├── code-editor/ │ │ │ ├── index.ts │ │ │ └── src/ │ │ │ ├── code-editor-types.ts │ │ │ ├── code-editor.less │ │ │ ├── code-editor.tsx │ │ │ ├── composables/ │ │ │ │ ├── use-code-editor-hooks.ts │ │ │ │ └── use-code-editor.ts │ │ │ └── themes/ │ │ │ ├── code-dark.ts │ │ │ ├── code-light.ts │ │ │ └── index.ts │ │ ├── common-nav/ │ │ │ └── index.vue │ │ ├── dialog-document/ │ │ │ └── index.vue │ │ ├── group-btn/ │ │ │ └── index.vue │ │ ├── input-req/ │ │ │ ├── index.vue │ │ │ └── utils.ts │ │ ├── input-shortcut/ │ │ │ └── index.vue │ │ ├── lazy-bg/ │ │ │ └── index.vue │ │ ├── multi-player/ │ │ │ ├── CHANGELOG.md │ │ │ ├── README.md │ │ │ ├── global.d.ts │ │ │ ├── index.ts │ │ │ └── src/ │ │ │ ├── assets/ │ │ │ │ └── css/ │ │ │ │ └── index.less │ │ │ ├── core/ │ │ │ │ ├── artplayer/ │ │ │ │ │ ├── css/ │ │ │ │ │ │ └── index.css │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── plugins/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── playNext.ts │ │ │ │ │ ├── types.ts │ │ │ │ │ └── utils/ │ │ │ │ │ └── index.ts │ │ │ │ ├── dplayer/ │ │ │ │ │ ├── css/ │ │ │ │ │ │ └── index.css │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── types.ts │ │ │ │ │ └── utils/ │ │ │ │ │ └── index.ts │ │ │ │ ├── index.ts │ │ │ │ ├── nplayer/ │ │ │ │ │ ├── css/ │ │ │ │ │ │ └── index.css │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── locales/ │ │ │ │ │ │ └── zh-tw.ts │ │ │ │ │ ├── plugins/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── pip.ts │ │ │ │ │ │ └── playNext.ts │ │ │ │ │ ├── types.ts │ │ │ │ │ └── utils/ │ │ │ │ │ └── index.ts │ │ │ │ ├── oplayer/ │ │ │ │ │ ├── css/ │ │ │ │ │ │ └── index.css │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── locales/ │ │ │ │ │ │ └── zh-tw.ts │ │ │ │ │ └── types.ts │ │ │ │ └── xgplayer/ │ │ │ │ ├── css/ │ │ │ │ │ └── index.css │ │ │ │ ├── index.ts │ │ │ │ ├── plugins/ │ │ │ │ │ ├── danmuSend.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── playNext.ts │ │ │ │ ├── types.ts │ │ │ │ └── utils/ │ │ │ │ └── index.ts │ │ │ ├── multi-player.tsx │ │ │ ├── types.ts │ │ │ └── utils/ │ │ │ ├── static.ts │ │ │ ├── storage.ts │ │ │ ├── stream-decoder.ts │ │ │ └── tool.ts │ │ ├── play-show/ │ │ │ └── index.vue │ │ ├── quick-menu/ │ │ │ ├── components/ │ │ │ │ ├── Ai.vue │ │ │ │ ├── Lab.vue │ │ │ │ ├── Language.vue │ │ │ │ ├── Setting.vue │ │ │ │ ├── Sponsor.vue │ │ │ │ └── Theme.vue │ │ │ └── index.vue │ │ ├── render-icon/ │ │ │ └── index.vue │ │ ├── render-markdown/ │ │ │ └── index.vue │ │ ├── router-control/ │ │ │ └── index.vue │ │ ├── search-panel/ │ │ │ └── index.vue │ │ ├── setting-table/ │ │ │ ├── index.vue │ │ │ └── types.ts │ │ ├── share/ │ │ │ ├── index.vue │ │ │ └── types.ts │ │ ├── system-control/ │ │ │ └── index.vue │ │ ├── tag-nav/ │ │ │ └── index.vue │ │ ├── terminal/ │ │ │ └── index.vue │ │ ├── title-menu/ │ │ │ ├── index.less │ │ │ └── index.vue │ │ └── webview/ │ │ └── index.vue │ ├── config/ │ │ ├── aigc.ts │ │ ├── browser.ts │ │ ├── emitterChannel.ts │ │ ├── global.ts │ │ ├── hot.ts │ │ ├── parse.ts │ │ ├── player.ts │ │ └── setting.ts │ ├── layouts/ │ │ ├── components/ │ │ │ ├── Content.vue │ │ │ ├── Header.vue │ │ │ ├── LayoutContent.vue │ │ │ ├── LayoutHeader.vue │ │ │ ├── LayoutSideNav.vue │ │ │ └── SideNav.vue │ │ └── index.vue │ ├── locales/ │ │ ├── index.ts │ │ └── useLocale.ts │ ├── main.ts │ ├── pages/ │ │ ├── Disclaimer.vue │ │ ├── browser/ │ │ │ └── index.vue │ │ ├── film/ │ │ │ ├── components/ │ │ │ │ └── DialogDetail.vue │ │ │ └── index.vue │ │ ├── lab/ │ │ │ ├── components/ │ │ │ │ ├── crypto/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── encode.vue │ │ │ │ │ │ ├── encrypt.vue │ │ │ │ │ │ └── hash.vue │ │ │ │ │ └── index.vue │ │ │ │ ├── diff/ │ │ │ │ │ └── index.vue │ │ │ │ ├── edit/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ └── DialogTemplate.vue │ │ │ │ │ ├── index.vue │ │ │ │ │ └── utils/ │ │ │ │ │ ├── comm.ts │ │ │ │ │ ├── config.ts │ │ │ │ │ ├── inject/ │ │ │ │ │ │ └── 7/ │ │ │ │ │ │ ├── extraLib.d.ts │ │ │ │ │ │ └── suggestions.ts │ │ │ │ │ └── log.ts │ │ │ │ ├── extension/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── env/ │ │ │ │ │ │ │ └── index.vue │ │ │ │ │ │ └── plugin/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── DialogDetail.vue │ │ │ │ │ │ │ └── DialogInstall.vue │ │ │ │ │ │ ├── constants.ts │ │ │ │ │ │ └── index.vue │ │ │ │ │ └── index.vue │ │ │ │ ├── player/ │ │ │ │ │ └── index.vue │ │ │ │ ├── sift/ │ │ │ │ │ └── index.vue │ │ │ │ └── sniffer/ │ │ │ │ └── index.vue │ │ │ └── index.vue │ │ ├── live/ │ │ │ └── index.vue │ │ ├── moment/ │ │ │ ├── components/ │ │ │ │ ├── history/ │ │ │ │ │ └── index.vue │ │ │ │ └── star/ │ │ │ │ └── index.vue │ │ │ └── index.vue │ │ ├── parse/ │ │ │ └── index.vue │ │ ├── player/ │ │ │ ├── components/ │ │ │ │ ├── AsideFilm.vue │ │ │ │ ├── AsideLive.vue │ │ │ │ ├── AsideParse.vue │ │ │ │ ├── DialogDownload.vue │ │ │ │ ├── DialogSetting.vue │ │ │ │ └── Header.vue │ │ │ └── index.vue │ │ ├── setting/ │ │ │ ├── components/ │ │ │ │ ├── base/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── DialogBarrage.vue │ │ │ │ │ │ ├── DialogDns.vue │ │ │ │ │ │ ├── DialogProxy.vue │ │ │ │ │ │ ├── DialogSniffer.vue │ │ │ │ │ │ ├── DialogUa.vue │ │ │ │ │ │ └── DialogUpdate.vue │ │ │ │ │ └── index.vue │ │ │ │ ├── data/ │ │ │ │ │ └── index.vue │ │ │ │ ├── film/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ └── DialogForm.vue │ │ │ │ │ ├── constants.ts │ │ │ │ │ └── index.vue │ │ │ │ ├── live/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ └── DialogForm.vue │ │ │ │ │ ├── constants.ts │ │ │ │ │ └── index.vue │ │ │ │ └── parse/ │ │ │ │ ├── components/ │ │ │ │ │ └── DialogForm.vue │ │ │ │ ├── constants.ts │ │ │ │ └── index.vue │ │ │ └── index.vue │ │ └── test/ │ │ ├── components/ │ │ │ ├── action/ │ │ │ │ └── index.vue │ │ │ ├── demo/ │ │ │ │ └── index.vue │ │ │ ├── editor/ │ │ │ │ └── index.vue │ │ │ ├── player/ │ │ │ │ └── index.vue │ │ │ └── webview/ │ │ │ └── index.vue │ │ └── index.vue │ ├── router/ │ │ ├── index.ts │ │ └── modules/ │ │ └── homepage.ts │ ├── store/ │ │ ├── index.ts │ │ └── modules/ │ │ ├── browser.ts │ │ ├── player.ts │ │ └── setting.ts │ ├── style/ │ │ ├── base.less │ │ ├── browser.less │ │ ├── font-family.less │ │ ├── index.less │ │ ├── layout.less │ │ ├── normalize.less │ │ ├── player.less │ │ ├── theme.less │ │ └── variables.less │ ├── types/ │ │ ├── globals.d.ts │ │ ├── interface.d.ts │ │ ├── player.ts │ │ └── vue-virtual-scroller.d.ts │ └── utils/ │ ├── console.ts │ ├── emitter.ts │ ├── logger.ts │ ├── ospy.ts │ ├── request/ │ │ ├── api.ts │ │ ├── index.ts │ │ ├── normal.ts │ │ ├── sse.ts │ │ └── ws.ts │ ├── setup.ts │ ├── systeminfo.ts │ ├── tool.ts │ └── vitalsObserver.ts ├── tests/ │ ├── __mocks__/ │ │ ├── MainLoggerService.ts │ │ └── RendererLoggerService.ts │ ├── main.setup.ts │ └── renderer.setup.ts ├── tsconfig.json ├── tsconfig.node.json ├── tsconfig.web.json └── vitest.config.ts