将一个url文件链接下载到本地的方法,以及从url中提取并创建一个文件保存路径,以及m3u8文件的解析及下载

最近工作中,遇到了讲一个m3u8的文件下载到本地,使用代码如下:

import urllib.request

m3u8file = os.path.join(folderPath, dirName + '.m3u8')
urllib.request.urlretrieve(m3u8url, m3u8file)

不过上述代码有个小问题,就是需要使用代理的时候,比较难办。

于是,当需要遇到代理的时候,还是用了老办法。

import requests
import os

os.environ['ALL_PROXY']='http://127.0.0.1:10809'

# 拆分url并以此创建保存路径
url='https://xxx.com/aaa/bbb/'
urlSplit = url.split('/')
dirName = urlSplit[-2]

if not os.path.exists(dirName):
    os.makedirs(dirName)
folderPath = os.path.join(os.getcwd(), dirName)

# 从页面中提取m3u8 url
result = re.search("https://.+m3u8", dr.page_source)
m3u8url = result[0]

m3u8urlList = m3u8url.split('/')
m3u8urlList.pop(-1)
downloadurl = '/'.join(m3u8urlList)


# 保存m3u8 file至文件夹
m3u8file = os.path.join(folderPath, dirName + '.m3u8')
response = requests.get(m3u8url)
# 获取的文本实际上是图片的二进制文本
m3u8_content = response.content
# 将它拷贝到本地文件 w 写  b 二进制  wb代表写入二进制文本
with open(m3u8file,'wb' ) as f:
   f.write(m3u8_content)

#解析m3u8文件,组合成最终下载链接,下载后,使用ffmpeg组合
m3u8obj = m3u8.load(m3u8file)
m3u8uri = ''
m3u8iv = ''

for key in m3u8obj.keys:
  if key:
      m3u8uri = key.uri
      m3u8iv = key.iv

#  ts网站 in tsList
tsList = []
for seg in m3u8obj.segments:
  tsUrl = downloadurl + '/' + seg.uri
  tsList.append(tsUrl)

# 有加密
if m3u8uri:
  m3u8keyurl = downloadurl + '/' + m3u8uri  # 得到 key 的网址
  print(m3u8keyurl)
  # 得到 key的內容
  response = requests.get(m3u8keyurl, headers=headers, timeout=10)
  contentKey = response.content

  vt = m3u8iv.replace("0x", "")[:16].encode()  # IV取前16位

  ci = AES.new(contentKey, AES.MODE_CBC, vt)  # 建构解析码
else:
  ci = ''

# 刪除m3u8 file
deleteM3u8(folderPath)

# 下载mp4片段至文件夹
prepareCrawl(ci, folderPath, tsList)

# 合成mp4
mergeMp4(folderPath, tsList)

# 刪除子mp4
deleteMp4(folderPath)

# 转换
encode =3
ffmpegEncode(folderPath, dirName, encode)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的 Python 代码示例,用于读取指定的文本文件下载包含的图片: ```python import requests import os # 定义函数,用于下载图片 def download_image(url, save_path): response = requests.get(url) with open(save_path, "wb") as f: f.write(response.content) # 指定文本文件路径 file_path = "example.txt" # 指定图片保存路径 save_dir = "images" # 如果图片保存路径不存在,则创建它 if not os.path.exists(save_dir): os.makedirs(save_dir) # 打开文本文件并逐行读取 with open(file_path, "r") as f: for line in f: # 如果当前行包含图片链接,则下载图片 if ".jpg" in line or ".png" in line: image_url = line.strip() image_name = os.path.basename(image_url) save_path = os.path.join(save_dir, image_name) download_image(image_url, save_path) print(f"已下载图片:{image_name}") ``` 在上面的代码,我们首先定义了一个 `download_image()` 函数,用于从给定的 URL 下载图片并将其保存到本地文件。然后,我们指定了要读取的文本文件路径和要保存图片的文件路径。如果指定的文件路径不存在,则我们使用 `os.makedirs()` 函数创建它。接下来,我们打开文本文件并逐行读取其的内容。如果当前行包含图片链接,则我们提取链接并使用 `download_image()` 函数将其下载到本地文件。最后,我们使用 `print()` 函数输出已下载图片的名称。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值