forked from kotisoff/ym-api-meowed
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathplaylist.ts
More file actions
65 lines (52 loc) · 1.9 KB
/
playlist.ts
File metadata and controls
65 lines (52 loc) · 1.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
import { YMApi } from "../src";
import config from "./config";
const api = new YMApi();
(async () => {
try {
await api.init(config.user);
console.log(`Logged in as: ${config.user.uid}`);
const playlist = await api.createPlaylist("Test Playlist", {
visibility: "public"
});
console.log(`Created playlist: ${playlist.title} (Kind: ${playlist.kind}, Rev: ${playlist.revision})`);
const tracks = [
{ id: 20599729, albumId: 2347459 },
{ id: 20069589, albumId: 2265364 }
];
console.log("Adding tracks...");
const updatedPlaylist = await api.addTracksToPlaylist(
playlist.kind,
tracks,
playlist.revision!
);
if (updatedPlaylist.revision! <= playlist.revision!) {
throw new Error(`Revision didn't increase! Old: ${playlist.revision}, New: ${updatedPlaylist.revision}`);
}
console.log("Verifying tracks existence...");
await new Promise(resolve => setTimeout(resolve, 500));
const fetchedPlaylists = await api.getPlaylists([playlist.kind], undefined, {
"rich-tracks": true
});
const target = fetchedPlaylists[0];
const actualTrackCount = target.tracks?.length ?? 0;
console.log(`Tracks in playlist after fetch: ${actualTrackCount}`);
if (actualTrackCount !== tracks.length) {
console.dir(target, { depth: 2 });
throw new Error(`Track mismatch! Expected ${tracks.length}, got ${actualTrackCount}`);
}
console.log("Cleaning up...");
await api.removeTracksFromPlaylist(
playlist.kind,
tracks,
target.revision!
);
await api.removePlaylist(playlist.kind);
console.log("✔ Playlist smoke test passed");
process.exitCode = 0;
} catch (err: any) {
console.error("❌ Playlist smoke test failed:");
if (err.body) console.error("Response body:", JSON.stringify(err.body, null, 2));
console.error(err);
process.exitCode = 1;
}
})();