diff --git a/web/src/components/DialogTorrentDetailsContent/Table/index.jsx b/web/src/components/DialogTorrentDetailsContent/Table/index.jsx index 688206884..3afc09375 100644 --- a/web/src/components/DialogTorrentDetailsContent/Table/index.jsx +++ b/web/src/components/DialogTorrentDetailsContent/Table/index.jsx @@ -20,6 +20,16 @@ const Table = memo( ({ playableFileList, viewedFileList, selectedSeason, seasonAmount, hash }) => { const { t } = useTranslation() const [isSupported, setIsSupported] = useState(true) + const playerPref = localStorage.getItem('preferredPlayer') ?? 'vlc' + const getPlayerProtocol = pref => { + const map = { + vlc: 'vlc://', + potplayer: 'potplayer://', + } + if (!pref) return 'vlc://' + return map[pref] || `${pref}://` + } + const isPlayerUsed = JSON.parse(localStorage.getItem('isPlayerUsed')) ?? JSON.parse(localStorage.getItem('isVlcUsed')) ?? false const preloadBuffer = fileId => fetch(`${streamHost()}?link=${hash}&index=${fileId}&preload`) const getFileLink = (path, id) => `${streamHost()}/${encodeURIComponent(path.split('\\').pop().split('/').pop())}?link=${hash}&index=${id}&play` @@ -85,12 +95,19 @@ const Table = memo( )} - {isVlcUsed && ( - - - + {isPlayerUsed && ( + )} {isMac && isIinaUsed && ( @@ -189,12 +206,19 @@ const Table = memo( )} - {isVlcUsed && ( - - - + {isPlayerUsed && ( + )} {isMac && isIinaUsed && ( @@ -224,6 +248,8 @@ const Table = memo( ) })} + + ) }, diff --git a/web/src/components/Settings/MobileAppSettings.jsx b/web/src/components/Settings/MobileAppSettings.jsx index e5762c2ca..1351de5a9 100644 --- a/web/src/components/Settings/MobileAppSettings.jsx +++ b/web/src/components/Settings/MobileAppSettings.jsx @@ -1,4 +1,4 @@ -import { FormControlLabel, FormGroup, FormHelperText, Switch } from '@material-ui/core' +import { FormControlLabel, FormGroup, FormHelperText, Switch, FormControl, InputLabel, Select, MenuItem } from '@material-ui/core' import { isMacOS, isAppleDevice } from 'utils/Utils' import { useTranslation } from 'react-i18next' @@ -11,6 +11,10 @@ export default function MobileAppSettings({ setIsInfuseUsed, isIinaUsed, setIsIinaUsed, + isPlayerUsed, + setIsPlayerUsed, + preferredPlayer, + setPreferredPlayer, }) { const { t } = useTranslation() const isMac = isMacOS() @@ -21,11 +25,28 @@ export default function MobileAppSettings({ {t('SettingsDialog.MobileAppSettings')} setIsVlcUsed(prev => !prev)} color='secondary' />} + control={ setIsPlayerUsed(prev => !prev)} color='secondary' />} label={t('SettingsDialog.UseVLC')} labelPlacement='start' /> {t('SettingsDialog.UseVLCHint')} + + + {t('SettingsDialog.PreferredPlayer')} + + {t('SettingsDialog.PreferredPlayerHint')} + {isApple && ( <> { axios.post(settingsHost(), { action: 'get' }).then(({ data }) => { @@ -58,6 +62,8 @@ export default function SettingsDialog({ handleClose }) { localStorage.setItem('isVlcUsed', isVlcUsed) localStorage.setItem('isInfuseUsed', isInfuseUsed) localStorage.setItem('isIinaUsed', isIinaUsed) + localStorage.setItem('isPlayerUsed', isPlayerUsed) + localStorage.setItem('preferredPlayer', preferredPlayer) } const inputForm = ({ target: { type, value, checked, id } }) => { @@ -189,6 +195,10 @@ export default function SettingsDialog({ handleClose }) { setIsInfuseUsed={setIsInfuseUsed} isIinaUsed={isIinaUsed} setIsIinaUsed={setIsIinaUsed} + isPlayerUsed={isPlayerUsed} + setIsPlayerUsed={setIsPlayerUsed} + preferredPlayer={preferredPlayer} + setPreferredPlayer={setPreferredPlayer} /> diff --git a/web/src/locales/bg/translation.json b/web/src/locales/bg/translation.json index 3dca989a3..3b3a9aff9 100644 --- a/web/src/locales/bg/translation.json +++ b/web/src/locales/bg/translation.json @@ -198,8 +198,10 @@ "UseDiskDesc": "По-добре използвайте RAM или външна памет на флаш-базирани устройства", "UseInfuse": "Подкана за отваряне на видео в Infuse", "UseInfuseHint": "Добави бутон към Infuse плеъра за списъка с торенти", - "UseVLC": "Подкана за отваряне на видео във VLC", - "UseVLCHint": "Добави бутон към VLC плеъра за списъка с торенти", + "UseVLC": "Подкана за отваряне на видео в плеър", + "UseVLCHint": "Добави бутон за външен плеър в списъка с торент съдържание", + "PreferredPlayer": "Предпочитан плеър", + "PreferredPlayerHint": "Изберете протокол на плеъра за външно възпроизвеждане (VLC или PotPlayer)", "UseIINA": "Подкана за отваряне на видео в IINA", "UseIINAHint": "Добави бутон към IINA плеъра за списъка с торенти (само macOS)", "ViewedHistoryStorage": "Съхранение на историята на прегледите:", diff --git a/web/src/locales/en/translation.json b/web/src/locales/en/translation.json index 7f01dd07b..d9f82e85d 100644 --- a/web/src/locales/en/translation.json +++ b/web/src/locales/en/translation.json @@ -198,8 +198,10 @@ "UseDiskDesc": "Better use RAM or external storage on flash-based devices", "UseInfuse": "Prompt to open video in Infuse", "UseInfuseHint": "Add Infuse player button to torrent content list", - "UseVLC": "Prompt to open video in VLC", - "UseVLCHint": "Add VLC player button to torrent content list", + "UseVLC": "Prompt to open video in player", + "UseVLCHint": "Add external player button to torrent content list", + "PreferredPlayer": "Preferred player", + "PreferredPlayerHint": "Choose player protocol for external player", "UseIINA": "Prompt to open video in IINA", "UseIINAHint": "Add IINA player button to torrent content list (macOS only)", "ViewedHistoryStorage": "Viewed History Storage:", diff --git a/web/src/locales/fr/translation.json b/web/src/locales/fr/translation.json index 6e9372a2b..1913111a9 100644 --- a/web/src/locales/fr/translation.json +++ b/web/src/locales/fr/translation.json @@ -198,8 +198,10 @@ "UseDiskDesc": "Mieux vaut utiliser la RAM ou un stockage externe sur les appareils à base de flash", "UseInfuse": "Demander d'ouvrir la vidéo dans Infuse", "UseInfuseHint": "Ajouter un bouton de lecteur Infuse à la liste de contenu du torrent", - "UseVLC": "Demander d'ouvrir la vidéo dans VLC", - "UseVLCHint": "Ajouter un bouton de lecteur VLC à la liste de contenu du torrent", + "UseVLC": "Proposer d'ouvrir la vidéo dans le lecteur", + "UseVLCHint": "Ajouter un bouton pour lecteur externe à la liste du contenu du torrent", + "PreferredPlayer": "Lecteur préféré", + "PreferredPlayerHint": "Choisissez le protocole du lecteur pour l'ouverture externe (VLC ou PotPlayer)", "UseIINA": "Demander d'ouvrir la vidéo dans IINA", "UseIINAHint": "Ajouter un bouton de lecteur IINA à la liste de contenu du torrent (macOS uniquement)", "ViewedHistoryStorage": "Stockage de l'historique des vues :", diff --git a/web/src/locales/ro/translation.json b/web/src/locales/ro/translation.json index 7f9202de5..f8bf91a96 100644 --- a/web/src/locales/ro/translation.json +++ b/web/src/locales/ro/translation.json @@ -198,8 +198,10 @@ "UseDiskDesc": "Utilizați mai bine memoria RAM sau spațiul de stocare extern pe dispozitivele bazate pe flash.", "UseInfuse": "Solicitare pentru deschiderea videoclipului în Infuse", "UseInfuseHint": "Adăugați butonul Infuse player la lista de conținut torrent", - "UseVLC": "Solicitare pentru deschiderea videoclipului în VLC", - "UseVLCHint": "Adăugați butonul VLC player la lista de conținut torrent", + "UseVLC": "Solicitare pentru deschiderea videoclipului în player", + "UseVLCHint": "Adăugați buton pentru player extern în lista de conținut torrent", + "PreferredPlayer": "Player preferat", + "PreferredPlayerHint": "Alegeți protocolul playerului pentru redare externă (VLC sau PotPlayer)", "UseIINA": "Solicitare pentru deschiderea videoclipului în IINA", "UseIINAHint": "Adăugați butonul IINA player la lista de conținut torrent (doar macOS)", "ViewedHistoryStorage": "Istoricul vizualizărilor stocate:", diff --git a/web/src/locales/ru/translation.json b/web/src/locales/ru/translation.json index 93e2f3cdd..278bad35a 100644 --- a/web/src/locales/ru/translation.json +++ b/web/src/locales/ru/translation.json @@ -198,8 +198,10 @@ "UseDiskDesc": "Рекомендуется использовать оперативную память или внешние носители на устройствах с flash-памятью", "UseInfuse": "Предлагать открыть видео в Infuse", "UseInfuseHint": "Добавить кнопку проигрывателя Infuse в список торрент-контента", - "UseVLC": "Предлагать открыть видео в VLC", - "UseVLCHint": "Добавить кнопку проигрывателя VLC в список торрент-контента", + "UseVLC": "Предлагать открыть видео в плеере", + "UseVLCHint": "Добавить кнопку внешнего плеера в список торрент-контента", + "PreferredPlayer": "Предпочитаемый плеер", + "PreferredPlayerHint": "Выберите протокол плеера для внешнего воспроизведения (VLC или PotPlayer)", "UseIINA": "Предлагать открыть видео в IINA", "UseIINAHint": "Добавить кнопку проигрывателя IINA в список торрент-контента (только macOS)", "ViewedHistoryStorage": "Хранилище истории просмотров:", diff --git a/web/src/locales/ua/translation.json b/web/src/locales/ua/translation.json index 2cb03e84c..3b6d58570 100644 --- a/web/src/locales/ua/translation.json +++ b/web/src/locales/ua/translation.json @@ -198,8 +198,10 @@ "UseDiskDesc": "Краще використовуйте оперативну пам'ять або зовнішню пам'ять на пристроях на основі flash-пам'яттю", "UseInfuse": "Пропонувати відкрити відео в Infuse", "UseInfuseHint": "Додати кнопку програвача Infuse до списку торрент-контенту", - "UseVLC": "Пропонувати відкрити відео у VLC", + "UseVLC": "Пропонувати відкрити відео у плеєрі", "UseVLCHint": "Додати кнопку програвача VLC до списку торрент-контенту", + "PreferredPlayer": "Переважний плеєр", + "PreferredPlayerHint": "Виберіть протокол плеєра для зовнішнього відтворення (VLC або PotPlayer)", "UseIINA": "Пропонувати відкрити відео в IINA", "UseIINAHint": "Додати кнопку програвача IINA до списку торрент-контенту (тільки macOS)", "ViewedHistoryStorage": "Збереження історії переглядів:", diff --git a/web/src/locales/zh/translation.json b/web/src/locales/zh/translation.json index e0c00d13c..22d33dffd 100644 --- a/web/src/locales/zh/translation.json +++ b/web/src/locales/zh/translation.json @@ -198,8 +198,10 @@ "UseDiskDesc": "最好使用内存或固态存储作为缓存", "UseInfuse": "提示在 Infuse 中打开视频", "UseInfuseHint": "将 Infuse 播放器按钮添加到种子内容列表", - "UseVLC": "提示在VLC中打开视频", - "UseVLCHint": "将VLC播放器按钮添加到种子内容列表", + "UseVLC": "提示在播放器中打开视频", + "UseVLCHint": "将外部播放器按钮添加到种子内容列表", + "PreferredPlayer": "首选播放器", + "PreferredPlayerHint": "为外部播放器选择协议(VLC 或 PotPlayer)", "UseIINA": "提示在 IINA 中打开视频", "UseIINAHint": "将 IINA 播放器按钮添加到种子内容列表(仅 macOS)", "ViewedHistoryStorage": "查看历史存储:",