55 lines
1.8 KiB
TypeScript
55 lines
1.8 KiB
TypeScript
|
import { Collection, Ref, RefTo, Song, DB, } from "@euterpe.js/music-library"
|
||
|
import { songs } from "./songs_list"
|
||
|
|
||
|
export function generate_db() {
|
||
|
console.log(songs)
|
||
|
//construct db
|
||
|
let db = new DB
|
||
|
let collections: string[] = new Array()
|
||
|
let new_songs = []
|
||
|
|
||
|
//create collections by folder names
|
||
|
for (let i = 0; i < songs.length; i++) {
|
||
|
const song = songs[i]
|
||
|
const last_i = song.lastIndexOf("\\")
|
||
|
const collection_name = song.slice(song.slice(0, last_i).lastIndexOf("\\") + 1, last_i)
|
||
|
/*
|
||
|
const foreforelast_i = song.slice(0, forelast_i - 1)
|
||
|
const foreforeforelast_i = song.slice(0, foreforelast_i - 1).lastIndexOf("\\")
|
||
|
*/
|
||
|
if (!collections.includes(collection_name)) {
|
||
|
console.log(`creating collection ${collection_name}`)
|
||
|
db.add([new Collection({
|
||
|
name: collection_name,
|
||
|
songs: [],
|
||
|
artists: [],
|
||
|
})])
|
||
|
collections.push(collection_name)
|
||
|
}
|
||
|
let col = db.collections.find(col => col.name == collection_name)!
|
||
|
let col_id = col.id
|
||
|
new_songs.push({ song: song, collection_id: col_id })
|
||
|
}
|
||
|
|
||
|
//create songs
|
||
|
for (let i = 0; i < new_songs.length; i++) {
|
||
|
let song = new_songs[i]
|
||
|
const last_i = song.song.lastIndexOf("\\")
|
||
|
|
||
|
const name = song.song.slice(last_i + 1)
|
||
|
const song_url = song.song.replace("\\\\", "/").slice(7)
|
||
|
|
||
|
const db_song = new Song({
|
||
|
name: name.slice(0, name.lastIndexOf(".")),
|
||
|
artists: [],
|
||
|
url: new URL("http://localhost:4200/" + song_url),
|
||
|
duration: 0,
|
||
|
remix_artists: [],
|
||
|
in_collection: new Ref(RefTo.Collections, song.collection_id!)
|
||
|
})
|
||
|
db.add([db_song])
|
||
|
}
|
||
|
console.log(db)
|
||
|
return db
|
||
|
}
|