Sergomen
@Sergomen
Просто делай добро и оно вернётся

Как получить название песни в python?

Я сделал парсер ссылок на музыку из mp3-fm.site и скрипт для её скачивания. Но я не знаю как получить название песни чтобы сделать его названием .mp3 файла. Как это сделать? Не буду ж я называть файлы концом ссылки вида mp3-fm.site/mp32.php?track=YUhSMGNITTZMeTlyWVdOb01...

P.s. для скачивания использую. request.
P.p.s. И ещё хотелось бы как-то сделать прогресбар для загрузки.
  • Вопрос задан
  • 671 просмотр
Пригласить эксперта
Ответы на вопрос 2
hottabxp
@hottabxp Куратор тега Python
Сначала мы жили бедно, а потом нас обокрали..
Так берите название песни оттуда, откуда достаёте url:
import requests
from bs4 import BeautifulSoup

response = requests.get('https://mp3-fm.site/')
soup = BeautifulSoup(response.text,"html.parser")
playlist = soup.find('div',id='xx1').find_all('div',class_='song')

for song in playlist:
	title = song.find('div',class_='title').text.strip()
	url = song.find('button',class_='btn btn_play').get('data-norber')

	response2 = requests.get(url)
	print(f'Download: {title}')
	with open(title+'.mp3','wb') as file:
		file.write(response2.content)

Результат:
5f23de64518bd519291824.png


Бонус:
Парсер для oxy.fm(по вашей ссылке на песню, меня перекинуло на данный сайт):
import requests
from bs4 import BeautifulSoup
	
response1 = requests.get('https://oxy.fm/')

soup = BeautifulSoup(response1.text,"html.parser")

playlist = soup.find('ul',class_='playlist').find_all('li')

for song in playlist:
	title = song.find('span',class_='playlist-name-title').text
	artist = song.find('span',class_='playlist-name-artist').text
	url = song.find('a',class_='playlist-play no-ajax').get('data-url')

	response = requests.get(url)
	with open(f'{artist}-{title}.mp3','wb') as file:
		file.write(response.content)

	print(f'Download {artist}-{title}')


UDP: Забыл добавить - проверяйте названия песни на содержание спец-символов, которые запрещены в названиях файлов в фс(ext4,fat32,ntfs)
Ответ написан
Комментировать
netpastor
@netpastor
Python developer
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы