podomatic播客上的音頻,怎麼批量下載下傳呢?
以這個播客為例:https://nosycrow.podomatic.com/rss2.xml
右邊有一個RSS Feed的黃色圖示,點選打開:
可以看到所有的音頻和标題:
檢視源代碼,音頻标題在title标簽裡,mp3音頻檔案在enclosure标簽裡:
在ChatGPT中輸入提示詞:
你是一個Python程式設計專家,要完成一個批量下載下傳網頁中音頻檔案的任務,具體步驟如下:
在本地電腦E盤,建立nosycrow檔案夾;
打開網頁https://nosycrow.podomatic.com/rss2.xml,解析源代碼;
定位所有<item>标簽;
定位<item>中的<title>,提取其内容,删除其中的“: ”,作為音頻檔案标題名;
定位<item>中的<enclosure>,提取其中url值,删除url值中的“?”和“?”以後的字元,作為音頻檔案URL;
下載下傳這個音頻檔案,儲存到E盤的nosycrow檔案夾;
注意:每一步都要輸出相關資訊
ChatGPT給出的Python源代碼:
import os
import requests
from bs4 import BeautifulSoup
from concurrent.futures import ThreadPoolExecutor
# RSS源的URL
rss_url = "https://nosycrow.podomatic.com/rss2.xml"
# 輸出資訊:開始下載下傳RSS源
print(f"Downloading RSS feed from {rss_url}...")
# 下載下傳RSS源
response = requests.get(rss_url)
rss = response.text
# 輸出資訊:開始解析RSS源
print(f"Parsing RSS feed...")
# 解析RSS源
soup = BeautifulSoup(rss, "xml")
items = soup.find_all('item')
# 定義一個函數來下載下傳音頻
def download_audio(item):
# 提取音頻标題和URL,并進行處理
audio_title = item.title.text.replace(": ", "")
audio_url = item.enclosure['url'].split("?")[0]
# 輸出資訊:開始下載下傳音頻
print(f"Downloading audio '{audio_title}' from {audio_url}...")
# 下載下傳音頻
audio_response = requests.get(audio_url)
# 儲存音頻到本地檔案
audio_file_path = os.path.join("E:\\nosycrow", f"{audio_title}.mp3")
with open(audio_file_path, 'wb') as f:
f.write(audio_response.content)
# 輸出資訊:音頻下載下傳完成
print(f"Audio '{audio_title}' downloaded successfully.")
# 建立一個線程池
with ThreadPoolExecutor() as executor:
# 啟動多線程下載下傳
executor.map(download_audio, items)
# 輸出資訊:所有音頻下載下傳完成
print("All audios downloaded successfully.")
程式運作,很快上百個音頻就下載下傳完成了: