Emotions and Music 2
2022. 6. 28. 22:37ㆍProject/감정분석과 노래 추천
728x90
반응형
회의록
유튜브 비디오 데이터를 이용한 프로젝트를 구상했지만 데이터가 너무 무거워서 보류하고 새로운 주제를 다시 생각함
▶ 주제 브레인스토밍
■ thumbnail 자동생성기
■ 유튭 댓글 악플 판별기
■ 안면 감정분석기
■ youtube댓글과 캡처이미지를 활용하여 출연자 등장빈도 정보 제공 서비스
■ 교차편집
■ 시 써주기
■ 마음치유글귀 생성서비스(nlp) → 캘리그라피로 생성(cv) ★
■ 소설 요약(nlp) → 대표이미지 생성(cv) ★
■ 상황설명 → 감정분석(nlp) → 글귀 ,영상,노래 추천 ★
- 모델개발 범위 : 감정분석 + 위로 글귀 자동생성
- 영상 및 노래 추천 youtube api로 구현
- 데이터를 어디서? : 감정분석 / 글귀 자동생성
- 어떤 모델? : koBERT
- 웹 구현?
▶ 추가적인 아이디어
■ 상황설명 : 감정분석 ( NLP )
■ 글씨를 손글씨 ( GAN )
■ 위 두가지로 진행하고 글귀 자동생성은 나중에 고려
▶ 데이터
■ 네이트판...?
■ AI hub 데이터
■ 영화 댓글
■ 노래가사 -> Train 데이터로 사용해보면 어떨까?
▶ 모델
■ KNU 감정사전
■ KoBERT
코드
멜론에서 멜론DJ > #테마장르 > 사랑과 이별,위로에서 플레이리스트 들고오기
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.keys import Keys
import pymysql
import warnings # 경고창 무시
import time
warnings.filterwarnings('ignore')
conn = pymysql.connect(user = '',
passwd = '',
port = 0000,
db = 'Music',
charset = 'utf8')
cur = conn.cursor()
url = "https://www.melon.com/"
driver = webdriver.Chrome(ChromeDriverManager().install())
driver.implicitly_wait(3)
driver.maximize_window()
driver.get(url)
driver.implicitly_wait(5)
# 멜론 DJ 클릭
driver.find_element_by_xpath('//*[@id="gnb_menu"]/ul[1]/li[4]/a/span[2]').click()
driver.implicitly_wait(5)
# #테마장르 클릭
driver.find_element_by_xpath('//*[@id="gnb_menu"]/ul[1]/li[4]/div/ul/li[3]/a/span').click()
driver.implicitly_wait(5)
thema_url = driver.current_url
# 테마를 차례대로 클릭
for i in [5, 7, 14]:
driver.find_element_by_xpath(f'//*[@id="tab1"]/li[{i}]/a').click()
playlist_url = driver.current_url
driver.implicitly_wait(5)
num = int(input("가지고 오고싶은 플레이리스트 수 : "))
# 첫번째 곡 부터 클릭후 노래 정보 가져오기
for j in range(1, num+1):
driver.find_element_by_xpath(f'//*[@id="djPlylstList"]/div/ul/li[{j}]/div[2]/div[1]/a[2]').click()
driver.implicitly_wait(5)
time.sleep(3)
driver.find_element_by_xpath(f'//*[@id="pageObjNavgation"]/div/span/a[{x}]').click()
url = driver.current_url
driver.get(url)
driver.implicitly_wait(5)
time.sleep(3)
for z in range(1, len(driver.find_elements_by_tag_name("tr"))):
driver.find_element_by_xpath(f'//*[@id="frm"]/div/table/tbody/tr[{z}]/td[4]/div/a').click()
driver.implicitly_wait(5)
artist_name = driver.find_element_by_class_name("artist_name").text
song_name = driver.find_element_by_class_name("song_name").text
lyric = driver.find_element_by_class_name("lyric").text
music = (artist_name, song_name, lyric)
cur.execute('INSERT IGNORE INTO music (artist_name, song_name, lyrics) VALUES (%s ,%s, %s)', music)
conn.commit()
driver.back()
driver.implicitly_wait(5)
if int(driver.find_element_by_class_name("sum").text[1:-1]) % 50 != 0:
page = int(driver.find_element_by_class_name("sum").text[1:-1]) // 50 + 1
else:
page = int(driver.find_element_by_class_name("sum").text[1:-1]) // 50
for x in range(1, page):
driver.find_element_by_xpath(f'//*[@id="pageObjNavgation"]/div/span/a[{x}]').click()
url = driver.current_url
driver.get(url)
driver.implicitly_wait(5)
time.sleep(3)
for y in range(1, len(driver.find_elements_by_tag_name("tr"))):
driver.find_element_by_xpath(f'//*[@id="frm"]/div/table/tbody/tr[{y}]/td[4]/div/a').click()
driver.implicitly_wait(5)
artist_name = driver.find_element_by_class_name("artist_name").text
song_name = driver.find_element_by_class_name("song_name").text
lyric = driver.find_element_by_class_name("lyric").text
music = (artist_name, song_name, lyric)
cur.execute('INSERT IGNORE INTO music (artist_name, song_name, lyrics) VALUES (%s ,%s, %s)', music)
conn.commit()
driver.back()
driver.implicitly_wait(5)
time.sleep(3)
driver.get(playlist_url)
driver.get(thema_url)
driver.quit()
참고 자료
728x90
반응형
'Project > 감정분석과 노래 추천' 카테고리의 다른 글
Emotions and Music 6 (0) | 2022.07.03 |
---|---|
Emotions and Music 5 (0) | 2022.07.03 |
Emotions and Music 4 (0) | 2022.07.03 |
Emotions and Music 3 (0) | 2022.06.28 |
Emotions and Music 1 (0) | 2022.06.28 |