@thunderkiller/video-clipper 1.2.0 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/CONTRIBUTING.md +100 -0
  3. package/LICENSE +15 -0
  4. package/commitlint.config.js +25 -0
  5. package/package.json +3 -1
  6. package/.github/workflows/ci.yml +0 -42
  7. package/.github/workflows/release.yml +0 -76
  8. package/.husky/pre-commit +0 -3
  9. package/.prettierignore +0 -6
  10. package/.prettierrc +0 -7
  11. package/.releaserc.json +0 -21
  12. package/AGENTS.md +0 -122
  13. package/docs/free-models.md +0 -78
  14. package/docs/plan.md +0 -442
  15. package/docs/refactorPhases.md +0 -105
  16. package/docs/yt-downloader.md +0 -440
  17. package/requirements.txt +0 -5
  18. package/scripts/detect_events.py +0 -81
  19. package/scripts/detect_events_whisper.py +0 -101
  20. package/scripts/transcribe_whisper.py +0 -70
  21. package/src/cli.ts +0 -186
  22. package/src/config/env.ts +0 -18
  23. package/src/config/index.ts +0 -2
  24. package/src/index.ts +0 -46
  25. package/src/pipeline/runner.ts +0 -147
  26. package/src/pipeline/stages/audioProcessor.ts +0 -127
  27. package/src/pipeline/stages/clipExporter.ts +0 -76
  28. package/src/pipeline/stages/segmentAnalyzer.ts +0 -72
  29. package/src/pipeline/stages/segmentSelector.ts +0 -39
  30. package/src/pipeline/stages/videoResolver.ts +0 -44
  31. package/src/services/audioAnalyzers/base.ts +0 -32
  32. package/src/services/audioAnalyzers/factory.ts +0 -69
  33. package/src/services/audioAnalyzers/gemini.ts +0 -136
  34. package/src/services/audioAnalyzers/index.ts +0 -6
  35. package/src/services/audioAnalyzers/whisper.ts +0 -80
  36. package/src/services/audioAnalyzers/yamnet.ts +0 -54
  37. package/src/services/audioDownloader/index.ts +0 -102
  38. package/src/services/chunkBuilder/index.ts +0 -82
  39. package/src/services/clipGenerator/index.ts +0 -210
  40. package/src/services/clipRefiner/index.ts +0 -141
  41. package/src/services/eventDetector/index.ts +0 -68
  42. package/src/services/llmAnalyzer/LLMAnalyzer.ts +0 -98
  43. package/src/services/llmAnalyzer/index.ts +0 -231
  44. package/src/services/metadataExtractor/index.ts +0 -83
  45. package/src/services/segmentRanker/index.ts +0 -88
  46. package/src/services/signalMerger/index.ts +0 -53
  47. package/src/services/transcriptAnalyzers/base.ts +0 -26
  48. package/src/services/transcriptAnalyzers/factory.ts +0 -66
  49. package/src/services/transcriptAnalyzers/gemini.ts +0 -24
  50. package/src/services/transcriptAnalyzers/index.ts +0 -6
  51. package/src/services/transcriptAnalyzers/whisper.ts +0 -68
  52. package/src/services/transcriptAnalyzers/ytdlp.ts +0 -19
  53. package/src/services/transcriptDetector/index.ts +0 -122
  54. package/src/services/transcriptFetcher/index.ts +0 -147
  55. package/src/services/urlParser/index.ts +0 -52
  56. package/src/services/videoDownloader/index.ts +0 -268
  57. package/src/types/analyzer.ts +0 -23
  58. package/src/types/audio.ts +0 -19
  59. package/src/types/cache.ts +0 -8
  60. package/src/types/cli.ts +0 -22
  61. package/src/types/config.ts +0 -151
  62. package/src/types/downloader.ts +0 -15
  63. package/src/types/factory.ts +0 -3
  64. package/src/types/index.ts +0 -40
  65. package/src/types/pipeline.ts +0 -60
  66. package/src/types/segment.ts +0 -43
  67. package/src/types/transcript.ts +0 -22
  68. package/src/types/video.ts +0 -18
  69. package/src/utils/cache.ts +0 -224
  70. package/src/utils/chunker.ts +0 -60
  71. package/src/utils/dumper.ts +0 -41
  72. package/src/utils/format.ts +0 -10
  73. package/src/utils/logger.ts +0 -17
  74. package/src/utils/modelFactory.ts +0 -71
  75. package/src/utils/redactConfig.ts +0 -23
  76. package/src/utils/sliceAudio.ts +0 -35
  77. package/test-trigger.txt +0 -1
  78. package/tests/analyzerFactory.test.ts +0 -146
  79. package/tests/audioEventDetector.test.ts +0 -69
  80. package/tests/cache.test.ts +0 -203
  81. package/tests/chunkBuilder.test.ts +0 -146
  82. package/tests/chunker.test.ts +0 -95
  83. package/tests/eventDetector.test.ts +0 -103
  84. package/tests/llmAnalyzer.test.ts +0 -283
  85. package/tests/segmentRanker.test.ts +0 -133
  86. package/tests/setup.ts +0 -48
  87. package/tests/signalMerger.test.ts +0 -197
  88. package/tests/transcriptDetector.test.ts +0 -150
  89. package/tests/transcriptFetcher.test.ts +0 -179
  90. package/tests/urlParser.test.ts +0 -70
  91. package/tsconfig.json +0 -16
  92. package/tsconfig.test.json +0 -8
  93. package/vitest.config.ts +0 -8
