File size: 1,378 Bytes
7b715b6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import requests
from requests.exceptions import MissingSchema

def extract_titles(url = "https://www.youtube.com/watch?v=CuSxk_DNau8&ab_channel=PeppaPigParodies"):
    try:
        page = requests.get(url)
    except MissingSchema as e:
        message = e.args[0]
        substr = '''No scheme supplied. '''
        message = message[:message.find(substr)] + message[message.find(substr) + len(substr):]
        raise RuntimeError(message)
    except Exception as e:
        message = f'''Invalid URL '{url}'. Please, try another one.'''
        raise RuntimeError(message)

    if not page.ok:
        message = '''This video isn't available.'''
        raise RuntimeError(message)
    
    try:
        txt = page.text
        title_start = '''meta name="title" content="'''
        pos = txt.find(title_start)
        if pos == -1:
            raise RuntimeError
        title = txt[pos + len(title_start):]
        title = title[:title.find('"')]

        channel_start = '''<link itemprop="name" content="'''
        pos = txt.find(channel_start)
        if pos == -1:
            raise RuntimeError
        channel = txt[pos + len(channel_start):]
        channel = channel[:channel.find('"')]
    except Exception as e:
        message = '''Can't detect channel or video title.\nPlease, try another link.'''
        raise RuntimeError(message)

    return channel, title