update component and add video
This commit is contained in:
1 parent
9f5f3a8e14
commit
bdc54b676b
4 files changed
+935
-20
No files matched your search
@@ -24,20 +24,26 @@ function onSubmit(ev: SubmitEvent) {
|
||||
ev.preventDefault();
|
||||
if (!q.value) return;
|
||||
|
||||
videoSrc.value = "/" + q.value;
|
||||
const src = "/" + q.value;
|
||||
const isSameSrc = videoSrc.value === src;
|
||||
videoSrc.value = src;
|
||||
|
||||
if (isSameSrc) {
|
||||
// Force load
|
||||
onVideoLoad();
|
||||
}
|
||||
}
|
||||
|
||||
function onVideoLoad() {
|
||||
const ws = new WebSocket("ws://localhost:8080");
|
||||
|
||||
const vid = videoEl.value!;
|
||||
|
||||
const q_value = q.value;
|
||||
|
||||
ws.onmessage = (ev) => {
|
||||
const { name, ts } = JSON.parse(ev.data);
|
||||
switch (name) {
|
||||
case "seek_q_ts": (async () => {
|
||||
case "seek_q_ts":
|
||||
(async () => {
|
||||
for (const t of ts) {
|
||||
const b = await new Promise<Blob | null>((resolve) => {
|
||||
vid.onseeked = () => {
|
||||
@@ -57,20 +63,21 @@ function onVideoLoad() {
|
||||
);
|
||||
|
||||
c.toBlob((b) => resolve(b));
|
||||
}
|
||||
};
|
||||
|
||||
if (typeof t === 'string'){
|
||||
const [min, sec] = t.split('_');
|
||||
if (typeof t === "string") {
|
||||
const [min, sec] = t.split("_");
|
||||
vid.currentTime = parseInt(min) * 60 + parseInt(sec) + 1;
|
||||
} else {
|
||||
vid.currentTime = t;
|
||||
}
|
||||
})
|
||||
});
|
||||
if (b) ws.send(b);
|
||||
vid.onseeked = null;
|
||||
}
|
||||
ws.send(JSON.stringify({ name: 'done', q: q_value }));
|
||||
})(); break;
|
||||
ws.send(JSON.stringify({ name: "done", q: q_value }));
|
||||
})();
|
||||
break;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -84,8 +91,7 @@ function onVideoLoad() {
|
||||
);
|
||||
};
|
||||
|
||||
ws.onclose = () => {
|
||||
};
|
||||
ws.onclose = () => {};
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
@@ -13,10 +13,8 @@ const videoURL = computed(() => frontmatter.value?.video);
|
||||
const videoEl = useTemplateRef("video");
|
||||
|
||||
function setImgClick() {
|
||||
const v = videoEl.value;
|
||||
if (!v) {
|
||||
return;
|
||||
}
|
||||
document.removeEventListener("click", imgClickListener);
|
||||
document.addEventListener("click", imgClickListener);
|
||||
|
||||
document.querySelectorAll("img").forEach((img) => {
|
||||
const [, min, sec] = /^(\d+)\:(\d+)$/.exec(img.alt) || [];
|
||||
@@ -24,13 +22,23 @@ function setImgClick() {
|
||||
if (!t) return;
|
||||
|
||||
img.title = img.title || img.alt;
|
||||
|
||||
img.onclick = () => {
|
||||
v.currentTime = t;
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
function imgClickListener(ev: PointerEvent) {
|
||||
if (!(ev.target instanceof HTMLImageElement)) return;
|
||||
const img = ev.target;
|
||||
|
||||
if (!videoEl.value) return;
|
||||
const v = videoEl.value;
|
||||
|
||||
const [, min, sec] = /^(\d+)\:(\d+)$/.exec(img.alt) || [];
|
||||
const t = min && sec ? parseInt(min) * 60 + parseInt(sec) : null;
|
||||
if (!t) return;
|
||||
|
||||
v.currentTime = t;
|
||||
}
|
||||
|
||||
watch(videoURL, () => {
|
||||
setImgClick();
|
||||
});
|
||||
|
||||
@@ -9,6 +9,7 @@ hero:
|
||||
|
||||
<Downloader />
|
||||
|
||||
- [こんな人になりたい|孔子が推す男](./こんな人になりたい|孔子が推す男)
|
||||
- [泡泡瑪特真相:天才的商業模式,還是精密的「收割」遊戲? |王寧|盲盒|LABUBU|Molly|拉布布|POP MART](./泡泡瑪特真相:天才的商業模式,還是精密的「收割」遊戲?_|王寧|盲盒|LABUBU|Molly|拉布布|POP_MART.md)
|
||||
- [全世界流亡政治的结构性困境 | 陈光诚告王志安 | 俄罗斯FBK丑闻 | 阿拉法特遗产](./全世界流亡政治的结构性困境_|_陈光诚告王志安_|_俄罗斯FBK丑闻_|_阿拉法特遗产.md)
|
||||
- [小学校7校退学の問題児が『弟子規』で人生を変えた実話](/小学校7校退学の問題児が『弟子規』で人生を変えた実話)
|
||||
|
||||
@@ -0,0 +1,900 @@
|
||||
---
|
||||
interval: 2
|
||||
dedup: true
|
||||
video: '/こんな人になりたい|孔子が推す男 [TRb76-awaZg].mkv'
|
||||
---
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
<details>
|
||||
<summary>0:04</summary>
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
</details>
|
||||
<br/>
|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
<details>
|
||||
<summary>0:12</summary>
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
</details>
|
||||
<br/>
|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
<details>
|
||||
<summary>0:34</summary>
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
</details>
|
||||
<br/>
|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
<details>
|
||||
<summary>0:48</summary>
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
</details>
|
||||
<br/>
|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
<details>
|
||||
<summary>1:02</summary>
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
</details>
|
||||
<br/>
|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
<details>
|
||||
<summary>1:08</summary>
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
</details>
|
||||
<br/>
|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
<details>
|
||||
<summary>1:14</summary>
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
</details>
|
||||
<br/>
|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
<details>
|
||||
<summary>1:20</summary>
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
</details>
|
||||
<br/>
|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
<details>
|
||||
<summary>1:32</summary>
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
</details>
|
||||
<br/>
|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
<details>
|
||||
<summary>1:48</summary>
|
||||
|
||||

|
||||
</details>
|
||||
<br/>
|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
<details>
|
||||
<summary>1:52</summary>
|
||||
|
||||

|
||||
</details>
|
||||
<br/>
|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
<details>
|
||||
<summary>1:56</summary>
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
</details>
|
||||
<br/>
|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
<details>
|
||||
<summary>2:40</summary>
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
</details>
|
||||
<br/>
|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
<details>
|
||||
<summary>2:52</summary>
|
||||
|
||||

|
||||
</details>
|
||||
<br/>
|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
<details>
|
||||
<summary>2:58</summary>
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
</details>
|
||||
<br/>
|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
<details>
|
||||
<summary>3:20</summary>
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
</details>
|
||||
<br/>
|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
<details>
|
||||
<summary>3:36</summary>
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
</details>
|
||||
<br/>
|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
<details>
|
||||
<summary>3:54</summary>
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
</details>
|
||||
<br/>
|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
<details>
|
||||
<summary>4:40</summary>
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
</details>
|
||||
<br/>
|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
<details>
|
||||
<summary>5:02</summary>
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
</details>
|
||||
<br/>
|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
<details>
|
||||
<summary>6:04</summary>
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
</details>
|
||||
<br/>
|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
<details>
|
||||
<summary>6:12</summary>
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
</details>
|
||||
<br/>
|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
Reference in new issue
Block a user