Skip to content

Commit 925c098

Browse files
committed
feat: delete only ignored videos cleanup
1 parent 34e1093 commit 925c098

File tree

2 files changed

+31
-14
lines changed

2 files changed

+31
-14
lines changed

client/components/manage-disk-space-form.js

+15-11
Original file line numberDiff line numberDiff line change
@@ -5,23 +5,18 @@ class ManageDiskSpaceForm extends HTMLElement {
55
connectedCallback () {
66
this.render()
77
this.registerEvents()
8-
9-
const $diskSpaceUsed = document.getElementById('disk-space-used')
10-
window.fetch('/api/disk-usage')
11-
.then(response => response.text())
12-
.then((diskSpaceUsed) => {
13-
$diskSpaceUsed.innerText = diskSpaceUsed
14-
})
15-
.catch(err => console.error(err))
8+
this.updateDiskSpaceUsed()
169
}
1710
disconnectedCallback () {
1811
this.unregisterEvents()
1912
}
2013
registerEvents () {
2114
this.querySelector('#reclaim-disk-space').addEventListener('click', this.reclaimDiskSpace.bind(this))
15+
this.querySelector('#delete-only-ignored').addEventListener('change', this.updateDiskSpaceUsed.bind(this))
2216
}
2317
unregisterEvents () {
2418
this.querySelector('#reclaim-disk-space').removeEventListener('click', this.reclaimDiskSpace.bind(this))
19+
this.querySelector('#delete-only-ignored').removeEventListener('change', this.updateDiskSpaceUsed.bind(this))
2520
}
2621
render () {
2722
this.innerHTML = /*html*/`
@@ -30,7 +25,7 @@ class ManageDiskSpaceForm extends HTMLElement {
3025
<div>
3126
Delete downloaded videos to reclaim disk space
3227
</div>
33-
<div>
28+
<div class="user-select-none">
3429
<label for="delete-only-ignored">
3530
Only ignored videos
3631
</label>
@@ -43,12 +38,21 @@ class ManageDiskSpaceForm extends HTMLElement {
4338
`
4439
}
4540

41+
updateDiskSpaceUsed() {
42+
const onlyIgnored = this.querySelector('#delete-only-ignored').checked
43+
const $diskSpaceUsed = this.querySelector('#disk-space-used')
44+
window.fetch(onlyIgnored ? '/api/disk-usage?onlyIgnored=true' : '/api/disk-usage')
45+
.then(response => response.text())
46+
.then((diskSpaceUsed) => {
47+
$diskSpaceUsed.innerText = diskSpaceUsed
48+
})
49+
.catch(err => console.error(err))
50+
}
51+
4652
reclaimDiskSpace (event) {
4753
event.preventDefault()
4854
if (!confirm('About to delete downloaded videos, are you sure?')) return
49-
console.log('reclaiming')
5055
const onlyIgnored = this.querySelector('#delete-only-ignored').checked
51-
console.log({onlyIgnored})
5256
const $diskUsage = this.querySelector('#disk-usage')
5357
window.fetch('/api/reclaim-disk-space', {
5458
method: 'POST',

lib/server.js

+16-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import http from 'http'
22
import { URL } from 'url'
33
import fs from 'fs'
4+
import querystring from 'querystring'
45
import { summarizeVideo } from './subtitles-summary.js'
56
import { handleSSE, broadcastSSE } from './sse.js'
67
import { downloadVideo, extractIdFromUrl, isUnsupportedUrl, isYouTubeUrl } from './youtube.js'
@@ -114,6 +115,12 @@ export function createServer ({repo, connections = []}) {
114115
})
115116
}
116117

118+
function getQuery (req) {
119+
return req.url.indexOf('?') >= 0
120+
? querystring.parse(req.url.substring(req.url.indexOf('?') + 1))
121+
: {}
122+
}
123+
117124
async function addChannelHandler(req, res, repo, connections = []) {
118125
const body = await getBody(req)
119126
let { name } = JSON.parse(body)
@@ -304,11 +311,17 @@ export function createServer ({repo, connections = []}) {
304311
}
305312

306313
function diskUsageHandler(req, res) {
314+
const onlyIgnored = getQuery(req).onlyIgnored === 'true'
307315
const videos = repo.getVideos()
308-
const ignoredVideos = videos.filter(video => video.downloaded)
309-
const diskSpaceUsed = ignoredVideos.reduce((total, video) => {
316+
317+
const filterFn = onlyIgnored
318+
? video => video.downloaded && video.ignored
319+
: video => video.downloaded
320+
321+
const diskSpaceUsed = videos.filter(filterFn)
322+
.reduce((total, video) => {
310323
try {
311-
return total + fs.statSync(`./data/videos/${video.id}.mp4`).size / 1000 / 1000 / 1000
324+
return total + fs.statSync(`./data/videos/${video.id}.mp4`).size / Math.pow(10, 9)
312325
} catch (err) {
313326
return total
314327
}

0 commit comments

Comments
 (0)