728x90

@markdown


재밌을 것 같아서 일단 해보는 것이지 사용하지는 않습니다.

##### 파이썬으로 자동으로 노래 다운 받기

######  코드는 더럽습니다. 눈 조심

```mermaid
graph LR
A[C9 site] --> B((Python3))
B --> C(ffmpeg)
B --> D{eyeD3}
C --> E((autuo downloder))
D --> E
```

c9사이트를 이용해 파이썬3을 사용합니다.
ffmpeg 프로그램도 이용하여 mp3 다운 프로그램을 만듭니다.

방법은 이렇게 흘러갑니다.
Http Get 요청으로 벅스 페이지의 html을 읽어 옵니다.
그리고 top 100 사이트의 링크를 가져옵니다.

그리고 top 100의 모든 곡의 이름을 리스트로 받아 둡니다.

```
import requests
from bs4 import BeautifulSoup
import re
improt pytube
import os
import subprocess

req = requests.get('https://music.bugs.co.kr/')

html = req.text

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

find100 = soup.find("div", {"class":"trackChart"}).find("a", {"class":"btnMore"})
find100 = find100.get('href')

req = requests.get(find100)
html = req.text
soup = BeautifulSoup(html, 'html.parser')

findData = soup.find("div", {"id":"CHARTrealtime"}).findAll("p",{"class":"title"})
toplist = []
for i in findData:
    toplist.append(i.find("a", {"aria-label":"새창"}).get_text())


for i in range(0, 100):
    toplist[i] = toplist[i].replace(" ", "+")

YouTubeLinkList = []
for i in toplist:
    findImage = "https://www.youtube.com/results?search_query=" + i
    YouTubeLinkList.append(findImage)

for i in range(0, 100):
    toplist[i] = toplist[i].replace("+", " ")


for j in range(0, 100):
    req = requests.get(YouTubeLinkList[j])
    html = req.text
    soup = BeautifulSoup(html,'html.parser')


    hrefList = []

    for i in soup.find("div", {"id":"content"}).findAll("a"):
         hrefList.append(i.get('href'))

    watchlist = []
    for i in hrefList:
      if i.find("/watch")==0:
           link = "https://www.youtube.com/" + i
           watchlist.append(link)


    yt = pytube.YouTube(watchlist[0])

    vids = yt.streams.all()

   
    vnum = 0

    parent_dir = "./mp4"
    vids[vnum].download(parent_dir)

    new_filename = toplist[j] + ".mp3"
    default_filename = vids[vnum].default_filename


    default_filename = vids[vnum].default_filename
    subprocess.call(['ffmpeg', '-i',                 #cmd 명령어 수행
      os.path.join('./mp4', default_filename),
      os.path.join('./mp3', new_filename)
    ])
   
   
   
    os.system("rm ./mp4/*")
```

추후 수정 할 생각!

반응형

+ Recent posts