update: audio metadata fetch
This commit is contained in:
parent
4ad8541392
commit
10e7341a73
22
src/lib/audio/getAudioIDMetadata.ts
Normal file
22
src/lib/audio/getAudioIDMetadata.ts
Normal 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);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
@ -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 = '';
|
||||||
|
@ -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) => {
|
||||||
|
@ -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} />
|
||||||
|
Loading…
Reference in New Issue
Block a user