MCPcopy Create free account
hub / github.com/GoogleChrome/samples / processAndRenderTracks

Function processAndRenderTracks

google-drive-embeddings/src/main.js:439–504  ·  view source on GitHub ↗

* Main routine: parses standard track filenames, divides lists, and binds to tables

()

Source from the content-addressed store, hash-verified

437 * Main routine: parses standard track filenames, divides lists, and binds to tables
438 */
439async function processAndRenderTracks() {
440 const looseDelimiter = DOM.checkLooseDelimiter.checked;
441
442 // 1. Parse all raw tracks using our parser configurations
443 const parsedAll = state.rawTracks.map((track) => {
444 const parsed = TrackParser.parse(track.name, { strictDelimiter: !looseDelimiter });
445 return {
446 id: track.id,
447 originalName: track.name,
448 size: track.size,
449 webContentLink: track.webContentLink,
450 approved: parsed.approved,
451 artist: parsed.artist,
452 title: parsed.title,
453 reasons: parsed.reasons,
454 checklist: parsed.checklist
455 };
456 });
457
458 // 2. Perform metadata-based songs deduplication
459 const seenKeys = new Set();
460 const uniqueTracks = [];
461 let duplicateCount = 0;
462
463 parsedAll.forEach((track) => {
464 let key = '';
465 if (track.approved) {
466 // Normalize values: lowercase, strip all symbols and spacing to combine words safely
467 const normArtist = track.artist.toLowerCase().replace(/[^a-z0-9]/g, '');
468 const normTitle = track.title.toLowerCase().replace(/[^a-z0-9]/g, '');
469 key = `approved:${normArtist}:${normTitle}`;
470 } else {
471 const normName = track.originalName.toLowerCase().replace(/[^a-z0-9]/g, '');
472 key = `rejected:${normName}`;
473 }
474
475 if (seenKeys.has(key)) {
476 duplicateCount++;
477 } else {
478 seenKeys.add(key);
479 uniqueTracks.push(track);
480 }
481 });
482
483 // Re-index clean unique track objects
484 state.parsedTracks = uniqueTracks.map((t, idx) => ({
485 ...t,
486 index: idx
487 }));
488
489 if (duplicateCount > 0) {
490 logScanItem(`Deduplication: Filtered out ${duplicateCount} duplicate songs based on names/metadata.`);
491 console.log(`Deduplication: Removed ${duplicateCount} duplicates. Unique count: ${state.parsedTracks.length}`);
492 }
493
494 // Cache raw and parsed lists in IndexedDB!
495 try {
496 await dbSet('gdrive_raw_tracks', state.rawTracks);

Callers 2

handleStartScanFunction · 0.85
handleReparseTracksFunction · 0.85

Calls 7

dbSetFunction · 0.90
logScanItemFunction · 0.85
renderTracksListFunction · 0.85
addMethod · 0.80
parseMethod · 0.45
logMethod · 0.45
errorMethod · 0.45

Tested by

no test coverage detected