尝试从流媒体网站下载视频,无法获取我需要的链接

2024-09-30 14:33:30 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我刚学会了如何使用请求模块(不多,但我看了几段视频),我试着下载一集我喜欢的系列剧——《牛》。 所以我在这里找到了一个对单个文件有效的函数:

def download_file(url):
    local_filename = 'bull-season-2-ep-5.mp4'
    # NOTE the stream=True parameter
    r = requests.get(url, stream=True)
    with open(local_filename, 'wb') as f:
        for chunk in r.iter_content(chunk_size=1024): 
            if chunk: # filter out keep-alive new chunks
                f.write(chunk)
                #f.flush() commented by recommendation from J.F.Sebastian
    return local_filename

download_file(https://ww1.123movies.domains/tvseries/bull-season-2/9jpHC3uD/8J1Mx54O/wJbEvBiB-watch-free.html?start_watching=true&_=1567021316534")

但是正如你从下面的照片中看到的,这个文件被分解成许多部分,所以我无法下载整个文件(当我检查网页时,它是blob,所以我转到了network选项卡,如下所示)。在

enter image description here

我试图使用第一个链接,正如你所看到的,但它不起作用。 创建的链接中唯一的区别是“seg”编号

例如,这是一个链接:

https://stream-4-1.loadshare.org/stream/VideoID-5Xjczd53/Ry60dtNEZdzeDHMykqym7Wj-PVhL45OMuxLNI2rIH-0HUjnD6HhzRaxQFTUG3mfRHD-_lj-hgLrzI54m6b0homRf0HJWQVMx4uxcLDIM9tY8iy60-BfUFfNIoRvUuy8O/seg-15-v1-a1.ts?token=ip=93.173.86.29~st=1567021318~exp=1567035718~acl=/*~hmac=6eb03c58be1eb01ce659384c30e67291748d4c86679dfca47f77edcf9ee8ec37

另一个:

https://stream-4-1.loadshare.org/stream/VideoID-5Xjczd53/Ry60dtNEZdzeDHMykqym7Wj-PVhL45OMuxLNI2rIH-0HUjnD6HhzRaxQFTUG3mfRHD-_lj-hgLrzI54m6b0homRf0HJWQVMx4uxcLDIM9tY8iy60-BfUFfNIoRvUuy8O/seg-20-v1-a1.ts?token=ip=93.173.86.29~st=1567021318~exp=1567035718~acl=/*~hmac=6eb03c58be1eb01ce659384c30e67291748d4c86679dfca47f77edcf9ee8ec37

有人能治好吗? 谢谢您!在


Tags: 文件httpstrueurlstream链接downloadlocal
1条回答
网友
1楼 · 发布于 2024-09-30 14:33:30
import requests
import m3u8

def download_file(url):

    local_filename = 'video.ts'
    r = requests.get(url)
    m3u8_master = m3u8.loads(r.text)
    playlist_url = m3u8_master.data['playlists'][0]['uri']
    full_url = url.split('/')
    full_url = "/".join(full_url[0:-2])
    full_url += '/'

    playlist_url = full_url + playlist_url
    new_r = requests.get(playlist_url)
    playlist = m3u8.loads(new_r.text)

    with open(local_filename, 'wb') as f:
        for segment in playlist.data['segments']:
            url = full_url + segment['uri']
            req = requests.get(url)
            f.write(req.content)

download_file("https://stream-4-1.loadshare.org/stream/VideoID-uJzosrrC/JToU5G8Qcw4SHs0l5HOqkCAtsSRhJvI2h2viOe9gMFgxLwl5PZPWQn4kV3zA14s5Opr9Z-poO9unm7L3I2XsjShpoq9CezUZJWqeOBwO8bbM3wFByH_hHteLDBeCi7yF/master.m3u8?token=ip=93.173.86.29~st=1567117245~exp=1567131645~acl=/*~hmac=7926c25f1766c342bd21a2273901ce3b1a83b6b8461a861175efc0588bbaae7e")

所以这个函数起作用了。。我从这个视频得到了一些帮助:https://www.youtube.com/watch?v=bytnxnZFLeg&t=232s如果有人想得到更详细的解释。在

我不得不转到network选项卡,找到'master.m3u8'请求,然后从那里尝试分离不同的段并将它们连接到一个单独的文件中,比如offbeat哺乳动物和风投一号说。谢谢您。在

相关问题 更多 >