-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.py
55 lines (43 loc) · 1.69 KB
/
app.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
from flask import Flask
from flask_restful import Resource, Api
from youtube_transcript_api import YouTubeTranscriptApi
from transformers import pipeline
import re
app = Flask(__name__)
api = Api(app)
def get_transcript(video_id,language):
if language != None:
langList = [language]
transcript = YouTubeTranscriptApi.get_transcript(video_id,languages=langList)
else:
transcript = YouTubeTranscriptApi.get_transcript(video_id)
parsed_text = ''
for obj in transcript:
text = re.sub(r'\n', ' ', obj['text'])
parsed_text += " "+ text
return parsed_text
def summarize(text):
summarization = pipeline("summarization")
summary = summarization(text)[0]['summary_text']
return summary
class Transcript(Resource):
def get(self, video_id):
transcript = get_transcript(video_id, None)
return {'transcript': transcript}
#'summary': summarize(transcript)}
class TranscriptWithLanguage(Resource):
def get(self, video_id, lang):
transcript = get_transcript(video_id, lang)
return {'transcript': transcript}
class TranscriptLanguage(Resource):
def get(self,video_id):
languages = YouTubeTranscriptApi.list_transcripts(video_id)
languageList = []
for lang in languages:
languageList.append({'language': lang.language, 'code': lang.language_code})
return languageList
api.add_resource(Transcript, '/api/summarize/<string:video_id>')
api.add_resource(TranscriptLanguage,'/api/language/<string:video_id>')
api.add_resource(TranscriptWithLanguage, '/api/summarize/<string:lang>/<string:video_id>')
if __name__ == '__main__':
app.run(debug=True)