make do without tauri and test vid

s 0f44589 ws that starts to work
s 6df44a1 first video
s dacb6cd click to time
s 7831ae4 remove tauri
s 2d18c9b concurrently and frontmatter
s dc43284 add new video and test
s 0dd03af fix for youtube format and markdown compat
s c30fa38 remove placeholder mds
s d8f1a54 remove images from git
This commit is contained in:
polv committed 2026-02-01 18:41:23 +07:00
1 parent fc58e68ad7
commit 00033e0341
38 files changed
+4897 -6257

No files matched your search

+2
View File
@@ -0,0 +1,2 @@
**/*.png
**/*.jpg
+12 -37
View File
@@ -10,16 +10,15 @@ export default defineConfig({
// https://vitepress.dev/reference/default-theme-config
nav: [
{ text: 'Home', link: '/' },
{ text: 'Examples', link: '/markdown-examples' }
],
sidebar: [
{
text: 'Examples',
items: [
{ text: 'Markdown Examples', link: '/markdown-examples' },
{ text: 'Runtime API Examples', link: '/api-examples' }
]
text: 'Preview',
// items: [
// { text: 'Markdown Examples', link: '/markdown-examples' },
// { text: 'Runtime API Examples', link: '/api-examples' }
// ]
}
],
@@ -29,38 +28,14 @@ export default defineConfig({
},
vite: {
clearScreen: false,
server: {
// make sure this port matches the devUrl port in tauri.conf.json file
port: 5173,
// Tauri expects a fixed port, fail if that port is not available
strictPort: true,
// if the host Tauri is expecting is set, use it
host: TAURI_HOST || false,
hmr: TAURI_HOST
? {
protocol: 'ws',
host: TAURI_HOST,
port: 1421,
}
: undefined,
watch: {
// tell vite to ignore watching `src-tauri`
ignored: ['**/src-tauri/**'],
server: {
proxy: {
'/socket': {
target: 'ws://localhost:8080',
ws: true,
rewriteWsOrigin: true,
}
},
},
// Env variables starting with the item of `envPrefix` will be exposed in tauri's source code through `import.meta.env`.
envPrefix: ['VITE_', 'TAURI_ENV_*'],
build: {
// Tauri uses Chromium on Windows and WebKit on macOS and Linux
target:
process.env.TAURI_ENV_PLATFORM == 'windows'
? 'chrome105'
: 'safari13',
// don't minify for debug builds
minify: !process.env.TAURI_ENV_DEBUG ? 'esbuild' : false,
// produce sourcemaps for debug builds
sourcemap: !!process.env.TAURI_ENV_DEBUG,
},
}
})
+82 -44
View File
@@ -1,69 +1,107 @@
<template>
<form @submit="onSubmit">
<input type="text" v-model="q">
<button type="submit">Submit</button>
<form @submit="onSubmit">
<input type="text" v-model="q" />
<button type="submit">Submit</button>
<video controls ref="video" :src="videoSrc" @loadeddata="onVideoLoad" @seeked="onSeeked"></video>
</form>
<video
v-if="videoSrc"
controls
ref="video"
:src="videoSrc"
@loadeddata="onVideoLoad"
></video>
</form>
</template>
<script setup lang="ts">
import { ref, useTemplateRef } from 'vue'
import { invoke } from "@tauri-apps/api/core";
import { listen } from '@tauri-apps/api/event';
import { ref, useTemplateRef } from "vue";
const q = ref('')
const videoSrc = ref('')
const videoEl = useTemplateRef('video')
const q = ref("");
const videoSrc = ref("");
const videoEl = useTemplateRef("video");
function onSubmit(ev: SubmitEvent) {
ev.preventDefault()
ev.preventDefault();
if (!q.value) return;
if (!q.value) return
videoSrc.value = '/' + q.value
}
interface SeekQEvent {
t: number
videoSrc.value = "/" + q.value;
}
function onVideoLoad() {
invoke('download_q', { q: q.value.replace(/\.[a-z0-9]+$/, '') })
const ws = new WebSocket("ws://localhost:8080");
listen<SeekQEvent>('seek_q', (ev) => {
videoEl.value!.currentTime = ev.payload.t;
})
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 () => {
for (const t of ts) {
const b = await new Promise<Blob | null>((resolve) => {
vid.onseeked = () => {
const v = videoEl.value!;
let c = document.createElement("canvas");
c.height = v.videoHeight || parseInt(v.style.height);
c.width = v.videoWidth || parseInt(v.style.width);
const ctx = c.getContext("2d")!;
ctx.drawImage(v, 0, 0);
ws.send(
JSON.stringify({
name: "timed_q",
q: q_value,
t,
}),
);
c.toBlob((b) => resolve(b));
}
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.onopen = async () => {
ws.send(
JSON.stringify({
name: "download_q",
q: q_value,
duration: vid.duration,
}),
);
};
ws.onclose = () => {
};
}
function onSeeked() {
const v = videoEl.value!
let c = document.createElement('canvas');
c.height = v.videoHeight || parseInt(v.style.height);
c.width = v.videoWidth || parseInt(v.style.width);
const ctx = c.getContext('2d')!;
ctx.drawImage(v, 0, 0);
invoke('timed_q', { q: q.value.replace(/\.[a-z0-9]+$/, ''), t: videoEl.value!.currentTime, data: c.toDataURL('image/png') })
}
</script>
<style scoped>
form {
margin: 0.5em 0;
margin: 0.5em 0;
}
form * {
border: 1px solid gray;
border: 1px solid gray;
}
button {
margin-left: 0.5em;
cursor: pointer;
padding: 0 0.5em;
border-radius: 5px;
margin-left: 0.5em;
cursor: pointer;
padding: 0 0.5em;
border-radius: 5px;
}
</style>
</style>
@@ -0,0 +1,50 @@
<template>
<Teleport to="body">
<video v-if="videoURL" controls :src="videoURL" ref="video">
Hello
</video>
</Teleport>
</template>
<script setup lang="ts">
import { useData } from 'vitepress'
import { computed, useTemplateRef, watch } from 'vue'
const { frontmatter } = useData<{ video?: string }>()
const videoURL = computed(() => frontmatter.value?.video)
const videoEl = useTemplateRef("video");
function setImgClick(){
const v = videoEl.value;
if (!v) {
return;
}
document.querySelectorAll('img').forEach((img) => {
const [, min, sec] = /^(\d+)\:(\d+)$/.exec(img.alt) || []
const t = min && sec ? parseInt(min) * 60 + parseInt(sec) : null
if (!t) return;
img.onclick = () => {
v.currentTime = t
}
})
}
watch(videoURL, () => {
setImgClick()
})
setTimeout(() => setImgClick(), 500)
</script>
<style scoped>
video {
width: 750px;
overflow: visible;
position: fixed;
bottom: 10px;
left: 10px;
z-index: 100;
}
</style>
+8
View File
@@ -1,9 +1,17 @@
import type { Theme } from "vitepress";
import DefaultTheme from "vitepress/theme";
import { h } from 'vue'
import Downloader from "./components/Downloader.vue";
import Video from './components/Video.vue'
export default {
extends: DefaultTheme,
Layout() {
return h(DefaultTheme.Layout, null, {
'sidebar-nav-after': () => h(Video)
})
},
enhanceApp({ app }) {
// register your custom global components
app.component("Downloader", Downloader);
@@ -0,0 +1,948 @@
---
interval: 2
video: '/15萬緬甸人在台灣的背後,是一段顛沛流離的故事 [n0qycF8rvVU].mp4'
---
![0:02](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/0_02.png)
![0:04](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/0_04.png)
![0:06](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/0_06.png)
![0:08](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/0_08.png)
![0:10](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/0_10.png)
![0:12](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/0_12.png)
![0:14](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/0_14.png)
![0:16](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/0_16.png)
![0:18](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/0_18.png)
![0:20](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/0_20.png)
![0:22](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/0_22.png)
![0:24](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/0_24.png)
![0:26](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/0_26.png)
![0:28](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/0_28.png)
![0:30](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/0_30.png)
![0:32](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/0_32.png)
![0:34](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/0_34.png)
![0:36](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/0_36.png)
![0:38](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/0_38.png)
![0:40](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/0_40.png)
![0:42](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/0_42.png)
![0:44](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/0_44.png)
![0:46](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/0_46.png)
![0:48](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/0_48.png)
![0:50](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/0_50.png)
![0:54](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/0_54.png)
![0:56](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/0_56.png)
![0:58](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/0_58.png)
![1:00](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/1_00.png)
![1:02](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/1_02.png)
![1:04](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/1_04.png)
![1:06](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/1_06.png)
![1:14](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/1_14.png)
![1:16](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/1_16.png)
![1:18](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/1_18.png)
![1:20](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/1_20.png)
![1:22](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/1_22.png)
![1:24](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/1_24.png)
![1:28](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/1_28.png)
![1:30](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/1_30.png)
![1:32](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/1_32.png)
![1:34](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/1_34.png)
![1:36](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/1_36.png)
![1:40](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/1_40.png)
![1:42](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/1_42.png)
![1:44](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/1_44.png)
![1:46](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/1_46.png)
![1:48](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/1_48.png)
![1:50](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/1_50.png)
![1:52](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/1_52.png)
![1:54](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/1_54.png)
![1:58](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/1_58.png)
![2:00](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/2_00.png)
![2:02](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/2_02.png)
![2:04](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/2_04.png)
![2:06](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/2_06.png)
![2:12](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/2_12.png)
![2:14](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/2_14.png)
![2:16](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/2_16.png)
![2:18](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/2_18.png)
![2:20](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/2_20.png)
![2:22](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/2_22.png)
![2:26](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/2_26.png)
![2:28](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/2_28.png)
![2:30](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/2_30.png)
![2:32](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/2_32.png)
![2:34](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/2_34.png)
![2:36](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/2_36.png)
![2:38](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/2_38.png)
![2:42](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/2_42.png)
![2:44](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/2_44.png)
![2:46](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/2_46.png)
![2:48](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/2_48.png)
![2:50](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/2_50.png)
![2:52](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/2_52.png)
![2:56](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/2_56.png)
![2:58](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/2_58.png)
![3:00](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/3_00.png)
![3:02](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/3_02.png)
![3:04](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/3_04.png)
![3:06](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/3_06.png)
![3:08](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/3_08.png)
![3:10](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/3_10.png)
![3:12](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/3_12.png)
![3:14](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/3_14.png)
![3:16](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/3_16.png)
![3:18](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/3_18.png)
![3:20](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/3_20.png)
![3:22](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/3_22.png)
![3:24](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/3_24.png)
![3:26](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/3_26.png)
![3:28](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/3_28.png)
![3:30](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/3_30.png)
![3:32](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/3_32.png)
![3:36](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/3_36.png)
![3:38](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/3_38.png)
![3:40](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/3_40.png)
![3:42](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/3_42.png)
![3:44](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/3_44.png)
![3:48](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/3_48.png)
![3:50](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/3_50.png)
![3:52](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/3_52.png)
![3:54](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/3_54.png)
![3:56](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/3_56.png)
![3:58](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/3_58.png)
![4:00](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/4_00.png)
![4:02](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/4_02.png)
![4:04](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/4_04.png)
![4:06](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/4_06.png)
![4:08](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/4_08.png)
![4:10](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/4_10.png)
![4:12](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/4_12.png)
![4:14](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/4_14.png)
![4:16](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/4_16.png)
![4:18](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/4_18.png)
![4:22](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/4_22.png)
![4:24](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/4_24.png)
![4:26](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/4_26.png)
![4:32](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/4_32.png)
![4:34](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/4_34.png)
![4:38](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/4_38.png)
![4:40](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/4_40.png)
![4:44](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/4_44.png)
![4:46](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/4_46.png)
![4:48](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/4_48.png)
![4:52](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/4_52.png)
![4:54](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/4_54.png)
![4:56](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/4_56.png)
![4:58](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/4_58.png)
![5:00](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/5_00.png)
![5:02](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/5_02.png)
![5:04](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/5_04.png)
![5:06](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/5_06.png)
![5:08](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/5_08.png)
![5:10](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/5_10.png)
![5:12](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/5_12.png)
![5:16](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/5_16.png)
![5:18](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/5_18.png)
![5:20](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/5_20.png)
![5:22](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/5_22.png)
![5:24](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/5_24.png)
![5:26](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/5_26.png)
![5:28](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/5_28.png)
![5:30](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/5_30.png)
![5:32](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/5_32.png)
![5:34](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/5_34.png)
![5:36](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/5_36.png)
![5:38](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/5_38.png)
![5:40](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/5_40.png)
![5:42](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/5_42.png)
![5:44](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/5_44.png)
![5:48](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/5_48.png)
![5:50](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/5_50.png)
![5:52](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/5_52.png)
![5:54](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/5_54.png)
![5:56](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/5_56.png)
![5:58](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/5_58.png)
![6:00](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/6_00.png)
![6:02](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/6_02.png)
![6:04](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/6_04.png)
![6:06](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/6_06.png)
![6:08](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/6_08.png)
![6:10](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/6_10.png)
![6:12](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/6_12.png)
![6:14](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/6_14.png)
![6:16](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/6_16.png)
![6:20](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/6_20.png)
![6:22](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/6_22.png)
![6:24](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/6_24.png)
![6:26](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/6_26.png)
![6:28](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/6_28.png)
![6:30](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/6_30.png)
![6:32](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/6_32.png)
![6:34](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/6_34.png)
![6:36](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/6_36.png)
![6:38](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/6_38.png)
![6:40](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/6_40.png)
![6:42](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/6_42.png)
![6:44](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/6_44.png)
![6:46](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/6_46.png)
![6:48](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/6_48.png)
![6:50](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/6_50.png)
![6:52](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/6_52.png)
![6:54](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/6_54.png)
![6:56](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/6_56.png)
![6:58](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/6_58.png)
![7:02](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/7_02.png)
![7:04](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/7_04.png)
![7:06](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/7_06.png)
![7:08](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/7_08.png)
![7:12](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/7_12.png)
![7:14](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/7_14.png)
![7:16](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/7_16.png)
![7:18](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/7_18.png)
![7:20](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/7_20.png)
![7:22](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/7_22.png)
![7:24](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/7_24.png)
![7:26](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/7_26.png)
![7:28](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/7_28.png)
![7:30](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/7_30.png)
![7:32](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/7_32.png)
![7:34](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/7_34.png)
![7:36](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/7_36.png)
![7:38](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/7_38.png)
![7:40](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/7_40.png)
![7:42](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/7_42.png)
![7:44](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/7_44.png)
![7:46](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/7_46.png)
![7:48](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/7_48.png)
![7:50](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/7_50.png)
![7:52](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/7_52.png)
![7:54](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/7_54.png)
![7:56](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/7_56.png)
![7:58](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/7_58.png)
![8:00](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/8_00.png)
![8:02](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/8_02.png)
![8:04](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/8_04.png)
![8:06](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/8_06.png)
![8:08](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/8_08.png)
![8:10](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/8_10.png)
![8:12](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/8_12.png)
![8:14](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/8_14.png)
![8:18](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/8_18.png)
![8:20](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/8_20.png)
![8:22](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/8_22.png)
![8:24](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/8_24.png)
![8:26](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/8_26.png)
![8:28](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/8_28.png)
![8:30](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/8_30.png)
![8:32](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/8_32.png)
![8:34](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/8_34.png)
![8:36](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/8_36.png)
![8:40](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/8_40.png)
![8:42](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/8_42.png)
![8:44](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/8_44.png)
![8:46](./15萬緬甸人在台灣的背後,是一段顛沛流離的故事/8_46.png)
-49
View File
@@ -1,49 +0,0 @@
---
outline: deep
---
# Runtime API Examples
This page demonstrates usage of some of the runtime APIs provided by VitePress.
The main `useData()` API can be used to access site, theme, and page data for the current page. It works in both `.md` and `.vue` files:
```md
<script setup>
import { useData } from 'vitepress'
const { theme, page, frontmatter } = useData()
</script>
## Results
### Theme Data
<pre>{{ theme }}</pre>
### Page Data
<pre>{{ page }}</pre>
### Page Frontmatter
<pre>{{ frontmatter }}</pre>
```
<script setup>
import { useData } from 'vitepress'
const { site, theme, page, frontmatter } = useData()
</script>
## Results
### Theme Data
<pre>{{ theme }}</pre>
### Page Data
<pre>{{ page }}</pre>
### Page Frontmatter
<pre>{{ frontmatter }}</pre>
## More
Check out the documentation for the [full list of runtime APIs](https://vitepress.dev/reference/runtime-api#usedata).
+4 -16
View File
@@ -5,22 +5,10 @@ layout: home
hero:
name: "yt2press"
text: "video to vitepress"
tagline: My great project tagline
actions:
- theme: brand
text: Markdown Examples
link: /markdown-examples
- theme: alt
text: API Examples
link: /api-examples
features:
- title: Feature A
details: Lorem ipsum dolor sit amet, consectetur adipiscing elit
- title: Feature B
details: Lorem ipsum dolor sit amet, consectetur adipiscing elit
- title: Feature C
details: Lorem ipsum dolor sit amet, consectetur adipiscing elit
---
<Downloader />
- [【剥茧The Truth Within】EP02](/qVVhBGT0K7Y)
- [15萬緬甸人在台灣的背後,是一段顛沛流離的故事](/15萬緬甸人在台灣的背後,是一段顛沛流離的故事)
- [美国突袭委内瑞拉,真的是为了抢那点劣质石油吗?](/美国突袭委内瑞拉,真的是为了抢那点劣质石油吗?)
-85
View File
@@ -1,85 +0,0 @@
# Markdown Extension Examples
This page demonstrates some of the built-in markdown extensions provided by VitePress.
## Syntax Highlighting
VitePress provides Syntax Highlighting powered by [Shiki](https://github.com/shikijs/shiki), with additional features like line-highlighting:
**Input**
````md
```js{4}
export default {
data () {
return {
msg: 'Highlighted!'
}
}
}
```
````
**Output**
```js{4}
export default {
data () {
return {
msg: 'Highlighted!'
}
}
}
```
## Custom Containers
**Input**
```md
::: info
This is an info box.
:::
::: tip
This is a tip.
:::
::: warning
This is a warning.
:::
::: danger
This is a dangerous warning.
:::
::: details
This is a details block.
:::
```
**Output**
::: info
This is an info box.
:::
::: tip
This is a tip.
:::
::: warning
This is a warning.
:::
::: danger
This is a dangerous warning.
:::
::: details
This is a details block.
:::
## More
Check out the documentation for the [full list of markdown extensions](https://vitepress.dev/guide/markdown).
+873 -290
View File
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff