-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathvideo_helper.py
68 lines (46 loc) · 1.68 KB
/
video_helper.py
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
66
67
68
import os
import scrapetube
from dotenv import load_dotenv
from langchain_community.document_loaders import YoutubeAudioLoader
from langchain_community.document_loaders.generic import GenericLoader
from langchain_community.document_loaders.parsers import OpenAIWhisperParser
from models.youtube_video import YoutubeVideo
load_dotenv()
# Transcryption
def get_video_transcrypt(url):
target_dir = "./audios/"
if not os.path.exists(target_dir):
os.makedirs(target_dir)
loader = GenericLoader(
YoutubeAudioLoader(urls=[url], save_dir=target_dir), OpenAIWhisperParser()
)
video_transcrypt_docs = loader.load()
return video_transcrypt_docs
# Youtube search
def get_videos_for_search_term(
search_term, video_count=1, sorting_criteria="relevance"
):
convert_sorting_option = {
"Relevance":"relevance",
"Date":"upload_date",
"Views":"view_count",
"Likes":"rating",
}
videos = scrapetube.get_search(
query=search_term,
limit=video_count,
sort_by=convert_sorting_option[sorting_criteria],
)
videolist = list(videos)
youtube_videos = []
for video in videolist:
youtube_video = YoutubeVideo(
video_id=video["videoId"],
video_title=video["title"]["runs"][0]["text"],
video_url="https://www.youtube.com/watch?v=" + video["videoId"],
channel_name=video["longBylineText"]["runs"][0]["text"],
duration=video["lengthText"]["accessibility"]["accessibilityData"]["label"],
publish_date=video["publishedTimeText"]["simpleText"],
)
youtube_videos.append(youtube_video)
return youtube_videos