Skip to content

Commit 78e7b16

Browse files
feat: manually parsed CSV for credits
1 parent 713b355 commit 78e7b16

File tree

1 file changed

+26
-8
lines changed

1 file changed

+26
-8
lines changed

lesson_10/libraries/src/loaders/xavier_cruz_loader.ts

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import csv from 'csv-parser';
22
import fs from 'fs';
3-
import { Credit, MediaItem } from '../models/index.js';
3+
import { Credit, MediaItem, Role } from '../models/index.js';
44
import { Loader } from './loader.js';
55

66
export class XavierCruzLoader implements Loader {
@@ -42,14 +42,32 @@ export class XavierCruzLoader implements Loader {
4242

4343
//PARSE CSV MANUALLY - Extra Credit
4444
async loadCredits(): Promise<Credit[]> {
45-
const credits = [];
46-
const readable = fs
47-
.createReadStream('data/credits.csv', 'utf-8')
48-
.pipe(csv());
49-
for await (const row of readable) {
50-
const { media_item_id: mediaItemId, role, name } = row;
51-
credits.push({ mediaItemId, name, role });
45+
const filePath = 'data/credits.csv';
46+
const fileContents = fs.readFileSync(filePath, 'utf-8');
47+
48+
const lines = fileContents.split('\n');
49+
const newString = lines.slice(1);
50+
const trimmedString = newString;
51+
52+
for (let i = 0; i < trimmedString.length; i++) {
53+
trimmedString[i] = trimmedString[i].substring(
54+
trimmedString[i].indexOf(',') + 1,
55+
);
5256
}
57+
58+
// help from ChatGPT - Fixing the roleStr as Role issue
59+
const credits: Credit[] = trimmedString.map((credit) => {
60+
const [mediaItemId, roleStr, name] = credit.split(',');
61+
62+
const role: Role = roleStr as Role;
63+
64+
return {
65+
mediaItemId,
66+
role,
67+
name,
68+
};
69+
});
70+
5371
return credits;
5472
}
5573
}

0 commit comments

Comments
 (0)