mirror of
https://github.com/Ernous/TorrServerJellyfin.git
synced 2025-12-19 05:26:09 +05:00
translate sizes and show speeds in bps
This commit is contained in:
@@ -49,24 +49,24 @@ var Mstile150x150png []byte
|
||||
var Sitewebmanifest []byte
|
||||
|
||||
|
||||
//go:embed pages/static/js/2.65f701bf.chunk.js
|
||||
var Staticjs265f701bfchunkjs []byte
|
||||
//go:embed pages/static/js/2.9044ecaa.chunk.js
|
||||
var Staticjs29044ecaachunkjs []byte
|
||||
|
||||
|
||||
//go:embed pages/static/js/2.65f701bf.chunk.js.LICENSE.txt
|
||||
var Staticjs265f701bfchunkjsLICENSEtxt []byte
|
||||
//go:embed pages/static/js/2.9044ecaa.chunk.js.LICENSE.txt
|
||||
var Staticjs29044ecaachunkjsLICENSEtxt []byte
|
||||
|
||||
|
||||
//go:embed pages/static/js/2.65f701bf.chunk.js.map
|
||||
var Staticjs265f701bfchunkjsmap []byte
|
||||
//go:embed pages/static/js/2.9044ecaa.chunk.js.map
|
||||
var Staticjs29044ecaachunkjsmap []byte
|
||||
|
||||
|
||||
//go:embed pages/static/js/main.afca476d.chunk.js
|
||||
var Staticjsmainafca476dchunkjs []byte
|
||||
//go:embed pages/static/js/main.be1cb8cf.chunk.js
|
||||
var Staticjsmainbe1cb8cfchunkjs []byte
|
||||
|
||||
|
||||
//go:embed pages/static/js/main.afca476d.chunk.js.map
|
||||
var Staticjsmainafca476dchunkjsmap []byte
|
||||
//go:embed pages/static/js/main.be1cb8cf.chunk.js.map
|
||||
var Staticjsmainbe1cb8cfchunkjsmap []byte
|
||||
|
||||
|
||||
//go:embed pages/static/js/runtime-main.8bda5920.js
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
{
|
||||
"files": {
|
||||
"main.js": "/static/js/main.afca476d.chunk.js",
|
||||
"main.js.map": "/static/js/main.afca476d.chunk.js.map",
|
||||
"main.js": "/static/js/main.be1cb8cf.chunk.js",
|
||||
"main.js.map": "/static/js/main.be1cb8cf.chunk.js.map",
|
||||
"runtime-main.js": "/static/js/runtime-main.8bda5920.js",
|
||||
"runtime-main.js.map": "/static/js/runtime-main.8bda5920.js.map",
|
||||
"static/js/2.65f701bf.chunk.js": "/static/js/2.65f701bf.chunk.js",
|
||||
"static/js/2.65f701bf.chunk.js.map": "/static/js/2.65f701bf.chunk.js.map",
|
||||
"static/js/2.9044ecaa.chunk.js": "/static/js/2.9044ecaa.chunk.js",
|
||||
"static/js/2.9044ecaa.chunk.js.map": "/static/js/2.9044ecaa.chunk.js.map",
|
||||
"index.html": "/index.html",
|
||||
"static/js/2.65f701bf.chunk.js.LICENSE.txt": "/static/js/2.65f701bf.chunk.js.LICENSE.txt"
|
||||
"static/js/2.9044ecaa.chunk.js.LICENSE.txt": "/static/js/2.9044ecaa.chunk.js.LICENSE.txt"
|
||||
},
|
||||
"entrypoints": [
|
||||
"static/js/runtime-main.8bda5920.js",
|
||||
"static/js/2.65f701bf.chunk.js",
|
||||
"static/js/main.afca476d.chunk.js"
|
||||
"static/js/2.9044ecaa.chunk.js",
|
||||
"static/js/main.be1cb8cf.chunk.js"
|
||||
]
|
||||
}
|
||||
@@ -1 +1 @@
|
||||
<!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="shortcut icon" type="image/x-icon" href="/favicon.ico"/><link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png"><link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png"><link rel="icon" type="image/png" sizes="192x192" href="/android-chrome-192x192.png"><link rel="manifest" href="/site.webmanifest"><meta name="msapplication-TileColor" content="#da532c"><meta name="theme-color" content="#ffffff"><link rel="preconnect" href="https://fonts.gstatic.com"><link href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@300;400;600&display=swap" rel="stylesheet"><meta name="viewport" content="width=device-width,shrink-to-fit=no"><meta name="description" content="TorrServer - torrent to http stream"/><title>TorrServer</title></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div><script src="https://cdn.lordicon.com/libs/frhvbuzj/lord-icon-2.0.2.js"></script><script src="https://www.gstatic.com/firebasejs/8.1.2/firebase-app.js"></script><script src="https://www.gstatic.com/firebasejs/8.1.2/firebase-analytics.js"></script><script>const firebaseConfig={apiKey:"AIzaSyDivIsadtzAmp3SIY4yArNcFugUmr63rvo",authDomain:"torrserve.firebaseapp.com",databaseURL:"https://torrserve.firebaseio.com",projectId:"torrserve",storageBucket:"torrserve.appspot.com",messagingSenderId:"400168070412",appId:"1:400168070412:web:82c8e43dd7fc8f807aed29",measurementId:"G-T4RC2BFRSF"};firebase.initializeApp(firebaseConfig),firebase.analytics()</script><script>!function(e){function r(r){for(var n,l,f=r[0],i=r[1],a=r[2],c=0,s=[];c<f.length;c++)l=f[c],Object.prototype.hasOwnProperty.call(o,l)&&o[l]&&s.push(o[l][0]),o[l]=0;for(n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n]);for(p&&p(r);s.length;)s.shift()();return u.push.apply(u,a||[]),t()}function t(){for(var e,r=0;r<u.length;r++){for(var t=u[r],n=!0,f=1;f<t.length;f++){var i=t[f];0!==o[i]&&(n=!1)}n&&(u.splice(r--,1),e=l(l.s=t[0]))}return e}var n={},o={1:0},u=[];function l(r){if(n[r])return n[r].exports;var t=n[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,l),t.l=!0,t.exports}l.m=e,l.c=n,l.d=function(e,r,t){l.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},l.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},l.t=function(e,r){if(1&r&&(e=l(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(l.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var n in e)l.d(t,n,function(r){return e[r]}.bind(null,n));return t},l.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return l.d(r,"a",r),r},l.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},l.p="/";var f=this.webpackJsonptorrserver_web=this.webpackJsonptorrserver_web||[],i=f.push.bind(f);f.push=r,f=f.slice();for(var a=0;a<f.length;a++)r(f[a]);var p=i;t()}([])</script><script src="/static/js/2.65f701bf.chunk.js"></script><script src="/static/js/main.afca476d.chunk.js"></script></body></html>
|
||||
<!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="shortcut icon" type="image/x-icon" href="/favicon.ico"/><link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png"><link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png"><link rel="icon" type="image/png" sizes="192x192" href="/android-chrome-192x192.png"><link rel="manifest" href="/site.webmanifest"><meta name="msapplication-TileColor" content="#da532c"><meta name="theme-color" content="#ffffff"><link rel="preconnect" href="https://fonts.gstatic.com"><link href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@300;400;600&display=swap" rel="stylesheet"><meta name="viewport" content="width=device-width,shrink-to-fit=no"><meta name="description" content="TorrServer - torrent to http stream"/><title>TorrServer</title></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div><script src="https://cdn.lordicon.com/libs/frhvbuzj/lord-icon-2.0.2.js"></script><script src="https://www.gstatic.com/firebasejs/8.1.2/firebase-app.js"></script><script src="https://www.gstatic.com/firebasejs/8.1.2/firebase-analytics.js"></script><script>const firebaseConfig={apiKey:"AIzaSyDivIsadtzAmp3SIY4yArNcFugUmr63rvo",authDomain:"torrserve.firebaseapp.com",databaseURL:"https://torrserve.firebaseio.com",projectId:"torrserve",storageBucket:"torrserve.appspot.com",messagingSenderId:"400168070412",appId:"1:400168070412:web:82c8e43dd7fc8f807aed29",measurementId:"G-T4RC2BFRSF"};firebase.initializeApp(firebaseConfig),firebase.analytics()</script><script>!function(e){function r(r){for(var n,l,f=r[0],i=r[1],a=r[2],c=0,s=[];c<f.length;c++)l=f[c],Object.prototype.hasOwnProperty.call(o,l)&&o[l]&&s.push(o[l][0]),o[l]=0;for(n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n]);for(p&&p(r);s.length;)s.shift()();return u.push.apply(u,a||[]),t()}function t(){for(var e,r=0;r<u.length;r++){for(var t=u[r],n=!0,f=1;f<t.length;f++){var i=t[f];0!==o[i]&&(n=!1)}n&&(u.splice(r--,1),e=l(l.s=t[0]))}return e}var n={},o={1:0},u=[];function l(r){if(n[r])return n[r].exports;var t=n[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,l),t.l=!0,t.exports}l.m=e,l.c=n,l.d=function(e,r,t){l.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},l.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},l.t=function(e,r){if(1&r&&(e=l(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(l.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var n in e)l.d(t,n,function(r){return e[r]}.bind(null,n));return t},l.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return l.d(r,"a",r),r},l.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},l.p="/";var f=this.webpackJsonptorrserver_web=this.webpackJsonptorrserver_web||[],i=f.push.bind(f);f.push=r,f=f.slice();for(var a=0;a<f.length;a++)r(f[a]);var p=i;t()}([])</script><script src="/static/js/2.9044ecaa.chunk.js"></script><script src="/static/js/main.be1cb8cf.chunk.js"></script></body></html>
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -9,8 +9,33 @@ func RouteWebPages(route *gin.RouterGroup) {
|
||||
c.Data(200, "text/html; charset=utf-8", Indexhtml)
|
||||
})
|
||||
|
||||
route.GET("/apple-touch-icon.png", func(c *gin.Context) {
|
||||
c.Data(200, "image/png", Appletouchiconpng)
|
||||
route.GET("/asset-manifest.json", func(c *gin.Context) {
|
||||
c.Data(200, "application/json", Assetmanifestjson)
|
||||
})
|
||||
|
||||
|
||||
route.GET("/index.html", func(c *gin.Context) {
|
||||
c.Data(200, "text/html; charset=utf-8", Indexhtml)
|
||||
})
|
||||
|
||||
|
||||
route.GET("/static/js/2.9044ecaa.chunk.js", func(c *gin.Context) {
|
||||
c.Data(200, "application/javascript", Staticjs29044ecaachunkjs)
|
||||
})
|
||||
|
||||
|
||||
route.GET("/static/js/2.9044ecaa.chunk.js.map", func(c *gin.Context) {
|
||||
c.Data(200, "application/json", Staticjs29044ecaachunkjsmap)
|
||||
})
|
||||
|
||||
|
||||
route.GET("/android-chrome-192x192.png", func(c *gin.Context) {
|
||||
c.Data(200, "image/png", Androidchrome192x192png)
|
||||
})
|
||||
|
||||
|
||||
route.GET("/browserconfig.xml", func(c *gin.Context) {
|
||||
c.Data(200, "application/xml", Browserconfigxml)
|
||||
})
|
||||
|
||||
|
||||
@@ -19,13 +44,33 @@ func RouteWebPages(route *gin.RouterGroup) {
|
||||
})
|
||||
|
||||
|
||||
route.GET("/static/js/main.afca476d.chunk.js", func(c *gin.Context) {
|
||||
c.Data(200, "application/javascript", Staticjsmainafca476dchunkjs)
|
||||
route.GET("/static/js/2.9044ecaa.chunk.js.LICENSE.txt", func(c *gin.Context) {
|
||||
c.Data(200, "text/plain; charset=utf-8", Staticjs29044ecaachunkjsLICENSEtxt)
|
||||
})
|
||||
|
||||
|
||||
route.GET("/static/js/runtime-main.8bda5920.js", func(c *gin.Context) {
|
||||
c.Data(200, "application/javascript", Staticjsruntimemain8bda5920js)
|
||||
route.GET("/static/js/main.be1cb8cf.chunk.js", func(c *gin.Context) {
|
||||
c.Data(200, "application/javascript", Staticjsmainbe1cb8cfchunkjs)
|
||||
})
|
||||
|
||||
|
||||
route.GET("/apple-touch-icon.png", func(c *gin.Context) {
|
||||
c.Data(200, "image/png", Appletouchiconpng)
|
||||
})
|
||||
|
||||
|
||||
route.GET("/mstile-150x150.png", func(c *gin.Context) {
|
||||
c.Data(200, "image/png", Mstile150x150png)
|
||||
})
|
||||
|
||||
|
||||
route.GET("/site.webmanifest", func(c *gin.Context) {
|
||||
c.Data(200, "application/manifest+json", Sitewebmanifest)
|
||||
})
|
||||
|
||||
|
||||
route.GET("/static/js/main.be1cb8cf.chunk.js.map", func(c *gin.Context) {
|
||||
c.Data(200, "application/json", Staticjsmainbe1cb8cfchunkjsmap)
|
||||
})
|
||||
|
||||
|
||||
@@ -39,63 +84,18 @@ func RouteWebPages(route *gin.RouterGroup) {
|
||||
})
|
||||
|
||||
|
||||
route.GET("/browserconfig.xml", func(c *gin.Context) {
|
||||
c.Data(200, "application/xml", Browserconfigxml)
|
||||
})
|
||||
|
||||
|
||||
route.GET("/favicon-16x16.png", func(c *gin.Context) {
|
||||
c.Data(200, "image/png", Favicon16x16png)
|
||||
})
|
||||
|
||||
|
||||
route.GET("/static/js/2.65f701bf.chunk.js.LICENSE.txt", func(c *gin.Context) {
|
||||
c.Data(200, "text/plain; charset=utf-8", Staticjs265f701bfchunkjsLICENSEtxt)
|
||||
})
|
||||
|
||||
|
||||
route.GET("/android-chrome-192x192.png", func(c *gin.Context) {
|
||||
c.Data(200, "image/png", Androidchrome192x192png)
|
||||
})
|
||||
|
||||
|
||||
route.GET("/index.html", func(c *gin.Context) {
|
||||
c.Data(200, "text/html; charset=utf-8", Indexhtml)
|
||||
})
|
||||
|
||||
|
||||
route.GET("/site.webmanifest", func(c *gin.Context) {
|
||||
c.Data(200, "application/manifest+json", Sitewebmanifest)
|
||||
})
|
||||
|
||||
|
||||
route.GET("/static/js/2.65f701bf.chunk.js", func(c *gin.Context) {
|
||||
c.Data(200, "application/javascript", Staticjs265f701bfchunkjs)
|
||||
})
|
||||
|
||||
|
||||
route.GET("/static/js/2.65f701bf.chunk.js.map", func(c *gin.Context) {
|
||||
c.Data(200, "application/json", Staticjs265f701bfchunkjsmap)
|
||||
})
|
||||
|
||||
|
||||
route.GET("/static/js/main.afca476d.chunk.js.map", func(c *gin.Context) {
|
||||
c.Data(200, "application/json", Staticjsmainafca476dchunkjsmap)
|
||||
})
|
||||
|
||||
|
||||
route.GET("/asset-manifest.json", func(c *gin.Context) {
|
||||
c.Data(200, "application/json", Assetmanifestjson)
|
||||
})
|
||||
|
||||
|
||||
route.GET("/favicon.ico", func(c *gin.Context) {
|
||||
c.Data(200, "image/x-icon", Faviconico)
|
||||
})
|
||||
|
||||
|
||||
route.GET("/mstile-150x150.png", func(c *gin.Context) {
|
||||
c.Data(200, "image/png", Mstile150x150png)
|
||||
route.GET("/static/js/runtime-main.8bda5920.js", func(c *gin.Context) {
|
||||
c.Data(200, "application/javascript", Staticjsruntimemain8bda5920js)
|
||||
})
|
||||
|
||||
}
|
||||
@@ -205,7 +205,7 @@ export default function DialogTorrentDetailsContent({ closeDialog, torrent }) {
|
||||
<LoadingProgress
|
||||
value={Filled}
|
||||
fullAmount={bufferSize}
|
||||
label={`${humanizeSize(bufferSize)} / ${humanizeSize(Filled) || '0 B'}`}
|
||||
label={`${humanizeSize(bufferSize)} / ${humanizeSize(Filled) || `0 ${t('B')}`}`}
|
||||
/>
|
||||
</SectionHeader>
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ import {
|
||||
PhotoSizeSelectSmall as PhotoSizeSelectSmallIcon,
|
||||
Build as BuildIcon,
|
||||
} from '@material-ui/icons'
|
||||
import { getPeerString, humanizeSize } from 'utils/Utils'
|
||||
import { getPeerString, humanizeSize, humanizeSpeed } from 'utils/Utils'
|
||||
import { useTranslation } from 'react-i18next'
|
||||
import { GETTING_INFO, IN_DB, CLOSED, PRELOAD, WORKING } from 'torrentStates'
|
||||
|
||||
@@ -21,7 +21,7 @@ export const DownlodSpeedWidget = ({ data }) => {
|
||||
return (
|
||||
<StatisticsField
|
||||
title={t('DownloadSpeed')}
|
||||
value={humanizeSize(data) || '0 B'}
|
||||
value={humanizeSpeed(data) || `0 ${t('bps')}`}
|
||||
iconBg={iconBGColor}
|
||||
valueBg={valueBGColor}
|
||||
icon={ArrowDownwardIcon}
|
||||
@@ -36,7 +36,7 @@ export const UploadSpeedWidget = ({ data }) => {
|
||||
return (
|
||||
<StatisticsField
|
||||
title={t('UploadSpeed')}
|
||||
value={humanizeSize(data) || '0 B'}
|
||||
value={humanizeSpeed(data) || `0 ${t('bps')}`}
|
||||
iconBg={iconBGColor}
|
||||
valueBg={valueBGColor}
|
||||
icon={ArrowUpwardIcon}
|
||||
@@ -51,7 +51,7 @@ export const PeersWidget = ({ data }) => {
|
||||
return (
|
||||
<StatisticsField
|
||||
title={t('Peers')}
|
||||
value={getPeerString(data) || '[0] 0 / 0'}
|
||||
value={getPeerString(data) || '0 · 0 / 0'}
|
||||
iconBg={iconBGColor}
|
||||
valueBg={valueBGColor}
|
||||
icon={SwapVerticalCircleIcon}
|
||||
|
||||
@@ -5,7 +5,7 @@ import {
|
||||
Close as CloseIcon,
|
||||
Delete as DeleteIcon,
|
||||
} from '@material-ui/icons'
|
||||
import { getPeerString, humanizeSize, removeRedundantCharacters } from 'utils/Utils'
|
||||
import { getPeerString, humanizeSize, humanizeSpeed, removeRedundantCharacters } from 'utils/Utils'
|
||||
import { torrentsHost } from 'utils/Hosts'
|
||||
import { NoImageIcon } from 'icons'
|
||||
import DialogTorrentDetailsContent from 'components/DialogTorrentDetailsContent'
|
||||
@@ -103,7 +103,7 @@ const Torrent = ({ torrent }) => {
|
||||
<div className='description-statistics-element-wrapper'>
|
||||
<div className='description-section-name'>{t('Speed')}</div>
|
||||
<div className='description-statistics-element-value'>
|
||||
{downloadSpeed > 0 ? humanizeSize(downloadSpeed) : '---'}
|
||||
{downloadSpeed > 0 ? humanizeSpeed(downloadSpeed) : '---'}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -20,6 +20,8 @@
|
||||
},
|
||||
"AddFromLink": "Add from Link",
|
||||
"AddNewTorrent": "Add new torrent",
|
||||
"B": "B",
|
||||
"bps": "bps",
|
||||
"Buffer": "Preload Buffer / Cache",
|
||||
"BufferNote": "Set Preload Cache Before Play > 32 MB in settings to change preload size",
|
||||
"Cache": "Cache",
|
||||
@@ -50,11 +52,17 @@
|
||||
"Episode": "Episode",
|
||||
"FromLatestFile": "From Latest File",
|
||||
"Full": "Full",
|
||||
"GB": "GB",
|
||||
"Gbps": "Gbps",
|
||||
"Host": "Host",
|
||||
"Info": "Info",
|
||||
"KB": "KB",
|
||||
"kbps": "kbps",
|
||||
"Kilobytes": "Kilobytes",
|
||||
"LatestFilePlayed": "Latest file played:",
|
||||
"Links": "Links",
|
||||
"MB": "MB",
|
||||
"Mbps": "Mbps",
|
||||
"Name": "Name",
|
||||
"NoTorrentsAdded": "No torrents added",
|
||||
"Offline": "Offline",
|
||||
@@ -72,6 +80,7 @@
|
||||
"Save": "Save",
|
||||
"ScrollDown": "scroll down",
|
||||
"Season": "Season",
|
||||
"Sec": "s",
|
||||
"Seconds": "Seconds",
|
||||
"SelectSeason": "Select Season",
|
||||
"SettingsDialog": {
|
||||
@@ -117,6 +126,8 @@
|
||||
"SpecialThanks": "Special Thanks",
|
||||
"Speed": "Speed",
|
||||
"Support": "Support",
|
||||
"TB": "TB",
|
||||
"Tbps": "Tbps",
|
||||
"ThanksToEveryone": "Thanks to everyone who tested and helped.",
|
||||
"TorrentAdded": "Added",
|
||||
"TorrentClosed": "Сlosed",
|
||||
|
||||
@@ -20,6 +20,8 @@
|
||||
},
|
||||
"AddFromLink": "Добавить",
|
||||
"AddNewTorrent": "Добавить новый торрент",
|
||||
"B": "Б",
|
||||
"bps": "бит/c",
|
||||
"Buffer": "Предзагрузка / Кеш",
|
||||
"BufferNote": "Установите Буфер предзагрузки > 32 МБ в настройках для измененения размера предзагрузки",
|
||||
"Cache": "Кеш",
|
||||
@@ -50,12 +52,17 @@
|
||||
"Episode": "Серия",
|
||||
"FromLatestFile": "C последнего файла",
|
||||
"Full": "Полный",
|
||||
"GB": "ГБ",
|
||||
"Gbps": "Гбит/c",
|
||||
"Host": "Хост",
|
||||
"Info": "Инфо",
|
||||
"KB": "КБ",
|
||||
"kbps": "кбит/с",
|
||||
"Kilobytes": "Килобайты",
|
||||
"LatestFilePlayed": "Последний воспроизведенный файл:",
|
||||
"Links": "Ссылки",
|
||||
"MB": "МБ",
|
||||
"Mbps": "Мбит/c",
|
||||
"Name": "Название",
|
||||
"NoTorrentsAdded": "Нет торрентов",
|
||||
"Offline": "Сервер не доступен",
|
||||
@@ -73,7 +80,7 @@
|
||||
"Save": "Сохранить",
|
||||
"ScrollDown": "прокрутить вниз",
|
||||
"Season": "Сезон",
|
||||
"Sec": "Cек.",
|
||||
"Sec": "c",
|
||||
"Seconds": "Секунды",
|
||||
"SelectSeason": "Выбор сезона",
|
||||
"SettingsDialog": {
|
||||
@@ -119,6 +126,8 @@
|
||||
"SpecialThanks": "Отдельное спасибо",
|
||||
"Speed": "Скорость",
|
||||
"Support": "Поддержать",
|
||||
"TB": "ТБ",
|
||||
"Tbps": "Тбит/с",
|
||||
"ThanksToEveryone": "Спасибо всем, кто тестировал и помогал!",
|
||||
"TorrentAdded": "Добавлен",
|
||||
"TorrentClosed": "Закрыт",
|
||||
|
||||
@@ -1,16 +1,27 @@
|
||||
import axios from 'axios'
|
||||
|
||||
import i18n from '../i18n'
|
||||
import { torrentsHost } from './Hosts'
|
||||
|
||||
export function humanizeSize(size) {
|
||||
if (!size) return ''
|
||||
const i = Math.floor(Math.log(size) / Math.log(1024))
|
||||
return `${(size / Math.pow(1024, i)).toFixed(2) * 1} ${['B', 'KB', 'MB', 'GB', 'TB'][i]}`
|
||||
return `${(size / Math.pow(1024, i)).toFixed(2) * 1} ${
|
||||
[i18n.t('B'), i18n.t('KB'), i18n.t('MB'), i18n.t('GB'), i18n.t('TB')][i]
|
||||
}`
|
||||
}
|
||||
|
||||
export function humanizeSpeed(speed) {
|
||||
if (!speed) return ''
|
||||
const i = Math.floor(Math.log(speed * 8) / Math.log(1000))
|
||||
return `${((speed * 8) / Math.pow(1000, i)).toFixed(0) * 1} ${
|
||||
[i18n.t('bps'), i18n.t('kbps'), i18n.t('Mbps'), i18n.t('Gbps'), i18n.t('Tbps')][i]
|
||||
}`
|
||||
}
|
||||
|
||||
export function getPeerString(torrent) {
|
||||
if (!torrent || !torrent.connected_seeders) return null
|
||||
return `[${torrent.connected_seeders}] ${torrent.active_peers} / ${torrent.total_peers}`
|
||||
return `${torrent.connected_seeders} · ${torrent.active_peers} / ${torrent.total_peers}`
|
||||
}
|
||||
|
||||
export const shortenText = (text, sympolAmount) =>
|
||||
|
||||
Reference in New Issue
Block a user