Add download link to downloaded file
This adds a simple download link that points to the downloaded file. Note: This makes all files in the download directory (and its sub-directory) available to any user. Closes gh-26
This commit is contained in:
parent
ddf258855d
commit
fe4993153c
|
|
@ -108,6 +108,7 @@ if config.URL_PREFIX != '/':
|
||||||
return web.HTTPFound(config.URL_PREFIX)
|
return web.HTTPFound(config.URL_PREFIX)
|
||||||
|
|
||||||
routes.static(config.URL_PREFIX + 'favicon/', 'favicon')
|
routes.static(config.URL_PREFIX + 'favicon/', 'favicon')
|
||||||
|
routes.static(config.URL_PREFIX + 'download/', config.DOWNLOAD_DIR)
|
||||||
routes.static(config.URL_PREFIX, 'ui/dist/metube')
|
routes.static(config.URL_PREFIX, 'ui/dist/metube')
|
||||||
app.add_routes(routes)
|
app.add_routes(routes)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,7 @@ class DownloadInfo:
|
||||||
self.quality = quality
|
self.quality = quality
|
||||||
self.format = format
|
self.format = format
|
||||||
self.status = self.msg = self.percent = self.speed = self.eta = None
|
self.status = self.msg = self.percent = self.speed = self.eta = None
|
||||||
|
self.filename = None
|
||||||
|
|
||||||
class Download:
|
class Download:
|
||||||
manager = None
|
manager = None
|
||||||
|
|
@ -60,6 +61,9 @@ class Download:
|
||||||
'speed',
|
'speed',
|
||||||
'eta',
|
'eta',
|
||||||
)})
|
)})
|
||||||
|
def put_status_postprocessor(d):
|
||||||
|
if d['postprocessor'] == 'MoveFiles' and d['status'] == 'finished':
|
||||||
|
self.status_queue.put({'status': 'finished', 'filename': d['info_dict']['filepath']})
|
||||||
ret = yt_dlp.YoutubeDL(params={
|
ret = yt_dlp.YoutubeDL(params={
|
||||||
'quiet': True,
|
'quiet': True,
|
||||||
'no_color': True,
|
'no_color': True,
|
||||||
|
|
@ -69,6 +73,7 @@ class Download:
|
||||||
'cachedir': False,
|
'cachedir': False,
|
||||||
'socket_timeout': 30,
|
'socket_timeout': 30,
|
||||||
'progress_hooks': [put_status],
|
'progress_hooks': [put_status],
|
||||||
|
'postprocessor_hooks': [put_status_postprocessor],
|
||||||
**self.ytdl_opts,
|
**self.ytdl_opts,
|
||||||
}).download([self.info.url])
|
}).download([self.info.url])
|
||||||
self.status_queue.put({'status': 'finished' if ret == 0 else 'error'})
|
self.status_queue.put({'status': 'finished' if ret == 0 else 'error'})
|
||||||
|
|
@ -113,6 +118,8 @@ class Download:
|
||||||
if status is None:
|
if status is None:
|
||||||
return
|
return
|
||||||
self.tmpfilename = status.get('tmpfilename')
|
self.tmpfilename = status.get('tmpfilename')
|
||||||
|
if 'filename' in status:
|
||||||
|
self.info.filename = os.path.relpath(status.get('filename'))
|
||||||
self.info.status = status['status']
|
self.info.status = status['status']
|
||||||
self.info.msg = status.get('msg')
|
self.info.msg = status.get('msg')
|
||||||
if 'downloaded_bytes' in status:
|
if 'downloaded_bytes' in status:
|
||||||
|
|
|
||||||
|
|
@ -112,7 +112,8 @@
|
||||||
<fa-icon *ngIf="download.value.status == 'finished'" [icon]="faCheckCircle" style="color: green;"></fa-icon>
|
<fa-icon *ngIf="download.value.status == 'finished'" [icon]="faCheckCircle" style="color: green;"></fa-icon>
|
||||||
<fa-icon *ngIf="download.value.status == 'error'" [icon]="faTimesCircle" style="color: red;"></fa-icon>
|
<fa-icon *ngIf="download.value.status == 'error'" [icon]="faTimesCircle" style="color: red;"></fa-icon>
|
||||||
</div>
|
</div>
|
||||||
<span ngbTooltip="{{download.value.msg}}">{{ download.value.title }}</span>
|
<span ngbTooltip="{{download.value.msg}}"><a *ngIf="!!download.value.filename; else noDownloadLink" href="download/{{download.value.filename}}" target="_blank">{{ download.value.title }}</a></span>
|
||||||
|
<ng-template #noDownloadLink>{{ download.value.title }}</ng-template>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<button *ngIf="download.value.status == 'error'" type="button" class="btn btn-link" (click)="retryDownload(download.key, download.value.quality)"><fa-icon [icon]="faRedoAlt"></fa-icon></button>
|
<button *ngIf="download.value.status == 'error'" type="button" class="btn btn-link" (click)="retryDownload(download.key, download.value.quality)"><fa-icon [icon]="faRedoAlt"></fa-icon></button>
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@ interface Download {
|
||||||
url: string,
|
url: string,
|
||||||
status: string;
|
status: string;
|
||||||
msg: string;
|
msg: string;
|
||||||
|
filename: string;
|
||||||
quality: string;
|
quality: string;
|
||||||
percent: number;
|
percent: number;
|
||||||
speed: number;
|
speed: number;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue