from yt_dlp import YoutubeDL as ytd
import ffmpeg as fm
import asyncio
from shazamio import Shazam
import os
url = r"https://soundcloud.com/urem/urem-am-bach-festival-2021"
name = 'somefile.mp3'
segment = 60
loop = asyncio.get_event_loop()
async def recognise(name):
out = await Shazam().recognize_song(name)
try:
print(out['track']['title'])
except:
pass
ytd = ytd({'format': 'bestaudio', 'preferredcodec': 'mp3', 'outtmpl': {"default": name}})
ytd.download(url)
duration = float(fm.probe(name)['format']['duration'])
stream = fm.input(name)
tasks = []
async def main():
to_delete = []
for i in range(0, int(duration), segment):
stream.audio.filter('atrim', start=i, end=i + segment).output(f'out{i / segment}.mp3').run()
tasks.append(asyncio.create_task(recognise(f'out{i / segment}.mp3')))
to_delete.append(f"out{i / segment}.mp3")
await asyncio.gather(*tasks)
for i in to_delete:
os.remove(i)
os.remove(name)
loop.run_until_complete(main())