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">
import localforage from '$lib/storage';
import { page } from '$app/stores';
export let coverId;
let coverPath = '';

View File

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

View File

@ -1,14 +1,28 @@
<script lang="ts">
import { page } from '$app/stores';
import getAudioIDMetadata from '$lib/audio/getAudioIDMetadata';
import Background from '$lib/components/background.svelte';
import Cover from '$lib/components/cover.svelte';
import InteractiveBox from '$lib/components/interactiveBox.svelte';
import extractFileName from '$lib/extractFileName';
import localforage from 'localforage';
const audioId = $page.params.id;
const name = "晨曦旅客";
const singer = "乐正绫";
const duration = 218;
const currentProgress = 0;
let name = "";
let singer = "";
let duration = 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>
<Background coverId={audioId} />