기록2. Youtube 대시보드 만들기 (streamlit)

chaechae·2023년 7월 4일

📊 재생목록별 조회수 , today 조회수

2023-07-04
오늘, 어떤 재생목록에서 가장 큰 조회수를 차지했는지 , 어떤 재생목록이 뜨거운 반응을 보이고 있는지 전체적인 컨텐츠 반응을 알아보기 위해서 추가했습니다.

오늘 7월4일 18시 기준으로 현재 ISEGYE IDOL (예능) 편집영상이 전체 719616 조회수중 절반 이상을 차지하고 있네요 ㅎㅎ

특히, 6월21일 에 ISEGYE IDOL:MUSIC 재생목록의 조회수가 1,500,000까지 치솟는걸 확인 할 수 있는데, 해당 날짜에 업로드된 이세계아이돌 오리지널 노래 영상이 큰 인기를 얻었음을 알 수 있습니다.

python 전처리


    total_diff = total_diff[total_diff['playlist_title'] != "ALL : MUSIC (최신순)"] # all music 은 제외
    total_diff.loc[total_diff['playlist_title'].str.contains('YOUTUBE|이세여고|OFFICIAL'), 'playlist_title'] = 'ISEGYE IDOL (예능)' # 이세돌 카테고리 통합
    total_diff.loc[total_diff['playlist_title'].str.contains('MIDDLE|GOMEM'),'playlist_title'] = 'WAKTAVERSE : GOMEM ' 
 
    total_diff = total_diff.groupby(['playlist_title', 'down_at']).agg({'view_count_diff': 'sum'}).reset_index()
    
    total_diff['down_at'] = pd.to_datetime(total_diff['down_at']).dt.strftime('%m-%d')

# nivo chart data 형식을 위한 전처리

    diff = []
    for playlist_title, group in total_diff.groupby('playlist_title'):
        if len(group) > 0:
            
            playlist_title = group.iloc[0]['playlist_title']
            view_count_diff = group.iloc[-1]['view_count_diff']

            diff.append({
                'id': playlist_title,
                'value' : view_count_diff,
                'data' : [{'x': down_at, 'y': view_count_diff} for down_at, view_count_diff in zip(group['down_at'], group['view_count_diff'])][1:] # 받은 시점 하루뒤부터

            })
    today_total = sum(item['value'] for item in diff) # 가장 최근 전체 조회수
  • 주간/월별로 볼 수 있도록 기능 추가 필요
  • 데이터를 주기적으로 받다보면 계속 데이터가 쌓일 텐데 DB 구축하는걸 좀 공부해 볼까..?
  • 즉, API를 통해 채널 데이터를 불러오고 DB에 저장한 다음 DB에 있는 데이터들을 streamlit에 연결 할 수 있다고 들었다. DB구축에 대한 지식이 많이 부족하기 때문에 공부가 필요하다.
    (커뮤니티에 찾아보니 streamlit을 db에 연결 할 수 있다!!! 해보자!!)
profile
다양한 컨텐츠가 있는 곳을 좋아합니다. 시리즈를 참고하시면 편하게 글을 보실 수 있습니다🫠

0개의 댓글