update: audio metadata fetch

This commit is contained in:
Alikia2x 2024-05-11 12:13:31 +08:00
parent 4ad8541392
commit 10e7341a73
4 changed files with 40 additions and 6 deletions

View File

@ -0,0 +1,22 @@
import * as musicMetadata from 'music-metadata-browser';
import localforage from 'localforage';
export default function (audioId: string, callback: Function) {
localforage.getItem(`${audioId}-metadata`, function (err, metadata) {
if (metadata) {
callback(metadata);
} else {
localforage.getItem(`${audioId}-file`, function (err, file) {
if (file) {
const f = file as File;
musicMetadata.parseBlob(f).then((metadata) => {
if (metadata) {
localforage.setItem(`${audioId}-metadata`, metadata);
callback(metadata);
} else callback(null);
});
}
});
}
});
}

View File

@ -1,6 +1,5 @@
<script lang="ts"> <script lang="ts">
import localforage from '$lib/storage'; import localforage from '$lib/storage';
import { page } from '$app/stores';
export let coverId; export let coverId;
let coverPath = ''; let coverPath = '';

View File

@ -1,5 +1,4 @@
import * as musicMetadata from 'music-metadata-browser'; import * as musicMetadata from 'music-metadata-browser';
import convertCoverData from './convertCoverData';
export default function getAudioMeta(audio: File, callback: Function) { export default function getAudioMeta(audio: File, callback: Function) {
musicMetadata.parseBlob(audio).then((metadata) => { musicMetadata.parseBlob(audio).then((metadata) => {

View File

@ -1,14 +1,28 @@
<script lang="ts"> <script lang="ts">
import { page } from '$app/stores'; import { page } from '$app/stores';
import getAudioIDMetadata from '$lib/audio/getAudioIDMetadata';
import Background from '$lib/components/background.svelte'; import Background from '$lib/components/background.svelte';
import Cover from '$lib/components/cover.svelte'; import Cover from '$lib/components/cover.svelte';
import InteractiveBox from '$lib/components/interactiveBox.svelte'; import InteractiveBox from '$lib/components/interactiveBox.svelte';
import extractFileName from '$lib/extractFileName';
import localforage from 'localforage';
const audioId = $page.params.id; const audioId = $page.params.id;
const name = "晨曦旅客"; let name = "";
const singer = "乐正绫"; let singer = "";
const duration = 218; let duration = 0;
const currentProgress = 0; let currentProgress = 0;
localforage.getItem(`${audioId}-file`, function (err, file) {
if (file) {
const f = file as File;
name = extractFileName(f.name);
}
});
getAudioIDMetadata(audioId, (metadata: any) => {
console.log(metadata);
duration = metadata.format.duration ? metadata.format.duration : 0;
})
</script> </script>
<Background coverId={audioId} /> <Background coverId={audioId} />