mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-05-26 00:55:16 -07:00
79 lines
2.7 KiB
TypeScript
79 lines
2.7 KiB
TypeScript
import assert from 'node:assert/strict';
|
|
import test from 'node:test';
|
|
import {
|
|
isSameYoutubeMediaPath,
|
|
isYoutubeMediaPath,
|
|
isYoutubePlaybackActive,
|
|
shouldUseCachedYoutubeParsedCues,
|
|
} from './youtube-playback';
|
|
|
|
test('isYoutubeMediaPath detects youtube watch and short urls', () => {
|
|
assert.equal(isYoutubeMediaPath('https://www.youtube.com/watch?v=abc123'), true);
|
|
assert.equal(isYoutubeMediaPath('https://m.youtube.com/watch?v=abc123'), true);
|
|
assert.equal(isYoutubeMediaPath('https://youtu.be/abc123'), true);
|
|
assert.equal(isYoutubeMediaPath('https://www.youtube-nocookie.com/embed/abc123'), true);
|
|
});
|
|
|
|
test('isYoutubeMediaPath ignores local files and non-youtube urls', () => {
|
|
assert.equal(isYoutubeMediaPath('/tmp/video.mkv'), false);
|
|
assert.equal(isYoutubeMediaPath('https://example.com/watch?v=abc123'), false);
|
|
assert.equal(isYoutubeMediaPath('https://notyoutube.com/watch?v=abc123'), false);
|
|
assert.equal(isYoutubeMediaPath(' '), false);
|
|
assert.equal(isYoutubeMediaPath(null), false);
|
|
});
|
|
|
|
test('isYoutubePlaybackActive checks both current media and mpv video paths', () => {
|
|
assert.equal(isYoutubePlaybackActive('/tmp/video.mkv', 'https://youtu.be/abc123'), true);
|
|
assert.equal(isYoutubePlaybackActive('https://www.youtube.com/watch?v=abc123', null), true);
|
|
assert.equal(isYoutubePlaybackActive('/tmp/video.mkv', '/tmp/video.mkv'), false);
|
|
});
|
|
|
|
test('isSameYoutubeMediaPath matches equivalent youtube urls by video id', () => {
|
|
assert.equal(
|
|
isSameYoutubeMediaPath(
|
|
'https://www.youtube.com/watch?v=abc123&t=30',
|
|
'https://youtu.be/abc123',
|
|
),
|
|
true,
|
|
);
|
|
assert.equal(
|
|
isSameYoutubeMediaPath(
|
|
'https://www.youtube.com/embed/abc123',
|
|
'https://www.youtube-nocookie.com/embed/abc123',
|
|
),
|
|
true,
|
|
);
|
|
assert.equal(
|
|
isSameYoutubeMediaPath('https://www.youtube.com/watch?v=abc123', 'https://youtu.be/xyz789'),
|
|
false,
|
|
);
|
|
assert.equal(isSameYoutubeMediaPath('/tmp/video.mkv', 'https://youtu.be/abc123'), false);
|
|
});
|
|
|
|
test('shouldUseCachedYoutubeParsedCues requires cached cues for the same youtube video', () => {
|
|
assert.equal(
|
|
shouldUseCachedYoutubeParsedCues({
|
|
videoPath: 'https://www.youtube.com/watch?v=abc123&t=30',
|
|
cachedMediaPath: 'https://youtu.be/abc123',
|
|
cachedCueCount: 12,
|
|
}),
|
|
true,
|
|
);
|
|
assert.equal(
|
|
shouldUseCachedYoutubeParsedCues({
|
|
videoPath: 'https://www.youtube.com/watch?v=abc123',
|
|
cachedMediaPath: 'https://youtu.be/abc123',
|
|
cachedCueCount: 0,
|
|
}),
|
|
false,
|
|
);
|
|
assert.equal(
|
|
shouldUseCachedYoutubeParsedCues({
|
|
videoPath: 'https://www.youtube.com/watch?v=abc123',
|
|
cachedMediaPath: 'https://youtu.be/other',
|
|
cachedCueCount: 12,
|
|
}),
|
|
false,
|
|
);
|
|
});
|