零代码编程:用ChatGPT批量自动下载archive.org上的音频书

http://archive.org 是一个神奇的网站,可以下载各种古旧的软件、书籍、音频、视频,还可以搜索各个网站的历史网页。

比如说,一些儿童故事音频就可以在http://archive.org下载到,可以用来做英语听力启蒙用。

举个例子,要下载https://archive.org/details/107frogandtoadallyear_202004这个网页上的所有音频内容,该怎么办呢?

右击,检查网页,点击网络,然后选择媒体,然后可以看到正在播放的音频文件,右击复制链接,如下:

https://archive.org/details/107frogandtoadallyear_202004/2-12+Alone.mp3

查看网页源代码,搜索某一个音频文件标题:Alone.mp3

找到了音频文件的地址:

<button type="button" data-event-click-tracking="TrackList|Item" class="track selected" data-track-number="21">

<!--?lit3345567357--><span class="track-number"><!--?lit3345567357-->22</span>

<span class="track-title"><!--?lit3345567357-->2-12 Alone

<!--?lit3345567357-->

</span>

<span class="track-length">

<!--?lit3345567357-->

<!--?lit3345567357-->05:10

</span>

</button>

接下来就好办了,在ChatGPT中输入提示词:

你是一个Python编程专家,现在要完成一个下载网页中音频的任务,具体步骤如下:

打开网站:https://archive.org/details/107frogandtoadallyear_202004

解析源代码,找出所有itemprop="hasPart"的div元素,定位其中itemprop="associatedMedia" 的link元素;

提取link元素的href值,作为音频下载的URL地址;

多线程下载这个音频文件,保存到电脑D盘的文件夹:Frog and Toad Audio Collection

注意:每一步都要输出信息

要有反爬虫措施,比如下载一个音频文件后暂停3秒;

音频下载的Python源代码:

import requests

from bs4 import BeautifulSoup

import os

import time

import threading

class Downloader(threading.Thread):

def init(self, url, path):

threading.Thread.init(self)

self.url = url

self.path = path

def run(self):

print(f'Starting download {self.path}')

r = requests.get(self.url, stream=True)

with open(self.path, 'wb') as f:

for chunk in r.iter_content(chunk_size=1024):

if chunk:

f.write(chunk)

print(f'Finished download {self.path}')

time.sleep(3) # pause for 3 seconds

def get_audio_links(url):

r = requests.get(url)

soup = BeautifulSoup(r.text, 'html.parser')

audio_links = []

for div in soup.find_all('div', itemprop='hasPart'):

link = div.find('link', itemprop='associatedMedia')

if link:

audio_links.append(link['href'])

return audio_links

def download_audios(url, directory):

if not os.path.exists(directory):

os.makedirs(directory)

audio_links = get_audio_links(url)

downloaders = []

for i, audio_link in enumerate(audio_links):

path = os.path.join(directory, f'audio{i}.mp3')

downloader = Downloader(audio_link, path)

downloader.start()

downloaders.append(downloader)

for downloader in downloaders:

downloader.join()

url = 'https://archive.org/details/107frogandtoadallyear_202004'

directory = 'D:\\Frog and Toad Audio Collection'

download_audios(url, directory)

程序运行,很快就把网页中的音频下载完了。

相关推荐
Say-hai3 小时前
音视频入门知识(五):流媒体篇
音视频
EasyNVR10 小时前
互联网视频云平台EasyDSS无人机推流直播技术如何助力野生动植物保护工作?
音视频·无人机·视频监控
悠着,大嘟嘟10 小时前
FFmpeg音频解码详解
ffmpeg·音视频
余~~1853816280012 小时前
NFC 碰一碰发视频源码搭建技术详解,支持OEM
开发语言·人工智能·python·音视频
却道天凉_好个秋13 小时前
音视频学习(二十八):websocket-flv
websocket·音视频·flv
红米饭配南瓜汤13 小时前
WebRTC服务质量(11)- Pacer机制(03) IntervalBudget
网络·网络协议·音视频·webrtc·媒体
畅联云平台14 小时前
美畅物联丨如何通过视频汇聚平台汇聚视频并推送至上级28181平台
服务器·网络·音视频
一只特立独行的猪61114 小时前
Java处理视频思路
音视频
Say-hai14 小时前
音视频入门知识(六):消息获取模式篇
音视频
Say-hai14 小时前
音视频入门知识(三):音频篇
音视频