본문 바로가기

Python/YouTube Data API v3

[Youtube API] 동영상의 조회수와 좋아요 업데이트하기

이전 포스팅에서 동영상의 조회수와 좋아요를 추출해 보았는데, 해당 리소스는 실시간으로 변화하기 때문에 주기적인 업데이트가 필요합니다.

이번에는 추출했던 동영상의 조회수와 좋아요를 일정 시간마다 업데이트 할 수 있도록 하겠습니다.

# DB 연결 구문 생략
################################################################
# youtube.video_list에 저장된 있는 동영상 ID(v_id)를 검색 후         #
# 해당 동영상의 좋아요, 조회수를 새로 업데이트 하는 스크립트 입니다.       #
################################################################

def Count_Search():
    curs.execute("SELECT * FROM youtube.video_list ORDER BY no")
    lists = curs.fetchall() # 저장된 동영상 리스트 검색


    for list in lists: # 저장된 동영상의 비디오 아이디 추출
        v_id = list[1]
        statics = statistics_url + v_id + '&key=' + key + '&part=statistics'
        statics_response = requests.get(statics)
        statics_Object = json.loads(statics_response.text)
        statics_data = statics_Object.get('items')


        for statistics in statics_data: # 추출한 비디오 아이디에 대한 조회수와 좋아요 수 신규 추출
            videoId = statistics.get('id')
            viewCount = statistics.get('statistics').get('viewCount')
            likeCount = statistics.get('statistics').get('likeCount')
            print(viewCount, likeCount)

            # 신규로 추출한 조회수와 좋아요수로 update
            sql = "UPDATE youtube.video_list SET viewcount = %s, likecount = %s WHERE v_id = %s;"
            val = (viewCount, likeCount, videoId)
            curs.execute(sql, val)
            print(list[1], list[2], list[7])

    #모든 데이터 새로 업데이트 후 Commit
    conn.commit()

# 매일 오전 10시 동작
schedule.every().day.at("10:00").do(Count_Search)


while True: # 스케쥴링 되어있는 작업 동작
    schedule.run_pending()

먼저 저장된 동영상의 비디오 아이디를 추출하여 해당 동영상의 조회수와 좋아요 수를 새로 추출하고

값을 DB에 업데이트 하는 작업을

schedule을 사용하여 매일 오전 10시에 동작하도록 스케쥴링 구성을 했습니다.

 

해당 스크립트를 백그라운드로 동작시키면 비교적 최신 데이터로 계속 업데이트 할 수 있습니다.

 

다음 포스팅에서는 동영상의 댓글을 수집하고 ChatGPT를 이용해 댓글의 긍정과 부정을 판별해보도록 하겠습니다.