OCaml Programming: Correct + Efficient + Beautiful

The textbook is "OCaml Programming: Correct + Efficient + Beautiful": https://cs3110.github.io/textbook
The lecturer is Michael Clarkson: https://www.cs.cornell.edu/~clarkson/

from pytube import Playlist
from pytube import YouTube

playlist_1 = Playlist("https://www.youtube.com/watch?v=MUcka_SvhLw&list=PLre5AT9JnKShBOPeuiD9b-I4XROIJhkIU")

print(f'{ playlist_1.title }')
""" OCaml Programming: Correct + Efficient + Beautiful """

#titles = []
#
#for num, videourl in enumerate(playlist.video_urls):
#    yt = YouTube(videourl)
#    titles.append(yt.title)

# streams
yts = [YouTube(vurl) for vurl in playlist_1.video_urls]
titles = [yt.title for yt in yts]
print("contents:",len(yts)

# contents titles
for n, title in enumerate(titles):
    print("%s : %s" % (n, title)

# yt = YouTube(<contents youtube video url>)
#print(yts[1].streams)
#print(yts[1].captions)

for num,yt in enumerate(yts):
print(num)
print(yt.streams) # important ! (No.1)
print(yt.title)
print(yt.captions)
print("------------------")

# yts[0].streams
print(yts[0])

yts[0].streams

captions = yts[0].captions

for caption in captions:
    print(caption)
print(yts[0])
captions = yts[0].captions

for caption in captions:
    print(caption)
1
2
3
4
5
xml_caption = ""

if 'a.en' in captions:
    print("Yes auto generated English subtitle exist.")
    xml_caption = captions['a.en'].xml_caption

pip install beautifulsoup4
pip install lxml

1
2
3
4
from bs4 import BeautifulSoup4 as bsoup

soup = bsoup(xml_caption, "xml")
print(soup.prettify())
1
2
3
4
5
6
7
subtitle_text = soup.get_text()
#print(subtitle_text)

lines = subtitle_txt.split('\n')
for line in lines:
    if line != "":
        print(line)
1
2
3
4
5
6
7
8
9
json_dict = caption.json_captions

for e in json_dict['events']:
    if 'segs' in e:
        print(e)

#import json
#json_dump = json.dumps(json_dict)
#print(json_dump)
for v in json_dict['events']:
    if 'segs' in v:
        print(v)
        print('start_millisecond:',v['tStartMs'])
        if 'segs' in v:
            for x in v['segs']:
                print(x['utf8'])
                # if 'utf8' in x:
                #     print( v['segs'])
        print()
Edit
Pub: 30 Aug 2023 13:59 UTC
Edit: 19 Sep 2023 08:03 UTC
Views: 115