Working v0.01 with ...
Import, add song to playlist from collection and export
This commit is contained in:
parent
dde28bc286
commit
23fa46e223
101
src/App.tsx
101
src/App.tsx
@ -26,6 +26,34 @@ interface Song {
|
||||
id: string;
|
||||
title: string;
|
||||
artist: string;
|
||||
composer?: string;
|
||||
album?: string;
|
||||
grouping?: string;
|
||||
genre?: string;
|
||||
kind?: string;
|
||||
size?: string;
|
||||
totalTime?: string;
|
||||
discNumber?: string;
|
||||
trackNumber?: string;
|
||||
year?: string;
|
||||
averageBpm?: string;
|
||||
dateAdded?: string;
|
||||
bitRate?: string;
|
||||
sampleRate?: string;
|
||||
comments?: string;
|
||||
playCount?: string;
|
||||
rating?: string;
|
||||
location?: string;
|
||||
remixer?: string;
|
||||
tonality?: string;
|
||||
label?: string;
|
||||
mix?: string;
|
||||
tempo?: {
|
||||
inizio?: string;
|
||||
bpm?: string;
|
||||
metro?: string;
|
||||
battito?: string;
|
||||
};
|
||||
}
|
||||
|
||||
interface Playlist {
|
||||
@ -51,16 +79,44 @@ export default function RekordboxReader() {
|
||||
const result = await parseStringPromise(xmlText);
|
||||
console.log("Parsed XML:", result);
|
||||
|
||||
const tracks: Song[] = result.DJ_PLAYLISTS?.COLLECTION?.[0]?.TRACK?.map((track: any) => ({
|
||||
const tracks: Song[] = result.DJ_PLAYLISTS.COLLECTION[0].TRACK.map((track: any) => ({
|
||||
id: track.$.TrackID,
|
||||
title: track.$.Name,
|
||||
artist: track.$.Artist,
|
||||
})) || [];
|
||||
composer: track.$.Composer,
|
||||
album: track.$.Album,
|
||||
grouping: track.$.Grouping,
|
||||
genre: track.$.Genre,
|
||||
kind: track.$.Kind,
|
||||
size: track.$.Size,
|
||||
totalTime: track.$.TotalTime,
|
||||
discNumber: track.$.DiscNumber,
|
||||
trackNumber: track.$.TrackNumber,
|
||||
year: track.$.Year,
|
||||
averageBpm: track.$.AverageBpm,
|
||||
dateAdded: track.$.DateAdded,
|
||||
bitRate: track.$.BitRate,
|
||||
sampleRate: track.$.SampleRate,
|
||||
comments: track.$.Comments,
|
||||
playCount: track.$.PlayCount,
|
||||
rating: track.$.Rating,
|
||||
location: track.$.Location,
|
||||
remixer: track.$.Remixer,
|
||||
tonality: track.$.Tonality,
|
||||
label: track.$.Label,
|
||||
mix: track.$.Mix,
|
||||
tempo: track.TEMPO ? {
|
||||
inizio: track.TEMPO[0].$.Inizio,
|
||||
bpm: track.TEMPO[0].$.Bpm,
|
||||
metro: track.TEMPO[0].$.Metro,
|
||||
battito: track.TEMPO[0].$.Battito,
|
||||
} : undefined,
|
||||
}));
|
||||
|
||||
const lists: Playlist[] = result.DJ_PLAYLISTS?.PLAYLISTS?.[0]?.NODE?.[0]?.NODE?.map((playlist: any) => ({
|
||||
const lists: Playlist[] = result.DJ_PLAYLISTS.PLAYLISTS[0].NODE[0].NODE.map((playlist: any) => ({
|
||||
name: playlist.$.Name,
|
||||
tracks: playlist.TRACK ? playlist.TRACK.map((t: any) => t.$.Key) : [],
|
||||
})) || [];
|
||||
}));
|
||||
|
||||
console.log("Tracks:", tracks);
|
||||
console.log("Playlists:", lists);
|
||||
@ -101,13 +157,45 @@ export default function RekordboxReader() {
|
||||
Entries: songs.length.toString(),
|
||||
});
|
||||
|
||||
// Add tracks to the collection
|
||||
// Add tracks to the collection with all metadata
|
||||
songs.forEach((song) => {
|
||||
collection.ele("TRACK", {
|
||||
const trackElement = collection.ele("TRACK", {
|
||||
TrackID: song.id,
|
||||
Name: song.title,
|
||||
Artist: song.artist,
|
||||
Composer: song.composer || "",
|
||||
Album: song.album || "",
|
||||
Grouping: song.grouping || "",
|
||||
Genre: song.genre || "",
|
||||
Kind: song.kind || "",
|
||||
Size: song.size || "",
|
||||
TotalTime: song.totalTime || "",
|
||||
DiscNumber: song.discNumber || "",
|
||||
TrackNumber: song.trackNumber || "",
|
||||
Year: song.year || "",
|
||||
AverageBpm: song.averageBpm || "",
|
||||
DateAdded: song.dateAdded || "",
|
||||
BitRate: song.bitRate || "",
|
||||
SampleRate: song.sampleRate || "",
|
||||
Comments: song.comments || "",
|
||||
PlayCount: song.playCount || "",
|
||||
Rating: song.rating || "",
|
||||
Location: song.location || "",
|
||||
Remixer: song.remixer || "",
|
||||
Tonality: song.tonality || "",
|
||||
Label: song.label || "",
|
||||
Mix: song.mix || "",
|
||||
});
|
||||
|
||||
// Add the TEMPO nested element if available
|
||||
if (song.tempo) {
|
||||
trackElement.ele("TEMPO", {
|
||||
Inizio: song.tempo.inizio || "",
|
||||
Bpm: song.tempo.bpm || "",
|
||||
Metro: song.tempo.metro || "",
|
||||
Battito: song.tempo.battito || "",
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
// Create the playlists structure
|
||||
@ -147,7 +235,6 @@ export default function RekordboxReader() {
|
||||
document.body.removeChild(a);
|
||||
};
|
||||
|
||||
|
||||
const renderContent = () => {
|
||||
if (selectedItem === "All Songs") {
|
||||
return (
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user