Get transcript summaries of Web videos.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

38 lines
1.1 KiB

  1. import {
  2. createTranscriptFetcher,
  3. VideoType,
  4. createSummarizer,
  5. BaseTranscriptItem,
  6. OPENAI_API_VERSION,
  7. } from '@modal-sh/webvideo-transcript-summary-core';
  8. import * as config from '../../config';
  9. export interface TranscriptService {
  10. getVideoTranscript(
  11. videoType: VideoType,
  12. ...etcParams: Parameters<ReturnType<typeof createTranscriptFetcher>>
  13. ): Promise<BaseTranscriptItem[]>;
  14. normalizeVideoTranscriptText(text: BaseTranscriptItem[]): Promise<string>;
  15. }
  16. export class TranscriptServiceImpl implements TranscriptService {
  17. async getVideoTranscript(
  18. videoType: VideoType,
  19. ...etcParams: Parameters<ReturnType<typeof createTranscriptFetcher>>
  20. ) {
  21. const transcriptFetcher = createTranscriptFetcher({ type: videoType });
  22. return transcriptFetcher(...etcParams);
  23. }
  24. async normalizeVideoTranscriptText(text: BaseTranscriptItem[]) {
  25. const summarizer = createSummarizer({
  26. apiKey: config.openAi.apiKey,
  27. organizationId: config.openAi.organizationId,
  28. apiVersion: OPENAI_API_VERSION,
  29. });
  30. return summarizer.normalize(text);
  31. }
  32. }