쌍문동 척척박사
Spring / ReactJS / PS

멜론에서 벅스로 플레이 리스트 옮기기 (with Selenium)

멜론에서 벅스로 플레이 리스트 옮기기 (with Selenium)

Bugs Migrator GitHub 링크

Zoodasa 방송을 보면서, 노래는 너무 좋은데 매번 검색해서 벅스 재생목록에 추가하기 너무 번거로워서 Selenium과 BeautifulSoup를 사용해 크롤러를 구현했다.

상업적 용도로 제작한 건 아니나, 합법적인 방법도 아니기에 문제가 된다면 삭제하도록 하겠습니다!

재생목록 찾아보기!

직접 재생목록을 수집하는 건 무리고, 검색해보니 고맙게도 카더가든이란 분이 멜론에 Zoodasa Playlist란 제목으로 곡을 정리해둔 것이 있었다. 흠, 근데 평소에 벅스를 쓰고 있어서 이거 때문에 멜론으로 갈아타기는 좀 그렇고… 차라리 멜론 재생목록을 스크랩핑해서 벅스로 가져오기로 했다.

문제점…

흠 조금 애로사항이라 하면… 사지방에 파이썬이나 IDE를 깔긴 좀 그래서 구름에서 코딩을 했는데, 그 때문에 브라우저에서 직접 결과를 확인할 수 없었던 것 때문에 시간을 엄청 잡아먹었던 것 같다.

2.png

일단 매번 실행할 때마다 driver.get_screenshot_as_file 메소드로 캡쳐를 하긴했지만, 실제 실행화면을 확인하지 못하니 ElementNotFound 오류가 나더라도 이게 페이지 로드가 아직 다 안되서 그런건지, 아니면 element path가 잘못되서 그런건지 확실하게 결론내기가 어려웠다. 특히 로그인 파트에서 그런 일이 자주 발생했다.

결국 기본적인 로직은 사지방에서 짜고, 실제 테스트는 외출 때마다 PC방에서 해보면서 해결하긴 했다. 두 번 하긴 싫다.

실행 결과

3.png

  • 코드는 멜론 재생목록을 스크랩핑하는 파트와 벅스 재생목록에 추가하는 파트 2개로 나누었는데, 매 실행 때마다 재생목록을 다시 받아오기가 번거로워 파일로 따로 저장해두고, 벅스 재생목록 추가 시엔 해당 파트를 주석처리 했다.
  • 여러 번 테스트하다가 알게 된 건데, 저렇게 많은 요청을 하다보면 멜론 쪽에서 사용자 접속을 일시적으로 막아버리더라. 이런 점에서도 주석을 유동적으로 처리하는게 시간을 줄여주니 참고하면 좋겠다.
  • 벅스 노래 검색 시 곡명과 앨범명을 사용하는데, 혹시 검색 결과가 나오지 않는 경우에는 따로 Failure 파일로 해당 목록을 빼두었다. 요건 직접 검색해서 추가하자!

끝~~

comments powered by Disqus