Added final file size.

This commit is contained in:
ArabCoders 2024-01-03 00:27:35 +03:00
parent a30d671960
commit 44d2bd081c
5 changed files with 27 additions and 6 deletions

View file

@ -185,6 +185,10 @@ class Download:
if status is None:
return
if isinstance(status, str):
await self.notifier.updated(self.info)
return
self.tmpfilename = status.get('tmpfilename')
if 'filename' in status:
@ -196,7 +200,7 @@ class Download:
self.info.filename = re.sub(
r'\.webm$', '.jpg', self.info.filename)
self.info.status = status['status']
self.info.status = status.get('status', self.info.status)
self.info.msg = status.get('msg')
if 'downloaded_bytes' in status:
@ -210,4 +214,7 @@ class Download:
self.info.speed = status.get('speed')
self.info.eta = status.get('eta')
if self.info.status == 'finished' and 'filename' in status and self.info.format != 'thumbnail':
self.info.file_size = os.path.getsize(status.get('filename'))
await self.notifier.updated(self.info)

View file

@ -24,6 +24,7 @@ class ItemDTO:
is_live: bool = None
datetime: str = field(default_factory=lambda: str(formatdate(time.time())))
live_in: str = None
file_size: int = None
# yt-dlp injected fields.
tmpfilename: str = None

View file

@ -107,7 +107,6 @@ class Main:
)
async def connect(self, sid, _):
self.logger.info(f'Config [{self.config.__dict__}].')
data: dict = {
**self.dqueue.get(),
"config": self.config,

View file

@ -85,7 +85,7 @@
<div class="column is-12" v-if="showMessage(item)">
<span class="has-text-danger">{{ item.msg }}</span>
</div>
<div class="column is-4 has-text-centered" v-if="!item.live_in">
<div class="column has-text-centered" v-if="!item.live_in">
<span class="icon-text">
<span class="icon"
:class="{ 'has-text-success': item.status === 'finished', 'has-text-danger': item.status !== 'finished' }">
@ -95,18 +95,21 @@
<span>{{ capitalize(item.status) }}</span>
</span>
</div>
<div class="column is-4 has-text-centered">
<div class="column has-text-centered">
<span :date-datetime="item.datetime" :data-tooltip="moment(item.datetime).format('YYYY-M-DD H:mm Z')">
{{ moment(item.datetime).fromNow() }}
</span>
</div>
<div class="column is-4 has-text-centered" v-if="item.live_in && item.status != 'finished'">
<div class="column has-text-centered" v-if="item.live_in && item.status != 'finished'">
<span :date-datetime="item.datetime"
:data-tooltip="'Will start at: ' + moment(item.live_in).format('YYYY-M-DD H:mm Z')">
{{ moment(item.live_in).fromNow() }}
</span>
</div>
<div class="column is-4 has-text-centered">
<div class="column has-text-centered" v-if="item.file_size">
{{ formatBytes(item.file_size) }}
</div>
<div class="column has-text-centered">
<label class="checkbox is-block">
<input class="completed-checkbox" type="checkbox" v-model="selectedElms" :id="'checkbox-' + item._id"
:value="item._id">

View file

@ -31,6 +31,17 @@ app.config.globalProperties.makeDownload = (config, item, base = 'download') =>
return config.app.url_host + config.app.url_prefix + baseDir + encodeURIComponent(item.filename);
}
app.config.globalProperties.formatBytes = (bytes, decimals = 2) => {
if (bytes === 0) return '0 Bytes';
const k = 1024;
const dm = decimals < 0 ? 0 : decimals;
const sizes = ['Bytes', 'KB', 'MB'];
const i = Math.floor(Math.log(bytes) / Math.log(k));
return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];
}
app.use(Toast, {
transition: "Vue-Toastification__bounce",