Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 38 additions & 12 deletions web/src/components/DialogTorrentDetailsContent/Table/index.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -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`
Expand Down Expand Up @@ -85,12 +95,19 @@ const Table = memo(
</Button>
</a>
)}
{isVlcUsed && (
<a style={{ textDecoration: 'none' }} href={`vlc://${fullLink}`}>
<Button style={{ width: '100%' }} variant='outlined' color='primary' size='small'>
VLC
</Button>
</a>
{isPlayerUsed && (
<Button
style={{ width: '100%' }}
variant='outlined'
color='primary'
size='small'
onClick={() => {
const protocol = getPlayerProtocol(playerPref)
window.location.href = `${protocol}${fullLink}`
}}
>
{playerPref === 'potplayer' ? 'PotPlayer' : 'VLC'}
</Button>
)}
{isMac && isIinaUsed && (
<a style={{ textDecoration: 'none' }} href={iinaLink}>
Expand Down Expand Up @@ -189,12 +206,19 @@ const Table = memo(
</a>
)}

{isVlcUsed && (
<a style={{ textDecoration: 'none' }} href={`vlc://${fullLink}`}>
<Button style={{ width: '100%' }} variant='outlined' color='primary' size='small'>
VLC
</Button>
</a>
{isPlayerUsed && (
<Button
style={{ width: '100%' }}
variant='outlined'
color='primary'
size='small'
onClick={() => {
const protocol = getPlayerProtocol(playerPref)
window.location.href = `${protocol}${fullLink}`
}}
>
{playerPref === 'potplayer' ? 'PotPlayer' : 'VLC'}
</Button>
)}

{isMac && isIinaUsed && (
Expand Down Expand Up @@ -224,6 +248,8 @@ const Table = memo(
)
})}
</ShortTableWrapper>


</>
)
},
Expand Down
25 changes: 23 additions & 2 deletions web/src/components/Settings/MobileAppSettings.jsx
Original file line number Diff line number Diff line change
@@ -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'

Expand All @@ -11,6 +11,10 @@ export default function MobileAppSettings({
setIsInfuseUsed,
isIinaUsed,
setIsIinaUsed,
isPlayerUsed,
setIsPlayerUsed,
preferredPlayer,
setPreferredPlayer,
}) {
const { t } = useTranslation()
const isMac = isMacOS()
Expand All @@ -21,11 +25,28 @@ export default function MobileAppSettings({
<SettingSectionLabel>{t('SettingsDialog.MobileAppSettings')}</SettingSectionLabel>
<FormGroup>
<FormControlLabel
control={<Switch checked={isVlcUsed} onChange={() => setIsVlcUsed(prev => !prev)} color='secondary' />}
control={<Switch checked={isPlayerUsed} onChange={() => setIsPlayerUsed(prev => !prev)} color='secondary' />}
label={t('SettingsDialog.UseVLC')}
labelPlacement='start'
/>
<FormHelperText margin='none'>{t('SettingsDialog.UseVLCHint')}</FormHelperText>

<FormGroup style={{ marginBottom: '20px', marginTop: 8 }}>
<InputLabel htmlFor='PreferredPlayer'>{t('SettingsDialog.PreferredPlayer')}</InputLabel>
<Select
native
id='PreferredPlayer'
value={preferredPlayer}
onChange={e => setPreferredPlayer(e.target.value)}
variant='outlined'
margin='dense'
disabled={!isPlayerUsed}
>
<option value='vlc'>VLC</option>
<option value='potplayer'>PotPlayer</option>
</Select>
<FormHelperText style={{ marginTop: '8px' }}>{t('SettingsDialog.PreferredPlayerHint')}</FormHelperText>
</FormGroup>
{isApple && (
<>
<FormControlLabel
Expand Down
10 changes: 10 additions & 0 deletions web/src/components/Settings/SettingsDialog.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,10 @@ export default function SettingsDialog({ handleClose }) {
const [isVlcUsed, setIsVlcUsed] = useState(JSON.parse(localStorage.getItem('isVlcUsed')) ?? false)
const [isInfuseUsed, setIsInfuseUsed] = useState(JSON.parse(localStorage.getItem('isInfuseUsed')) ?? false)
const [isIinaUsed, setIsIinaUsed] = useState(JSON.parse(localStorage.getItem('isIinaUsed')) ?? false)
const [isPlayerUsed, setIsPlayerUsed] = useState(
JSON.parse(localStorage.getItem('isPlayerUsed')) ?? JSON.parse(localStorage.getItem('isVlcUsed')) ?? false,
)
const [preferredPlayer, setPreferredPlayer] = useState(localStorage.getItem('preferredPlayer') ?? 'vlc')

useEffect(() => {
axios.post(settingsHost(), { action: 'get' }).then(({ data }) => {
Expand All @@ -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 } }) => {
Expand Down Expand Up @@ -189,6 +195,10 @@ export default function SettingsDialog({ handleClose }) {
setIsInfuseUsed={setIsInfuseUsed}
isIinaUsed={isIinaUsed}
setIsIinaUsed={setIsIinaUsed}
isPlayerUsed={isPlayerUsed}
setIsPlayerUsed={setIsPlayerUsed}
preferredPlayer={preferredPlayer}
setPreferredPlayer={setPreferredPlayer}
/>
</TabPanel>
</SwipeableViews>
Expand Down
6 changes: 4 additions & 2 deletions web/src/locales/bg/translation.json
Original file line number Diff line number Diff line change
Expand Up @@ -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": "Съхранение на историята на прегледите:",
Expand Down
6 changes: 4 additions & 2 deletions web/src/locales/en/translation.json
Original file line number Diff line number Diff line change
Expand Up @@ -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:",
Expand Down
6 changes: 4 additions & 2 deletions web/src/locales/fr/translation.json
Original file line number Diff line number Diff line change
Expand Up @@ -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 :",
Expand Down
6 changes: 4 additions & 2 deletions web/src/locales/ro/translation.json
Original file line number Diff line number Diff line change
Expand Up @@ -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:",
Expand Down
6 changes: 4 additions & 2 deletions web/src/locales/ru/translation.json
Original file line number Diff line number Diff line change
Expand Up @@ -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": "Хранилище истории просмотров:",
Expand Down
4 changes: 3 additions & 1 deletion web/src/locales/ua/translation.json
Original file line number Diff line number Diff line change
Expand Up @@ -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": "Збереження історії переглядів:",
Expand Down
6 changes: 4 additions & 2 deletions web/src/locales/zh/translation.json
Original file line number Diff line number Diff line change
Expand Up @@ -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": "查看历史存储:",
Expand Down