@@ -1,70 +0,0 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { parseUrl } from '../src/services/urlParser/index.js';
3
-
4
- describe('parseUrl', () => {
5
- describe('valid URLs', () => {
6
- it('parses a standard youtube.com/watch URL', () => {
7
- expect(parseUrl('https://www.youtube.com/watch?v=dQw4w9WgXcQ')).toBe('dQw4w9WgXcQ');
8
- });
9
-
10
- it('parses a youtube.com/watch URL without www', () => {
11
- expect(parseUrl('https://youtube.com/watch?v=dQw4w9WgXcQ')).toBe('dQw4w9WgXcQ');
12
- });
13
-
14
- it('parses a youtu.be short URL', () => {
15
- expect(parseUrl('https://youtu.be/dQw4w9WgXcQ')).toBe('dQw4w9WgXcQ');
16
- });
17
-
18
- it('parses a youtu.be URL with extra query params', () => {
19
- expect(parseUrl('https://youtu.be/dQw4w9WgXcQ?t=42')).toBe('dQw4w9WgXcQ');
20
- });
21
-
22
- it('parses a youtube.com/embed URL', () => {
23
- expect(parseUrl('https://www.youtube.com/embed/dQw4w9WgXcQ')).toBe('dQw4w9WgXcQ');
24
- });
25
-
26
- it('parses a youtube.com/shorts URL', () => {
27
- expect(parseUrl('https://www.youtube.com/shorts/dQw4w9WgXcQ')).toBe('dQw4w9WgXcQ');
28
- });
29
-
30
- it('parses a watch URL with additional query params', () => {
31
- expect(parseUrl('https://www.youtube.com/watch?v=dQw4w9WgXcQ&t=120&list=PLxxx')).toBe(
32
- 'dQw4w9WgXcQ',
33
- );
34
- });
35
- });
36
-
37
- describe('invalid URLs', () => {
38
- it('throws on a completely invalid string', () => {
39
- expect(() => parseUrl('not-a-url')).toThrow('Invalid URL');
40
- });
41
-
42
- it('throws on a non-YouTube URL', () => {
43
- expect(() => parseUrl('https://vimeo.com/123456789')).toThrow('Could not extract video ID');
44
- });
45
-
46
- it('throws on a YouTube URL with no video ID', () => {
47
- expect(() => parseUrl('https://www.youtube.com/watch')).toThrow('Could not extract video ID');
48
- });
49
-
50
- it('throws on a YouTube URL with an empty video ID', () => {
51
- expect(() => parseUrl('https://www.youtube.com/watch?v=')).toThrow();
52
- });
53
-
54
- it('throws if the video ID is shorter than 11 characters', () => {
55
- expect(() => parseUrl('https://www.youtube.com/watch?v=short')).toThrow(
56
- 'expected 11 characters',
57
- );
58
- });
59
-
60
- it('throws if the video ID is longer than 11 characters', () => {
61
- expect(() => parseUrl('https://www.youtube.com/watch?v=toolongvideoid')).toThrow(
62
- 'expected 11 characters',
63
- );
64
- });
65
-
66
- it('throws on an empty string', () => {
67
- expect(() => parseUrl('')).toThrow('Invalid URL');
68
- });
69
- });
70
- });
package/tsconfig.json DELETED
@@ -1,16 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "target": "ES2022",
4
- "module": "NodeNext",
5
- "moduleResolution": "NodeNext",
6
- "outDir": "dist",
7
- "rootDir": "src",
8
- "strict": true,
9
- "esModuleInterop": true,
10
- "resolveJsonModule": true,
11
- "skipLibCheck": true,
12
- "types": ["node"]
13
- },
14
- "include": ["src/**/*"],
15
- "exclude": ["node_modules", "dist"]
16
- }
@@ -1,8 +0,0 @@
1
- {
2
- "extends": "./tsconfig.json",
3
- "compilerOptions": {
4
- "rootDir": ".",
5
- "noEmit": true
6
- },
7
- "include": ["src/**/*", "tests/**/*"]
8
- }
package/vitest.config.ts DELETED
@@ -1,8 +0,0 @@
1
- import { defineConfig } from 'vitest/config';
2
-
3
- export default defineConfig({
4
- test: {
5
- include: ['tests/**/*.test.ts'],
6
- setupFiles: ['tests/setup.ts'],
7
- },
8
- });