From 70af03a9d01287c2d1a33f81b1d152cdd9fad4a0 Mon Sep 17 00:00:00 2001 From: poriz Date: Fri, 2 Feb 2024 21:10:50 +0900 Subject: [PATCH 001/249] feat(get_data) get chzzk chat_data, live_status --- chzzk/chzzk_chat_data.py | 73 ++++++++++++++++++++++++++++++++++++++ chzzk/chzzk_live_status.py | 36 +++++++++++++++++++ 2 files changed, 109 insertions(+) create mode 100644 chzzk/chzzk_chat_data.py create mode 100644 chzzk/chzzk_live_status.py diff --git a/chzzk/chzzk_chat_data.py b/chzzk/chzzk_chat_data.py new file mode 100644 index 0000000..c13493c --- /dev/null +++ b/chzzk/chzzk_chat_data.py @@ -0,0 +1,73 @@ +import json +import sys +import requests +import websocket +from functools import partial + +# 웹소켓 메시지 핸들러 정의 +def on_message(ws, message): + try: + # 메시지 문자열에서 JSON 객체로 파싱 + msg_json = json.loads(message) + # 'bdy' 키가 있는지 확인하고, 리스트의 마지막 요소에서 'msg' 필드 추출 + if 'bdy' in msg_json and len(msg_json['bdy']) > 0: + # 마지막 메시지 객체 + last_msg_obj = msg_json['bdy'][-1] + # 'msg' 필드 값 추출 + if 'msg' in last_msg_obj: + last_msg = last_msg_obj['msg'] + print("가장 최근 메시지:", last_msg) + else: + print("마지막 메시지 객체에 'msg' 필드가 없습니다.") + else: + print("'bdy' 필드가 없거나 비어 있습니다.") + except json.JSONDecodeError: + print("메시지가 JSON 형식이 아닙니다.") + +def on_error(ws, error): + print(f"Error: {error}") + +def on_close(ws): + print("### Connection closed ###") + +def on_open(ws,cid, accTkn): + # 서버에 보낼 메시지를 JSON 형식으로 작성 + message = { + "ver": "2", + "cmd": 100, + "svcid": "game", + "cid": cid, + "tid": 1, + "bdy": { + "uid": None, + "devType": 2001, + "accTkn": accTkn, + "auth": "READ" + } + } + # JSON 객체를 문자열로 변환하여 서버에 보냄 + ws.send(json.dumps(message)) + print("Message sent to the server") + +if __name__ == "__main__": + # channel_id 필요 + channel_id = ['1a1dd9ce56fb61a37ffb6f69f6d5b978'] + # channel_id에 맞춰서 chat_channel_id를 구하고 + chat_channel_content=requests.get(f"https://api.chzzk.naver.com/polling/v2/channels/{channel_id[0]}/live-status").json()["content"] + if chat_channel_content["status"] == 'CLOSE': + print("status == CLOSE") + sys.exit(0) + else: + chat_channel_id = chat_channel_content["chatChannelId"] + # accTkn을 발급받아야한다. + access_token = requests.get(f"https://comm-api.game.naver.com/nng_main/v1/chats/access-token?channelId={chat_channel_id}&chatType=STREAMING").json()["content"]["accessToken"] + websocket.enableTrace(False) + # chating 가져오기 + ws = websocket.WebSocketApp("wss://kr-ss2.chat.naver.com/chat", + on_open=partial(on_open, cid=chat_channel_id, accTkn=access_token), + on_message=on_message, + on_error=on_error, + on_close=on_close) + + + ws.run_forever() diff --git a/chzzk/chzzk_live_status.py b/chzzk/chzzk_live_status.py new file mode 100644 index 0000000..93439d1 --- /dev/null +++ b/chzzk/chzzk_live_status.py @@ -0,0 +1,36 @@ +import requests + +from selenium import webdriver +from selenium.webdriver.common.keys import Keys +from selenium.webdriver.common.by import By + + +channel_id = ['1a1dd9ce56fb61a37ffb6f69f6d5b978'] # 강퀴 + +# chzzk_url = 'https://chzzk.naver.com/live/' +# IF LIVE STREAM IS TRUE +# CHECK LIVE STREAM - plz code input iter-code +# res=requests.get(f'https://api.chzzk.naver.com/service/v1/channels/{streamer_uid[0]}') +# print(check_live) +res = requests.get(f"https://api.chzzk.naver.com/polling/v2/channels/{channel_id[0]}/live-status") +check_live = res.json() +print(check_live) + +# Crawling functions that operate asynchronously +# streaming data +# - viewers' participation: current_view_count, accumulated_views, +# - broadcast time and cycle: broadcast_time +# - viewer's change: broadcast_title, timestamp +# - game info: game_info + + +# async def chzzk_main(): +# driver = webdriver.Chrome() +# driver.get("http://www.python.org") +# assert "Python" in driver.title +# elem = driver.find_element(By.NAME, "q") +# elem.clear() +# elem.send_keys("pycon") +# elem.send_keys(Keys.RETURN) +# assert "No results found." not in driver.page_source +# driver.close() \ No newline at end of file From df47f2712b132a650d8733e1538ca47dcbdd90d5 Mon Sep 17 00:00:00 2001 From: poriz Date: Wed, 7 Feb 2024 23:16:00 +0900 Subject: [PATCH 002/249] [feat,refactor] dir name & youtube chat - change dir name: chzzk > dataCollector - add youtube streaming chat --- {chzzk => dataCollector}/chzzk_chat_data.py | 0 {chzzk => dataCollector}/chzzk_live_status.py | 0 dataCollector/youtube_stream_chat.py | 33 +++++++++++++++++++ 3 files changed, 33 insertions(+) rename {chzzk => dataCollector}/chzzk_chat_data.py (100%) rename {chzzk => dataCollector}/chzzk_live_status.py (100%) create mode 100644 dataCollector/youtube_stream_chat.py diff --git a/chzzk/chzzk_chat_data.py b/dataCollector/chzzk_chat_data.py similarity index 100% rename from chzzk/chzzk_chat_data.py rename to dataCollector/chzzk_chat_data.py diff --git a/chzzk/chzzk_live_status.py b/dataCollector/chzzk_live_status.py similarity index 100% rename from chzzk/chzzk_live_status.py rename to dataCollector/chzzk_live_status.py diff --git a/dataCollector/youtube_stream_chat.py b/dataCollector/youtube_stream_chat.py new file mode 100644 index 0000000..a28c712 --- /dev/null +++ b/dataCollector/youtube_stream_chat.py @@ -0,0 +1,33 @@ +# live chatting +# import pytchat +# +# live_chat = pytchat.create(video_id="AiqPgy9vnBk") +# +# while live_chat.is_alive(): +# for chat in live_chat.get().sync_items(): +# print(f"{chat.author.name}: {chat.message}") + +# from googleapiclient.discovery import build +# +# # API 정보 설정 +# api_key = 'api_key' +# youtube = build('youtube', 'v3', developerKey=api_key) +# +# # 비디오 ID 설정 (예: 'v=dQw4w9WgXcQ') +# video_id = 'vid' +# +# # YouTube Data API 호출 +# response = youtube.videos().list( +# part='snippet', +# id=video_id +# ).execute() +# +# # 응답에서 게임 정보 추출 +# for item in response.get('items', []): +# title = item['snippet']['title'] +# description = item['snippet']['description'] +# tags = item['snippet'].get('tags', []) +# +# print(f"Title: {title}") +# print(f"Description: {description}") +# print(f"Tags: {tags}") From d292821d5aa27493b503c6d6deb2c9f5ffba46b2 Mon Sep 17 00:00:00 2001 From: lyh Date: Mon, 12 Feb 2024 23:44:00 +0900 Subject: [PATCH 003/249] [feat] steam api code CCU, reviews, app_id list, price, sale state --- .../steam_game_review_comment.py | 46 +++++++++++++++++++ .../steam_game_review_statistics.py | 21 +++++++++ steam_datacollector/steam_getting_ccu.py | 36 +++++++++++++++ .../steam_price_and_sale_status.py | 23 ++++++++++ .../steam_top1000_game_list.py | 21 +++++++++ 5 files changed, 147 insertions(+) create mode 100644 steam_datacollector/steam_game_review_comment.py create mode 100644 steam_datacollector/steam_game_review_statistics.py create mode 100644 steam_datacollector/steam_getting_ccu.py create mode 100644 steam_datacollector/steam_price_and_sale_status.py create mode 100644 steam_datacollector/steam_top1000_game_list.py diff --git a/steam_datacollector/steam_game_review_comment.py b/steam_datacollector/steam_game_review_comment.py new file mode 100644 index 0000000..7bc33b3 --- /dev/null +++ b/steam_datacollector/steam_game_review_comment.py @@ -0,0 +1,46 @@ +import requests + +def get_game_reviews(app_id): + # API URL 설정 + api_url = f'https://store.steampowered.com/appreviews/{app_id}?json=1' + + # API 키를 설정합니다. (https://steamcommunity.com/dev/apikey 에서 키를 발급받을 수 있습니다.) + api_key = '9B38F89D2AFA8356EACB2BBE13CB20D1' + + # API 요청 매개변수 설정 + params = { + 'key': api_key, + 'json': '1', + 'language': 'korean', # 한국어 리뷰만 가져오기 + 'num_per_page': 100, # 페이지당 리뷰 수 + } + + while True: + # API 요청 보내기 + response = requests.get(api_url, params=params) + + # 응답 확인 + if response.status_code == 200: + data = response.json() + reviews = data.get('reviews', []) + for review in reviews: + print(f"Review ID: {review['recommendationid']}") + print(f"Author: {review['author']['steamid']}") + print(f"Review: {review['review']}") + print(f"Recommended: {review['voted_up']}") + print(f"----------------------------------") + + # 리뷰가 100개 이상인 경우 다음 페이지로 이동 (페이지네이션) + if data['cursor'] != '*': + params['cursor'] = data['cursor'] + else: + break + else: + print(f"Error: Unable to fetch reviews. Status Code: {response.status_code}") + break + +# 게임의 app_id (예: Palworld) +app_id = 1623730 + +# Steam Community API로부터 리뷰 가져오기 +get_game_reviews(app_id) \ No newline at end of file diff --git a/steam_datacollector/steam_game_review_statistics.py b/steam_datacollector/steam_game_review_statistics.py new file mode 100644 index 0000000..451899c --- /dev/null +++ b/steam_datacollector/steam_game_review_statistics.py @@ -0,0 +1,21 @@ +import requests +from bs4 import BeautifulSoup + +def get_review_summary(app_id): + url = f"https://store.steampowered.com/app/{app_id}" + response = requests.get(url) + soup = BeautifulSoup(response.text, 'html.parser') + + recent_reviews = soup.find('span', {'class': 'responsive_reviewdesc_short'}) + all_reviews = soup.find_all('span', {'class': 'responsive_reviewdesc_short'})[1] + + return { + 'all_reviews': recent_reviews.text.strip() if recent_reviews else 'No recent reviews', + 'recent_reviews': all_reviews.text.strip() if all_reviews else 'No reviews' + } + +app_id = 730 # app_id 입력 +review_summary = get_review_summary(app_id) + +print("Recent reviews:", review_summary['recent_reviews']) +print("All reviews:", review_summary['all_reviews']) \ No newline at end of file diff --git a/steam_datacollector/steam_getting_ccu.py b/steam_datacollector/steam_getting_ccu.py new file mode 100644 index 0000000..e4e49ec --- /dev/null +++ b/steam_datacollector/steam_getting_ccu.py @@ -0,0 +1,36 @@ +import pandas as pd +import requests + +# CSV 파일 다운 받기 +url = "https://raw.githubusercontent.com/dgibbs64/SteamCMD-AppID-List/main/steamcmd_appid.csv" +response = requests.get(url) +with open('steamcmd_appid.csv', 'w', encoding='utf-8') as f: + f.write(response.text) + +# CSV파일 DF로 바꾸기 +df = pd.read_csv('steamcmd_appid.csv') + +# 컬럼명 바꾸기 +df.columns = ['app_id', 'name'] + +# DF의 Values로 API를 호출해 게임별 CCU를 가져오기 +cnt = 1 +for index, row in df.iterrows(): + app_id, name = row['app_id'], row['name'] + + url = f"http://api.steampowered.com/ISteamUserStats/GetNumberOfCurrentPlayers/v1?appid={app_id}" + response = requests.get(url) + data = response.json() + + # result의 값이 1인 경우에만 CCU를 제공 + if data['response']['result'] != 1: + continue + + ccu = data['response']['player_count'] + print(app_id, name) + print(f'CCU of {name}: {ccu}') + + # test이므로 16만여개 중 50개만 가져오기 + cnt += 1 + if cnt >= 50: + break \ No newline at end of file diff --git a/steam_datacollector/steam_price_and_sale_status.py b/steam_datacollector/steam_price_and_sale_status.py new file mode 100644 index 0000000..27cb0d9 --- /dev/null +++ b/steam_datacollector/steam_price_and_sale_status.py @@ -0,0 +1,23 @@ +import requests + +# 게임의 appid +appid = '1623730' # PalWorld + +# API requests +response = requests.get(f'http://store.steampowered.com/api/appdetails?appids={appid}&cc=kr') + +# JSON 파싱 +data = response.json() + +# 가격 얻기 +price = data[appid]['data']['price_overview']['final_formatted'] + +# 할인율 체크 +is_on_sale = data[appid]['data']['price_overview']['discount_percent'] > 0 + + +print(f"Price: {price}") +if is_on_sale: + print("The game is on sale.") +else: + print("The game is not on sale.") \ No newline at end of file diff --git a/steam_datacollector/steam_top1000_game_list.py b/steam_datacollector/steam_top1000_game_list.py new file mode 100644 index 0000000..dba45ec --- /dev/null +++ b/steam_datacollector/steam_top1000_game_list.py @@ -0,0 +1,21 @@ +from bs4 import BeautifulSoup + +# steamdb_charts.html에서 인기 top 1000게임 app_id 가져오기 +with open('steamdb_charts.html', 'r', encoding='utf-8') as f: + html = f.read() + +# HTML 파싱 +soup = BeautifulSoup(html, 'html.parser') + +rows = soup.select("#table-apps > tbody > tr") + +for row in rows: + element = row.select_one("td:nth-child(3) > a") + + # 게임 이름 + game = element.text + + # 게임 app_id + app_id = element['href'].split('/')[2] + + print(f"Game: {game}, app_id: {app_id}") \ No newline at end of file From 3b05c2ab61aa0afae74245ae9da8f8d8b9a85fb1 Mon Sep 17 00:00:00 2001 From: jeong hun soo Date: Wed, 14 Feb 2024 02:10:43 +0000 Subject: [PATCH 004/249] feat: Add docker-compose.yaml --- docker-compose.yaml | 300 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 300 insertions(+) create mode 100644 docker-compose.yaml diff --git a/docker-compose.yaml b/docker-compose.yaml new file mode 100644 index 0000000..460cb8e --- /dev/null +++ b/docker-compose.yaml @@ -0,0 +1,300 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +# Basic Airflow cluster configuration for CeleryExecutor with Redis and PostgreSQL. +# +# WARNING: This configuration is for local development. Do not use it in a production deployment. +# +# This configuration supports basic configuration using environment variables or an .env file +# The following variables are supported: +# +# AIRFLOW_IMAGE_NAME - Docker image name used to run Airflow. +# Default: apache/airflow:2.7.2 +# AIRFLOW_UID - User ID in Airflow containers +# Default: 50000 +# AIRFLOW_PROJ_DIR - Base path to which all the files will be volumed. +# Default: . +# Those configurations are useful mostly in case of standalone testing/running Airflow in test/try-out mode +# +# _AIRFLOW_WWW_USER_USERNAME - Username for the administrator account (if requested). +# Default: airflow +# _AIRFLOW_WWW_USER_PASSWORD - Password for the administrator account (if requested). +# Default: airflow +# _PIP_ADDITIONAL_REQUIREMENTS - Additional PIP requirements to add when starting all containers. +# Use this option ONLY for quick checks. Installing requirements at container +# startup is done EVERY TIME the service is started. +# A better way is to build a custom image or extend the official image +# as described in https://airflow.apache.org/docs/docker-stack/build.html. +# Default: '' +# +# Feel free to modify this file to suit your needs. +--- +version: '3.8' +x-airflow-common: + &airflow-common + # In order to add custom dependencies or upgrade provider packages you can use your extended image. + # Comment the image line, place your Dockerfile in the directory where you placed the docker-compose.yaml + # and uncomment the "build" line below, Then run `docker-compose build` to build the images. + image: ${AIRFLOW_IMAGE_NAME:-apache/airflow:2.7.2} + # build: . + environment: + &airflow-common-env + AIRFLOW__CORE__EXECUTOR: CeleryExecutor + AIRFLOW__DATABASE__SQL_ALCHEMY_CONN: postgresql+psycopg2://airflow:airflow@postgres/airflow + # For backward compatibility, with Airflow <2.3 + AIRFLOW__CORE__SQL_ALCHEMY_CONN: postgresql+psycopg2://airflow:airflow@postgres/airflow + AIRFLOW__CELERY__RESULT_BACKEND: db+postgresql://airflow:airflow@postgres/airflow + AIRFLOW__CELERY__BROKER_URL: redis://:@redis:6379/0 + AIRFLOW__CORE__FERNET_KEY: '' + AIRFLOW__CORE__DAGS_ARE_PAUSED_AT_CREATION: 'true' + AIRFLOW__CORE__LOAD_EXAMPLES: 'true' + AIRFLOW__API__AUTH_BACKENDS: 'airflow.api.auth.backend.basic_auth,airflow.api.auth.backend.session' + # yamllint disable rule:line-length + # Use simple http server on scheduler for health checks + # See https://airflow.apache.org/docs/apache-airflow/stable/administration-and-deployment/logging-monitoring/check-health.html#scheduler-health-check-server + # yamllint enable rule:line-length + AIRFLOW__SCHEDULER__ENABLE_HEALTH_CHECK: 'true' + # WARNING: Use _PIP_ADDITIONAL_REQUIREMENTS option ONLY for a quick checks + # for other purpose (development, test and especially production usage) build/extend Airflow image. + _PIP_ADDITIONAL_REQUIREMENTS: ${_PIP_ADDITIONAL_REQUIREMENTS:-} + volumes: + - ${AIRFLOW_PROJ_DIR:-.}/dags:/opt/airflow/dags + - ${AIRFLOW_PROJ_DIR:-.}/logs:/opt/airflow/logs + - ${AIRFLOW_PROJ_DIR:-.}/config:/opt/airflow/config + - ${AIRFLOW_PROJ_DIR:-.}/plugins:/opt/airflow/plugins + user: "${AIRFLOW_UID:-50000}:0" + depends_on: + &airflow-common-depends-on + redis: + condition: service_healthy + postgres: + condition: service_healthy + +services: + postgres: + image: postgres:13 + environment: + POSTGRES_USER: airflow + POSTGRES_PASSWORD: airflow + POSTGRES_DB: airflow + volumes: + - postgres-db-volume:/var/lib/postgresql/data + healthcheck: + test: ["CMD", "pg_isready", "-U", "airflow"] + interval: 10s + retries: 5 + start_period: 5s + restart: always + + redis: + image: redis:latest + expose: + - 6379 + healthcheck: + test: ["CMD", "redis-cli", "ping"] + interval: 10s + timeout: 30s + retries: 50 + start_period: 30s + restart: always + + airflow-webserver: + <<: *airflow-common + command: webserver + ports: + - "8080:8080" + healthcheck: + test: ["CMD", "curl", "--fail", "http://localhost:8080/health"] + interval: 30s + timeout: 10s + retries: 5 + start_period: 30s + restart: always + depends_on: + <<: *airflow-common-depends-on + airflow-init: + condition: service_completed_successfully + + airflow-scheduler: + <<: *airflow-common + command: scheduler + healthcheck: + test: ["CMD", "curl", "--fail", "http://localhost:8974/health"] + interval: 30s + timeout: 10s + retries: 5 + start_period: 30s + restart: always + depends_on: + <<: *airflow-common-depends-on + airflow-init: + condition: service_completed_successfully + + airflow-worker: + <<: *airflow-common + command: celery worker + healthcheck: + # yamllint disable rule:line-length + test: + - "CMD-SHELL" + - 'celery --app airflow.providers.celery.executors.celery_executor.app inspect ping -d "celery@$${HOSTNAME}" || celery --app airflow.executors.celery_executor.app inspect ping -d "celery@$${HOSTNAME}"' + interval: 30s + timeout: 10s + retries: 5 + start_period: 30s + environment: + <<: *airflow-common-env + # Required to handle warm shutdown of the celery workers properly + # See https://airflow.apache.org/docs/docker-stack/entrypoint.html#signal-propagation + DUMB_INIT_SETSID: "0" + restart: always + depends_on: + <<: *airflow-common-depends-on + airflow-init: + condition: service_completed_successfully + + airflow-triggerer: + <<: *airflow-common + command: triggerer + healthcheck: + test: ["CMD-SHELL", 'airflow jobs check --job-type TriggererJob --hostname "$${HOSTNAME}"'] + interval: 30s + timeout: 10s + retries: 5 + start_period: 30s + restart: always + depends_on: + <<: *airflow-common-depends-on + airflow-init: + condition: service_completed_successfully + + airflow-init: + <<: *airflow-common + entrypoint: /bin/bash + # yamllint disable rule:line-length + command: + - -c + - | + function ver() { + printf "%04d%04d%04d%04d" $${1//./ } + } + airflow_version=$$(AIRFLOW__LOGGING__LOGGING_LEVEL=INFO && gosu airflow airflow version) + airflow_version_comparable=$$(ver $${airflow_version}) + min_airflow_version=2.2.0 + min_airflow_version_comparable=$$(ver $${min_airflow_version}) + if (( airflow_version_comparable < min_airflow_version_comparable )); then + echo + echo -e "\033[1;31mERROR!!!: Too old Airflow version $${airflow_version}!\e[0m" + echo "The minimum Airflow version supported: $${min_airflow_version}. Only use this or higher!" + echo + exit 1 + fi + if [[ -z "${AIRFLOW_UID}" ]]; then + echo + echo -e "\033[1;33mWARNING!!!: AIRFLOW_UID not set!\e[0m" + echo "If you are on Linux, you SHOULD follow the instructions below to set " + echo "AIRFLOW_UID environment variable, otherwise files will be owned by root." + echo "For other operating systems you can get rid of the warning with manually created .env file:" + echo " See: https://airflow.apache.org/docs/apache-airflow/stable/howto/docker-compose/index.html#setting-the-right-airflow-user" + echo + fi + one_meg=1048576 + mem_available=$$(($$(getconf _PHYS_PAGES) * $$(getconf PAGE_SIZE) / one_meg)) + cpus_available=$$(grep -cE 'cpu[0-9]+' /proc/stat) + disk_available=$$(df / | tail -1 | awk '{print $$4}') + warning_resources="false" + if (( mem_available < 4000 )) ; then + echo + echo -e "\033[1;33mWARNING!!!: Not enough memory available for Docker.\e[0m" + echo "At least 4GB of memory required. You have $$(numfmt --to iec $$((mem_available * one_meg)))" + echo + warning_resources="true" + fi + if (( cpus_available < 2 )); then + echo + echo -e "\033[1;33mWARNING!!!: Not enough CPUS available for Docker.\e[0m" + echo "At least 2 CPUs recommended. You have $${cpus_available}" + echo + warning_resources="true" + fi + if (( disk_available < one_meg * 10 )); then + echo + echo -e "\033[1;33mWARNING!!!: Not enough Disk space available for Docker.\e[0m" + echo "At least 10 GBs recommended. You have $$(numfmt --to iec $$((disk_available * 1024 )))" + echo + warning_resources="true" + fi + if [[ $${warning_resources} == "true" ]]; then + echo + echo -e "\033[1;33mWARNING!!!: You have not enough resources to run Airflow (see above)!\e[0m" + echo "Please follow the instructions to increase amount of resources available:" + echo " https://airflow.apache.org/docs/apache-airflow/stable/howto/docker-compose/index.html#before-you-begin" + echo + fi + mkdir -p /sources/logs /sources/dags /sources/plugins + chown -R "${AIRFLOW_UID}:0" /sources/{logs,dags,plugins} + exec /entrypoint airflow version + # yamllint enable rule:line-length + environment: + <<: *airflow-common-env + _AIRFLOW_DB_MIGRATE: 'true' + _AIRFLOW_WWW_USER_CREATE: 'true' + _AIRFLOW_WWW_USER_USERNAME: ${_AIRFLOW_WWW_USER_USERNAME:-airflow} + _AIRFLOW_WWW_USER_PASSWORD: ${_AIRFLOW_WWW_USER_PASSWORD:-airflow} + _PIP_ADDITIONAL_REQUIREMENTS: '' + user: "0:0" + volumes: + - ${AIRFLOW_PROJ_DIR:-.}:/sources + + airflow-cli: + <<: *airflow-common + profiles: + - debug + environment: + <<: *airflow-common-env + CONNECTION_CHECK_MAX_COUNT: "0" + # Workaround for entrypoint issue. See: https://github.com/apache/airflow/issues/16252 + command: + - bash + - -c + - airflow + + # You can enable flower by adding "--profile flower" option e.g. docker-compose --profile flower up + # or by explicitly targeted on the command line e.g. docker-compose up flower. + # See: https://docs.docker.com/compose/profiles/ + flower: + <<: *airflow-common + command: celery flower + profiles: + - flower + ports: + - "5555:5555" + healthcheck: + test: ["CMD", "curl", "--fail", "http://localhost:5555/"] + interval: 30s + timeout: 10s + retries: 5 + start_period: 30s + restart: always + depends_on: + <<: *airflow-common-depends-on + airflow-init: + condition: service_completed_successfully + +volumes: + postgres-db-volume: From b8791f5e41353e86168c4a590c48e47e3c1696db Mon Sep 17 00:00:00 2001 From: Jung Hun Soo Date: Wed, 14 Feb 2024 11:25:51 +0900 Subject: [PATCH 005/249] Initial commit --- .gitignore | 180 ++++++++++++++++++++++++++++++++++++++++++++ Dockerfile | 13 ++++ dags/.gitkeep | 0 docker-compose.yaml | 4 +- tests/.gitkeep | 0 5 files changed, 195 insertions(+), 2 deletions(-) create mode 100644 .gitignore create mode 100644 Dockerfile create mode 100644 dags/.gitkeep create mode 100644 tests/.gitkeep diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..59b40da --- /dev/null +++ b/.gitignore @@ -0,0 +1,180 @@ +# Created by https://www.toptal.com/developers/gitignore/api/python +# Edit at https://www.toptal.com/developers/gitignore?templates=python + +# airflow +logs/ + + +### Python ### +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# poetry +# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control +#poetry.lock + +# pdm +# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. +#pdm.lock +# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it +# in version control. +# https://pdm.fming.dev/#use-with-ide +.pdm.toml + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# PyCharm +# JetBrains specific template is maintained in a separate JetBrains.gitignore that can +# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# and can be added to the global gitignore or merged into this file. For a more nuclear +# option (not recommended) you can uncomment the following to ignore the entire idea folder. +#.idea/ + +### Python Patch ### +# Poetry local configuration file - https://python-poetry.org/docs/configuration/#local-configuration +poetry.toml + +# ruff +.ruff_cache/ + +# LSP config files +pyrightconfig.json + +# End of https://www.toptal.com/developers/gitignore/api/python \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..b87cd74 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,13 @@ +# 기본 이미지 지정. 버전은 2.7.2 +FROM apache/airflow:2.7.2 + +# root 사용자로 전환 (필요한 경우) +USER root + +# 패키지 목록 업데이트 및 필요한 패키지 설치 +RUN apt-get update && \ + apt-get install -y \ + vim \ + && rm -rf /var/lib/apt/lists/* + +# 이후 필요한 작업 수행. 예를 들어, 환경 설정 변경, 파일 복사 등 \ No newline at end of file diff --git a/dags/.gitkeep b/dags/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/docker-compose.yaml b/docker-compose.yaml index 460cb8e..9546df9 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -50,8 +50,8 @@ x-airflow-common: # In order to add custom dependencies or upgrade provider packages you can use your extended image. # Comment the image line, place your Dockerfile in the directory where you placed the docker-compose.yaml # and uncomment the "build" line below, Then run `docker-compose build` to build the images. - image: ${AIRFLOW_IMAGE_NAME:-apache/airflow:2.7.2} - # build: . + # image: ${AIRFLOW_IMAGE_NAME:-apache/airflow:2.7.2} + build: . environment: &airflow-common-env AIRFLOW__CORE__EXECUTOR: CeleryExecutor diff --git a/tests/.gitkeep b/tests/.gitkeep new file mode 100644 index 0000000..e69de29 From d767b65c143e720e39f51c5a44c3039850d8bd00 Mon Sep 17 00:00:00 2001 From: poriz Date: Wed, 14 Feb 2024 13:34:08 +0900 Subject: [PATCH 006/249] [refactor] mkdir_collectfolder --- dataCollector/{ => chzzk}/chzzk_chat_data.py | 0 dataCollector/{ => chzzk}/chzzk_live_status.py | 0 dataCollector/{ => youtube}/youtube_stream_chat.py | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename dataCollector/{ => chzzk}/chzzk_chat_data.py (100%) rename dataCollector/{ => chzzk}/chzzk_live_status.py (100%) rename dataCollector/{ => youtube}/youtube_stream_chat.py (100%) diff --git a/dataCollector/chzzk_chat_data.py b/dataCollector/chzzk/chzzk_chat_data.py similarity index 100% rename from dataCollector/chzzk_chat_data.py rename to dataCollector/chzzk/chzzk_chat_data.py diff --git a/dataCollector/chzzk_live_status.py b/dataCollector/chzzk/chzzk_live_status.py similarity index 100% rename from dataCollector/chzzk_live_status.py rename to dataCollector/chzzk/chzzk_live_status.py diff --git a/dataCollector/youtube_stream_chat.py b/dataCollector/youtube/youtube_stream_chat.py similarity index 100% rename from dataCollector/youtube_stream_chat.py rename to dataCollector/youtube/youtube_stream_chat.py From 70cc687e8b7b4a3089182b65926615a3b6f002af Mon Sep 17 00:00:00 2001 From: poriz Date: Wed, 14 Feb 2024 13:40:36 +0900 Subject: [PATCH 007/249] [feat] dir change --- .idea/workspace.xml | 34 +++++++++++++++++++ .../steam}/steam_game_review_comment.py | 0 .../steam}/steam_game_review_statistics.py | 0 .../steam}/steam_getting_ccu.py | 0 .../steam}/steam_price_and_sale_status.py | 0 .../steam}/steam_top1000_game_list.py | 0 6 files changed, 34 insertions(+) create mode 100644 .idea/workspace.xml rename {steam_datacollector => dataCollector/steam}/steam_game_review_comment.py (100%) rename {steam_datacollector => dataCollector/steam}/steam_game_review_statistics.py (100%) rename {steam_datacollector => dataCollector/steam}/steam_getting_ccu.py (100%) rename {steam_datacollector => dataCollector/steam}/steam_price_and_sale_status.py (100%) rename {steam_datacollector => dataCollector/steam}/steam_top1000_game_list.py (100%) diff --git a/.idea/workspace.xml b/.idea/workspace.xml new file mode 100644 index 0000000..fbe4ddb --- /dev/null +++ b/.idea/workspace.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + 1707885045639 + + + + \ No newline at end of file diff --git a/steam_datacollector/steam_game_review_comment.py b/dataCollector/steam/steam_game_review_comment.py similarity index 100% rename from steam_datacollector/steam_game_review_comment.py rename to dataCollector/steam/steam_game_review_comment.py diff --git a/steam_datacollector/steam_game_review_statistics.py b/dataCollector/steam/steam_game_review_statistics.py similarity index 100% rename from steam_datacollector/steam_game_review_statistics.py rename to dataCollector/steam/steam_game_review_statistics.py diff --git a/steam_datacollector/steam_getting_ccu.py b/dataCollector/steam/steam_getting_ccu.py similarity index 100% rename from steam_datacollector/steam_getting_ccu.py rename to dataCollector/steam/steam_getting_ccu.py diff --git a/steam_datacollector/steam_price_and_sale_status.py b/dataCollector/steam/steam_price_and_sale_status.py similarity index 100% rename from steam_datacollector/steam_price_and_sale_status.py rename to dataCollector/steam/steam_price_and_sale_status.py diff --git a/steam_datacollector/steam_top1000_game_list.py b/dataCollector/steam/steam_top1000_game_list.py similarity index 100% rename from steam_datacollector/steam_top1000_game_list.py rename to dataCollector/steam/steam_top1000_game_list.py From 4826e4bccb8128785a2d775dda5cade47189d1dd Mon Sep 17 00:00:00 2001 From: poriz Date: Fri, 2 Feb 2024 21:10:50 +0900 Subject: [PATCH 008/249] feat(get_data) get chzzk chat_data, live_status --- chzzk/chzzk_chat_data.py | 73 ++++++++++++++++++++++++++++++++++++++ chzzk/chzzk_live_status.py | 36 +++++++++++++++++++ 2 files changed, 109 insertions(+) create mode 100644 chzzk/chzzk_chat_data.py create mode 100644 chzzk/chzzk_live_status.py diff --git a/chzzk/chzzk_chat_data.py b/chzzk/chzzk_chat_data.py new file mode 100644 index 0000000..c13493c --- /dev/null +++ b/chzzk/chzzk_chat_data.py @@ -0,0 +1,73 @@ +import json +import sys +import requests +import websocket +from functools import partial + +# 웹소켓 메시지 핸들러 정의 +def on_message(ws, message): + try: + # 메시지 문자열에서 JSON 객체로 파싱 + msg_json = json.loads(message) + # 'bdy' 키가 있는지 확인하고, 리스트의 마지막 요소에서 'msg' 필드 추출 + if 'bdy' in msg_json and len(msg_json['bdy']) > 0: + # 마지막 메시지 객체 + last_msg_obj = msg_json['bdy'][-1] + # 'msg' 필드 값 추출 + if 'msg' in last_msg_obj: + last_msg = last_msg_obj['msg'] + print("가장 최근 메시지:", last_msg) + else: + print("마지막 메시지 객체에 'msg' 필드가 없습니다.") + else: + print("'bdy' 필드가 없거나 비어 있습니다.") + except json.JSONDecodeError: + print("메시지가 JSON 형식이 아닙니다.") + +def on_error(ws, error): + print(f"Error: {error}") + +def on_close(ws): + print("### Connection closed ###") + +def on_open(ws,cid, accTkn): + # 서버에 보낼 메시지를 JSON 형식으로 작성 + message = { + "ver": "2", + "cmd": 100, + "svcid": "game", + "cid": cid, + "tid": 1, + "bdy": { + "uid": None, + "devType": 2001, + "accTkn": accTkn, + "auth": "READ" + } + } + # JSON 객체를 문자열로 변환하여 서버에 보냄 + ws.send(json.dumps(message)) + print("Message sent to the server") + +if __name__ == "__main__": + # channel_id 필요 + channel_id = ['1a1dd9ce56fb61a37ffb6f69f6d5b978'] + # channel_id에 맞춰서 chat_channel_id를 구하고 + chat_channel_content=requests.get(f"https://api.chzzk.naver.com/polling/v2/channels/{channel_id[0]}/live-status").json()["content"] + if chat_channel_content["status"] == 'CLOSE': + print("status == CLOSE") + sys.exit(0) + else: + chat_channel_id = chat_channel_content["chatChannelId"] + # accTkn을 발급받아야한다. + access_token = requests.get(f"https://comm-api.game.naver.com/nng_main/v1/chats/access-token?channelId={chat_channel_id}&chatType=STREAMING").json()["content"]["accessToken"] + websocket.enableTrace(False) + # chating 가져오기 + ws = websocket.WebSocketApp("wss://kr-ss2.chat.naver.com/chat", + on_open=partial(on_open, cid=chat_channel_id, accTkn=access_token), + on_message=on_message, + on_error=on_error, + on_close=on_close) + + + ws.run_forever() diff --git a/chzzk/chzzk_live_status.py b/chzzk/chzzk_live_status.py new file mode 100644 index 0000000..93439d1 --- /dev/null +++ b/chzzk/chzzk_live_status.py @@ -0,0 +1,36 @@ +import requests + +from selenium import webdriver +from selenium.webdriver.common.keys import Keys +from selenium.webdriver.common.by import By + + +channel_id = ['1a1dd9ce56fb61a37ffb6f69f6d5b978'] # 강퀴 + +# chzzk_url = 'https://chzzk.naver.com/live/' +# IF LIVE STREAM IS TRUE +# CHECK LIVE STREAM - plz code input iter-code +# res=requests.get(f'https://api.chzzk.naver.com/service/v1/channels/{streamer_uid[0]}') +# print(check_live) +res = requests.get(f"https://api.chzzk.naver.com/polling/v2/channels/{channel_id[0]}/live-status") +check_live = res.json() +print(check_live) + +# Crawling functions that operate asynchronously +# streaming data +# - viewers' participation: current_view_count, accumulated_views, +# - broadcast time and cycle: broadcast_time +# - viewer's change: broadcast_title, timestamp +# - game info: game_info + + +# async def chzzk_main(): +# driver = webdriver.Chrome() +# driver.get("http://www.python.org") +# assert "Python" in driver.title +# elem = driver.find_element(By.NAME, "q") +# elem.clear() +# elem.send_keys("pycon") +# elem.send_keys(Keys.RETURN) +# assert "No results found." not in driver.page_source +# driver.close() \ No newline at end of file From 82e6d8febca0c160fa85a450fdbe21ac90730f2c Mon Sep 17 00:00:00 2001 From: poriz Date: Wed, 7 Feb 2024 23:16:00 +0900 Subject: [PATCH 009/249] [feat,refactor] dir name & youtube chat - change dir name: chzzk > dataCollector - add youtube streaming chat --- {chzzk => dataCollector}/chzzk_chat_data.py | 0 {chzzk => dataCollector}/chzzk_live_status.py | 0 dataCollector/youtube_stream_chat.py | 33 +++++++++++++++++++ 3 files changed, 33 insertions(+) rename {chzzk => dataCollector}/chzzk_chat_data.py (100%) rename {chzzk => dataCollector}/chzzk_live_status.py (100%) create mode 100644 dataCollector/youtube_stream_chat.py diff --git a/chzzk/chzzk_chat_data.py b/dataCollector/chzzk_chat_data.py similarity index 100% rename from chzzk/chzzk_chat_data.py rename to dataCollector/chzzk_chat_data.py diff --git a/chzzk/chzzk_live_status.py b/dataCollector/chzzk_live_status.py similarity index 100% rename from chzzk/chzzk_live_status.py rename to dataCollector/chzzk_live_status.py diff --git a/dataCollector/youtube_stream_chat.py b/dataCollector/youtube_stream_chat.py new file mode 100644 index 0000000..a28c712 --- /dev/null +++ b/dataCollector/youtube_stream_chat.py @@ -0,0 +1,33 @@ +# live chatting +# import pytchat +# +# live_chat = pytchat.create(video_id="AiqPgy9vnBk") +# +# while live_chat.is_alive(): +# for chat in live_chat.get().sync_items(): +# print(f"{chat.author.name}: {chat.message}") + +# from googleapiclient.discovery import build +# +# # API 정보 설정 +# api_key = 'api_key' +# youtube = build('youtube', 'v3', developerKey=api_key) +# +# # 비디오 ID 설정 (예: 'v=dQw4w9WgXcQ') +# video_id = 'vid' +# +# # YouTube Data API 호출 +# response = youtube.videos().list( +# part='snippet', +# id=video_id +# ).execute() +# +# # 응답에서 게임 정보 추출 +# for item in response.get('items', []): +# title = item['snippet']['title'] +# description = item['snippet']['description'] +# tags = item['snippet'].get('tags', []) +# +# print(f"Title: {title}") +# print(f"Description: {description}") +# print(f"Tags: {tags}") From 80a780319903c1964b5d150ba18af2b9b5150ced Mon Sep 17 00:00:00 2001 From: Lee Sarah Date: Mon, 12 Feb 2024 22:41:44 +0900 Subject: [PATCH 010/249] [feat] : test code of afreeca tv MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - chat : handshake 부분이 자동화 되지 않음 - websocket : 실패한 코드 (ㅠ) --- afreecaTV/afreecaTV_chat_test.py | 83 +++++++++++++++++++++++++ afreecaTV/afreecaTV_websocket_test.py | 87 +++++++++++++++++++++++++++ 2 files changed, 170 insertions(+) create mode 100644 afreecaTV/afreecaTV_chat_test.py create mode 100644 afreecaTV/afreecaTV_websocket_test.py diff --git a/afreecaTV/afreecaTV_chat_test.py b/afreecaTV/afreecaTV_chat_test.py new file mode 100644 index 0000000..e3ca7fb --- /dev/null +++ b/afreecaTV/afreecaTV_chat_test.py @@ -0,0 +1,83 @@ +import certifi +import json +import ssl +import base64 +import asyncio +import requests +import websockets +import sys + +# WSS 연결 위한 SSL 설정 +ssl_context = ssl.create_default_context() +ssl_context.load_verify_locations(certifi.where()) +ssl_context.check_hostname = False +ssl_context.verify_mode = ssl.CERT_NONE + +def decode(bytes): + test = bytes.split(b'\x0c') + res = [] + for i in test: + res.append(str(i, 'utf-8')) + if(res[1] != '-1' and res[1] != '1' and '|' not in res[1]): + if(len(res) > 5): + print(res[1], '\t| ', res[2], '|', res[6]) + else: + print(res) + pass + +def player_live_api(bno, bid): + # type=aid 일 경우 aid(.A32~~~)불러옴 + data = {'bid': bid, 'bno':bno, 'type':'live', 'confirm_adult':'false', 'player_type':'html5', 'mode':'landing', 'from_api':'0', 'pwd':'', 'stream_type':'common', 'quality':'HD'} + res = requests.post(f'https://live.afreecatv.com/afreeca/player_live_api.php?bjid={bid}', data=data).json() + CHDOMAIN = res["CHANNEL"]["CHDOMAIN"].lower() + CHATNO = res["CHANNEL"]["CHATNO"] + FTK = res["CHANNEL"]["FTK"] + TITLE = res["CHANNEL"]["TITLE"] + BJID = res["CHANNEL"]["BJID"] + CHPT = str(int(res["CHANNEL"]["CHPT"]) + 1) + return CHDOMAIN, CHATNO, FTK, TITLE, BJID, CHPT + +async def connect(url): + BNO = str(url.split('/')[-1]) + BID = str(url.split('/')[-2]) + CHDOMAIN, CHATNO, FTK, TITLE, BJID, CHPT = player_live_api(BNO, BID) + + KEY = '' + if(len(BJID) == 5): + KEY = '80' + elif(len(BJID) == 6): + KEY = '81' + elif(len(BJID) == 7): + KEY = '82' + elif(len(BJID) == 8): + KEY = '83' + elif(len(BJID) == 9): + KEY = '84' + elif(len(BJID) == 10): + KEY = '85' + elif(len(BJID) == 11): + KEY = '86' + elif(len(BJID) == 12): + KEY = '87' + + handshake = f' 000200032200 {CHATNO} {FTK} 0 log&set_bps=8000&view_bps=1000&quality=normal&uuid=cb2f85456a1844db7c6b5b99d618681e&geo_cc=KR&geo_rc=11&acpt_lang=ko_KR&svc_lang=ko_KR&subscribe=0&lowlatency=0pwdauth_infoNULLpver1access_systemhtml5 ' + + async with websockets.connect(f"wss://{CHDOMAIN}:{CHPT}/Websocket/{BID}", subprotocols=['chat'],ssl=ssl_context, ping_interval=None) as websocket: + # 핸드쉐이크 + # await websocket.send(secret_1) + await websocket.send(' 000100000600 16 ') + data = await websocket.recv() + #print(data) + await websocket.send(handshake) + # 이후부터 채팅내용 받아와짐 + while True: + try: + data = await websocket.recv() + decode(data) + except Exception as e: + print("ERROR:", e) + #sys.exit(0) + # break + +url = 'https://play.afreecatv.com/fbalstjr1234/253965341' +asyncio.get_event_loop().run_until_complete(connect(url)) diff --git a/afreecaTV/afreecaTV_websocket_test.py b/afreecaTV/afreecaTV_websocket_test.py new file mode 100644 index 0000000..730b1d4 --- /dev/null +++ b/afreecaTV/afreecaTV_websocket_test.py @@ -0,0 +1,87 @@ +import json +import sys +import requests +import websocket +from functools import partial +import ssl + + +# 웹소켓 메시지 핸들러 정의 +def on_message(ws, message): + try: + msg_json = json.loads(message) + print(msg_json) + except json.JSONDecodeError: + print("메시지가 JSON 형식이 아닙니다.") + + +def on_error(ws, error): + print(f"Error: {error}") + + +def on_close(ws): + print("### Connection closed ###") + + +def on_open(ws, bj_live_status): + # 서버에 보낼 메시지를 JSON 형식으로 작성 + message = { + "SVC": "INIT_GW", + "RESULT": 0, + "DATA": { + "gate_ip": bj_live_status["GWIP"], + "gate_port": bj_live_status["GWPT"], + "broadno": bj_live_status["BNO"], + "category": bj_live_status["CATE"], + "fanticket": bj_live_status["FTK"], + "cookie": "", + "cli_type": 44, + "cc_cli_type": 19, + "QUALITY": "normal", + "guid": "9869C0818D31A268EC13D6711D070CA0", + "BJID": bj_live_status["BJID"], + # "addinfo": "ad_lang ko is_auto 0 ", + "JOINLOG": "log&uuid=cb2f85456a1844db7c6b5b99d618681e&geo_cc=KR&geo_rc=11&acpt_lang=ko_KR&svc_lang=ko_KR&os=mac&is_streamer=false&is_rejoin=false&is_auto=false&is_support_adaptive=false&uuid_3rd=cb2f85456a1844db7c6b5b99d618681e&subscribe=-1liveualog&is_clearmode=false&lowlatency=0", + "update_info": 0, + }, + } + + #print(message) + ws.send(json.dumps(message)) + print("Message sent to the server") + + +if __name__ == "__main__": + # bj_id 필요 + bj_id = ["dudadi770"] + live_status = {"bid": bj_id, "type": "live"} + # channel_id에 맞춰서 websocet chat domain을 구함 + bj_live_status = requests.post( + f"https://live.afreecatv.com/afreeca/player_live_api.php?bjid={bj_id[0]}", + live_status, + ).json()["CHANNEL"] + print(bj_live_status) + # 'RESULT' is 1 when bj is live, and 0 when bj is off. + if not bj_live_status["RESULT"]: + print("RESULT is 0. BJ is not on live.") + sys.exit(0) + else: + chat_domain = bj_live_status["CHDOMAIN"] + + chat_wss_url = f"wss://{chat_domain}:8001/Websocket/{bj_id[0]}" + livestat_wss_url = f"wss://bridge.afreecatv.com/Websocket/{bj_id[0]}" + print(livestat_wss_url) + websocket.enableTrace(True) + + + # live status 가져오기 + sslopt = {"cert_reqs": ssl.CERT_NONE} # 인증서 검증 관련 test code + ws = websocket.WebSocketApp( + "wss://bridge.afreecatv.com/Websocket", + on_open=partial(on_open, bj_live_status=bj_live_status), + on_message=on_message, + on_error=on_error, + on_close=on_close, + ) + + ws.run_forever(sslopt=sslopt) From 73eba856a9fe786649224751d0731746f3c462c4 Mon Sep 17 00:00:00 2001 From: Lee Sarah Date: Wed, 14 Feb 2024 09:07:06 +0900 Subject: [PATCH 011/249] [feat] : get live status of bj as test --- afreecaTV/afreecaTV_live.py | 87 +++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 afreecaTV/afreecaTV_live.py diff --git a/afreecaTV/afreecaTV_live.py b/afreecaTV/afreecaTV_live.py new file mode 100644 index 0000000..b171dfa --- /dev/null +++ b/afreecaTV/afreecaTV_live.py @@ -0,0 +1,87 @@ +import requests +import time + +bjids = [ + "ghkdud1617", + "legendhyuk", + "maruko86", + "ititit", + "zw1948zw", + "ghkdud1617", + "legendhyuk", + "maruko86", + "ititit", + "zw1948zw", + "ghkdud1617", + "legendhyuk", + "maruko86", + "ititit", + "zw1948zw", + "ghkdud1617", + "legendhyuk", + "maruko86", + "ititit", + "zw1948zw", + "ghkdud1617", + "legendhyuk", + "maruko86", + "ititit", + "zw1948zw", + "ghkdud1617", + "legendhyuk", + "maruko86", + "ititit", + "zw1948zw", + "ghkdud1617", + "legendhyuk", + "maruko86", + "ititit", + "zw1948zw", + "ghkdud1617", + "legendhyuk", + "maruko86", + "ititit", + "zw1948zw", + "ghkdud1617", + "legendhyuk", + "maruko86", + "ititit", + "zw1948zw", + "ghkdud1617", + "legendhyuk", + "maruko86", + "ititit", + "zw1948zw", + "ghkdud1617", + "legendhyuk", + "maruko86", + "ititit", + "zw1948zw", + "ghkdud1617", + "legendhyuk", + "maruko86", + "ititit", + "zw1948zw", +] + +print(len(bjids)) +data = {"type": "live"} +# 시작 시간 기록 (현재 시간을 초 단위로 반환) +start_time = time.time() + + +for bjid in bjids: + data["bid"] = bjid + url = f"https://live.afreecatv.com/afreeca/player_live_api.php?bjid={bjid}" + # url = f"https://st.afreecatv.com/api/get_station_status.php?szBjId={bjid}" + res = requests.post(url, data) + print(len(res.text)) +# 여기에 시간이 걸리는 작업을 수행하세요. + +# 종료 시간 기록 +end_time = time.time() + +# 경과 시간 계산 (초 단위) +elapsed_time = end_time - start_time + +print(f"경과 시간: {elapsed_time} 초") From b051a3465b69373712f32088b325c54a9ccc5ca7 Mon Sep 17 00:00:00 2001 From: Lee Sarah Date: Wed, 14 Feb 2024 13:43:12 +0900 Subject: [PATCH 012/249] [fix]: delete files by rebase mistake --- dataCollector/chzzk_chat_data.py | 73 ---------------------------- dataCollector/chzzk_live_status.py | 36 -------------- dataCollector/youtube_stream_chat.py | 33 ------------- 3 files changed, 142 deletions(-) delete mode 100644 dataCollector/chzzk_chat_data.py delete mode 100644 dataCollector/chzzk_live_status.py delete mode 100644 dataCollector/youtube_stream_chat.py diff --git a/dataCollector/chzzk_chat_data.py b/dataCollector/chzzk_chat_data.py deleted file mode 100644 index c13493c..0000000 --- a/dataCollector/chzzk_chat_data.py +++ /dev/null @@ -1,73 +0,0 @@ -import json -import sys -import requests -import websocket -from functools import partial - -# 웹소켓 메시지 핸들러 정의 -def on_message(ws, message): - try: - # 메시지 문자열에서 JSON 객체로 파싱 - msg_json = json.loads(message) - # 'bdy' 키가 있는지 확인하고, 리스트의 마지막 요소에서 'msg' 필드 추출 - if 'bdy' in msg_json and len(msg_json['bdy']) > 0: - # 마지막 메시지 객체 - last_msg_obj = msg_json['bdy'][-1] - # 'msg' 필드 값 추출 - if 'msg' in last_msg_obj: - last_msg = last_msg_obj['msg'] - print("가장 최근 메시지:", last_msg) - else: - print("마지막 메시지 객체에 'msg' 필드가 없습니다.") - else: - print("'bdy' 필드가 없거나 비어 있습니다.") - except json.JSONDecodeError: - print("메시지가 JSON 형식이 아닙니다.") - -def on_error(ws, error): - print(f"Error: {error}") - -def on_close(ws): - print("### Connection closed ###") - -def on_open(ws,cid, accTkn): - # 서버에 보낼 메시지를 JSON 형식으로 작성 - message = { - "ver": "2", - "cmd": 100, - "svcid": "game", - "cid": cid, - "tid": 1, - "bdy": { - "uid": None, - "devType": 2001, - "accTkn": accTkn, - "auth": "READ" - } - } - # JSON 객체를 문자열로 변환하여 서버에 보냄 - ws.send(json.dumps(message)) - print("Message sent to the server") - -if __name__ == "__main__": - # channel_id 필요 - channel_id = ['1a1dd9ce56fb61a37ffb6f69f6d5b978'] - # channel_id에 맞춰서 chat_channel_id를 구하고 - chat_channel_content=requests.get(f"https://api.chzzk.naver.com/polling/v2/channels/{channel_id[0]}/live-status").json()["content"] - if chat_channel_content["status"] == 'CLOSE': - print("status == CLOSE") - sys.exit(0) - else: - chat_channel_id = chat_channel_content["chatChannelId"] - # accTkn을 발급받아야한다. - access_token = requests.get(f"https://comm-api.game.naver.com/nng_main/v1/chats/access-token?channelId={chat_channel_id}&chatType=STREAMING").json()["content"]["accessToken"] - websocket.enableTrace(False) - # chating 가져오기 - ws = websocket.WebSocketApp("wss://kr-ss2.chat.naver.com/chat", - on_open=partial(on_open, cid=chat_channel_id, accTkn=access_token), - on_message=on_message, - on_error=on_error, - on_close=on_close) - - - ws.run_forever() diff --git a/dataCollector/chzzk_live_status.py b/dataCollector/chzzk_live_status.py deleted file mode 100644 index 93439d1..0000000 --- a/dataCollector/chzzk_live_status.py +++ /dev/null @@ -1,36 +0,0 @@ -import requests - -from selenium import webdriver -from selenium.webdriver.common.keys import Keys -from selenium.webdriver.common.by import By - - -channel_id = ['1a1dd9ce56fb61a37ffb6f69f6d5b978'] # 강퀴 - -# chzzk_url = 'https://chzzk.naver.com/live/' -# IF LIVE STREAM IS TRUE -# CHECK LIVE STREAM - plz code input iter-code -# res=requests.get(f'https://api.chzzk.naver.com/service/v1/channels/{streamer_uid[0]}') -# print(check_live) -res = requests.get(f"https://api.chzzk.naver.com/polling/v2/channels/{channel_id[0]}/live-status") -check_live = res.json() -print(check_live) - -# Crawling functions that operate asynchronously -# streaming data -# - viewers' participation: current_view_count, accumulated_views, -# - broadcast time and cycle: broadcast_time -# - viewer's change: broadcast_title, timestamp -# - game info: game_info - - -# async def chzzk_main(): -# driver = webdriver.Chrome() -# driver.get("http://www.python.org") -# assert "Python" in driver.title -# elem = driver.find_element(By.NAME, "q") -# elem.clear() -# elem.send_keys("pycon") -# elem.send_keys(Keys.RETURN) -# assert "No results found." not in driver.page_source -# driver.close() \ No newline at end of file diff --git a/dataCollector/youtube_stream_chat.py b/dataCollector/youtube_stream_chat.py deleted file mode 100644 index a28c712..0000000 --- a/dataCollector/youtube_stream_chat.py +++ /dev/null @@ -1,33 +0,0 @@ -# live chatting -# import pytchat -# -# live_chat = pytchat.create(video_id="AiqPgy9vnBk") -# -# while live_chat.is_alive(): -# for chat in live_chat.get().sync_items(): -# print(f"{chat.author.name}: {chat.message}") - -# from googleapiclient.discovery import build -# -# # API 정보 설정 -# api_key = 'api_key' -# youtube = build('youtube', 'v3', developerKey=api_key) -# -# # 비디오 ID 설정 (예: 'v=dQw4w9WgXcQ') -# video_id = 'vid' -# -# # YouTube Data API 호출 -# response = youtube.videos().list( -# part='snippet', -# id=video_id -# ).execute() -# -# # 응답에서 게임 정보 추출 -# for item in response.get('items', []): -# title = item['snippet']['title'] -# description = item['snippet']['description'] -# tags = item['snippet'].get('tags', []) -# -# print(f"Title: {title}") -# print(f"Description: {description}") -# print(f"Tags: {tags}") From f1f0579ab95b2269a8dc06cc6c7d84b6434c2dec Mon Sep 17 00:00:00 2001 From: Lee Sarah Date: Wed, 14 Feb 2024 13:44:49 +0900 Subject: [PATCH 013/249] [fix] : move files --- {afreecaTV => dataCollector/afreecaTV}/afreecaTV_chat_test.py | 0 {afreecaTV => dataCollector/afreecaTV}/afreecaTV_live.py | 0 .../afreecaTV}/afreecaTV_websocket_test.py | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename {afreecaTV => dataCollector/afreecaTV}/afreecaTV_chat_test.py (100%) rename {afreecaTV => dataCollector/afreecaTV}/afreecaTV_live.py (100%) rename {afreecaTV => dataCollector/afreecaTV}/afreecaTV_websocket_test.py (100%) diff --git a/afreecaTV/afreecaTV_chat_test.py b/dataCollector/afreecaTV/afreecaTV_chat_test.py similarity index 100% rename from afreecaTV/afreecaTV_chat_test.py rename to dataCollector/afreecaTV/afreecaTV_chat_test.py diff --git a/afreecaTV/afreecaTV_live.py b/dataCollector/afreecaTV/afreecaTV_live.py similarity index 100% rename from afreecaTV/afreecaTV_live.py rename to dataCollector/afreecaTV/afreecaTV_live.py diff --git a/afreecaTV/afreecaTV_websocket_test.py b/dataCollector/afreecaTV/afreecaTV_websocket_test.py similarity index 100% rename from afreecaTV/afreecaTV_websocket_test.py rename to dataCollector/afreecaTV/afreecaTV_websocket_test.py From fdb95577aa86ec91d179c84be3b464cff35caee2 Mon Sep 17 00:00:00 2001 From: poriz Date: Wed, 14 Feb 2024 13:52:44 +0900 Subject: [PATCH 014/249] [fix] delete .idea --- .idea/workspace.xml | 34 ---------------------------------- 1 file changed, 34 deletions(-) delete mode 100644 .idea/workspace.xml diff --git a/.idea/workspace.xml b/.idea/workspace.xml deleted file mode 100644 index fbe4ddb..0000000 --- a/.idea/workspace.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - - - - - - - - - - 1707885045639 - - - - \ No newline at end of file From 094eb37b55fce2fd286b88c2d84b27c4376800a0 Mon Sep 17 00:00:00 2001 From: danee <9356471@gmail.com> Date: Wed, 14 Feb 2024 17:34:56 +0900 Subject: [PATCH 015/249] [feat] write youtube api --- .../youtube/youtube_data_v3_test.ipynb | 799 ++++++++++++++++++ dataCollector/youtube/youtube_time_test.ipynb | 759 +++++++++++++++++ 2 files changed, 1558 insertions(+) create mode 100644 dataCollector/youtube/youtube_data_v3_test.ipynb create mode 100644 dataCollector/youtube/youtube_time_test.ipynb diff --git a/dataCollector/youtube/youtube_data_v3_test.ipynb b/dataCollector/youtube/youtube_data_v3_test.ipynb new file mode 100644 index 0000000..572a042 --- /dev/null +++ b/dataCollector/youtube/youtube_data_v3_test.ipynb @@ -0,0 +1,799 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "00beb10e-2716-4001-962a-98995dc8850d", + "metadata": {}, + "source": [ + "```python\n", + "pip install google-api-python-client\n", + "```" + ] + }, + { + "cell_type": "markdown", + "id": "3701a403-5c9b-412a-b2bf-0779b2ee6219", + "metadata": {}, + "source": [ + "# 쿼리를 구성하여 특정 유형의 리소스만 검색" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "43d51be5-9651-4e64-96f8-760cf7f8aeca", + "metadata": {}, + "outputs": [], + "source": [ + "from googleapiclient.discovery import build\n", + "import pandas as pd" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "6ba0f010-fb7f-48b7-8a4e-015a06874296", + "metadata": {}, + "outputs": [], + "source": [ + "api_key = 'api_key'\n", + "youtube = build('youtube', 'v3', developerKey=api_key)" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "f2b8581d-053a-4ade-87e2-aa9a12bf2624", + "metadata": {}, + "outputs": [], + "source": [ + "request = youtube.search().list(\n", + " part=\"snippet\",\n", + " maxResults=25,\n", + " q=\"하마\",\n", + " regionCode='kr'\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "af65e574-eefc-4e44-84e7-a3b1a23768f2", + "metadata": {}, + "outputs": [], + "source": [ + "response = request.execute()" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "7dfaf39f-441b-47f9-954a-6e6bb39a90c4", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{'kind': 'youtube#commentThread',\n", + " 'etag': 'Zkg7mkg0YqBSX7gR-L7tU7lzj6Y',\n", + " 'id': 'Ugw96HK4_tdahmAtMMd4AaABAg',\n", + " 'snippet': {'channelId': 'UCsRIHt5FkbGc6cQtCxt-ufA',\n", + " 'videoId': 'e5CA9H0RkUU',\n", + " 'topLevelComment': {'kind': 'youtube#comment',\n", + " 'etag': '5BrcwVCtkU4P9mLScsvF8G-QaK0',\n", + " 'id': 'Ugw96HK4_tdahmAtMMd4AaABAg',\n", + " 'snippet': {'channelId': 'UCsRIHt5FkbGc6cQtCxt-ufA',\n", + " 'videoId': 'e5CA9H0RkUU',\n", + " 'textDisplay': '진짜 신서유기는 계속봐도 웃김 ㅋㅋㅋㅋㅋ',\n", + " 'textOriginal': '진짜 신서유기는 계속봐도 웃김 ㅋㅋㅋㅋㅋ',\n", + " 'authorDisplayName': '@user-ly7nh1ng3n',\n", + " 'authorProfileImageUrl': 'https://yt3.ggpht.com/_kAqzCtagVnAj-w4aIx_Uy-j-dEdUQUz2VHaSFj67iIofMjS2Y6-gYRmi5pyWa_yu2b4w8QBzQ=s48-c-k-c0x00ffffff-no-rj',\n", + " 'authorChannelUrl': 'http://www.youtube.com/channel/UCsfNh0eavc00uUOuJJH8QZg',\n", + " 'authorChannelId': {'value': 'UCsfNh0eavc00uUOuJJH8QZg'},\n", + " 'canRate': True,\n", + " 'viewerRating': 'none',\n", + " 'likeCount': 0,\n", + " 'publishedAt': '2024-01-26T16:55:40Z',\n", + " 'updatedAt': '2024-01-26T16:55:58Z'}},\n", + " 'canReply': True,\n", + " 'totalReplyCount': 0,\n", + " 'isPublic': True}}" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "response['items'][0]" + ] + }, + { + "cell_type": "markdown", + "id": "3e9a7a3f-b681-40ab-ba47-ddc7e60890dc", + "metadata": {}, + "source": [ + "# 코멘트 검색" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "24fb3183-ca3d-4052-b93d-3b4cbab59569", + "metadata": {}, + "outputs": [], + "source": [ + "request = youtube.commentThreads().list(\n", + " part=\"snippet,replies\",\n", + " videoId=\"e5CA9H0RkUU\"\n", + ")\n", + "response = request.execute()" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "f45219ee-82e3-4e53-acfb-db8af824b53e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'kind': 'youtube#commentThread',\n", + " 'etag': 'Zkg7mkg0YqBSX7gR-L7tU7lzj6Y',\n", + " 'id': 'Ugw96HK4_tdahmAtMMd4AaABAg',\n", + " 'snippet': {'channelId': 'UCsRIHt5FkbGc6cQtCxt-ufA',\n", + " 'videoId': 'e5CA9H0RkUU',\n", + " 'topLevelComment': {'kind': 'youtube#comment',\n", + " 'etag': '5BrcwVCtkU4P9mLScsvF8G-QaK0',\n", + " 'id': 'Ugw96HK4_tdahmAtMMd4AaABAg',\n", + " 'snippet': {'channelId': 'UCsRIHt5FkbGc6cQtCxt-ufA',\n", + " 'videoId': 'e5CA9H0RkUU',\n", + " 'textDisplay': '진짜 신서유기는 계속봐도 웃김 ㅋㅋㅋㅋㅋ',\n", + " 'textOriginal': '진짜 신서유기는 계속봐도 웃김 ㅋㅋㅋㅋㅋ',\n", + " 'authorDisplayName': '@user-ly7nh1ng3n',\n", + " 'authorProfileImageUrl': 'https://yt3.ggpht.com/_kAqzCtagVnAj-w4aIx_Uy-j-dEdUQUz2VHaSFj67iIofMjS2Y6-gYRmi5pyWa_yu2b4w8QBzQ=s48-c-k-c0x00ffffff-no-rj',\n", + " 'authorChannelUrl': 'http://www.youtube.com/channel/UCsfNh0eavc00uUOuJJH8QZg',\n", + " 'authorChannelId': {'value': 'UCsfNh0eavc00uUOuJJH8QZg'},\n", + " 'canRate': True,\n", + " 'viewerRating': 'none',\n", + " 'likeCount': 0,\n", + " 'publishedAt': '2024-01-26T16:55:40Z',\n", + " 'updatedAt': '2024-01-26T16:55:58Z'}},\n", + " 'canReply': True,\n", + " 'totalReplyCount': 0,\n", + " 'isPublic': True}}" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "response['items'][0]" + ] + }, + { + "cell_type": "markdown", + "id": "ab353a1c-a9a6-485e-9bb7-d6c6ff7e59f6", + "metadata": {}, + "source": [ + "# 특정 video id 를 사용한 영상 정보 가져오기" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "4f0cb8a7-4ef5-41a1-8921-2520e5d6d532", + "metadata": {}, + "outputs": [], + "source": [ + "request = youtube.videos().list(\n", + " part=\"snippet,contentDetails,statistics,liveStreamingDetails\",\n", + " id=\"ON6XV5YCCiI\"\n", + ")\n", + "response = request.execute()" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "b6260c91-a30b-4978-8ef8-b997a9488c60", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'kind': 'youtube#video',\n", + " 'etag': 'DOjhHQtYeGo7PBT-1IaFCHSJpw0',\n", + " 'id': 'ON6XV5YCCiI',\n", + " 'snippet': {'publishedAt': '2023-11-25T07:38:49Z',\n", + " 'channelId': 'UCaKod3X1Tn4c7Ci0iUKcvzQ',\n", + " 'title': '[🔴LIVE] 🏃\\u200d♂️런닝맨 몰아보기🏃\\u200d♂️ | 📺스브스 런닝맨 실시간 스트리밍📢',\n", + " 'description': '런닝맨 ✨24시간 무한 스트리밍✨\\n달리고 달리고 또 달리고 끊임없이 달려..🏃\\u200d♂️🏃\\u200d♂️🏃\\u200d♂️\\n\\n⏰ 스트리밍 일정 : 11월 27일 00시 ~ \\n\\n#스브스 #스브스예능맛집 #런닝맨 #sbs #Runningman',\n", + " 'thumbnails': {'default': {'url': 'https://i.ytimg.com/vi/ON6XV5YCCiI/default_live.jpg',\n", + " 'width': 120,\n", + " 'height': 90},\n", + " 'medium': {'url': 'https://i.ytimg.com/vi/ON6XV5YCCiI/mqdefault_live.jpg',\n", + " 'width': 320,\n", + " 'height': 180},\n", + " 'high': {'url': 'https://i.ytimg.com/vi/ON6XV5YCCiI/hqdefault_live.jpg',\n", + " 'width': 480,\n", + " 'height': 360},\n", + " 'standard': {'url': 'https://i.ytimg.com/vi/ON6XV5YCCiI/sddefault_live.jpg',\n", + " 'width': 640,\n", + " 'height': 480},\n", + " 'maxres': {'url': 'https://i.ytimg.com/vi/ON6XV5YCCiI/maxresdefault_live.jpg',\n", + " 'width': 1280,\n", + " 'height': 720}},\n", + " 'channelTitle': '런닝맨 - 스브스 공식 채널',\n", + " 'tags': ['런닝맨',\n", + " '이광수',\n", + " '유재석',\n", + " '김종국',\n", + " '지석진',\n", + " '양세찬',\n", + " '송지효',\n", + " '하하',\n", + " '전소민',\n", + " '개리',\n", + " '강개리',\n", + " '예능',\n", + " 'RunningMan',\n", + " 'Runningman',\n", + " 'SBS',\n", + " 'sbs',\n", + " 'Entertainment',\n", + " 'running man',\n", + " 'runningman',\n", + " 'Kim Jong Kook',\n", + " 'Lee Kwang Soo',\n", + " 'Ji Seok Jin',\n", + " 'Yoo Jae Suk',\n", + " 'Song Ji Hyo',\n", + " 'Haha',\n", + " 'Gary',\n", + " 'Yang Se Chan',\n", + " 'Jeon So Min',\n", + " 'chạy đi chờ chi',\n", + " '에피소드',\n", + " '모음집',\n", + " '모음',\n", + " '이름표',\n", + " '이름표 떼기',\n", + " '레전드'],\n", + " 'categoryId': '24',\n", + " 'liveBroadcastContent': 'live',\n", + " 'defaultLanguage': 'ko',\n", + " 'localized': {'title': '[🔴LIVE] 🏃\\u200d♂️런닝맨 몰아보기🏃\\u200d♂️ | 📺스브스 런닝맨 실시간 스트리밍📢',\n", + " 'description': '런닝맨 ✨24시간 무한 스트리밍✨\\n달리고 달리고 또 달리고 끊임없이 달려..🏃\\u200d♂️🏃\\u200d♂️🏃\\u200d♂️\\n\\n⏰ 스트리밍 일정 : 11월 27일 00시 ~ \\n\\n#스브스 #스브스예능맛집 #런닝맨 #sbs #Runningman'},\n", + " 'defaultAudioLanguage': 'ko'},\n", + " 'contentDetails': {'duration': 'P0D',\n", + " 'dimension': '2d',\n", + " 'definition': 'sd',\n", + " 'caption': 'false',\n", + " 'licensedContent': True,\n", + " 'contentRating': {},\n", + " 'projection': 'rectangular'},\n", + " 'statistics': {'viewCount': '10780327',\n", + " 'likeCount': '21269',\n", + " 'favoriteCount': '0',\n", + " 'commentCount': '0'},\n", + " 'liveStreamingDetails': {'actualStartTime': '2023-11-27T00:55:35Z',\n", + " 'scheduledStartTime': '2023-11-26T15:00:00Z',\n", + " 'concurrentViewers': '5283',\n", + " 'activeLiveChatId': 'Cg0KC09ONlhWNVlDQ2lJKicKGFVDYUtvZDNYMVRuNGM3Q2kwaVVLY3Z6URILT042WFY1WUNDaUk'}}" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "response['items'][0]" + ] + }, + { + "cell_type": "markdown", + "id": "961225ac-96e9-40b8-b8be-0623b5d8848b", + "metadata": {}, + "source": [ + "# 카테고리 확인" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "efb237b1-dd20-4ba1-94ee-ddc15f0a10d3", + "metadata": {}, + "outputs": [], + "source": [ + "request = youtube.videoCategories().list(\n", + " part=\"snippet\",\n", + " regionCode=\"kr\"\n", + ")\n", + "response = request.execute()" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "a2864d24-2db9-4721-b7a6-b6ddba355cc3", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Film & Animation : 1\n", + "Autos & Vehicles : 2\n", + "Music : 10\n", + "Pets & Animals : 15\n", + "Sports : 17\n", + "Short Movies : 18\n", + "Travel & Events : 19\n", + "Gaming : 20\n", + "Videoblogging : 21\n", + "People & Blogs : 22\n", + "Comedy : 23\n", + "Entertainment : 24\n", + "News & Politics : 25\n", + "Howto & Style : 26\n", + "Education : 27\n", + "Science & Technology : 28\n", + "Movies : 30\n", + "Anime/Animation : 31\n", + "Action/Adventure : 32\n", + "Classics : 33\n", + "Comedy : 34\n", + "Documentary : 35\n", + "Drama : 36\n", + "Family : 37\n", + "Foreign : 38\n", + "Horror : 39\n", + "Sci-Fi/Fantasy : 40\n", + "Thriller : 41\n", + "Shorts : 42\n", + "Shows : 43\n", + "Trailers : 44\n" + ] + } + ], + "source": [ + "for i in response['items']:\n", + " print(i['snippet']['title'], \":\", i['id'])" + ] + }, + { + "cell_type": "markdown", + "id": "003b05c3-9482-4b76-bfc8-c0fad4077c2d", + "metadata": {}, + "source": [ + "# video 카테고리를 사용하여 가장 인기 많은 영상" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "id": "86ed356e-b9c2-4f19-b71d-bac080ef1761", + "metadata": {}, + "outputs": [], + "source": [ + "request = youtube.videos().list(\n", + " part=\"snippet,contentDetails,statistics\",\n", + " chart=\"mostPopular\",\n", + " regionCode=\"KR\",\n", + " videoCategoryId=\"20\"\n", + ")\n", + "response = request.execute()" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "id": "0f22a2c7-92a1-4fb8-ac18-7d1d25c6040a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'kind': 'youtube#video',\n", + " 'etag': 'B4Iyju846LbAbSurPkWXMCA794s',\n", + " 'id': 'hvZtcOdkizQ',\n", + " 'snippet': {'publishedAt': '2024-01-28T12:17:19Z',\n", + " 'channelId': 'UCw1DsweY9b2AKGjV4kGJP1A',\n", + " 'title': 'DRX vs BRO - HLE vs T1 | 2024 LCK 스프링 스플릿',\n", + " 'description': '#LCK #HouseofLegends \\n\\n✅ LIVE & LIVE VOD\\n- LoL e스포츠 홈페이지: https://lolesports.com/\\n- 네이버: https://sports.news.naver.com/esports/index.nhn\\n- 아프리카TV: http://bj.afreecatv.com/aflol\\n\\n✅ LCK 채널 구독 및 좋아요!\\n- LCK 공식 페이스북: https://www.facebook.com/officiallck\\n- LCK 공식 인스타그램: https://www.instagram.com/lckofficial/\\n- LCK 공식 틱톡 : https://tiktok.com/@lck_official\\n- LCK 공식 트위터 (영문): https://twitter.com/LCK\\n\\n* LCK 채널의 모든 영상은 라이엇 게임즈 코리아의 자산으로, 본 콘텐츠를 무단 복제, 도용하거나 상업적으로 이용하는 행위는 금지되며 이를 위반할 경우 관련법에 의거 법적 처벌을 받을 수 있음을 알려드립니다.',\n", + " 'thumbnails': {'default': {'url': 'https://i.ytimg.com/vi/hvZtcOdkizQ/default.jpg',\n", + " 'width': 120,\n", + " 'height': 90},\n", + " 'medium': {'url': 'https://i.ytimg.com/vi/hvZtcOdkizQ/mqdefault.jpg',\n", + " 'width': 320,\n", + " 'height': 180},\n", + " 'high': {'url': 'https://i.ytimg.com/vi/hvZtcOdkizQ/hqdefault.jpg',\n", + " 'width': 480,\n", + " 'height': 360},\n", + " 'standard': {'url': 'https://i.ytimg.com/vi/hvZtcOdkizQ/sddefault.jpg',\n", + " 'width': 640,\n", + " 'height': 480},\n", + " 'maxres': {'url': 'https://i.ytimg.com/vi/hvZtcOdkizQ/maxresdefault.jpg',\n", + " 'width': 1280,\n", + " 'height': 720}},\n", + " 'channelTitle': 'LCK',\n", + " 'tags': ['LCK',\n", + " 'LCK Korea',\n", + " '롤챔스',\n", + " '티원',\n", + " '에욱',\n", + " 'SNL',\n", + " 'LCK썸네일',\n", + " '편집자',\n", + " '스크',\n", + " 'T1',\n", + " 'SKT',\n", + " 'skt',\n", + " 't1',\n", + " '썸네일',\n", + " 'DK',\n", + " 'GEN',\n", + " 'DRX',\n", + " 'KT',\n", + " 'HLE',\n", + " 'POG',\n", + " 'MVP',\n", + " 'WORLDS',\n", + " '롤드컵',\n", + " 'MSI',\n", + " 'ALLSTAR',\n", + " 'lck 서머',\n", + " 'lck 썸머',\n", + " 'lck 써머',\n", + " 'lck 스프링',\n", + " 'lck summer',\n", + " 'lck spring',\n", + " 'LSB',\n", + " 'NS',\n", + " '한화생명',\n", + " '농심',\n", + " '케이티',\n", + " '젠지',\n", + " '아프리카',\n", + " '담원',\n", + " '브리온',\n", + " 'Brion',\n", + " 'BRO',\n", + " '므시',\n", + " '올스타',\n", + " '매드무비',\n", + " '위클리 코맨터리',\n", + " 'MIC Check',\n", + " 'MIC 첵',\n", + " '롤분토론',\n", + " '동준좌',\n", + " '클템',\n", + " '성캐',\n", + " '위클리 매드무비',\n", + " '전프시',\n", + " '오프더레코드',\n", + " '월드챔피언십',\n", + " '단톡',\n", + " '롤더넥',\n", + " '마이크체크',\n", + " '광동',\n", + " '광동프릭스',\n", + " 'KDF',\n", + " 'Kwangdong Freecs',\n", + " '베스트모먼트',\n", + " '롤리나잇',\n", + " '레알클래스',\n", + " '성캐쇼',\n", + " 'LCK10주년',\n", + " '혓바닥터스',\n", + " '헬리오스',\n", + " '캡틴잭',\n", + " '빠른별',\n", + " '샤이',\n", + " '리브샌박',\n", + " '디플러스 기아',\n", + " '디플',\n", + " '플레임',\n", + " '시크릿보드룸',\n", + " '단군',\n", + " '리뷰데스크',\n", + " '포니',\n", + " '꼬꼬갓',\n", + " '고수진',\n", + " '배혜지',\n", + " '함예진',\n", + " '윤수빈',\n", + " '2023LCK',\n", + " '2023롤챔스',\n", + " '노페',\n", + " '후니',\n", + " '박진영'],\n", + " 'categoryId': '20',\n", + " 'liveBroadcastContent': 'none',\n", + " 'defaultLanguage': 'ko',\n", + " 'localized': {'title': 'DRX vs BRO - HLE vs T1 | 2024 LCK 스프링 스플릿',\n", + " 'description': '#LCK #HouseofLegends \\n\\n✅ LIVE & LIVE VOD\\n- LoL e스포츠 홈페이지: https://lolesports.com/\\n- 네이버: https://sports.news.naver.com/esports/index.nhn\\n- 아프리카TV: http://bj.afreecatv.com/aflol\\n\\n✅ LCK 채널 구독 및 좋아요!\\n- LCK 공식 페이스북: https://www.facebook.com/officiallck\\n- LCK 공식 인스타그램: https://www.instagram.com/lckofficial/\\n- LCK 공식 틱톡 : https://tiktok.com/@lck_official\\n- LCK 공식 트위터 (영문): https://twitter.com/LCK\\n\\n* LCK 채널의 모든 영상은 라이엇 게임즈 코리아의 자산으로, 본 콘텐츠를 무단 복제, 도용하거나 상업적으로 이용하는 행위는 금지되며 이를 위반할 경우 관련법에 의거 법적 처벌을 받을 수 있음을 알려드립니다.'},\n", + " 'defaultAudioLanguage': 'en'},\n", + " 'contentDetails': {'duration': 'PT5H59M35S',\n", + " 'dimension': '2d',\n", + " 'definition': 'hd',\n", + " 'caption': 'false',\n", + " 'licensedContent': True,\n", + " 'contentRating': {},\n", + " 'projection': 'rectangular'},\n", + " 'statistics': {'viewCount': '1974895',\n", + " 'favoriteCount': '0',\n", + " 'commentCount': '79'}}" + ] + }, + "execution_count": 54, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "response['items'][0]" + ] + }, + { + "cell_type": "markdown", + "id": "d06a6a09-4db4-4e4b-a344-b0e43d32c4e5", + "metadata": {}, + "source": [ + "# live인 방송만 뽑아오기" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "a8b13d06-1bee-4f03-baf7-047f3c858989", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "C:\\Users\\PC\\AppData\\Local\\Temp\\ipykernel_17560\\2446556752.py:2: DeprecationWarning: \n", + "Pyarrow will become a required dependency of pandas in the next major release of pandas (pandas 3.0),\n", + "(to allow more performant data types, such as the Arrow string type, and better interoperability with other libraries)\n", + "but was not found to be installed on your system.\n", + "If this would cause problems for you,\n", + "please provide us feedback at https://github.com/pandas-dev/pandas/issues/54466\n", + " \n", + " import pandas as pd\n" + ] + } + ], + "source": [ + "from googleapiclient.discovery import build\n", + "import pandas as pd" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "id": "6569bba1-2621-489d-b6d4-61b789090902", + "metadata": {}, + "outputs": [], + "source": [ + "request = youtube.search().list(\n", + " part=\"snippet\",\n", + " eventType=\"live\",\n", + " maxResults=25,\n", + " # videoCategoryId=20,\n", + " regionCode='KR',\n", + " type=\"video\"\n", + ")\n", + "response = request.execute()" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "id": "35ec5844-8461-4ac7-87ba-6f3e319cbe8e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'kind': 'youtube#searchResult',\n", + " 'etag': '653UrlbMJyDV22-R10EmPjqpBz8',\n", + " 'id': {'kind': 'youtube#video', 'videoId': 'I4bDgYHmw_0'},\n", + " 'snippet': {'publishedAt': '2024-01-29T04:58:16Z',\n", + " 'channelId': 'UCcQTRi69dsVYHN3exePtZ1A',\n", + " 'title': '[🔴이슈] 가자전쟁 후 첫 미군 사망…이란 "우리와 무관" vs 바이든 "보복하겠다" 선언/중동 전면전 확대 가능성도/2024년 1월 29일(월)/KBS',\n", + " 'description': '가자지구 전쟁 발발 이후 긴장이 고조되던 중동에서 미군이 처음으로 적의 공격에 사망하는 일이 발생했습니다. 미국에서 강력한 보복 ...',\n", + " 'thumbnails': {'default': {'url': 'https://i.ytimg.com/vi/I4bDgYHmw_0/default_live.jpg',\n", + " 'width': 120,\n", + " 'height': 90},\n", + " 'medium': {'url': 'https://i.ytimg.com/vi/I4bDgYHmw_0/mqdefault_live.jpg',\n", + " 'width': 320,\n", + " 'height': 180},\n", + " 'high': {'url': 'https://i.ytimg.com/vi/I4bDgYHmw_0/hqdefault_live.jpg',\n", + " 'width': 480,\n", + " 'height': 360}},\n", + " 'channelTitle': 'KBS News',\n", + " 'liveBroadcastContent': 'live',\n", + " 'publishTime': '2024-01-29T04:58:16Z'}}" + ] + }, + "execution_count": 55, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "response['items'][0]" + ] + }, + { + "cell_type": "markdown", + "id": "7b7a0bdf-6085-4afd-be2b-fe966ce4ed2d", + "metadata": {}, + "source": [ + "# 특정 채널 ID를 가지고 있으면 live 추적 가능" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "id": "ee4d62f6-96c8-4a18-b163-8a79ce9b5c38", + "metadata": {}, + "outputs": [], + "source": [ + "request = youtube.search().list(\n", + " part=\"snippet\",\n", + " eventType=\"live\",\n", + " maxResults=25,\n", + " regionCode='KR',\n", + " type=\"video\",\n", + " channelId='UCaKod3X1Tn4c7Ci0iUKcvzQ'\n", + ")\n", + "response = request.execute()" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "id": "f2dd8b3a-06f5-429c-bcb0-dac03591973f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'kind': 'youtube#searchListResponse',\n", + " 'etag': 'ttmsTFJ4chnZlIiaDfAQQ-6SVTs',\n", + " 'regionCode': 'KR',\n", + " 'pageInfo': {'totalResults': 1, 'resultsPerPage': 1},\n", + " 'items': [{'kind': 'youtube#searchResult',\n", + " 'etag': 'lb-xm7ZqOlpA-nC7bCYRUdrOanc',\n", + " 'id': {'kind': 'youtube#video', 'videoId': 'ON6XV5YCCiI'},\n", + " 'snippet': {'publishedAt': '2023-11-25T07:38:49Z',\n", + " 'channelId': 'UCaKod3X1Tn4c7Ci0iUKcvzQ',\n", + " 'title': '[🔴LIVE] 🏃\\u200d♂️런닝맨 몰아보기🏃\\u200d♂️ | 📺스브스 런닝맨 실시간 스트리밍📢',\n", + " 'description': '런닝맨 ✨24시간 무한 스트리밍✨ 달리고 달리고 또 달리고 끊임없이 달려.. \\u200d♂️ \\u200d♂️ \\u200d♂️ ⏰ 스트리밍 일정 : 11월 27일 00시 ...',\n", + " 'thumbnails': {'default': {'url': 'https://i.ytimg.com/vi/ON6XV5YCCiI/default_live.jpg',\n", + " 'width': 120,\n", + " 'height': 90},\n", + " 'medium': {'url': 'https://i.ytimg.com/vi/ON6XV5YCCiI/mqdefault_live.jpg',\n", + " 'width': 320,\n", + " 'height': 180},\n", + " 'high': {'url': 'https://i.ytimg.com/vi/ON6XV5YCCiI/hqdefault_live.jpg',\n", + " 'width': 480,\n", + " 'height': 360}},\n", + " 'channelTitle': '런닝맨 - 스브스 공식 채널',\n", + " 'liveBroadcastContent': 'live',\n", + " 'publishTime': '2023-11-25T07:38:49Z'}}]}" + ] + }, + "execution_count": 42, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "response" + ] + }, + { + "cell_type": "markdown", + "id": "2898219c-c4f0-41ce-bc87-7946bdc363c6", + "metadata": {}, + "source": [ + "# 채널 정보" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "id": "827ce6e6-15f7-471f-9c28-e241289c38e0", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'kind': 'youtube#channelListResponse',\n", + " 'etag': 'rIqEixEUzlTahbpRQ_LO4K3H4f8',\n", + " 'pageInfo': {'totalResults': 1, 'resultsPerPage': 5},\n", + " 'items': [{'kind': 'youtube#channel',\n", + " 'etag': 'xoSAU6HG_UEqKgGdBPLvZ_zqH3g',\n", + " 'id': 'UCaKod3X1Tn4c7Ci0iUKcvzQ',\n", + " 'snippet': {'title': '런닝맨 - 스브스 공식 채널',\n", + " 'description': 'SBS Running Man은 SBS [런닝맨] 공식 예능 스튜디오 입니다.\\n런닝맨에서 나왔던 화제있는 장면을 모아 구성한 [예능맛ZIP], 그리고 런닝맨 통해 선보였던\\n다양한 케미를 자랑하는 [케미 모음ZIP] 까지! 구독자분들이 웃음없이 볼 수 없는 다양한 contents로 찾아 뵙겠습니다.\\nSBS Running Man 의 많은 사랑 부탁드립니다.\\n\\n▶ Partnership & Sales inquiry: contentspartner@sbs.co.kr\\nⓒSBS. Corp ALL RIGHTS RESERVED',\n", + " 'customUrl': '@sbsrunningman',\n", + " 'publishedAt': '2011-03-22T03:58:14Z',\n", + " 'thumbnails': {'default': {'url': 'https://yt3.ggpht.com/w_-LFDAZ6IuoN2cAETzjXALif41WE9uv0SxWQyViV1vb1xb7TJ51o8GBqg_1tl6tXm9DaDpKmw=s88-c-k-c0x00ffffff-no-rj',\n", + " 'width': 88,\n", + " 'height': 88},\n", + " 'medium': {'url': 'https://yt3.ggpht.com/w_-LFDAZ6IuoN2cAETzjXALif41WE9uv0SxWQyViV1vb1xb7TJ51o8GBqg_1tl6tXm9DaDpKmw=s240-c-k-c0x00ffffff-no-rj',\n", + " 'width': 240,\n", + " 'height': 240},\n", + " 'high': {'url': 'https://yt3.ggpht.com/w_-LFDAZ6IuoN2cAETzjXALif41WE9uv0SxWQyViV1vb1xb7TJ51o8GBqg_1tl6tXm9DaDpKmw=s800-c-k-c0x00ffffff-no-rj',\n", + " 'width': 800,\n", + " 'height': 800}},\n", + " 'defaultLanguage': 'ko',\n", + " 'localized': {'title': '런닝맨 - 스브스 공식 채널',\n", + " 'description': 'SBS Running Man은 SBS [런닝맨] 공식 예능 스튜디오 입니다.\\n런닝맨에서 나왔던 화제있는 장면을 모아 구성한 [예능맛ZIP], 그리고 런닝맨 통해 선보였던\\n다양한 케미를 자랑하는 [케미 모음ZIP] 까지! 구독자분들이 웃음없이 볼 수 없는 다양한 contents로 찾아 뵙겠습니다.\\nSBS Running Man 의 많은 사랑 부탁드립니다.\\n\\n▶ Partnership & Sales inquiry: contentspartner@sbs.co.kr\\nⓒSBS. Corp ALL RIGHTS RESERVED'},\n", + " 'country': 'KR'},\n", + " 'contentDetails': {'relatedPlaylists': {'likes': '',\n", + " 'uploads': 'UUaKod3X1Tn4c7Ci0iUKcvzQ'}},\n", + " 'statistics': {'viewCount': '5320487316',\n", + " 'subscriberCount': '3180000',\n", + " 'hiddenSubscriberCount': False,\n", + " 'videoCount': '55928'}}]}" + ] + }, + "execution_count": 48, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "request = youtube.channels().list(\n", + " part=\"snippet,contentDetails,statistics\",\n", + " id=\"UCaKod3X1Tn4c7Ci0iUKcvzQ\"\n", + ")\n", + "response = request.execute()\n", + "\n", + "response" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "cc7547ab-c1c5-4e40-a02c-131811d36d71", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.6" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/dataCollector/youtube/youtube_time_test.ipynb b/dataCollector/youtube/youtube_time_test.ipynb new file mode 100644 index 0000000..63d1986 --- /dev/null +++ b/dataCollector/youtube/youtube_time_test.ipynb @@ -0,0 +1,759 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 3, + "id": "b21bd9db-6c94-4d71-b5b0-7be0288930f7", + "metadata": {}, + "outputs": [], + "source": [ + "from googleapiclient.discovery import build\n", + "import pandas as pd\n", + "import time\n", + "from datetime import datetime" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "id": "73d904b1-4ce4-4dad-b5c2-dca99552d7c7", + "metadata": {}, + "outputs": [], + "source": [ + "api_key = 'api_key'\n", + "youtube = build('youtube', 'v3', developerKey=api_key)" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "id": "857b4212-b4e3-48bd-b506-0e7e1e002360", + "metadata": {}, + "outputs": [], + "source": [ + "def test_time(num):\n", + " df = pd.DataFrame(columns = ['id', 'time', 'viewer_num'])\n", + " now = datetime.now()\n", + " \n", + " # 지금 라이브하고 있는 방송 목록\n", + " request = youtube.search().list(\n", + " part=\"snippet\",\n", + " eventType=\"live\",\n", + " maxResults=num,\n", + " # videoCategoryId=20,\n", + " regionCode='KR',\n", + " type=\"video\"\n", + " )\n", + " response = request.execute()\n", + "\n", + " channel_list = []\n", + " for item in response['items']:\n", + " channel_list.append(item['snippet']['channelId'])\n", + "\n", + " # 방송 목록 서치 및 각 영상의 정보 추출\n", + " l_ts = time.time()\n", + " for channel in channel_list:\n", + " request = youtube.search().list(\n", + " part=\"snippet\",\n", + " eventType=\"live\",\n", + " maxResults=25,\n", + " regionCode='KR',\n", + " type=\"video\",\n", + " \n", + " )\n", + " ch_response = request.execute()\n", + " video_id = ch_response['items'][0]['id']['videoId']\n", + "\n", + " request = youtube.videos().list(\n", + " part=\"snippet,contentDetails,statistics,liveStreamingDetails\",\n", + " id = video_id\n", + " )\n", + " \n", + " response = request.execute()\n", + " item = response['items'][0]\n", + " # concurrentViewers가 없다고 에러가 나서 추가\n", + " # 그 뒤로는 에러가 난 적이 없어서 어떤 상황인지 아직 찾지 못했음.\n", + " if item['liveStreamingDetails']['concurrentViewers']:\n", + " df.loc[len(df)] = [video_id, now.strftime('%Y-%m-%d %H:%M'), item['liveStreamingDetails']['concurrentViewers']]\n", + " else:\n", + " print(item)\n", + "\n", + " \n", + " l_ts = time.time() - l_ts\n", + " print(l_ts)\n", + "\n", + " return df" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "id": "399bd60e-295c-471b-90b1-6347b26e655a", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "7.071439266204834\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
idtimeviewer_num
0Asce58GWzdQ2024-02-14 16:46:38.919179149
1QCYog76yM0I2024-02-14 16:46:39.3367622764
2Asce58GWzdQ2024-02-14 16:46:39.750743149
3EI8Ben5kwuM2024-02-14 16:46:40.01532010
4QCYog76yM0I2024-02-14 16:46:40.2859892764
5QCYog76yM0I2024-02-14 16:46:40.5467122764
6EI8Ben5kwuM2024-02-14 16:46:40.78183010
7EI8Ben5kwuM2024-02-14 16:46:41.06059110
8V9weuPvtEWQ2024-02-14 16:46:41.314881583
9QCYog76yM0I2024-02-14 16:46:41.5623322764
10FM9NT9CWpqQ2024-02-14 16:46:41.831870679
11EI8Ben5kwuM2024-02-14 16:46:42.16686910
12EI8Ben5kwuM2024-02-14 16:46:42.43139810
13QCYog76yM0I2024-02-14 16:46:42.6831192764
14EI8Ben5kwuM2024-02-14 16:46:42.91732810
15TPcmrPrygDc2024-02-14 16:46:43.198030858
16EI8Ben5kwuM2024-02-14 16:46:43.44889810
17QCYog76yM0I2024-02-14 16:46:43.6985702764
186IquAgfvYmc2024-02-14 16:46:43.963778520
19Z7WYI3Po8tk2024-02-14 16:46:44.23163180
20Rq30qpcJKGM2024-02-14 16:46:44.512825253
21HuAYTP6LHP02024-02-14 16:46:44.7865923452
22QCYog76yM0I2024-02-14 16:46:45.0663612764
23Asce58GWzdQ2024-02-14 16:46:45.309406149
24QCYog76yM0I2024-02-14 16:46:45.5636342764
\n", + "
" + ], + "text/plain": [ + " id time viewer_num\n", + "0 Asce58GWzdQ 2024-02-14 16:46:38.919179 149\n", + "1 QCYog76yM0I 2024-02-14 16:46:39.336762 2764\n", + "2 Asce58GWzdQ 2024-02-14 16:46:39.750743 149\n", + "3 EI8Ben5kwuM 2024-02-14 16:46:40.015320 10\n", + "4 QCYog76yM0I 2024-02-14 16:46:40.285989 2764\n", + "5 QCYog76yM0I 2024-02-14 16:46:40.546712 2764\n", + "6 EI8Ben5kwuM 2024-02-14 16:46:40.781830 10\n", + "7 EI8Ben5kwuM 2024-02-14 16:46:41.060591 10\n", + "8 V9weuPvtEWQ 2024-02-14 16:46:41.314881 583\n", + "9 QCYog76yM0I 2024-02-14 16:46:41.562332 2764\n", + "10 FM9NT9CWpqQ 2024-02-14 16:46:41.831870 679\n", + "11 EI8Ben5kwuM 2024-02-14 16:46:42.166869 10\n", + "12 EI8Ben5kwuM 2024-02-14 16:46:42.431398 10\n", + "13 QCYog76yM0I 2024-02-14 16:46:42.683119 2764\n", + "14 EI8Ben5kwuM 2024-02-14 16:46:42.917328 10\n", + "15 TPcmrPrygDc 2024-02-14 16:46:43.198030 858\n", + "16 EI8Ben5kwuM 2024-02-14 16:46:43.448898 10\n", + "17 QCYog76yM0I 2024-02-14 16:46:43.698570 2764\n", + "18 6IquAgfvYmc 2024-02-14 16:46:43.963778 520\n", + "19 Z7WYI3Po8tk 2024-02-14 16:46:44.231631 80\n", + "20 Rq30qpcJKGM 2024-02-14 16:46:44.512825 253\n", + "21 HuAYTP6LHP0 2024-02-14 16:46:44.786592 3452\n", + "22 QCYog76yM0I 2024-02-14 16:46:45.066361 2764\n", + "23 Asce58GWzdQ 2024-02-14 16:46:45.309406 149\n", + "24 QCYog76yM0I 2024-02-14 16:46:45.563634 2764" + ] + }, + "execution_count": 53, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "test_time(25)" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "id": "6f875f36-d8ca-4187-8767-6d7f395235b8", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "13.207098960876465\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
idtimeviewer_num
0lxGJ_u5Bts82024-02-14 16:49:34.88377332
1TPP9dJI7BIE2024-02-14 16:49:35.163899526
2q5KYHzrzojg2024-02-14 16:49:35.4408673430
3QCYog76yM0I2024-02-14 16:49:35.6885232704
4Y0akbJExkW82024-02-14 16:49:35.9600501000
5EI8Ben5kwuM2024-02-14 16:49:36.39991411
6-VBxijFm50Y2024-02-14 16:49:36.6504592181
7lxGJ_u5Bts82024-02-14 16:49:36.91097832
8QCYog76yM0I2024-02-14 16:49:37.1576872704
9EI8Ben5kwuM2024-02-14 16:49:37.41070311
10QCYog76yM0I2024-02-14 16:49:37.6544602704
11lxGJ_u5Bts82024-02-14 16:49:37.91560532
12Y0akbJExkW82024-02-14 16:49:38.2106941000
13Y0akbJExkW82024-02-14 16:49:38.4961061000
14EI8Ben5kwuM2024-02-14 16:49:38.72744011
15lxGJ_u5Bts82024-02-14 16:49:39.00547132
16HuAYTP6LHP02024-02-14 16:49:39.2453923428
17r3kn-dWlOfo2024-02-14 16:49:39.536310326
18QCYog76yM0I2024-02-14 16:49:39.7821732704
19EI8Ben5kwuM2024-02-14 16:49:40.02964011
20QCYog76yM0I2024-02-14 16:49:40.2971192704
21EI8Ben5kwuM2024-02-14 16:49:40.54835010
22QCYog76yM0I2024-02-14 16:49:40.7906122704
23lxGJ_u5Bts82024-02-14 16:49:41.04043532
24QCYog76yM0I2024-02-14 16:49:41.3027392704
25EI8Ben5kwuM2024-02-14 16:49:41.53395410
26EI8Ben5kwuM2024-02-14 16:49:41.78661010
27Y0akbJExkW82024-02-14 16:49:42.0455141002
28QCYog76yM0I2024-02-14 16:49:42.2826222704
29B4JHZhqcOU42024-02-14 16:49:42.531396330
30QCYog76yM0I2024-02-14 16:49:42.7705112704
31hk2deOYjtKY2024-02-14 16:49:43.045975307
32HuAYTP6LHP02024-02-14 16:49:43.3346053428
33EI8Ben5kwuM2024-02-14 16:49:43.57160610
34QCYog76yM0I2024-02-14 16:49:43.8318582704
35JIOSdOyhmuk2024-02-14 16:49:44.079698661
36QCYog76yM0I2024-02-14 16:49:44.3490262704
37EI8Ben5kwuM2024-02-14 16:49:44.60172410
38Y0akbJExkW82024-02-14 16:49:44.8567831002
39BV9iLMMXuXs2024-02-14 16:49:45.129820578
40QCYog76yM0I2024-02-14 16:49:45.3846102735
41Y0akbJExkW82024-02-14 16:49:45.6376701002
42EI8Ben5kwuM2024-02-14 16:49:45.86730910
43QCYog76yM0I2024-02-14 16:49:46.1441422735
44QCYog76yM0I2024-02-14 16:49:46.3828292735
45HuAYTP6LHP02024-02-14 16:49:46.6341093428
46EI8Ben5kwuM2024-02-14 16:49:46.86472910
47QCYog76yM0I2024-02-14 16:49:47.1187122735
48Y0akbJExkW82024-02-14 16:49:47.3751521002
49EI8Ben5kwuM2024-02-14 16:49:47.61878910
\n", + "
" + ], + "text/plain": [ + " id time viewer_num\n", + "0 lxGJ_u5Bts8 2024-02-14 16:49:34.883773 32\n", + "1 TPP9dJI7BIE 2024-02-14 16:49:35.163899 526\n", + "2 q5KYHzrzojg 2024-02-14 16:49:35.440867 3430\n", + "3 QCYog76yM0I 2024-02-14 16:49:35.688523 2704\n", + "4 Y0akbJExkW8 2024-02-14 16:49:35.960050 1000\n", + "5 EI8Ben5kwuM 2024-02-14 16:49:36.399914 11\n", + "6 -VBxijFm50Y 2024-02-14 16:49:36.650459 2181\n", + "7 lxGJ_u5Bts8 2024-02-14 16:49:36.910978 32\n", + "8 QCYog76yM0I 2024-02-14 16:49:37.157687 2704\n", + "9 EI8Ben5kwuM 2024-02-14 16:49:37.410703 11\n", + "10 QCYog76yM0I 2024-02-14 16:49:37.654460 2704\n", + "11 lxGJ_u5Bts8 2024-02-14 16:49:37.915605 32\n", + "12 Y0akbJExkW8 2024-02-14 16:49:38.210694 1000\n", + "13 Y0akbJExkW8 2024-02-14 16:49:38.496106 1000\n", + "14 EI8Ben5kwuM 2024-02-14 16:49:38.727440 11\n", + "15 lxGJ_u5Bts8 2024-02-14 16:49:39.005471 32\n", + "16 HuAYTP6LHP0 2024-02-14 16:49:39.245392 3428\n", + "17 r3kn-dWlOfo 2024-02-14 16:49:39.536310 326\n", + "18 QCYog76yM0I 2024-02-14 16:49:39.782173 2704\n", + "19 EI8Ben5kwuM 2024-02-14 16:49:40.029640 11\n", + "20 QCYog76yM0I 2024-02-14 16:49:40.297119 2704\n", + "21 EI8Ben5kwuM 2024-02-14 16:49:40.548350 10\n", + "22 QCYog76yM0I 2024-02-14 16:49:40.790612 2704\n", + "23 lxGJ_u5Bts8 2024-02-14 16:49:41.040435 32\n", + "24 QCYog76yM0I 2024-02-14 16:49:41.302739 2704\n", + "25 EI8Ben5kwuM 2024-02-14 16:49:41.533954 10\n", + "26 EI8Ben5kwuM 2024-02-14 16:49:41.786610 10\n", + "27 Y0akbJExkW8 2024-02-14 16:49:42.045514 1002\n", + "28 QCYog76yM0I 2024-02-14 16:49:42.282622 2704\n", + "29 B4JHZhqcOU4 2024-02-14 16:49:42.531396 330\n", + "30 QCYog76yM0I 2024-02-14 16:49:42.770511 2704\n", + "31 hk2deOYjtKY 2024-02-14 16:49:43.045975 307\n", + "32 HuAYTP6LHP0 2024-02-14 16:49:43.334605 3428\n", + "33 EI8Ben5kwuM 2024-02-14 16:49:43.571606 10\n", + "34 QCYog76yM0I 2024-02-14 16:49:43.831858 2704\n", + "35 JIOSdOyhmuk 2024-02-14 16:49:44.079698 661\n", + "36 QCYog76yM0I 2024-02-14 16:49:44.349026 2704\n", + "37 EI8Ben5kwuM 2024-02-14 16:49:44.601724 10\n", + "38 Y0akbJExkW8 2024-02-14 16:49:44.856783 1002\n", + "39 BV9iLMMXuXs 2024-02-14 16:49:45.129820 578\n", + "40 QCYog76yM0I 2024-02-14 16:49:45.384610 2735\n", + "41 Y0akbJExkW8 2024-02-14 16:49:45.637670 1002\n", + "42 EI8Ben5kwuM 2024-02-14 16:49:45.867309 10\n", + "43 QCYog76yM0I 2024-02-14 16:49:46.144142 2735\n", + "44 QCYog76yM0I 2024-02-14 16:49:46.382829 2735\n", + "45 HuAYTP6LHP0 2024-02-14 16:49:46.634109 3428\n", + "46 EI8Ben5kwuM 2024-02-14 16:49:46.864729 10\n", + "47 QCYog76yM0I 2024-02-14 16:49:47.118712 2735\n", + "48 Y0akbJExkW8 2024-02-14 16:49:47.375152 1002\n", + "49 EI8Ben5kwuM 2024-02-14 16:49:47.618789 10" + ] + }, + "execution_count": 57, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "test_time(50)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d0af906e-7d92-4635-a7e7-1369031487ad", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.6" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From 3d37846bc2452f44cb263f09366b20e4f5169ab3 Mon Sep 17 00:00:00 2001 From: danee <9356471@gmail.com> Date: Wed, 14 Feb 2024 20:40:00 +0900 Subject: [PATCH 016/249] [refactor] add channelId --- dataCollector/youtube/youtube_time_test.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dataCollector/youtube/youtube_time_test.ipynb b/dataCollector/youtube/youtube_time_test.ipynb index 63d1986..2c7020e 100644 --- a/dataCollector/youtube/youtube_time_test.ipynb +++ b/dataCollector/youtube/youtube_time_test.ipynb @@ -59,7 +59,7 @@ " maxResults=25,\n", " regionCode='KR',\n", " type=\"video\",\n", - " \n", + " channelId = channel\n", " )\n", " ch_response = request.execute()\n", " video_id = ch_response['items'][0]['id']['videoId']\n", From 7cc2cadfbda4d48876ab059a8810cd2c04686379 Mon Sep 17 00:00:00 2001 From: poriz Date: Thu, 15 Feb 2024 14:59:29 +0900 Subject: [PATCH 017/249] [feat] get_streamerid --- dataCollector/chzzk/chzzk_live_status.py | 4 ++- dataCollector/chzzk/get_chzzk_streamerid.py | 34 +++++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 dataCollector/chzzk/get_chzzk_streamerid.py diff --git a/dataCollector/chzzk/chzzk_live_status.py b/dataCollector/chzzk/chzzk_live_status.py index 93439d1..b9bb1c5 100644 --- a/dataCollector/chzzk/chzzk_live_status.py +++ b/dataCollector/chzzk/chzzk_live_status.py @@ -1,11 +1,12 @@ import requests +import json from selenium import webdriver from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.by import By -channel_id = ['1a1dd9ce56fb61a37ffb6f69f6d5b978'] # 강퀴 +channel_id = ['153f28bc51764c3b03d34ea06492f727'] # chzzk_url = 'https://chzzk.naver.com/live/' # IF LIVE STREAM IS TRUE @@ -15,6 +16,7 @@ res = requests.get(f"https://api.chzzk.naver.com/polling/v2/channels/{channel_id[0]}/live-status") check_live = res.json() print(check_live) +print(json.dumps(check_live,indent=4,ensure_ascii=False)) # Crawling functions that operate asynchronously # streaming data diff --git a/dataCollector/chzzk/get_chzzk_streamerid.py b/dataCollector/chzzk/get_chzzk_streamerid.py new file mode 100644 index 0000000..8959471 --- /dev/null +++ b/dataCollector/chzzk/get_chzzk_streamerid.py @@ -0,0 +1,34 @@ +from selenium import webdriver +from bs4 import BeautifulSoup +import time + +name_list = ["한동숙입니다", "울프Wolf", "녹두로로", "이춘향이오", "풍월량월풍월량", "찐짜탬탬버린", "랄로10", "삼식123", "괴물쥐", "핫다주", "김뚜띠2", "따효니DDaHyoNi", "강퀴88", "파카", "옥냥이RoofTopCat", "김도KimDoe", "지누", "피닉스박", "죠니월드", "플러리", "러너Runner", "아야츠노유니본인", "아이리칸나에요"] + +base_url = "https://chzzk.naver.com/search?query=" + +# Selenium 웹드라이버 실행 +driver = webdriver.Chrome() + +for name in name_list: + url = base_url + name + + # 웹 페이지 열기 + driver.get(url) + time.sleep(2) + # 웹 페이지 소스 가져오기 + html = driver.page_source + + # BeautifulSoup으로 파싱 + soup = BeautifulSoup(html, 'html.parser') + + # XPath에 해당하는 요소 찾기 + element = soup.select_one('html > body > div:nth-of-type(1) > div > div:nth-of-type(4) > div > section > section:nth-of-type(1) > div:nth-of-type(1) > div:nth-of-type(1) > a:nth-of-type(1)') + + if element: + id_value = element['href'] + print(name, id_value) + else: + print(name, "ID를 찾을 수 없습니다.") + +# Selenium 웹드라이버 종료 +driver.quit() From 8ef94126057958bd8f799f2eccc05bbfe3daf4fe Mon Sep 17 00:00:00 2001 From: poriz Date: Thu, 15 Feb 2024 16:05:37 +0900 Subject: [PATCH 018/249] [feat] get_gameid --- dataCollector/chzzk/game_list.py | 300 +++++++++++++++++++++++++++++++ 1 file changed, 300 insertions(+) create mode 100644 dataCollector/chzzk/game_list.py diff --git a/dataCollector/chzzk/game_list.py b/dataCollector/chzzk/game_list.py new file mode 100644 index 0000000..064282f --- /dev/null +++ b/dataCollector/chzzk/game_list.py @@ -0,0 +1,300 @@ +games = ['Counter-Strike 2', + 'Palworld', + 'Dota 2', + 'Source SDK Base 2007', + 'HELLDIVERS™ 2', + 'Apex Legends', + "Baldur's Gate 3", + 'Grand Theft Auto V', + 'Call of Duty®', + 'PUBG: BATTLEGROUNDS', + "Tom Clancy's Rainbow Six Siege", + 'Rust', + 'Warframe', + 'War Thunder', + 'Team Fortress 2', + 'Wallpaper Engine', + 'Football Manager 2024', + 'Granblue Fantasy: Relink', + 'Enshrouded', + 'Unturned', + 'Lost Ark', + 'Lethal Company', + 'EA SPORTS FC™ 24', + 'ELDEN RING', + 'MIR4', + 'NARAKA: BLADEPOINT', + 'DayZ', + "Sid Meier's Civilization VI", + 'Red Dead Redemption 2', + 'Overwatch® 2', + 'Destiny 2', + 'Governor of Poker 3', + 'Stardew Valley', + 'Terraria', + 'The Sims™ 4', + 'Cyberpunk 2077', + 'Geometry Dash', + 'Hearts of Iron IV', + 'FINAL FANTASY XIV Online', + 'Rocket League', + 'Yu-Gi-Oh! Master Duel', + 'Project Zomboid', + 'VRChat', + 'The Elder Scrolls V: Skyrim Special Edition', + 'Monster Hunter: World', + 'Spacewar', + 'Dead by Daylight', + 'Black Desert', + 'Persona 3 Reload', + 'PAYDAY 2', + 'THE FINALS', + 'TEKKEN 8', + 'Palworld Dedicated Server', + "Hero's Land", + 'Euro Truck Simulator 2', + '7 Days to Die', + 'ARK: Survival Evolved', + 'Left 4 Dead 2', + 'RimWorld', + 'Path of Exile', + "Garry's Mod", + 'The Binding of Isaac: Rebirth', + 'Valheim', + 'Brawlhalla', + 'Farming Simulator 22', + 'ARK: Survival Ascended', + 'SMITE', + 'Fallout 4', + "Sid Meier's Civilization V", + 'Crosshair X', + 'Last Epoch', + 'Total War: WARHAMMER III', + 'Age of Empires II: Definitive Edition', + 'Crusader Kings III', + 'Soundpad', + 'Mount & Blade II: Bannerlord', + 'Europa Universalis IV', + 'Cookie Clicker', + 'Bloons TD 6', + 'The Elder Scrolls Online', + 'BeamNG.drive', + 'Dead Island Riptide Definitive Edition', + 'New World', + 'Factorio', + 'Like a Dragon: Infinite Wealth', + "Don't Starve Together", + 'tModLoader', + 'Football Manager 2023', + 'Phasmophobia', + 'Hogwarts Legacy', + 'Stellaris', + 'The Witcher 3: Wild Hunt', + 'Battlefield™ V', + 'Arma 3', + 'Summoners War', + 'Assetto Corsa', + 'SCUM', + 'Fallout 76', + 'Persona 5 Royal', + 'Microsoft Flight Simulator', + 'Squad', + 'Hunt: Showdown', + 'Slay the Spire', + 'Sea of Thieves', + 'American Truck Simulator', + 'Albion Online', + 'Risk of Rain 2', + 'Battlefield™ 2042', + 'Satisfactory', + 'Forza Horizon 5', + 'eFootball™ 2024', + 'Conan Exiles', + 'OBS Studio', + 'Deep Rock Galactic', + 'Counter-Strike', + 'Madden NFL 24', + 'VPet', + 'Diablo® IV', + 'VTube Studio', + 'Age of Empires IV: Anniversary Edition', + 'Hell Let Loose', + 'Cities: Skylines', + 'Legends of Idleon MMO', + 'DARK SOULS™ III', + 'Paladins', + 'Blender', + 'Starfield', + 'Halo: The Master Chief Collection', + 'Ready or Not', + 'NBA 2K24', + 'Street Fighter™ 6', + 'Magic: The Gathering Arena', + 'People Playground', + 'MARVEL SNAP', + 'Halo Infinite', + 'Stumble Guys', + 'MapleStory', + 'EA SPORTS™ FIFA 23', + 'Russian Fishing 4', + 'Undisputed', + 'Melvor Idle', + 'World of Warships', + 'Oxygen Not Included', + 'Crab Game', + 'Victoria 3', + 'Hades', + 'Dyson Sphere Program', + 'YoloMouse', + 'Call of Duty: Black Ops III', + 'Limbus Company', + 'Battlefield 1 ™', + 'NBA 2K23', + 'World of Tanks Blitz', + 'MONSTER HUNTER RISE', + 'Hollow Knight', + 'Subnautica', + 'Fallout: New Vegas', + 'Farlight 84', + 'Kenshi', + 'Aimlabs', + 'Cities: Skylines II', + 'Sons Of The Forest', + 'Total War: ROME II - Emperor Edition', + 'DARK SOULS™: REMASTERED', + 'It Takes Two', + 'STAR WARS™: The Old Republic™', + 'Poppy Playtime', + 'Resident Evil 4', + 'Among Us', + 'Divinity: Original Sin 2', + 'Unnamed Space Idle', + 'NGU IDLE', + 'Space Engineers', + '雀魂麻将(MahjongSoul)', + 'Vampire Survivors', + 'Warhammer 40,000: Darktide', + 'Idle Champions of the Forgotten Realms', + 'Crossout', + 'Shop Titans', + 'Yu-Gi-Oh! Duel Links', + "No Man's Sky", + 'Football Manager 2022', + 'Grand Theft Auto IV: The Complete Edition', + 'GrandChase', + 'Aseprite', + 'Raft', + 'Tabletop Simulator', + 'Batman™: Arkham Knight', + 'Age of Empires III: Definitive Edition', + 'For Honor', + 'Total War: THREE KINGDOMS', + 'XCOM 2', + 'Total War: MEDIEVAL II - Definitive Edition', + 'Crosshair V2', + 'Guild Wars 2', + 'FIFA 22', + 'Cult of the Lamb', + 'The Isle', + 'Sekiro™: Shadows Die Twice', + 'ヘブンバーンズレッド', + 'SCP: Secret Laboratory', + 'Crush Crush', + 'Timberborn', + '小黑盒加速器', + 'God of War', + 'ARMORED CORE™ VI FIRES OF RUBICON™', + 'Party Animals', + 'BattleBit Remastered', + 'SnowRunner', + 'Cell to Singularity - Evolution Never Ends', + 'Elite Dangerous', + 'Summoners War: Chronicles', + 'RuneScape', + 'Age of Empires II (2013)', + 'theHunter: Call of the Wild™', + 'Brotato', + 'Against the Storm', + 'Yakuza: Like a Dragon', + 'Days Gone', + 'Mass Effect™ Legendary Edition', + 'ULTRAKILL', + 'The Forest', + 'RISK: Global Domination', + 'Dying Light', + 'Tap Ninja', + 'Counter-Strike: Source', + 'Dying Light 2', + 'MX Bikes', + 'Farmer Against Potatoes Idle', + 'Warhammer 40,000: Rogue Trader', + 'Goose Goose Duck', + 'Plants vs. Zombies: Game of the Year', + 'Clicker Heroes', + 'EVE Online', + 'Horizon Zero Dawn™ Complete Edition', + 'Red Dead Online', + 'Wallpaper Alive', + 'FINAL FANTASY VII REMAKE INTERGRADE', + 'DAVE THE DIVER', + 'Total War: EMPIRE - Definitive Edition', + 'Medieval Dynasty', + 'Broken Arrow Playtest', + 'DEAD OR ALIVE Xtreme Venus Vacation', + 'Planet Zoo', + 'F1® 23', + 'World of Tanks', + 'Lost Light', + 'Borderlands 3', + 'Yakuza 0', + 'Mount & Blade: Warband', + 'Total War: SHOGUN 2', + 'V Rising', + 'Teardown', + '鬼谷八荒 Tale of Immortal', + 'ShareX', + 'Company of Heroes 2', + 'Total War: WARHAMMER II', + 'Anno 1800', + 'Fishing Planet', + 'Forza Horizon 4', + 'Coral Island', + 'STAR WARS Jedi: Survivor™', + 'Grim Dawn', + 'Backpack Battles Demo', + 'Crusader Kings II', + 'Borderlands 2', + "DEATH STRANDING DIRECTOR'S CUT", + 'OVR Advanced Settings', + "Tom Clancy's The Division 2", + 'Rec Room', + 'Farming Simulator 19', + 'Kingdom Come: Deliverance', + 'HITMAN 3', + "Assassin's Creed Odyssey", + 'Pathfinder: Wrath of the Righteous - Enhanced Edition', + 'CarX Drift Racing Online', + 'Darkest Dungeon®', + "Dragon's Dogma: Dark Arisen", + 'Age of Mythology: Extended Edition', + 'STAR WARS™ Empire at War: Gold Pack', + 'DARK SOULS™ II: Scholar of the First Sin', + 'Phantasy Star Online 2 New Genesis', + 'METAL GEAR SOLID V: THE PHANTOM PAIN', + 'Suicide Squad: Kill the Justice League', + 'Combat Master', + 'ASTLIBRA ~生きた証~ Revision', + 'Marvel’s Spider-Man Remastered', + 'Transport Fever 2', + 'Stormworks: Build and Rescue', + 'Persona 4 Golden', + 'STALCRAFT', + 'The Elder Scrolls V: Skyrim', + 'Escape the Backrooms', + 'Overcooked! 2', + 'My Time at Sandrock', + 'Assetto Corsa Competizione', + 'Deep Rock Galactic: Survivor', + 'Need for Speed™ Heat', + 'Tomb Raider I-III Remastered Starring Lara Croft', + 'Battlefield 4™'] \ No newline at end of file From 786d402b929c72a1455bcf55c989793e50f9167f Mon Sep 17 00:00:00 2001 From: poriz Date: Thu, 15 Feb 2024 16:05:41 +0900 Subject: [PATCH 019/249] [feat] get_gameid --- dataCollector/chzzk/get_chzzk_gameid.py | 44 +++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 dataCollector/chzzk/get_chzzk_gameid.py diff --git a/dataCollector/chzzk/get_chzzk_gameid.py b/dataCollector/chzzk/get_chzzk_gameid.py new file mode 100644 index 0000000..f0620d3 --- /dev/null +++ b/dataCollector/chzzk/get_chzzk_gameid.py @@ -0,0 +1,44 @@ +import time +from selenium import webdriver +from bs4 import BeautifulSoup +from game_list import games +import pandas as pd + + +# get steam game id top 100 +game_list = games +# test game_list +# game_list = ['마인크래프트','타르코프','리그오브레전드','펠월드','리썰컴퍼니'] + +chzzk_game_tags = [] +base_url = "https://chzzk.naver.com/search?query=" +driver = webdriver.Chrome() + + +# 자동완성 xpath +# /html/body/div[1]/div/div[3]/div[1]/div/ul/li[1]/a/span[2] + +for game in game_list: + url = base_url + game + driver.get(url) + time.sleep(2) + # 페이지 소스 가져오기 및 BeautifulSoup 객체 생성 + html = driver.page_source + soup = BeautifulSoup(html, 'html.parser') + + # 'video_card_category__xQ15T' 클래스를 가진 span 태그 찾기 + span_element = soup.find('span', class_='video_card_category__xQ15T') + + # span 요소의 존재 여부 확인 + if span_element: + game_name = span_element.text + chzzk_game_tags.append(game_name) + else: + pass +driver.quit() + +# to CSV +df = pd.DataFrame({"game_id": game_list, + "chzzk_game_id": chzzk_game_tags}) + +df.to_csv("game_list.csv",encoding='utf-8') \ No newline at end of file From be3223b7edd6aa28603757d17120afe377c28a21 Mon Sep 17 00:00:00 2001 From: poriz Date: Thu, 15 Feb 2024 19:14:04 +0900 Subject: [PATCH 020/249] [feat] get_gameid --- dataCollector/chzzk/chzzk_live_status.py | 67 +++++++++++----------- dataCollector/chzzk/dag_chzzk_live_data.py | 53 +++++++++++++++++ dataCollector/chzzk/get_chzzk_gameid.py | 1 + 3 files changed, 86 insertions(+), 35 deletions(-) create mode 100644 dataCollector/chzzk/dag_chzzk_live_data.py diff --git a/dataCollector/chzzk/chzzk_live_status.py b/dataCollector/chzzk/chzzk_live_status.py index b9bb1c5..b5b8f62 100644 --- a/dataCollector/chzzk/chzzk_live_status.py +++ b/dataCollector/chzzk/chzzk_live_status.py @@ -1,38 +1,35 @@ import requests +import pandas as pd import json +from datetime import datetime + +# df_structure +df = pd.DataFrame(columns=["STREAMER_ID", "LIVE_COLLECT_TIME_STAMP","VIDEO_TITLE", "GAME_CODE", "VIEWER_NUM"]) + +# get streamer_id in redis +streamer_id = ['0b33823ac81de48d5b78a38cdbc0ab94'] + +for id in streamer_id: + # get response + res = requests.get(f"https://api.chzzk.naver.com/polling/v2/channels/{id}/live-status") + live_data = res.json() + + # check live_status + live=live_data["content"]["status"] + timestamp = datetime.now() # context("data_interval_end") + + if live == "OPEN": + # status["STREAMER_ID","LIVE_COLLECT_TIME_STAMP","VIDEO_TITLE","GAME_CODE","VIEWER_NUM"] + video_title = live_data["content"]["liveTitle"] + game_code = live_data["content"]["liveCategoryValue"] #KR name + viewer_num = int(live_data["content"]["concurrentUserCount"]) + + status = [id,timestamp,video_title,game_code,viewer_num] + df.loc[len(df)] = status + + else: + # make dummy data + status = [id, timestamp, "", "", 0] + df.loc[len(df)] = status + -from selenium import webdriver -from selenium.webdriver.common.keys import Keys -from selenium.webdriver.common.by import By - - -channel_id = ['153f28bc51764c3b03d34ea06492f727'] - -# chzzk_url = 'https://chzzk.naver.com/live/' -# IF LIVE STREAM IS TRUE -# CHECK LIVE STREAM - plz code input iter-code -# res=requests.get(f'https://api.chzzk.naver.com/service/v1/channels/{streamer_uid[0]}') -# print(check_live) -res = requests.get(f"https://api.chzzk.naver.com/polling/v2/channels/{channel_id[0]}/live-status") -check_live = res.json() -print(check_live) -print(json.dumps(check_live,indent=4,ensure_ascii=False)) - -# Crawling functions that operate asynchronously -# streaming data -# - viewers' participation: current_view_count, accumulated_views, -# - broadcast time and cycle: broadcast_time -# - viewer's change: broadcast_title, timestamp -# - game info: game_info - - -# async def chzzk_main(): -# driver = webdriver.Chrome() -# driver.get("http://www.python.org") -# assert "Python" in driver.title -# elem = driver.find_element(By.NAME, "q") -# elem.clear() -# elem.send_keys("pycon") -# elem.send_keys(Keys.RETURN) -# assert "No results found." not in driver.page_source -# driver.close() \ No newline at end of file diff --git a/dataCollector/chzzk/dag_chzzk_live_data.py b/dataCollector/chzzk/dag_chzzk_live_data.py new file mode 100644 index 0000000..96fb27f --- /dev/null +++ b/dataCollector/chzzk/dag_chzzk_live_data.py @@ -0,0 +1,53 @@ +from airflow import DAG +from airflow.operators.python import PythonOperator + +from datetime import datetime + +import requests +import pandas as pd + +# get_chzzk_data +def get_chzzk_data(context): + # df_structure + df = pd.DataFrame(columns=["STREAMER_ID", "LIVE_COLLECT_TIME_STAMP", "VIDEO_TITLE", "GAME_CODE", "VIEWER_NUM"]) + + # get streamer_id in redis + streamer_id = ['0b33823ac81de48d5b78a38cdbc0ab94'] + + for id in streamer_id: + # get response + res = requests.get(f"https://api.chzzk.naver.com/polling/v2/channels/{id}/live-status") + live_data = res.json() + + # check live_status + live = live_data["content"]["status"] + timestamp = context("data_interval_end") + + if live == "OPEN": + # status["STREAMER_ID","LIVE_COLLECT_TIME_STAMP","VIDEO_TITLE","GAME_CODE","VIEWER_NUM"] + video_title = live_data["content"]["liveTitle"] + game_code = live_data["content"]["liveCategoryValue"] # KR name + viewer_num = int(live_data["content"]["concurrentUserCount"]) + + status = [id, timestamp, video_title, game_code, viewer_num] + df.loc[len(df)] = status + + else: + # make dummy data + status = [id, timestamp, "", "", 0] + df.loc[len(df)] = status + df.to_csv("./chzzk_data.csv",encoding='utf-8') + + +# dag codes +with DAG( +'example_python_operator_dag', + default_args={}, + description='A simple example DAG with PythonOperator', + catchup=False, +)as dag: + + chzzk_task = PythonOperator( + task_id='run_chzzk', + python_callable=get_chzzk_data + ) diff --git a/dataCollector/chzzk/get_chzzk_gameid.py b/dataCollector/chzzk/get_chzzk_gameid.py index f0620d3..fe8a17b 100644 --- a/dataCollector/chzzk/get_chzzk_gameid.py +++ b/dataCollector/chzzk/get_chzzk_gameid.py @@ -34,6 +34,7 @@ game_name = span_element.text chzzk_game_tags.append(game_name) else: + chzzk_game_tags.append("") pass driver.quit() From c76beee19e70abe8442fe8c40d331909a4f184ac Mon Sep 17 00:00:00 2001 From: poriz Date: Fri, 16 Feb 2024 09:23:20 +0900 Subject: [PATCH 021/249] [fect] delete live closed --- dataCollector/chzzk/chzzk_live_status.py | 4 +--- dataCollector/chzzk/dag_chzzk_live_data.py | 6 ++---- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/dataCollector/chzzk/chzzk_live_status.py b/dataCollector/chzzk/chzzk_live_status.py index b5b8f62..b666002 100644 --- a/dataCollector/chzzk/chzzk_live_status.py +++ b/dataCollector/chzzk/chzzk_live_status.py @@ -28,8 +28,6 @@ df.loc[len(df)] = status else: - # make dummy data - status = [id, timestamp, "", "", 0] - df.loc[len(df)] = status + pass diff --git a/dataCollector/chzzk/dag_chzzk_live_data.py b/dataCollector/chzzk/dag_chzzk_live_data.py index 96fb27f..090d221 100644 --- a/dataCollector/chzzk/dag_chzzk_live_data.py +++ b/dataCollector/chzzk/dag_chzzk_live_data.py @@ -33,10 +33,8 @@ def get_chzzk_data(context): df.loc[len(df)] = status else: - # make dummy data - status = [id, timestamp, "", "", 0] - df.loc[len(df)] = status - df.to_csv("./chzzk_data.csv",encoding='utf-8') + pass + return df # dag codes From 4fc272e419342b742ef11f2ce5bb83d3fe8f826b Mon Sep 17 00:00:00 2001 From: Jung Hun Soo Date: Fri, 16 Feb 2024 14:39:45 +0900 Subject: [PATCH 022/249] feat: ADD ci/cd workflow file --- .github/workflows/main.yml | 101 +++++++++++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 .github/workflows/main.yml diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000..3ea8622 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,101 @@ +name: Example CI/CD Workflow + +on: + push: + branches: + main + +jobs: + path-filter: + runs-on: ubuntu-latest + outputs: + dags-changed: ${{ steps.filter.outputs.dags }} + docker-changed: ${{ steps.filter.outputs.docker }} + steps: + - uses: actions/checkout@v4 + + - name: Path Filter + id: filter + uses: dorny/paths-filter@v3 + with: + filters: | + dags: + - 'dags/**/*.py' + - 'tests/dags/**/*.py' + docker: + - 'docker-compose.yaml' + - 'Dockerfile' + + build: + needs: path-filter + if: needs.path-filter.outputs.dags-changed == 'true' + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Setup Python + uses: actions/setup-python@v5 + with: + python-version: '3.11' + + - name: Set Environment Variables + run: | + echo "PYTHON_VERSION=3.11" >> $GITHUB_ENV + echo "AIRFLOW_VERSION=2.7.2" >> $GITHUB_ENV + + - name: Install dependencies + run: | + CONSTRAINT_URL="https://raw.githubusercontent.com/apache/airflow/constraints-${AIRFLOW_VERSION}/constraints-${PYTHON_VERSION}.txt" + echo "Installing Apache Airflow version ${AIRFLOW_VERSION} with constraints from ${CONSTRAINT_URL}" + pip install "apache-airflow==${AIRFLOW_VERSION}" --constraint "${CONSTRAINT_URL}" + pip install pytest + + - name: Install Flake8 + run: pip install flake8 + - name: Run Flake8 + run: flake8 . --max-line-length=120 + + - name: Install Pylint + run: pip install pylint + - name: Run Pylint + run: find . -name "*.py" | xargs pylint --output-format=colorized --disable=W0104 + + - name: Install Black + run: pip install black + - name: Run Black + run: find . -name "*.py" | xargs black --check + + - name: Test DAG integrity + run: pytest tests/ + + + deploy: + needs: [path-filter, build] + runs-on: self-hosted + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Extract repository name + run: echo "REPO_NAME=$(echo $GITHUB_REPOSITORY | cut -d '/' -f 2)" >> $GITHUB_ENV + + - name: Git Sync + env: + DEPLOY_DIRECTORY: ${{ env.REPO_NAME }} + run: | + cd $DEPLOY_DIRECTORY + + git fetch origin ${{ github.ref_name }} + git reset --hard FETCH_HEAD + + git pull origin ${{ github.ref_name }} + + - name: Restart Docker Services + if: ${{ needs.path-filter.outputs.docker-changed == 'true' }} + env: + DEPLOY_DIRECTORY: ${{ env.REPO_NAME }} + run: | + cd $DEPLOY_DIRECTORY + + docker compose down + docker compose up -d \ No newline at end of file From 85d6d7dc0da9c8fddca65d7bb0a75a4950799a5e Mon Sep 17 00:00:00 2001 From: Lee Sarah Date: Fri, 16 Feb 2024 15:39:52 +0900 Subject: [PATCH 023/249] [fix] : rename workflow file --- .github/workflows/main.yml | 101 ---------------------------- .github/workflows/sync_dag_code.yml | 99 +++++++++++++++++++++++++++ 2 files changed, 99 insertions(+), 101 deletions(-) delete mode 100644 .github/workflows/main.yml create mode 100644 .github/workflows/sync_dag_code.yml diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml deleted file mode 100644 index 3ea8622..0000000 --- a/.github/workflows/main.yml +++ /dev/null @@ -1,101 +0,0 @@ -name: Example CI/CD Workflow - -on: - push: - branches: - main - -jobs: - path-filter: - runs-on: ubuntu-latest - outputs: - dags-changed: ${{ steps.filter.outputs.dags }} - docker-changed: ${{ steps.filter.outputs.docker }} - steps: - - uses: actions/checkout@v4 - - - name: Path Filter - id: filter - uses: dorny/paths-filter@v3 - with: - filters: | - dags: - - 'dags/**/*.py' - - 'tests/dags/**/*.py' - docker: - - 'docker-compose.yaml' - - 'Dockerfile' - - build: - needs: path-filter - if: needs.path-filter.outputs.dags-changed == 'true' - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - - name: Setup Python - uses: actions/setup-python@v5 - with: - python-version: '3.11' - - - name: Set Environment Variables - run: | - echo "PYTHON_VERSION=3.11" >> $GITHUB_ENV - echo "AIRFLOW_VERSION=2.7.2" >> $GITHUB_ENV - - - name: Install dependencies - run: | - CONSTRAINT_URL="https://raw.githubusercontent.com/apache/airflow/constraints-${AIRFLOW_VERSION}/constraints-${PYTHON_VERSION}.txt" - echo "Installing Apache Airflow version ${AIRFLOW_VERSION} with constraints from ${CONSTRAINT_URL}" - pip install "apache-airflow==${AIRFLOW_VERSION}" --constraint "${CONSTRAINT_URL}" - pip install pytest - - - name: Install Flake8 - run: pip install flake8 - - name: Run Flake8 - run: flake8 . --max-line-length=120 - - - name: Install Pylint - run: pip install pylint - - name: Run Pylint - run: find . -name "*.py" | xargs pylint --output-format=colorized --disable=W0104 - - - name: Install Black - run: pip install black - - name: Run Black - run: find . -name "*.py" | xargs black --check - - - name: Test DAG integrity - run: pytest tests/ - - - deploy: - needs: [path-filter, build] - runs-on: self-hosted - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Extract repository name - run: echo "REPO_NAME=$(echo $GITHUB_REPOSITORY | cut -d '/' -f 2)" >> $GITHUB_ENV - - - name: Git Sync - env: - DEPLOY_DIRECTORY: ${{ env.REPO_NAME }} - run: | - cd $DEPLOY_DIRECTORY - - git fetch origin ${{ github.ref_name }} - git reset --hard FETCH_HEAD - - git pull origin ${{ github.ref_name }} - - - name: Restart Docker Services - if: ${{ needs.path-filter.outputs.docker-changed == 'true' }} - env: - DEPLOY_DIRECTORY: ${{ env.REPO_NAME }} - run: | - cd $DEPLOY_DIRECTORY - - docker compose down - docker compose up -d \ No newline at end of file diff --git a/.github/workflows/sync_dag_code.yml b/.github/workflows/sync_dag_code.yml new file mode 100644 index 0000000..c1cc1e8 --- /dev/null +++ b/.github/workflows/sync_dag_code.yml @@ -0,0 +1,99 @@ +name: Example CI/CD Workflow + +on: + push: + branches: main + +jobs: + path-filter: + runs-on: ubuntu-latest + outputs: + dags-changed: ${{ steps.filter.outputs.dags }} + docker-changed: ${{ steps.filter.outputs.docker }} + steps: + - uses: actions/checkout@v4 + + - name: Path Filter + id: filter + uses: dorny/paths-filter@v3 + with: + filters: | + dags: + - 'dags/**/*.py' + - 'tests/dags/**/*.py' + docker: + - 'docker-compose.yaml' + - 'Dockerfile' + + build: + needs: path-filter + if: needs.path-filter.outputs.dags-changed == 'true' + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Setup Python + uses: actions/setup-python@v5 + with: + python-version: "3.11" + + - name: Set Environment Variables + run: | + echo "PYTHON_VERSION=3.11" >> $GITHUB_ENV + echo "AIRFLOW_VERSION=2.7.2" >> $GITHUB_ENV + + - name: Install dependencies + run: | + CONSTRAINT_URL="https://raw.githubusercontent.com/apache/airflow/constraints-${AIRFLOW_VERSION}/constraints-${PYTHON_VERSION}.txt" + echo "Installing Apache Airflow version ${AIRFLOW_VERSION} with constraints from ${CONSTRAINT_URL}" + pip install "apache-airflow==${AIRFLOW_VERSION}" --constraint "${CONSTRAINT_URL}" + pip install pytest + + - name: Install Flake8 + run: pip install flake8 + - name: Run Flake8 + run: flake8 . --max-line-length=120 + + - name: Install Pylint + run: pip install pylint + - name: Run Pylint + run: find . -name "*.py" | xargs pylint --output-format=colorized --disable=W0104 + + - name: Install Black + run: pip install black + - name: Run Black + run: find . -name "*.py" | xargs black --check + + - name: Test DAG integrity + run: pytest tests/ + + deploy: + needs: [path-filter, build] + runs-on: self-hosted + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Extract repository name + run: echo "REPO_NAME=$(echo $GITHUB_REPOSITORY | cut -d '/' -f 2)" >> $GITHUB_ENV + + - name: Git Sync + env: + DEPLOY_DIRECTORY: ${{ env.REPO_NAME }} + run: | + cd $DEPLOY_DIRECTORY + + git fetch origin ${{ github.ref_name }} + git reset --hard FETCH_HEAD + + git pull origin ${{ github.ref_name }} + + - name: Restart Docker Services + if: ${{ needs.path-filter.outputs.docker-changed == 'true' }} + env: + DEPLOY_DIRECTORY: ${{ env.REPO_NAME }} + run: | + cd $DEPLOY_DIRECTORY + + docker compose down + docker compose up -d From 1efc2ae6a5f7968d3026e5ba0d192af6b98df124 Mon Sep 17 00:00:00 2001 From: Lee Sarah Date: Fri, 16 Feb 2024 16:16:59 +0900 Subject: [PATCH 024/249] [fix] : modify branch to 'develop' --- .github/workflows/sync_dag_code.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/sync_dag_code.yml b/.github/workflows/sync_dag_code.yml index c1cc1e8..af5236e 100644 --- a/.github/workflows/sync_dag_code.yml +++ b/.github/workflows/sync_dag_code.yml @@ -2,7 +2,7 @@ name: Example CI/CD Workflow on: push: - branches: main + branches: develop jobs: path-filter: From 51fc1c52d0f3acc6b800072736580a57e155a5a1 Mon Sep 17 00:00:00 2001 From: Lee Sarah Date: Fri, 16 Feb 2024 16:19:05 +0900 Subject: [PATCH 025/249] [fix] : add pull_request option --- .github/workflows/sync_dag_code.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/sync_dag_code.yml b/.github/workflows/sync_dag_code.yml index af5236e..e32a345 100644 --- a/.github/workflows/sync_dag_code.yml +++ b/.github/workflows/sync_dag_code.yml @@ -3,6 +3,8 @@ name: Example CI/CD Workflow on: push: branches: develop + pull_request: + branches: develop jobs: path-filter: From 8e23f1a61f56f8a6aff91d91d9a729803d34dbc6 Mon Sep 17 00:00:00 2001 From: Lee Sarah Date: Fri, 16 Feb 2024 16:26:41 +0900 Subject: [PATCH 026/249] [feat] : add permission to github token --- .github/workflows/sync_dag_code.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/sync_dag_code.yml b/.github/workflows/sync_dag_code.yml index e32a345..ff78e76 100644 --- a/.github/workflows/sync_dag_code.yml +++ b/.github/workflows/sync_dag_code.yml @@ -6,6 +6,9 @@ on: pull_request: branches: develop +permissions: + contents: read + jobs: path-filter: runs-on: ubuntu-latest From 07b4f921ee564949cd6a9794325c15adae293ffd Mon Sep 17 00:00:00 2001 From: Lee Sarah Date: Fri, 16 Feb 2024 16:30:54 +0900 Subject: [PATCH 027/249] [fix]: fix permission of pull-requests --- .github/workflows/sync_dag_code.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/sync_dag_code.yml b/.github/workflows/sync_dag_code.yml index ff78e76..132acc3 100644 --- a/.github/workflows/sync_dag_code.yml +++ b/.github/workflows/sync_dag_code.yml @@ -6,12 +6,11 @@ on: pull_request: branches: develop -permissions: - contents: read - jobs: path-filter: runs-on: ubuntu-latest + permissions: + pull-requests: read outputs: dags-changed: ${{ steps.filter.outputs.dags }} docker-changed: ${{ steps.filter.outputs.docker }} From e9eb40bceeb7a554f5c9645ba0d9aa854bdcfb55 Mon Sep 17 00:00:00 2001 From: Lee Sarah Date: Fri, 16 Feb 2024 16:32:32 +0900 Subject: [PATCH 028/249] [fix]: fix permissions --- .github/workflows/sync_dag_code.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/sync_dag_code.yml b/.github/workflows/sync_dag_code.yml index 132acc3..bb52f1c 100644 --- a/.github/workflows/sync_dag_code.yml +++ b/.github/workflows/sync_dag_code.yml @@ -6,11 +6,14 @@ on: pull_request: branches: develop +permissions: + contents: read + pull-requests: read + jobs: path-filter: runs-on: ubuntu-latest - permissions: - pull-requests: read + outputs: dags-changed: ${{ steps.filter.outputs.dags }} docker-changed: ${{ steps.filter.outputs.docker }} From 9e5ac5795e90b4b941f904f1aab04d9e86629ee6 Mon Sep 17 00:00:00 2001 From: Lee Sarah Date: Fri, 16 Feb 2024 16:40:52 +0900 Subject: [PATCH 029/249] [feat]: add dummy dag for test --- .github/workflows/sync_dag_code.yml | 1 - dags/dummy_dag_for_test.py | 0 2 files changed, 1 deletion(-) create mode 100644 dags/dummy_dag_for_test.py diff --git a/.github/workflows/sync_dag_code.yml b/.github/workflows/sync_dag_code.yml index bb52f1c..8738505 100644 --- a/.github/workflows/sync_dag_code.yml +++ b/.github/workflows/sync_dag_code.yml @@ -13,7 +13,6 @@ permissions: jobs: path-filter: runs-on: ubuntu-latest - outputs: dags-changed: ${{ steps.filter.outputs.dags }} docker-changed: ${{ steps.filter.outputs.docker }} diff --git a/dags/dummy_dag_for_test.py b/dags/dummy_dag_for_test.py new file mode 100644 index 0000000..e69de29 From 33bb136b8bd7c4ec9f0e3b1d202caf771f92fe35 Mon Sep 17 00:00:00 2001 From: Lee Sarah Date: Fri, 16 Feb 2024 16:42:32 +0900 Subject: [PATCH 030/249] [feat] : add folders inside dag folder --- dags/game/.gitkeep | 0 dags/streaming/.gitkeep | 0 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 dags/game/.gitkeep create mode 100644 dags/streaming/.gitkeep diff --git a/dags/game/.gitkeep b/dags/game/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/dags/streaming/.gitkeep b/dags/streaming/.gitkeep new file mode 100644 index 0000000..e69de29 From a2ff3edd31166e6812481814de7b42edf76a8cb5 Mon Sep 17 00:00:00 2001 From: Lee Sarah Date: Fri, 16 Feb 2024 17:02:00 +0900 Subject: [PATCH 031/249] [test] : dummy code --- dags/dummy_dag_for_test.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/dags/dummy_dag_for_test.py b/dags/dummy_dag_for_test.py index e69de29..23497f7 100644 --- a/dags/dummy_dag_for_test.py +++ b/dags/dummy_dag_for_test.py @@ -0,0 +1,21 @@ +"""Example Airflow DAG for testing task dependencies using EmptyOperator.""" + +import airflow.utils.dates +from airflow import DAG +from airflow.operators.empty import EmptyOperator + +# DAG 정의 +dag = DAG( + dag_id="dag_cycle_test", + start_date=airflow.utils.dates.days_ago(3), + schedule_interval=None, + description="A simple test DAG using EmptyOperator", # DAG 설명 추가 +) + +# 태스크 정의 +t1 = EmptyOperator(task_id="t1", dag=dag) +t2 = EmptyOperator(task_id="t2", dag=dag) +t3 = EmptyOperator(task_id="t3", dag=dag) + +# 태스크 종속성 설정 +t1 >> t2 >> t3 From 5469a6e391d63f7a092266dfcb6affbe55f5f386 Mon Sep 17 00:00:00 2001 From: Lee Sarah Date: Fri, 16 Feb 2024 17:10:48 +0900 Subject: [PATCH 032/249] [fix] ignore some errors in linting part --- .github/workflows/sync_dag_code.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/sync_dag_code.yml b/.github/workflows/sync_dag_code.yml index 8738505..aee2ef2 100644 --- a/.github/workflows/sync_dag_code.yml +++ b/.github/workflows/sync_dag_code.yml @@ -58,17 +58,18 @@ jobs: - name: Install Flake8 run: pip install flake8 - name: Run Flake8 - run: flake8 . --max-line-length=120 + run: flake8 . --max-line-length=120 --ignore=E501,W503 - name: Install Pylint run: pip install pylint - name: Run Pylint - run: find . -name "*.py" | xargs pylint --output-format=colorized --disable=W0104 + run: find . -name "*.py" | xargs pylint --output-format=colorized --disable=missing-docstring,invalid-name, W0104 - name: Install Black run: pip install black - name: Run Black run: find . -name "*.py" | xargs black --check + continue-on-error: true - name: Test DAG integrity run: pytest tests/ From 1c9cb90f8834e7ae2a193594f7e1b7a797ebd850 Mon Sep 17 00:00:00 2001 From: Lee Sarah Date: Fri, 16 Feb 2024 17:14:04 +0900 Subject: [PATCH 033/249] [feat] : add W292 to ignore list of flake8 --- .github/workflows/sync_dag_code.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/sync_dag_code.yml b/.github/workflows/sync_dag_code.yml index aee2ef2..d0a783e 100644 --- a/.github/workflows/sync_dag_code.yml +++ b/.github/workflows/sync_dag_code.yml @@ -58,7 +58,7 @@ jobs: - name: Install Flake8 run: pip install flake8 - name: Run Flake8 - run: flake8 . --max-line-length=120 --ignore=E501,W503 + run: flake8 . --max-line-length=120 --ignore=E501,W503, W292 - name: Install Pylint run: pip install pylint From b15124eedb93a75f7f6876bb8f5f034a96f70902 Mon Sep 17 00:00:00 2001 From: Lee Sarah Date: Fri, 16 Feb 2024 17:16:25 +0900 Subject: [PATCH 034/249] [test] : commenting install part for testing --- .github/workflows/sync_dag_code.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/sync_dag_code.yml b/.github/workflows/sync_dag_code.yml index d0a783e..3517c73 100644 --- a/.github/workflows/sync_dag_code.yml +++ b/.github/workflows/sync_dag_code.yml @@ -48,12 +48,12 @@ jobs: echo "PYTHON_VERSION=3.11" >> $GITHUB_ENV echo "AIRFLOW_VERSION=2.7.2" >> $GITHUB_ENV - - name: Install dependencies - run: | - CONSTRAINT_URL="https://raw.githubusercontent.com/apache/airflow/constraints-${AIRFLOW_VERSION}/constraints-${PYTHON_VERSION}.txt" - echo "Installing Apache Airflow version ${AIRFLOW_VERSION} with constraints from ${CONSTRAINT_URL}" - pip install "apache-airflow==${AIRFLOW_VERSION}" --constraint "${CONSTRAINT_URL}" - pip install pytest + # - name: Install dependencies + # run: | + # CONSTRAINT_URL="https://raw.githubusercontent.com/apache/airflow/constraints-${AIRFLOW_VERSION}/constraints-${PYTHON_VERSION}.txt" + # echo "Installing Apache Airflow version ${AIRFLOW_VERSION} with constraints from ${CONSTRAINT_URL}" + # pip install "apache-airflow==${AIRFLOW_VERSION}" --constraint "${CONSTRAINT_URL}" + # pip install pytest - name: Install Flake8 run: pip install flake8 From 46cdfa57fb8f47d0c334ce1e02e0eb21b8878779 Mon Sep 17 00:00:00 2001 From: Lee Sarah Date: Fri, 16 Feb 2024 17:17:19 +0900 Subject: [PATCH 035/249] [fix]: remove space between error code --- .github/workflows/sync_dag_code.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/sync_dag_code.yml b/.github/workflows/sync_dag_code.yml index 3517c73..c43d9cd 100644 --- a/.github/workflows/sync_dag_code.yml +++ b/.github/workflows/sync_dag_code.yml @@ -58,7 +58,7 @@ jobs: - name: Install Flake8 run: pip install flake8 - name: Run Flake8 - run: flake8 . --max-line-length=120 --ignore=E501,W503, W292 + run: flake8 . --max-line-length=120 --ignore=E501,W503,W292 - name: Install Pylint run: pip install pylint From e2ee4f2f965af4a258d7126413c504e0e9d21a1a Mon Sep 17 00:00:00 2001 From: Lee Sarah Date: Fri, 16 Feb 2024 17:21:40 +0900 Subject: [PATCH 036/249] [fix] : ignore all errors and do not end process, but show them --- .github/workflows/sync_dag_code.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/sync_dag_code.yml b/.github/workflows/sync_dag_code.yml index c43d9cd..7c17b31 100644 --- a/.github/workflows/sync_dag_code.yml +++ b/.github/workflows/sync_dag_code.yml @@ -58,7 +58,7 @@ jobs: - name: Install Flake8 run: pip install flake8 - name: Run Flake8 - run: flake8 . --max-line-length=120 --ignore=E501,W503,W292 + run: flake8 . --max-line-length=120 || true - name: Install Pylint run: pip install pylint From a8327279a6c6691b78b194d0c33a25558a8041d6 Mon Sep 17 00:00:00 2001 From: Lee Sarah Date: Fri, 16 Feb 2024 17:24:54 +0900 Subject: [PATCH 037/249] [fix] : fix ignore list with no space, and undo commenting --- .github/workflows/sync_dag_code.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/sync_dag_code.yml b/.github/workflows/sync_dag_code.yml index 7c17b31..520eb79 100644 --- a/.github/workflows/sync_dag_code.yml +++ b/.github/workflows/sync_dag_code.yml @@ -48,12 +48,12 @@ jobs: echo "PYTHON_VERSION=3.11" >> $GITHUB_ENV echo "AIRFLOW_VERSION=2.7.2" >> $GITHUB_ENV - # - name: Install dependencies - # run: | - # CONSTRAINT_URL="https://raw.githubusercontent.com/apache/airflow/constraints-${AIRFLOW_VERSION}/constraints-${PYTHON_VERSION}.txt" - # echo "Installing Apache Airflow version ${AIRFLOW_VERSION} with constraints from ${CONSTRAINT_URL}" - # pip install "apache-airflow==${AIRFLOW_VERSION}" --constraint "${CONSTRAINT_URL}" - # pip install pytest + - name: Install dependencies + run: | + CONSTRAINT_URL="https://raw.githubusercontent.com/apache/airflow/constraints-${AIRFLOW_VERSION}/constraints-${PYTHON_VERSION}.txt" + echo "Installing Apache Airflow version ${AIRFLOW_VERSION} with constraints from ${CONSTRAINT_URL}" + pip install "apache-airflow==${AIRFLOW_VERSION}" --constraint "${CONSTRAINT_URL}" + pip install pytest - name: Install Flake8 run: pip install flake8 @@ -63,7 +63,7 @@ jobs: - name: Install Pylint run: pip install pylint - name: Run Pylint - run: find . -name "*.py" | xargs pylint --output-format=colorized --disable=missing-docstring,invalid-name, W0104 + run: find . -name "*.py" | xargs pylint --output-format=colorized --disable=missing-docstring,invalid-name,W0104 - name: Install Black run: pip install black From 3150f74f0c8bdefe5b8ee950c739d665d4410263 Mon Sep 17 00:00:00 2001 From: Lee Sarah Date: Fri, 16 Feb 2024 17:32:18 +0900 Subject: [PATCH 038/249] [feat] set path of files to check --- .github/workflows/sync_dag_code.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/sync_dag_code.yml b/.github/workflows/sync_dag_code.yml index 520eb79..9bd3f8e 100644 --- a/.github/workflows/sync_dag_code.yml +++ b/.github/workflows/sync_dag_code.yml @@ -58,17 +58,17 @@ jobs: - name: Install Flake8 run: pip install flake8 - name: Run Flake8 - run: flake8 . --max-line-length=120 || true + run: flake8 dags/ tests/dags --max-line-length=120 || true - name: Install Pylint run: pip install pylint - name: Run Pylint - run: find . -name "*.py" | xargs pylint --output-format=colorized --disable=missing-docstring,invalid-name,W0104 + run: find dags/ tests/dags/ -name "*.py" | xargs pylint --output-format=colorized --disable=missing-docstring,invalid-name,W0104 - name: Install Black run: pip install black - name: Run Black - run: find . -name "*.py" | xargs black --check + run: find dags/ tests/dags/ -name "*.py" | xargs black --check continue-on-error: true - name: Test DAG integrity From cecf1249c63774f1851df1be7b80f8ee2e77cff8 Mon Sep 17 00:00:00 2001 From: Lee Sarah Date: Fri, 16 Feb 2024 17:35:52 +0900 Subject: [PATCH 039/249] [feat] : create tests/dags folder --- tests/dags/.gitkeep | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 tests/dags/.gitkeep diff --git a/tests/dags/.gitkeep b/tests/dags/.gitkeep new file mode 100644 index 0000000..e69de29 From 09611a3249b596ed4f38680f67ca59f2129413d6 Mon Sep 17 00:00:00 2001 From: Lee Sarah Date: Fri, 16 Feb 2024 17:36:05 +0900 Subject: [PATCH 040/249] [fix] : minor fix --- .github/workflows/sync_dag_code.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/sync_dag_code.yml b/.github/workflows/sync_dag_code.yml index 9bd3f8e..83bb0af 100644 --- a/.github/workflows/sync_dag_code.yml +++ b/.github/workflows/sync_dag_code.yml @@ -58,7 +58,7 @@ jobs: - name: Install Flake8 run: pip install flake8 - name: Run Flake8 - run: flake8 dags/ tests/dags --max-line-length=120 || true + run: flake8 dags/ tests/dags/--max-line-length=120 || true - name: Install Pylint run: pip install pylint From 64ebf924916cc10d170f3db71e0b1967a243cfdb Mon Sep 17 00:00:00 2001 From: Lee Sarah Date: Fri, 16 Feb 2024 17:42:13 +0900 Subject: [PATCH 041/249] [feat] : create test file (not done) --- tests/dags/test_dag_integrity.py | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 tests/dags/test_dag_integrity.py diff --git a/tests/dags/test_dag_integrity.py b/tests/dags/test_dag_integrity.py new file mode 100644 index 0000000..70e9163 --- /dev/null +++ b/tests/dags/test_dag_integrity.py @@ -0,0 +1,31 @@ +"""This module tests DAG integrity within Airflow.""" + +import glob +import os +import pytest + +# from airflow.models import DAG +from airflow.models.dagbag import DagBag + +DAG_PATH = os.path.join(os.path.dirname(__file__), "..", "..", "dags/**/*.py") +DAG_FILES = glob.glob(DAG_PATH, recursive=True) + + +@pytest.mark.parametrize("dag_file", DAG_FILES) +def test_dag_integrity(dag_file): + """Test the integrity of DAGs. + + This test ensures that each DAG file can be loaded without errors, + including checking for circular dependencies and other potential issues. + + Args: + dag_file (str): The path to a DAG file to be tested. + """ + dag_bag = DagBag(dag_folder=os.path.dirname(dag_file), include_examples=False) + + dag_bag.process_file(dag_file, only_if_updated=True) + + # dag_id, dag in dag_bag.dags.items() + for dag_id, _ in dag_bag.dags.items(): + assert dag_id in dag_bag.dags, "DAG ID not found in dag_bag.dags" + assert not dag_bag.import_errors, "Import errors found in DagBag" From 433a9292a54d3c5e5572a3e95fcc4b4bc7671cf2 Mon Sep 17 00:00:00 2001 From: Lee Sarah Date: Fri, 16 Feb 2024 17:42:27 +0900 Subject: [PATCH 042/249] [fix] : fix code error --- .github/workflows/sync_dag_code.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/sync_dag_code.yml b/.github/workflows/sync_dag_code.yml index 83bb0af..10971d0 100644 --- a/.github/workflows/sync_dag_code.yml +++ b/.github/workflows/sync_dag_code.yml @@ -58,7 +58,7 @@ jobs: - name: Install Flake8 run: pip install flake8 - name: Run Flake8 - run: flake8 dags/ tests/dags/--max-line-length=120 || true + run: flake8 dags/ tests/dags/ --max-line-length=120 || true - name: Install Pylint run: pip install pylint From 07447515c8f0c549738db51e4eb1b78a4d9cf344 Mon Sep 17 00:00:00 2001 From: Lee Sarah Date: Fri, 16 Feb 2024 17:49:30 +0900 Subject: [PATCH 043/249] [fix]: fix path of deploy directory --- .github/workflows/sync_dag_code.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/sync_dag_code.yml b/.github/workflows/sync_dag_code.yml index 10971d0..94a86e8 100644 --- a/.github/workflows/sync_dag_code.yml +++ b/.github/workflows/sync_dag_code.yml @@ -86,7 +86,7 @@ jobs: - name: Git Sync env: - DEPLOY_DIRECTORY: ${{ env.REPO_NAME }} + DEPLOY_DIRECTORY: ~/${{ env.REPO_NAME }} run: | cd $DEPLOY_DIRECTORY @@ -98,7 +98,7 @@ jobs: - name: Restart Docker Services if: ${{ needs.path-filter.outputs.docker-changed == 'true' }} env: - DEPLOY_DIRECTORY: ${{ env.REPO_NAME }} + DEPLOY_DIRECTORY: ~/${{ env.REPO_NAME }} run: | cd $DEPLOY_DIRECTORY From 7028a84caf476d34294a616c67dee37d1b406cb6 Mon Sep 17 00:00:00 2001 From: Lee Sarah Date: Fri, 16 Feb 2024 17:54:05 +0900 Subject: [PATCH 044/249] [fix]: change path of deploy directory --- .github/workflows/sync_dag_code.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/sync_dag_code.yml b/.github/workflows/sync_dag_code.yml index 94a86e8..ccb136e 100644 --- a/.github/workflows/sync_dag_code.yml +++ b/.github/workflows/sync_dag_code.yml @@ -86,8 +86,10 @@ jobs: - name: Git Sync env: - DEPLOY_DIRECTORY: ~/${{ env.REPO_NAME }} + DEPLOY_DIRECTORY: /home/zizzicteam2/${{ env.REPO_NAME }} run: | + ls + pwd cd $DEPLOY_DIRECTORY git fetch origin ${{ github.ref_name }} @@ -98,7 +100,7 @@ jobs: - name: Restart Docker Services if: ${{ needs.path-filter.outputs.docker-changed == 'true' }} env: - DEPLOY_DIRECTORY: ~/${{ env.REPO_NAME }} + DEPLOY_DIRECTORY: /home/zizzicteam2/${{ env.REPO_NAME }} run: | cd $DEPLOY_DIRECTORY From f07c7e46de66718ddf807b6776dc09a738549de2 Mon Sep 17 00:00:00 2001 From: Lee Sarah Date: Fri, 16 Feb 2024 20:31:08 +0900 Subject: [PATCH 045/249] [feat] : sync specific files from checkout --- .github/workflows/sync_dag_code.yml | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/.github/workflows/sync_dag_code.yml b/.github/workflows/sync_dag_code.yml index ccb136e..cec52d8 100644 --- a/.github/workflows/sync_dag_code.yml +++ b/.github/workflows/sync_dag_code.yml @@ -84,19 +84,12 @@ jobs: - name: Extract repository name run: echo "REPO_NAME=$(echo $GITHUB_REPOSITORY | cut -d '/' -f 2)" >> $GITHUB_ENV - - name: Git Sync + - name: Sync specific files env: DEPLOY_DIRECTORY: /home/zizzicteam2/${{ env.REPO_NAME }} run: | - ls - pwd - cd $DEPLOY_DIRECTORY - - git fetch origin ${{ github.ref_name }} - git reset --hard FETCH_HEAD - - git pull origin ${{ github.ref_name }} - + rsync -av --include='dags/***' --include='docker-compose.yml' --include='Dockerfile' --exclude='*' ./ $DEPLOY_DIRECTORY + echo $DEPLOY_DIRECTORY - name: Restart Docker Services if: ${{ needs.path-filter.outputs.docker-changed == 'true' }} env: From f9cf1fb7ec83b332bc6534f52c99541405b18afa Mon Sep 17 00:00:00 2001 From: Lee Sarah Date: Fri, 16 Feb 2024 20:42:44 +0900 Subject: [PATCH 046/249] [test]: change docker-compose file for test deploy --- docker-compose.yaml | 485 ++++++++++++++++++++++---------------------- 1 file changed, 243 insertions(+), 242 deletions(-) diff --git a/docker-compose.yaml b/docker-compose.yaml index 9546df9..7c19e29 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -44,257 +44,258 @@ # # Feel free to modify this file to suit your needs. --- -version: '3.8' -x-airflow-common: - &airflow-common - # In order to add custom dependencies or upgrade provider packages you can use your extended image. - # Comment the image line, place your Dockerfile in the directory where you placed the docker-compose.yaml - # and uncomment the "build" line below, Then run `docker-compose build` to build the images. - # image: ${AIRFLOW_IMAGE_NAME:-apache/airflow:2.7.2} - build: . - environment: - &airflow-common-env - AIRFLOW__CORE__EXECUTOR: CeleryExecutor - AIRFLOW__DATABASE__SQL_ALCHEMY_CONN: postgresql+psycopg2://airflow:airflow@postgres/airflow - # For backward compatibility, with Airflow <2.3 - AIRFLOW__CORE__SQL_ALCHEMY_CONN: postgresql+psycopg2://airflow:airflow@postgres/airflow - AIRFLOW__CELERY__RESULT_BACKEND: db+postgresql://airflow:airflow@postgres/airflow - AIRFLOW__CELERY__BROKER_URL: redis://:@redis:6379/0 - AIRFLOW__CORE__FERNET_KEY: '' - AIRFLOW__CORE__DAGS_ARE_PAUSED_AT_CREATION: 'true' - AIRFLOW__CORE__LOAD_EXAMPLES: 'true' - AIRFLOW__API__AUTH_BACKENDS: 'airflow.api.auth.backend.basic_auth,airflow.api.auth.backend.session' - # yamllint disable rule:line-length - # Use simple http server on scheduler for health checks - # See https://airflow.apache.org/docs/apache-airflow/stable/administration-and-deployment/logging-monitoring/check-health.html#scheduler-health-check-server - # yamllint enable rule:line-length - AIRFLOW__SCHEDULER__ENABLE_HEALTH_CHECK: 'true' - # WARNING: Use _PIP_ADDITIONAL_REQUIREMENTS option ONLY for a quick checks - # for other purpose (development, test and especially production usage) build/extend Airflow image. - _PIP_ADDITIONAL_REQUIREMENTS: ${_PIP_ADDITIONAL_REQUIREMENTS:-} - volumes: - - ${AIRFLOW_PROJ_DIR:-.}/dags:/opt/airflow/dags - - ${AIRFLOW_PROJ_DIR:-.}/logs:/opt/airflow/logs - - ${AIRFLOW_PROJ_DIR:-.}/config:/opt/airflow/config - - ${AIRFLOW_PROJ_DIR:-.}/plugins:/opt/airflow/plugins - user: "${AIRFLOW_UID:-50000}:0" - depends_on: - &airflow-common-depends-on - redis: - condition: service_healthy - postgres: - condition: service_healthy +version: "3.8" +x-airflow-common: &airflow-common + # In order to add custom dependencies or upgrade provider packages you can use your extended image. + # Comment the image line, place your Dockerfile in the directory where you placed the docker-compose.yaml + # and uncomment the "build" line below, Then run `docker-compose build` to build the images. + # image: ${AIRFLOW_IMAGE_NAME:-apache/airflow:2.7.2} + build: . + environment: &airflow-common-env + AIRFLOW__CORE__EXECUTOR: CeleryExecutor + AIRFLOW__DATABASE__SQL_ALCHEMY_CONN: postgresql+psycopg2://airflow:airflow@postgres/airflow + # For backward compatibility, with Airflow <2.3 + AIRFLOW__CORE__SQL_ALCHEMY_CONN: postgresql+psycopg2://airflow:airflow@postgres/airflow + AIRFLOW__CELERY__RESULT_BACKEND: db+postgresql://airflow:airflow@postgres/airflow + AIRFLOW__CELERY__BROKER_URL: redis://:@redis:6379/0 + AIRFLOW__CORE__FERNET_KEY: "" + AIRFLOW__CORE__DAGS_ARE_PAUSED_AT_CREATION: "true" + AIRFLOW__CORE__LOAD_EXAMPLES: "false" + AIRFLOW__API__AUTH_BACKENDS: "airflow.api.auth.backend.basic_auth,airflow.api.auth.backend.session" + # yamllint disable rule:line-length + # Use simple http server on scheduler for health checks + # See https://airflow.apache.org/docs/apache-airflow/stable/administration-and-deployment/logging-monitoring/check-health.html#scheduler-health-check-server + # yamllint enable rule:line-length + AIRFLOW__SCHEDULER__ENABLE_HEALTH_CHECK: "true" + # WARNING: Use _PIP_ADDITIONAL_REQUIREMENTS option ONLY for a quick checks + # for other purpose (development, test and especially production usage) build/extend Airflow image. + _PIP_ADDITIONAL_REQUIREMENTS: ${_PIP_ADDITIONAL_REQUIREMENTS:-} + volumes: + - ${AIRFLOW_PROJ_DIR:-.}/dags:/opt/airflow/dags + - ${AIRFLOW_PROJ_DIR:-.}/logs:/opt/airflow/logs + - ${AIRFLOW_PROJ_DIR:-.}/config:/opt/airflow/config + - ${AIRFLOW_PROJ_DIR:-.}/plugins:/opt/airflow/plugins + user: "${AIRFLOW_UID:-50000}:0" + depends_on: &airflow-common-depends-on + redis: + condition: service_healthy + postgres: + condition: service_healthy services: - postgres: - image: postgres:13 - environment: - POSTGRES_USER: airflow - POSTGRES_PASSWORD: airflow - POSTGRES_DB: airflow - volumes: - - postgres-db-volume:/var/lib/postgresql/data - healthcheck: - test: ["CMD", "pg_isready", "-U", "airflow"] - interval: 10s - retries: 5 - start_period: 5s - restart: always + postgres: + image: postgres:13 + environment: + POSTGRES_USER: airflow + POSTGRES_PASSWORD: airflow + POSTGRES_DB: airflow + volumes: + - postgres-db-volume:/var/lib/postgresql/data + healthcheck: + test: ["CMD", "pg_isready", "-U", "airflow"] + interval: 10s + retries: 5 + start_period: 5s + restart: always - redis: - image: redis:latest - expose: - - 6379 - healthcheck: - test: ["CMD", "redis-cli", "ping"] - interval: 10s - timeout: 30s - retries: 50 - start_period: 30s - restart: always + redis: + image: redis:latest + expose: + - 6379 + healthcheck: + test: ["CMD", "redis-cli", "ping"] + interval: 10s + timeout: 30s + retries: 50 + start_period: 30s + restart: always - airflow-webserver: - <<: *airflow-common - command: webserver - ports: - - "8080:8080" - healthcheck: - test: ["CMD", "curl", "--fail", "http://localhost:8080/health"] - interval: 30s - timeout: 10s - retries: 5 - start_period: 30s - restart: always - depends_on: - <<: *airflow-common-depends-on - airflow-init: - condition: service_completed_successfully + airflow-webserver: + <<: *airflow-common + command: webserver + ports: + - "8080:8080" + healthcheck: + test: ["CMD", "curl", "--fail", "http://localhost:8080/health"] + interval: 30s + timeout: 10s + retries: 5 + start_period: 30s + restart: always + depends_on: + <<: *airflow-common-depends-on + airflow-init: + condition: service_completed_successfully - airflow-scheduler: - <<: *airflow-common - command: scheduler - healthcheck: - test: ["CMD", "curl", "--fail", "http://localhost:8974/health"] - interval: 30s - timeout: 10s - retries: 5 - start_period: 30s - restart: always - depends_on: - <<: *airflow-common-depends-on - airflow-init: - condition: service_completed_successfully + airflow-scheduler: + <<: *airflow-common + command: scheduler + healthcheck: + test: ["CMD", "curl", "--fail", "http://localhost:8974/health"] + interval: 30s + timeout: 10s + retries: 5 + start_period: 30s + restart: always + depends_on: + <<: *airflow-common-depends-on + airflow-init: + condition: service_completed_successfully - airflow-worker: - <<: *airflow-common - command: celery worker - healthcheck: - # yamllint disable rule:line-length - test: - - "CMD-SHELL" - - 'celery --app airflow.providers.celery.executors.celery_executor.app inspect ping -d "celery@$${HOSTNAME}" || celery --app airflow.executors.celery_executor.app inspect ping -d "celery@$${HOSTNAME}"' - interval: 30s - timeout: 10s - retries: 5 - start_period: 30s - environment: - <<: *airflow-common-env - # Required to handle warm shutdown of the celery workers properly - # See https://airflow.apache.org/docs/docker-stack/entrypoint.html#signal-propagation - DUMB_INIT_SETSID: "0" - restart: always - depends_on: - <<: *airflow-common-depends-on - airflow-init: - condition: service_completed_successfully + airflow-worker: + <<: *airflow-common + command: celery worker + healthcheck: + # yamllint disable rule:line-length + test: + - "CMD-SHELL" + - 'celery --app airflow.providers.celery.executors.celery_executor.app inspect ping -d "celery@$${HOSTNAME}" || celery --app airflow.executors.celery_executor.app inspect ping -d "celery@$${HOSTNAME}"' + interval: 30s + timeout: 10s + retries: 5 + start_period: 30s + environment: + <<: *airflow-common-env + # Required to handle warm shutdown of the celery workers properly + # See https://airflow.apache.org/docs/docker-stack/entrypoint.html#signal-propagation + DUMB_INIT_SETSID: "0" + restart: always + depends_on: + <<: *airflow-common-depends-on + airflow-init: + condition: service_completed_successfully - airflow-triggerer: - <<: *airflow-common - command: triggerer - healthcheck: - test: ["CMD-SHELL", 'airflow jobs check --job-type TriggererJob --hostname "$${HOSTNAME}"'] - interval: 30s - timeout: 10s - retries: 5 - start_period: 30s - restart: always - depends_on: - <<: *airflow-common-depends-on - airflow-init: - condition: service_completed_successfully + airflow-triggerer: + <<: *airflow-common + command: triggerer + healthcheck: + test: + [ + "CMD-SHELL", + 'airflow jobs check --job-type TriggererJob --hostname "$${HOSTNAME}"', + ] + interval: 30s + timeout: 10s + retries: 5 + start_period: 30s + restart: always + depends_on: + <<: *airflow-common-depends-on + airflow-init: + condition: service_completed_successfully - airflow-init: - <<: *airflow-common - entrypoint: /bin/bash - # yamllint disable rule:line-length - command: - - -c - - | - function ver() { - printf "%04d%04d%04d%04d" $${1//./ } - } - airflow_version=$$(AIRFLOW__LOGGING__LOGGING_LEVEL=INFO && gosu airflow airflow version) - airflow_version_comparable=$$(ver $${airflow_version}) - min_airflow_version=2.2.0 - min_airflow_version_comparable=$$(ver $${min_airflow_version}) - if (( airflow_version_comparable < min_airflow_version_comparable )); then - echo - echo -e "\033[1;31mERROR!!!: Too old Airflow version $${airflow_version}!\e[0m" - echo "The minimum Airflow version supported: $${min_airflow_version}. Only use this or higher!" - echo - exit 1 - fi - if [[ -z "${AIRFLOW_UID}" ]]; then - echo - echo -e "\033[1;33mWARNING!!!: AIRFLOW_UID not set!\e[0m" - echo "If you are on Linux, you SHOULD follow the instructions below to set " - echo "AIRFLOW_UID environment variable, otherwise files will be owned by root." - echo "For other operating systems you can get rid of the warning with manually created .env file:" - echo " See: https://airflow.apache.org/docs/apache-airflow/stable/howto/docker-compose/index.html#setting-the-right-airflow-user" - echo - fi - one_meg=1048576 - mem_available=$$(($$(getconf _PHYS_PAGES) * $$(getconf PAGE_SIZE) / one_meg)) - cpus_available=$$(grep -cE 'cpu[0-9]+' /proc/stat) - disk_available=$$(df / | tail -1 | awk '{print $$4}') - warning_resources="false" - if (( mem_available < 4000 )) ; then - echo - echo -e "\033[1;33mWARNING!!!: Not enough memory available for Docker.\e[0m" - echo "At least 4GB of memory required. You have $$(numfmt --to iec $$((mem_available * one_meg)))" - echo - warning_resources="true" - fi - if (( cpus_available < 2 )); then - echo - echo -e "\033[1;33mWARNING!!!: Not enough CPUS available for Docker.\e[0m" - echo "At least 2 CPUs recommended. You have $${cpus_available}" - echo - warning_resources="true" - fi - if (( disk_available < one_meg * 10 )); then - echo - echo -e "\033[1;33mWARNING!!!: Not enough Disk space available for Docker.\e[0m" - echo "At least 10 GBs recommended. You have $$(numfmt --to iec $$((disk_available * 1024 )))" - echo - warning_resources="true" - fi - if [[ $${warning_resources} == "true" ]]; then - echo - echo -e "\033[1;33mWARNING!!!: You have not enough resources to run Airflow (see above)!\e[0m" - echo "Please follow the instructions to increase amount of resources available:" - echo " https://airflow.apache.org/docs/apache-airflow/stable/howto/docker-compose/index.html#before-you-begin" - echo - fi - mkdir -p /sources/logs /sources/dags /sources/plugins - chown -R "${AIRFLOW_UID}:0" /sources/{logs,dags,plugins} - exec /entrypoint airflow version - # yamllint enable rule:line-length - environment: - <<: *airflow-common-env - _AIRFLOW_DB_MIGRATE: 'true' - _AIRFLOW_WWW_USER_CREATE: 'true' - _AIRFLOW_WWW_USER_USERNAME: ${_AIRFLOW_WWW_USER_USERNAME:-airflow} - _AIRFLOW_WWW_USER_PASSWORD: ${_AIRFLOW_WWW_USER_PASSWORD:-airflow} - _PIP_ADDITIONAL_REQUIREMENTS: '' - user: "0:0" - volumes: - - ${AIRFLOW_PROJ_DIR:-.}:/sources + airflow-init: + <<: *airflow-common + entrypoint: /bin/bash + # yamllint disable rule:line-length + command: + - -c + - | + function ver() { + printf "%04d%04d%04d%04d" $${1//./ } + } + airflow_version=$$(AIRFLOW__LOGGING__LOGGING_LEVEL=INFO && gosu airflow airflow version) + airflow_version_comparable=$$(ver $${airflow_version}) + min_airflow_version=2.2.0 + min_airflow_version_comparable=$$(ver $${min_airflow_version}) + if (( airflow_version_comparable < min_airflow_version_comparable )); then + echo + echo -e "\033[1;31mERROR!!!: Too old Airflow version $${airflow_version}!\e[0m" + echo "The minimum Airflow version supported: $${min_airflow_version}. Only use this or higher!" + echo + exit 1 + fi + if [[ -z "${AIRFLOW_UID}" ]]; then + echo + echo -e "\033[1;33mWARNING!!!: AIRFLOW_UID not set!\e[0m" + echo "If you are on Linux, you SHOULD follow the instructions below to set " + echo "AIRFLOW_UID environment variable, otherwise files will be owned by root." + echo "For other operating systems you can get rid of the warning with manually created .env file:" + echo " See: https://airflow.apache.org/docs/apache-airflow/stable/howto/docker-compose/index.html#setting-the-right-airflow-user" + echo + fi + one_meg=1048576 + mem_available=$$(($$(getconf _PHYS_PAGES) * $$(getconf PAGE_SIZE) / one_meg)) + cpus_available=$$(grep -cE 'cpu[0-9]+' /proc/stat) + disk_available=$$(df / | tail -1 | awk '{print $$4}') + warning_resources="false" + if (( mem_available < 4000 )) ; then + echo + echo -e "\033[1;33mWARNING!!!: Not enough memory available for Docker.\e[0m" + echo "At least 4GB of memory required. You have $$(numfmt --to iec $$((mem_available * one_meg)))" + echo + warning_resources="true" + fi + if (( cpus_available < 2 )); then + echo + echo -e "\033[1;33mWARNING!!!: Not enough CPUS available for Docker.\e[0m" + echo "At least 2 CPUs recommended. You have $${cpus_available}" + echo + warning_resources="true" + fi + if (( disk_available < one_meg * 10 )); then + echo + echo -e "\033[1;33mWARNING!!!: Not enough Disk space available for Docker.\e[0m" + echo "At least 10 GBs recommended. You have $$(numfmt --to iec $$((disk_available * 1024 )))" + echo + warning_resources="true" + fi + if [[ $${warning_resources} == "true" ]]; then + echo + echo -e "\033[1;33mWARNING!!!: You have not enough resources to run Airflow (see above)!\e[0m" + echo "Please follow the instructions to increase amount of resources available:" + echo " https://airflow.apache.org/docs/apache-airflow/stable/howto/docker-compose/index.html#before-you-begin" + echo + fi + mkdir -p /sources/logs /sources/dags /sources/plugins + chown -R "${AIRFLOW_UID}:0" /sources/{logs,dags,plugins} + exec /entrypoint airflow version + # yamllint enable rule:line-length + environment: + <<: *airflow-common-env + _AIRFLOW_DB_MIGRATE: "true" + _AIRFLOW_WWW_USER_CREATE: "true" + _AIRFLOW_WWW_USER_USERNAME: ${_AIRFLOW_WWW_USER_USERNAME:-airflow} + _AIRFLOW_WWW_USER_PASSWORD: ${_AIRFLOW_WWW_USER_PASSWORD:-airflow} + _PIP_ADDITIONAL_REQUIREMENTS: "" + user: "0:0" + volumes: + - ${AIRFLOW_PROJ_DIR:-.}:/sources - airflow-cli: - <<: *airflow-common - profiles: - - debug - environment: - <<: *airflow-common-env - CONNECTION_CHECK_MAX_COUNT: "0" - # Workaround for entrypoint issue. See: https://github.com/apache/airflow/issues/16252 - command: - - bash - - -c - - airflow + airflow-cli: + <<: *airflow-common + profiles: + - debug + environment: + <<: *airflow-common-env + CONNECTION_CHECK_MAX_COUNT: "0" + # Workaround for entrypoint issue. See: https://github.com/apache/airflow/issues/16252 + command: + - bash + - -c + - airflow - # You can enable flower by adding "--profile flower" option e.g. docker-compose --profile flower up - # or by explicitly targeted on the command line e.g. docker-compose up flower. - # See: https://docs.docker.com/compose/profiles/ - flower: - <<: *airflow-common - command: celery flower - profiles: - - flower - ports: - - "5555:5555" - healthcheck: - test: ["CMD", "curl", "--fail", "http://localhost:5555/"] - interval: 30s - timeout: 10s - retries: 5 - start_period: 30s - restart: always - depends_on: - <<: *airflow-common-depends-on - airflow-init: - condition: service_completed_successfully + # You can enable flower by adding "--profile flower" option e.g. docker-compose --profile flower up + # or by explicitly targeted on the command line e.g. docker-compose up flower. + # See: https://docs.docker.com/compose/profiles/ + flower: + <<: *airflow-common + command: celery flower + profiles: + - flower + ports: + - "5555:5555" + healthcheck: + test: ["CMD", "curl", "--fail", "http://localhost:5555/"] + interval: 30s + timeout: 10s + retries: 5 + start_period: 30s + restart: always + depends_on: + <<: *airflow-common-depends-on + airflow-init: + condition: service_completed_successfully volumes: - postgres-db-volume: + postgres-db-volume: From 0023fc336c124f8aa727f8336641373b4416bec9 Mon Sep 17 00:00:00 2001 From: Lee Sarah Date: Fri, 16 Feb 2024 20:48:29 +0900 Subject: [PATCH 047/249] [fix]: minor fix --- .github/workflows/sync_dag_code.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/sync_dag_code.yml b/.github/workflows/sync_dag_code.yml index cec52d8..5fe6164 100644 --- a/.github/workflows/sync_dag_code.yml +++ b/.github/workflows/sync_dag_code.yml @@ -88,7 +88,7 @@ jobs: env: DEPLOY_DIRECTORY: /home/zizzicteam2/${{ env.REPO_NAME }} run: | - rsync -av --include='dags/***' --include='docker-compose.yml' --include='Dockerfile' --exclude='*' ./ $DEPLOY_DIRECTORY + rsync -av --include='dags/***' --include='docker-compose.yaml' --include='Dockerfile' --exclude='*' ./ $DEPLOY_DIRECTORY echo $DEPLOY_DIRECTORY - name: Restart Docker Services if: ${{ needs.path-filter.outputs.docker-changed == 'true' }} From b31873b558db4b573618c889edfaecde24ab6370 Mon Sep 17 00:00:00 2001 From: Hun Soo Jeong <147886939+hunsoodev@users.noreply.github.com> Date: Fri, 16 Feb 2024 21:35:40 +0900 Subject: [PATCH 048/249] Delete tests/dags/.gitkeep --- tests/dags/.gitkeep | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 tests/dags/.gitkeep diff --git a/tests/dags/.gitkeep b/tests/dags/.gitkeep deleted file mode 100644 index e69de29..0000000 From 35f03936b1123978c7a5e59764e02fcc2ce0750b Mon Sep 17 00:00:00 2001 From: Hun Soo Jeong <147886939+hunsoodev@users.noreply.github.com> Date: Fri, 16 Feb 2024 21:36:00 +0900 Subject: [PATCH 049/249] Delete tests/.gitkeep --- tests/.gitkeep | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 tests/.gitkeep diff --git a/tests/.gitkeep b/tests/.gitkeep deleted file mode 100644 index e69de29..0000000 From 10975ee3ba27b37c4bae64b7e9de10e4cc110128 Mon Sep 17 00:00:00 2001 From: poriz Date: Sat, 17 Feb 2024 00:34:34 +0900 Subject: [PATCH 050/249] [feat] develop data collect dag chzzk + afreeca --- dataCollector/data_collect_dag.py | 135 ++++++++++++++++++++++++++++++ 1 file changed, 135 insertions(+) create mode 100644 dataCollector/data_collect_dag.py diff --git a/dataCollector/data_collect_dag.py b/dataCollector/data_collect_dag.py new file mode 100644 index 0000000..735c988 --- /dev/null +++ b/dataCollector/data_collect_dag.py @@ -0,0 +1,135 @@ +from airflow.decorators import dag, task +from airflow.utils.dates import days_ago +from airflow.operators.python import PythonOperator + +import time +from datetime import datetime + +import requests +import pandas as pd +from bs4 import BeautifulSoup as bs + + +# DAG 정의 +@dag(schedule_interval='@daily', start_date=days_ago(1), catchup=False) +def get_data(): + + # get streamer_list in elasticcache + @task + def get_streamer_list(): + # test streamer_list + return ["0d027498b18371674fac3ed17247e6b8","fe558c6d1b8ef3206ac0bc0419f3f564","0b33823ac81de48d5b78a38cdbc0ab94"] + + + # chzzk_method + @task + def get_chzzk_data(s_id_list: list,**kwargs): + # df_structure + df = pd.DataFrame(columns=["STREAMER_ID","BROADCAST_ID", "LIVE_COLLECT_TIME", "CHZ_BROADCAST_TITLE","AFC_BROADCAST_TITLE","CHZ_GAME_CODE","AFC_GAME_CODE", "CHZ_VIEWER_NUM","AFC_VIEWER_NUM"]) + broadcast_id = "" + afc_broadcast_title="" + afc_game_code="" + afc_viewer_num=0 + + for streamer_id in s_id_list: + # get response + res = requests.get(f"https://api.chzzk.naver.com/polling/v2/channels/{id}/live-status") + live_data = res.json() + + # check live_status + live = live_data["content"]["status"] + timestamp = kwargs("data_interval_end").strftime("%Y-%m-%d %H:%M") + + if live == "OPEN": + # status["STREAMER_ID","LIVE_COLLECT_TIME_STAMP","VIDEO_TITLE","GAME_CODE","VIEWER_NUM"] + video_title = live_data["content"]["liveTitle"] + game_code = live_data["content"]["liveCategoryValue"] # KR name + viewer_num = int(live_data["content"]["concurrentUserCount"]) + + status = [streamer_id, broadcast_id, timestamp, video_title, afc_broadcast_title, game_code, afc_game_code, viewer_num,afc_viewer_num] + df.loc[len(df)] = status + + else: + pass + return df + + @task + def afreeca_data(bj_ids: list, **kwargs): + def get_live_status(bjid, headers): + # BJ의 생방송 상태와 game category, broadcast title 등의 정보를 조회하는 함수 + live_status_url = ( + f"https://live.afreecatv.com/afreeca/player_live_api.php?bjid={bjid}" + ) + live_res = requests.post( + live_status_url, headers=headers, data={"bid": bjid, "type": "live"} + ).json()["CHANNEL"] + return live_res + + def get_broad_info(bjid, headers): + # BJ의 생방송 상태, 실시간 시청자 수, timestamp를 조회하는 함수 + broad_url = f"https://bjapi.afreecatv.com/api/{bjid}/station" + broad_res = requests.get(broad_url, headers=headers).json() + return broad_res + + + # 연결을 위한 헤더와 parameter설정 + headers = { + "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36", + } + + # live stream data를 저장할 리스트 선언 + live_stream_data = [] + + start_time = time.time() + + for bjid in bj_ids: + live_res = get_live_status(bjid, headers) + broad_res = get_broad_info(bjid, headers) + broad_info = broad_res.get("broad") + + try: + # if live is on, RESULT : 1 and res_broad_info is not null + if live_res.get("RESULT") and broad_info: + live_stream_data.append( + { + "STREAMER_ID": bjid, + "BROADCAST_ID": live_res["BNO"], + "LIVE_COLLECT_TIME": broad_res["current_timestamp"].strftime("%Y-%m-%d %H:%M"), + "CHZ_BROADCAST_TITLE": "", + "AFC_BROADCAST_TITLE": live_res["TITLE"], + "CHZ_GAME_CODE": "", + "AFC_GAME_CODE": int(live_res["CATE"]), + "CHZ_VIEWER_NUM": 0, + "AFC_VIEWER_NUM": broad_info["current_sum_viewer"], + } + ) + # else: + # print(f"bj {bjid} is not on live.") + except ValueError: + pass + + # dataframe에 저장 + live_stream_df = pd.DataFrame(live_stream_data) + return live_stream_df + + + @task + def merge_stream_data(chzzk_data: pd.DataFrame,afreeca_data: pd.DataFrame) -> pd.DataFrame: + stream_data = pd.concat([chzzk_data,afreeca_data], ignore_index=True) + return stream_data + + @task + def load(data): + # 데이터 로드 로직 + print(f"Loaded data: {transformed_data['transformed_data']}") + + # 태스크 실행 순서 지정 + streamer_list = get_streamer_list() + chzzk_data = get_chzzk_data(streamer_list) + afreeca_data = get_afreeca_data(streamer_list) + stream_data = merge_stream_data(chzzk_data,afreeca_data) + + load(stream_data) + +# DAG 인스턴스 생성 +example_dag = get_data() From 425ca785155cfedd5c5bb5c01c9675bda2d642b0 Mon Sep 17 00:00:00 2001 From: poriz Date: Sat, 17 Feb 2024 16:45:03 +0900 Subject: [PATCH 051/249] [feat] change raw data, add dag_raw_data.py --- dataCollector/dag_raw_data.py | 90 +++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 dataCollector/dag_raw_data.py diff --git a/dataCollector/dag_raw_data.py b/dataCollector/dag_raw_data.py new file mode 100644 index 0000000..3038918 --- /dev/null +++ b/dataCollector/dag_raw_data.py @@ -0,0 +1,90 @@ +from airflow import DAG +from airflow.operators.python import PythonOperator + +import time +from datetime import datetime + +import requests +import pandas as pd +from bs4 import BeautifulSoup as bs + +# get streamer_list in elasticcache +def get_s_list(): + # test streamer_list + return ["0d027498b18371674fac3ed17247e6b8", "fe558c6d1b8ef3206ac0bc0419f3f564", + "0b33823ac81de48d5b78a38cdbc0ab94"] + +def chzzk_raw(chzzk_ids): + live_stream_data = {} + for id in chzzk_ids: + res = requests.get(f"https://api.chzzk.naver.com/polling/v2/channels/{id}/live-status") + + if res.status_code == 200: + live_data = res.json() + live = live_data["content"]["status"] + if live == "OPEN": + live_stream_data[id] = live_data + else: + pass + return live_stream_data + +def afreeca_raw(afreeca_ids): + live_stream_data = {} + headers = { + "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36", + } + def get_live_status(bjid, headers): + # BJ의 생방송 상태와 game category, broadcast title 등의 정보를 조회하는 함수 + live_status_url = ( + f"https://live.afreecatv.com/afreeca/player_live_api.php?bjid={bjid}" + ) + live_res = requests.post( + live_status_url, headers=headers, data={"bid": bjid, "type": "live"} + ).json()["CHANNEL"] + return live_res + + def get_broad_info(bjid, headers): + # BJ의 생방송 상태, 실시간 시청자 수, timestamp를 조회하는 함수 + broad_url = f"https://bjapi.afreecatv.com/api/{bjid}/station" + broad_res = requests.get(broad_url, headers=headers).json() + return broad_res + + for bjid in afreeca_ids: + live_res = get_live_status(bjid, headers) + broad_res = get_broad_info(bjid, headers) + broad_info = broad_res.get("broad") + + if live_res.get("RESULT") and broad_info: + combined_res = { + "live_status":live_res, + "broad_info":broad_res + } + live_stream_data[bjid] = combined_res + + else: + pass + + return live_stream_data + + +# dag codes +with DAG( +'get_raw_data', + default_args={}, + catchup=False, +)as dag: + + get_raw_chzzk = PythonOperator( + task_id='chzzk_raw', + python_callable=chzzk_raw + ) + get_raw_afreeca = PythonOperator( + task_id='afreeca_raw', + python_callable=afreeca_raw + ) + + # load + load_raw_data = dummyOperator() + +get_s_list > [get_raw_chzzk,get_raw_afreeca] > load_raw_data + From 39f48bff995933ea4635042a8f2c04cb873f7924 Mon Sep 17 00:00:00 2001 From: poriz Date: Sun, 18 Feb 2024 11:12:47 +0900 Subject: [PATCH 052/249] [feat] change dag default, tasks --- dataCollector/dag_raw_data.py | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/dataCollector/dag_raw_data.py b/dataCollector/dag_raw_data.py index 3038918..60f866f 100644 --- a/dataCollector/dag_raw_data.py +++ b/dataCollector/dag_raw_data.py @@ -1,8 +1,9 @@ from airflow import DAG from airflow.operators.python import PythonOperator +from airflow.operators.dummy import DummyOperator import time -from datetime import datetime +from datetime import datetime,timedelta import requests import pandas as pd @@ -69,22 +70,33 @@ def get_broad_info(bjid, headers): # dag codes with DAG( -'get_raw_data', - default_args={}, + 'get_raw_data', + default_args={ + 'owner': 'airflow', + 'depends_on_past': False, + 'start_date': datetime(2024,2,18), + 'retries':1, + 'retry_delay': timedelta(minutes=5), + }, + schedule_interval="*/5 * * * *", catchup=False, )as dag: - get_raw_chzzk = PythonOperator( + task_get_s_list = PythonOperator( + task_id='get_s_list', + python_callable=get_s_list + ) + task_raw_chzzk = PythonOperator( task_id='chzzk_raw', python_callable=chzzk_raw ) - get_raw_afreeca = PythonOperator( + task_raw_afreeca = PythonOperator( task_id='afreeca_raw', python_callable=afreeca_raw ) # load - load_raw_data = dummyOperator() + task_load_raw_data = DummyOperator(task_id='load') -get_s_list > [get_raw_chzzk,get_raw_afreeca] > load_raw_data +task_get_s_list > [task_raw_chzzk,task_raw_afreeca] > task_load_raw_data From f81e8691adbcb491b2414493493d8169e5413d69 Mon Sep 17 00:00:00 2001 From: srlee056 Date: Sun, 18 Feb 2024 15:33:30 +0900 Subject: [PATCH 053/249] [feat] : local json to s3 operator --- dataCollector/dag_raw_data.py | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/dataCollector/dag_raw_data.py b/dataCollector/dag_raw_data.py index 60f866f..efd6c4c 100644 --- a/dataCollector/dag_raw_data.py +++ b/dataCollector/dag_raw_data.py @@ -1,8 +1,9 @@ from airflow import DAG from airflow.operators.python import PythonOperator from airflow.operators.dummy import DummyOperator - +from airflow.providers.amazon.aws.operators.s3 import S3CreateObjectOperator import time +import json from datetime import datetime,timedelta import requests @@ -68,6 +69,13 @@ def get_broad_info(bjid, headers): return live_stream_data +## test data + +data_dict = {"apple": 0.5, "milk": 2.5, "bread": 4.0} +data_json = json.dumps(data_dict) + +bucket_name = "de-2-1-bucket" + # dag codes with DAG( 'get_raw_data', @@ -81,7 +89,7 @@ def get_broad_info(bjid, headers): schedule_interval="*/5 * * * *", catchup=False, )as dag: - + task_get_s_list = PythonOperator( task_id='get_s_list', python_callable=get_s_list @@ -96,7 +104,18 @@ def get_broad_info(bjid, headers): ) # load - task_load_raw_data = DummyOperator(task_id='load') - + current_time = '{{ data_interval_end}}' + year = "{{ data_interval_end.year }}" + month = "{{ data_interval_end.month }}" + day = "{{ data_interval_end.day }}" + table_name = 'raw_live_viewer' + task_load_raw_data = S3CreateObjectOperator( + task_id="create_object", + s3_bucket=bucket_name, + s3_key=f"source/json/table_name={table_name}/year={year}/month={month}/day={day}/{table_name}_{current_time}.json", + data=data_json, + replace=True, + aws_conn_id="aws_conn_id", + ) task_get_s_list > [task_raw_chzzk,task_raw_afreeca] > task_load_raw_data From 4dc6bcf5a05e3327904a5ec483bfe24336f8e67c Mon Sep 17 00:00:00 2001 From: srlee056 Date: Sun, 18 Feb 2024 15:43:36 +0900 Subject: [PATCH 054/249] [feat] : create s3 connection task test and template --- dataCollector/test_s3_connection.py | 42 +++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 dataCollector/test_s3_connection.py diff --git a/dataCollector/test_s3_connection.py b/dataCollector/test_s3_connection.py new file mode 100644 index 0000000..3b0693d --- /dev/null +++ b/dataCollector/test_s3_connection.py @@ -0,0 +1,42 @@ +from airflow import DAG +from airflow.operators.python import PythonOperator +from airflow.operators.dummy import DummyOperator +from airflow.providers.amazon.aws.operators.s3 import S3CreateObjectOperator +from datetime import datetime, timedelta +import json + +data_dict = {"apple": 0.5, "milk": 2.5, "bread": 4.0} +data_json = json.dumps(data_dict) +bucket_name = "de-2-1-bucket" + + +# test & load to s3 template +with DAG( + "get_raw_data", + default_args={ + "owner": "airflow", + "depends_on_past": False, + "start_date": datetime(2024, 2, 18), + "retries": 1, + "retry_delay": timedelta(minutes=5), + }, + schedule_interval='@once', + catchup=False, +) as dag: + + current_time = '{{ data_interval_end}}' + year = "{{ data_interval_end.year }}" + month = "{{ data_interval_end.month }}" + day = "{{ data_interval_end.day }}" + table_name = 'raw_live_viewer' + + task_load_raw_data = S3CreateObjectOperator( + task_id="create_object", + s3_bucket=bucket_name, + s3_key=f"source/json/table_name={table_name}/year={year}/month={month}/day={day}/{table_name}_{current_time}.json", + data=data_json, + replace=True, + aws_conn_id="aws_conn_id", + ) + +task_load_raw_data From 1b95a7cdc813bcead24222d4f03ee4a3c1eab382 Mon Sep 17 00:00:00 2001 From: Lee Sarah Date: Sun, 18 Feb 2024 15:55:34 +0900 Subject: [PATCH 055/249] [feat] set up condition based on the event that trigger the workflow - push : deploy - pull_request : build(test) --- .github/workflows/sync_dag_code.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/sync_dag_code.yml b/.github/workflows/sync_dag_code.yml index 5fe6164..d0e1ec6 100644 --- a/.github/workflows/sync_dag_code.yml +++ b/.github/workflows/sync_dag_code.yml @@ -33,7 +33,7 @@ jobs: build: needs: path-filter - if: needs.path-filter.outputs.dags-changed == 'true' + if: needs.path-filter.outputs.dags-changed == 'true' || github.event_name == 'pull_request' runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 @@ -75,7 +75,8 @@ jobs: run: pytest tests/ deploy: - needs: [path-filter, build] + needs: path-filter + if: github.event_name == 'push' runs-on: self-hosted steps: - name: Checkout code From 008ad77792a8be7fbc52bf7d8443a9ea7a38fb7c Mon Sep 17 00:00:00 2001 From: Lee Sarah Date: Sun, 18 Feb 2024 15:57:55 +0900 Subject: [PATCH 056/249] [fix] : fix condition to 'and' --- .github/workflows/sync_dag_code.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/sync_dag_code.yml b/.github/workflows/sync_dag_code.yml index d0e1ec6..6ca3140 100644 --- a/.github/workflows/sync_dag_code.yml +++ b/.github/workflows/sync_dag_code.yml @@ -33,7 +33,7 @@ jobs: build: needs: path-filter - if: needs.path-filter.outputs.dags-changed == 'true' || github.event_name == 'pull_request' + if: needs.path-filter.outputs.dags-changed == 'true' && github.event_name == 'pull_request' runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 From f3a4fd58122ce5adeeb19b8f79c65b92ecd8ffb7 Mon Sep 17 00:00:00 2001 From: Lee Sarah Date: Sun, 18 Feb 2024 15:58:39 +0900 Subject: [PATCH 057/249] [test] : test deploy do not run in pull_request if docker related files changed --- docker-compose.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yaml b/docker-compose.yaml index 7c19e29..061ef47 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -60,7 +60,7 @@ x-airflow-common: &airflow-common AIRFLOW__CELERY__BROKER_URL: redis://:@redis:6379/0 AIRFLOW__CORE__FERNET_KEY: "" AIRFLOW__CORE__DAGS_ARE_PAUSED_AT_CREATION: "true" - AIRFLOW__CORE__LOAD_EXAMPLES: "false" + AIRFLOW__CORE__LOAD_EXAMPLES: "true" AIRFLOW__API__AUTH_BACKENDS: "airflow.api.auth.backend.basic_auth,airflow.api.auth.backend.session" # yamllint disable rule:line-length # Use simple http server on scheduler for health checks From 23b07f4dbcd19c1fe1363ff9cbf9a25d1ce36fb9 Mon Sep 17 00:00:00 2001 From: Lee Sarah Date: Sun, 18 Feb 2024 15:59:26 +0900 Subject: [PATCH 058/249] Revert "[test] : test deploy do not run in pull_request if docker related files changed" This reverts commit f3a4fd58122ce5adeeb19b8f79c65b92ecd8ffb7. --- docker-compose.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yaml b/docker-compose.yaml index 061ef47..7c19e29 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -60,7 +60,7 @@ x-airflow-common: &airflow-common AIRFLOW__CELERY__BROKER_URL: redis://:@redis:6379/0 AIRFLOW__CORE__FERNET_KEY: "" AIRFLOW__CORE__DAGS_ARE_PAUSED_AT_CREATION: "true" - AIRFLOW__CORE__LOAD_EXAMPLES: "true" + AIRFLOW__CORE__LOAD_EXAMPLES: "false" AIRFLOW__API__AUTH_BACKENDS: "airflow.api.auth.backend.basic_auth,airflow.api.auth.backend.session" # yamllint disable rule:line-length # Use simple http server on scheduler for health checks From 3aef2cc2dc80632899ee7b5de6c9a6d9d098b53d Mon Sep 17 00:00:00 2001 From: Lee Sarah Date: Sun, 18 Feb 2024 16:01:32 +0900 Subject: [PATCH 059/249] [fix] : remove code --- .github/workflows/sync_dag_code.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/sync_dag_code.yml b/.github/workflows/sync_dag_code.yml index 6ca3140..512d663 100644 --- a/.github/workflows/sync_dag_code.yml +++ b/.github/workflows/sync_dag_code.yml @@ -90,7 +90,6 @@ jobs: DEPLOY_DIRECTORY: /home/zizzicteam2/${{ env.REPO_NAME }} run: | rsync -av --include='dags/***' --include='docker-compose.yaml' --include='Dockerfile' --exclude='*' ./ $DEPLOY_DIRECTORY - echo $DEPLOY_DIRECTORY - name: Restart Docker Services if: ${{ needs.path-filter.outputs.docker-changed == 'true' }} env: From 6fb6539492f22edcf53f717a551a2bb713e63dde Mon Sep 17 00:00:00 2001 From: Lee Sarah Date: Sun, 18 Feb 2024 16:02:30 +0900 Subject: [PATCH 060/249] [feat] : rename workflow --- .github/workflows/sync_dag_code.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/sync_dag_code.yml b/.github/workflows/sync_dag_code.yml index 512d663..e68f7b1 100644 --- a/.github/workflows/sync_dag_code.yml +++ b/.github/workflows/sync_dag_code.yml @@ -1,4 +1,4 @@ -name: Example CI/CD Workflow +name: CI/CD Workflow on: push: From f29187b1426adb09e932df9871c61f2a3976d2f9 Mon Sep 17 00:00:00 2001 From: poriz Date: Sun, 18 Feb 2024 17:20:23 +0900 Subject: [PATCH 061/249] [feat] merge codes test --- dataCollector/dag_raw_data.py | 83 +++++++++++++++++++++++++++++------ 1 file changed, 70 insertions(+), 13 deletions(-) diff --git a/dataCollector/dag_raw_data.py b/dataCollector/dag_raw_data.py index efd6c4c..ab4d344 100644 --- a/dataCollector/dag_raw_data.py +++ b/dataCollector/dag_raw_data.py @@ -2,6 +2,7 @@ from airflow.operators.python import PythonOperator from airflow.operators.dummy import DummyOperator from airflow.providers.amazon.aws.operators.s3 import S3CreateObjectOperator +from airflow.providers.postgres.hooks.postgres import PostgresHook import time import json from datetime import datetime,timedelta @@ -10,14 +11,43 @@ import pandas as pd from bs4 import BeautifulSoup as bs -# get streamer_list in elasticcache -def get_s_list(): - # test streamer_list - return ["0d027498b18371674fac3ed17247e6b8", "fe558c6d1b8ef3206ac0bc0419f3f564", - "0b33823ac81de48d5b78a38cdbc0ab94"] -def chzzk_raw(chzzk_ids): +# get streamer_list in rds +def get_s_list(): + # RDS 연결 설정 + return [["0d027498b18371674fac3ed17247e6b8", "fe558c6d1b8ef3206ac0bc0419f3f564", + "0b33823ac81de48d5b78a38cdbc0ab94"],[""]] + # pg_hook = PostgresHook(postgres_conn_id='my_rds_postgres') + # + # # 데이터베이스에서 데이터 가져오기 + # sql = "SELECT * FROM STREAMER_INFO;" # 적절한 SQL 쿼리로 대체 + # connection = pg_hook.get_conn() + # cursor = connection.cursor() + # cursor.execute(sql) + # results = cursor.fetchall() + # + # + # # streamer 분리 및 저장 + # chzzk = [] + # afreeca = [] + # for row in results: + # if row[1]: + # chzzk.append(row[0], row[1]) #streamer_nm,chz_id + # if row[2]: + # afreeca.append(row[0], row[2]) #streamer_nm,af_id + # + # cursor.close() + # connection.close() + + # + +def chzzk_raw(**kwargs): + ti = kwargs['ti'] + lists = ti.xcom_pull(task_ids='get_s_list') + chzzk, afreeca = lists + chzzk_ids = chzzk live_stream_data = {} + for id in chzzk_ids: res = requests.get(f"https://api.chzzk.naver.com/polling/v2/channels/{id}/live-status") @@ -28,9 +58,17 @@ def chzzk_raw(chzzk_ids): live_stream_data[id] = live_data else: pass - return live_stream_data + answer = {'chzzk': live_stream_data} + with open('./live_stream_data.json', 'w') as f: + json.dump(answer, f, indent=4) -def afreeca_raw(afreeca_ids): + +def afreeca_raw(**kwargs): + ti = kwargs['ti'] + lists = ti.xcom_pull(task_ids='get_s_list') + chzzk, afreeca = lists + + afreeca_ids = afreeca live_stream_data = {} headers = { "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36", @@ -66,13 +104,25 @@ def get_broad_info(bjid, headers): else: pass - return live_stream_data + answer = {'afreeca':live_stream_data} + try: + with open('/live_stream_data.json', 'r') as f: + data = json.load(f) + except FileNotFoundError: + data = {} + data.update(answer) -## test data + with open('/live_stream_data.json', 'w') as f: + data = json.load(f) + json.dump(answer, f, indent=4) -data_dict = {"apple": 0.5, "milk": 2.5, "bread": 4.0} -data_json = json.dumps(data_dict) + + +## test data +# +# data_dict = {"apple": 0.5, "milk": 2.5, "bread": 4.0} +# data_json = json.dumps(data_dict) bucket_name = "de-2-1-bucket" @@ -109,6 +159,13 @@ def get_broad_info(bjid, headers): month = "{{ data_interval_end.month }}" day = "{{ data_interval_end.day }}" table_name = 'raw_live_viewer' + + try: + with open('/live_stream_data.json', 'r') as f: + data_json = json.load(f) + except FileNotFoundError: + data_json = {} + task_load_raw_data = S3CreateObjectOperator( task_id="create_object", s3_bucket=bucket_name, @@ -117,5 +174,5 @@ def get_broad_info(bjid, headers): replace=True, aws_conn_id="aws_conn_id", ) -task_get_s_list > [task_raw_chzzk,task_raw_afreeca] > task_load_raw_data +task_get_s_list >> [task_raw_chzzk,task_raw_afreeca] >> task_load_raw_data From a2dd71a863064892db1a31ee285d608a6ecc6b2c Mon Sep 17 00:00:00 2001 From: poriz Date: Sun, 18 Feb 2024 19:28:19 +0900 Subject: [PATCH 062/249] [feat] add dag_raw_test.py --- dataCollector/dag_raw_test.py | 172 ++++++++++++++++++++++++++++++++++ 1 file changed, 172 insertions(+) create mode 100644 dataCollector/dag_raw_test.py diff --git a/dataCollector/dag_raw_test.py b/dataCollector/dag_raw_test.py new file mode 100644 index 0000000..de63cb4 --- /dev/null +++ b/dataCollector/dag_raw_test.py @@ -0,0 +1,172 @@ +from airflow import DAG +from airflow.operators.python import PythonOperator +from airflow.providers.amazon.aws.operators.s3 import S3CreateObjectOperator +from airflow.providers.postgres.hooks.postgres import PostgresHook +import time +import json +import os +from datetime import datetime,timedelta + +import requests +import pandas as pd +from bs4 import BeautifulSoup as bs + + +# get streamer_list in rds +def get_s_list(): + # RDS 연결 설정 + ti = [["fe558c6d1b8ef3206ac0bc0419f3f564","0b33823ac81de48d5b78a38cdbc0ab94"],["devil0108"]] + return ti + +def chzzk_raw(**kwargs): + ti = kwargs['ti'] + lists = ti.xcom_pull(task_ids='get_s_list_task') + chzzk, afreeca = lists + chzzk_ids = chzzk + live_stream_data = {} + + for id in chzzk_ids: + res = requests.get(f"https://api.chzzk.naver.com/polling/v2/channels/{id}/live-status") + + if res.status_code == 200: + live_data = res.json() + live = live_data["content"]["status"] + if live == "OPEN": + live_stream_data[id] = live_data + else: + pass + answer = {'chzzk': live_stream_data} + print(answer) + with open('./live_stream_data.json', 'r+') as f: + json.dump(answer, f, indent=4) + + +def afreeca_raw(**kwargs): + ti = kwargs['ti'] + lists = ti.xcom_pull(task_ids='get_s_list_task') + chzzk, afreeca = lists + + afreeca_ids = afreeca + live_stream_data = {} + headers = { + "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36", + } + def get_live_status(bjid, headers): + # BJ의 생방송 상태와 game category, broadcast title 등의 정보를 조회하는 함수 + live_status_url = ( + f"https://live.afreecatv.com/afreeca/player_live_api.php?bjid={bjid}" + ) + live_res = requests.post( + live_status_url, headers=headers, data={"bid": bjid, "type": "live"} + ).json()["CHANNEL"] + return live_res + + def get_broad_info(bjid, headers): + # BJ의 생방송 상태, 실시간 시청자 수, timestamp를 조회하는 함수 + broad_url = f"https://bjapi.afreecatv.com/api/{bjid}/station" + broad_res = requests.get(broad_url, headers=headers).json() + return broad_res + + if afreeca_ids != []: + for bjid in afreeca_ids: + live_res = get_live_status(bjid, headers) + broad_res = get_broad_info(bjid, headers) + broad_info = broad_res.get("broad") + + if live_res.get("RESULT") and broad_info: + combined_res = { + "live_status":live_res, + "broad_info":broad_res + } + live_stream_data[bjid] = combined_res + + else: + pass + + answer = {'afreeca':live_stream_data} + + # 파일 읽기 + try: + with open('./live_stream_data.json', 'r') as f: + data = json.load(f) # 파일에서 기존 데이터 로드 + except FileNotFoundError: + data = {} # 파일이 없으면 빈 딕셔너리 사용 + print(data) + # answer 딕셔너리를 기존 data 딕셔너리에 추가/업데이트 + data.update(answer) + + # 'stream_data'라는 최상위 키로 전체 데이터를 감싸는 새로운 딕셔너리 생성 + stream_data = {'stream_data': data} + + # 변경된 전체 데이터를 JSON 파일에 저장 + with open('./live_stream_data.json', 'w') as f: + json.dump(stream_data, f, indent=4) + +## test data +# +# data_dict = {"apple": 0.5, "milk": 2.5, "bread": 4.0} +# data_json = json.dumps(data_dict) + +bucket_name = "de-2-1-bucket" + +# dag codes +with DAG( + 'get_raw_data', + default_args={ + 'owner': 'airflow', + 'depends_on_past': False, + 'start_date': datetime(2024,1,17), + 'retries': 0, + 'retry_delay': timedelta(minutes=5), + }, + schedule_interval="*/5 * * * *", + catchup=False, +)as dag: + + task_get_s_list = PythonOperator( + task_id='get_s_list_task', + python_callable=get_s_list + ) + task_raw_chzzk = PythonOperator( + task_id='chzzk_raw_task', + python_callable=chzzk_raw + ) + task_raw_afreeca = PythonOperator( + task_id='afreeca_raw_task', + python_callable=afreeca_raw + ) + + # load + current_time = '{{ data_interval_end}}' + year = "{{ data_interval_end.year }}" + month = "{{ data_interval_end.month }}" + day = "{{ data_interval_end.day }}" + table_name = 'raw_live_viewer' + + filename = './live_stream_data.json' + + # 파일이 존재하는지 먼저 확인 + if not os.path.exists(filename): + # 파일이 존재하지 않으면 빈 JSON 객체로 새 파일 생성 + with open(filename, 'w') as f: + json.dump({}, f) + + # 파일을 읽고 쓰기 모드로 열기 + with open(filename, 'r+') as f: + # 파일 내용 읽기 + try: + data_json = json.load(f) + except json.JSONDecodeError: + # 파일이 비어있거나 JSON 형식이 아닐 경우 빈 객체 사용 + data_json = {} + + task_load_raw_data = S3CreateObjectOperator( + task_id="create_object", + s3_bucket=bucket_name, + s3_key=f"source/json/table_name={table_name}/year={year}/month={month}/day={day}/{table_name}_{current_time}.json", + data=data_json, + replace=True, + aws_conn_id="aws_conn_id", + ) +task_get_s_list >> task_raw_chzzk >> task_raw_afreeca >> task_load_raw_data + From 6637aadc9d5fc0c49cd36fe123971976cb0c7d30 Mon Sep 17 00:00:00 2001 From: srlee056 Date: Sun, 18 Feb 2024 21:30:50 +0900 Subject: [PATCH 063/249] [feat] : test get data from rds --- dataCollector/test_mysql_rds_connection.py | 42 ++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 dataCollector/test_mysql_rds_connection.py diff --git a/dataCollector/test_mysql_rds_connection.py b/dataCollector/test_mysql_rds_connection.py new file mode 100644 index 0000000..f395fff --- /dev/null +++ b/dataCollector/test_mysql_rds_connection.py @@ -0,0 +1,42 @@ +from airflow import DAG +from airflow.operators.python import PythonOperator +from airflow.operators.dummy import DummyOperator +from airflow.providers.mysql.operators.mysql import MySqlOperator +from datetime import datetime, timedelta +import json +import logging + + +def retrieve_data(**kwargs): + ti= kwargs['ti'] + data=ti.xcom_pull(task_ids="get_data_using_query") + return data + +# test & load to s3 template +with DAG( + "get_from_rds", + default_args={ + "owner": "airflow", + "depends_on_past": False, + "start_date": datetime(2024, 2, 18), + "retries": 1, + "retry_delay": timedelta(minutes=5), + }, + schedule_interval='@once', + catchup=False, +) as dag: + + + task_get_data = MySqlOperator( + task_id = "get_data_using_query", + sql='select * from STREAMER_INFO limit 10;', + mysql_conn_id = "aws_rds_conn_id" + ) + + task_print_data = PythonOperator( + task_id='print', + provide_context=True, + python_callable=retrieve_data, + ) + +task_get_data >> task_print_data From 461f52e4ec793488e553b1fca4ff504a7fdeb4dd Mon Sep 17 00:00:00 2001 From: srlee056 Date: Sun, 18 Feb 2024 21:31:02 +0900 Subject: [PATCH 064/249] Update test_s3_connection.py --- dataCollector/test_s3_connection.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dataCollector/test_s3_connection.py b/dataCollector/test_s3_connection.py index 3b0693d..04477a6 100644 --- a/dataCollector/test_s3_connection.py +++ b/dataCollector/test_s3_connection.py @@ -12,7 +12,7 @@ # test & load to s3 template with DAG( - "get_raw_data", + "load_to_s3", default_args={ "owner": "airflow", "depends_on_past": False, From bb86e3a513a9f6588be9faf4a787caabffc26915 Mon Sep 17 00:00:00 2001 From: srlee056 Date: Sun, 18 Feb 2024 22:32:06 +0900 Subject: [PATCH 065/249] [fea] : fix json file save/load process --- dataCollector/dag_raw_test.py | 50 ++++++++++++++++++++--------------- 1 file changed, 29 insertions(+), 21 deletions(-) diff --git a/dataCollector/dag_raw_test.py b/dataCollector/dag_raw_test.py index de63cb4..f4d2fb8 100644 --- a/dataCollector/dag_raw_test.py +++ b/dataCollector/dag_raw_test.py @@ -35,10 +35,10 @@ def chzzk_raw(**kwargs): live_stream_data[id] = live_data else: pass - answer = {'chzzk': live_stream_data} - print(answer) - with open('./live_stream_data.json', 'r+') as f: - json.dump(answer, f, indent=4) + + + with open('./live_stream_data_chzzk.json', 'w') as f: + json.dump(live_stream_data, f, indent=4) def afreeca_raw(**kwargs): @@ -83,30 +83,33 @@ def get_broad_info(bjid, headers): else: pass - answer = {'afreeca':live_stream_data} + with open('./live_stream_data_afreeca.json', 'w') as f: + json.dump(live_stream_data, f, indent=4) + + +def merge_json(): + # 파일 읽고 기존 데이터 로드 + try: + with open('./live_stream_data_chzzk.json', 'r') as f: + chzzk_data = json.load(f) + except FileNotFoundError: + chzzk_data = {} - # 파일 읽기 try: - with open('./live_stream_data.json', 'r') as f: - data = json.load(f) # 파일에서 기존 데이터 로드 + with open('./live_stream_data_afreeca.json', 'r') as f: + afreeca_data = json.load(f) except FileNotFoundError: - data = {} # 파일이 없으면 빈 딕셔너리 사용 - print(data) - # answer 딕셔너리를 기존 data 딕셔너리에 추가/업데이트 - data.update(answer) + afreeca_data = {} # 'stream_data'라는 최상위 키로 전체 데이터를 감싸는 새로운 딕셔너리 생성 - stream_data = {'stream_data': data} + stream_data = {'stream_data': { + 'chzzk':chzzk_data, + 'afreeca':afreeca_data, + }} - # 변경된 전체 데이터를 JSON 파일에 저장 with open('./live_stream_data.json', 'w') as f: json.dump(stream_data, f, indent=4) -## test data -# -# data_dict = {"apple": 0.5, "milk": 2.5, "bread": 4.0} -# data_json = json.dumps(data_dict) - bucket_name = "de-2-1-bucket" # dag codes @@ -136,6 +139,11 @@ def get_broad_info(bjid, headers): python_callable=afreeca_raw ) + task_merge_json = PythonOperator( + task_id='merge_json_task', + python_callable=merge_json + ) + # load current_time = '{{ data_interval_end}}' year = "{{ data_interval_end.year }}" @@ -159,7 +167,7 @@ def get_broad_info(bjid, headers): except json.JSONDecodeError: # 파일이 비어있거나 JSON 형식이 아닐 경우 빈 객체 사용 data_json = {} - + data_json = json.dumps(data_json) task_load_raw_data = S3CreateObjectOperator( task_id="create_object", s3_bucket=bucket_name, @@ -168,5 +176,5 @@ def get_broad_info(bjid, headers): replace=True, aws_conn_id="aws_conn_id", ) -task_get_s_list >> task_raw_chzzk >> task_raw_afreeca >> task_load_raw_data +task_get_s_list >> [task_raw_chzzk, task_raw_afreeca] >> task_merge_json >> task_load_raw_data From 4957a06ba61b4bbf7a65c8cce11a6bafb78f99ac Mon Sep 17 00:00:00 2001 From: poriz Date: Mon, 19 Feb 2024 00:13:49 +0900 Subject: [PATCH 066/249] [feat] raw_data DAG 1.0 --- .../streaming/dag_raw_data.py | 50 +++-- dataCollector/chzzk/chzzk_live_status.py | 14 +- dataCollector/chzzk/dag_chzzk_live_data.py | 1 + dataCollector/dag_raw_data.py | 178 ------------------ dataCollector/data_collect_dag.py | 135 ------------- .../test_mysql_rds_connection.py | 0 .../{ => test_files}/test_s3_connection.py | 0 7 files changed, 48 insertions(+), 330 deletions(-) rename dataCollector/dag_raw_test.py => dags/streaming/dag_raw_data.py (82%) delete mode 100644 dataCollector/dag_raw_data.py delete mode 100644 dataCollector/data_collect_dag.py rename dataCollector/{ => test_files}/test_mysql_rds_connection.py (100%) rename dataCollector/{ => test_files}/test_s3_connection.py (100%) diff --git a/dataCollector/dag_raw_test.py b/dags/streaming/dag_raw_data.py similarity index 82% rename from dataCollector/dag_raw_test.py rename to dags/streaming/dag_raw_data.py index f4d2fb8..cca2615 100644 --- a/dataCollector/dag_raw_test.py +++ b/dags/streaming/dag_raw_data.py @@ -2,25 +2,40 @@ from airflow.operators.python import PythonOperator from airflow.providers.amazon.aws.operators.s3 import S3CreateObjectOperator from airflow.providers.postgres.hooks.postgres import PostgresHook -import time +from airflow.providers.mysql.operators.mysql import MySqlOperator + import json import os -from datetime import datetime,timedelta - import requests -import pandas as pd -from bs4 import BeautifulSoup as bs - +from datetime import datetime,timedelta # get streamer_list in rds -def get_s_list(): +def get_s_list(**kwargs): # RDS 연결 설정 - ti = [["fe558c6d1b8ef3206ac0bc0419f3f564","0b33823ac81de48d5b78a38cdbc0ab94"],["devil0108"]] - return ti + ti = kwargs['ti'] + data = ti.xcom_pull(task_ids="get_data_using_query") + + return data + +def process_data(**kwargs): + ti = kwargs['ti'] + # XCom에서 SQL 쿼리 결과 가져오기 + sql_data = ti.xcom_pull(task_ids='get_s_list_task') + chzzk = [] + afc = [] + for row in sql_data: + if row[1] != '': + chzzk.append(row[1]) + if row[2] != '': + afc.append(row[2]) + # 가공된 데이터 반환 + return [chzzk, afc] + def chzzk_raw(**kwargs): ti = kwargs['ti'] - lists = ti.xcom_pull(task_ids='get_s_list_task') + lists = ti.xcom_pull(task_ids='processing_task') + print(lists) chzzk, afreeca = lists chzzk_ids = chzzk live_stream_data = {} @@ -43,7 +58,7 @@ def chzzk_raw(**kwargs): def afreeca_raw(**kwargs): ti = kwargs['ti'] - lists = ti.xcom_pull(task_ids='get_s_list_task') + lists = ti.xcom_pull(task_ids='processing_task') chzzk, afreeca = lists afreeca_ids = afreeca @@ -126,9 +141,14 @@ def merge_json(): catchup=False, )as dag: - task_get_s_list = PythonOperator( - task_id='get_s_list_task', - python_callable=get_s_list + task_get_s_list = MySqlOperator( + task_id="get_s_list_task", + sql='select STREAMER_ID,CHZ_ID,AFC_ID from STREAMER_INFO;', + mysql_conn_id="aws_rds_conn_id" + ) + task_processing_list = PythonOperator( + task_id='processing_task', + python_callable= process_data ) task_raw_chzzk = PythonOperator( task_id='chzzk_raw_task', @@ -176,5 +196,5 @@ def merge_json(): replace=True, aws_conn_id="aws_conn_id", ) -task_get_s_list >> [task_raw_chzzk, task_raw_afreeca] >> task_merge_json >> task_load_raw_data +task_get_s_list >> task_processing_list >> [task_raw_chzzk, task_raw_afreeca] >> task_merge_json >> task_load_raw_data diff --git a/dataCollector/chzzk/chzzk_live_status.py b/dataCollector/chzzk/chzzk_live_status.py index b666002..30e88b7 100644 --- a/dataCollector/chzzk/chzzk_live_status.py +++ b/dataCollector/chzzk/chzzk_live_status.py @@ -3,11 +3,16 @@ import json from datetime import datetime +def datetime_converter(o): + if isinstance(o, datetime): + return o.isoformat() + # df_structure df = pd.DataFrame(columns=["STREAMER_ID", "LIVE_COLLECT_TIME_STAMP","VIDEO_TITLE", "GAME_CODE", "VIEWER_NUM"]) +answer = [] # get streamer_id in redis -streamer_id = ['0b33823ac81de48d5b78a38cdbc0ab94'] +streamer_id = ['f39c3d74e33a81ab3080356b91bb8de5','bee4b42475b5937226b8b7ccbe2eb2dc','4d4a3e04937947aae221fc458cb902f7'] for id in streamer_id: # get response @@ -16,7 +21,7 @@ # check live_status live=live_data["content"]["status"] - timestamp = datetime.now() # context("data_interval_end") + timestamp = datetime.now().isoformat() # context("data_interval_end") if live == "OPEN": # status["STREAMER_ID","LIVE_COLLECT_TIME_STAMP","VIDEO_TITLE","GAME_CODE","VIEWER_NUM"] @@ -26,8 +31,13 @@ status = [id,timestamp,video_title,game_code,viewer_num] df.loc[len(df)] = status + answer.append(status) else: pass +# print(answer) +json_string = json.dumps(answer,ensure_ascii=False,indent=4) +print(json_string) + diff --git a/dataCollector/chzzk/dag_chzzk_live_data.py b/dataCollector/chzzk/dag_chzzk_live_data.py index 090d221..5f86978 100644 --- a/dataCollector/chzzk/dag_chzzk_live_data.py +++ b/dataCollector/chzzk/dag_chzzk_live_data.py @@ -34,6 +34,7 @@ def get_chzzk_data(context): else: pass + return df diff --git a/dataCollector/dag_raw_data.py b/dataCollector/dag_raw_data.py deleted file mode 100644 index ab4d344..0000000 --- a/dataCollector/dag_raw_data.py +++ /dev/null @@ -1,178 +0,0 @@ -from airflow import DAG -from airflow.operators.python import PythonOperator -from airflow.operators.dummy import DummyOperator -from airflow.providers.amazon.aws.operators.s3 import S3CreateObjectOperator -from airflow.providers.postgres.hooks.postgres import PostgresHook -import time -import json -from datetime import datetime,timedelta - -import requests -import pandas as pd -from bs4 import BeautifulSoup as bs - - -# get streamer_list in rds -def get_s_list(): - # RDS 연결 설정 - return [["0d027498b18371674fac3ed17247e6b8", "fe558c6d1b8ef3206ac0bc0419f3f564", - "0b33823ac81de48d5b78a38cdbc0ab94"],[""]] - # pg_hook = PostgresHook(postgres_conn_id='my_rds_postgres') - # - # # 데이터베이스에서 데이터 가져오기 - # sql = "SELECT * FROM STREAMER_INFO;" # 적절한 SQL 쿼리로 대체 - # connection = pg_hook.get_conn() - # cursor = connection.cursor() - # cursor.execute(sql) - # results = cursor.fetchall() - # - # - # # streamer 분리 및 저장 - # chzzk = [] - # afreeca = [] - # for row in results: - # if row[1]: - # chzzk.append(row[0], row[1]) #streamer_nm,chz_id - # if row[2]: - # afreeca.append(row[0], row[2]) #streamer_nm,af_id - # - # cursor.close() - # connection.close() - - # - -def chzzk_raw(**kwargs): - ti = kwargs['ti'] - lists = ti.xcom_pull(task_ids='get_s_list') - chzzk, afreeca = lists - chzzk_ids = chzzk - live_stream_data = {} - - for id in chzzk_ids: - res = requests.get(f"https://api.chzzk.naver.com/polling/v2/channels/{id}/live-status") - - if res.status_code == 200: - live_data = res.json() - live = live_data["content"]["status"] - if live == "OPEN": - live_stream_data[id] = live_data - else: - pass - answer = {'chzzk': live_stream_data} - with open('./live_stream_data.json', 'w') as f: - json.dump(answer, f, indent=4) - - -def afreeca_raw(**kwargs): - ti = kwargs['ti'] - lists = ti.xcom_pull(task_ids='get_s_list') - chzzk, afreeca = lists - - afreeca_ids = afreeca - live_stream_data = {} - headers = { - "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36", - } - def get_live_status(bjid, headers): - # BJ의 생방송 상태와 game category, broadcast title 등의 정보를 조회하는 함수 - live_status_url = ( - f"https://live.afreecatv.com/afreeca/player_live_api.php?bjid={bjid}" - ) - live_res = requests.post( - live_status_url, headers=headers, data={"bid": bjid, "type": "live"} - ).json()["CHANNEL"] - return live_res - - def get_broad_info(bjid, headers): - # BJ의 생방송 상태, 실시간 시청자 수, timestamp를 조회하는 함수 - broad_url = f"https://bjapi.afreecatv.com/api/{bjid}/station" - broad_res = requests.get(broad_url, headers=headers).json() - return broad_res - - for bjid in afreeca_ids: - live_res = get_live_status(bjid, headers) - broad_res = get_broad_info(bjid, headers) - broad_info = broad_res.get("broad") - - if live_res.get("RESULT") and broad_info: - combined_res = { - "live_status":live_res, - "broad_info":broad_res - } - live_stream_data[bjid] = combined_res - - else: - pass - - answer = {'afreeca':live_stream_data} - try: - with open('/live_stream_data.json', 'r') as f: - data = json.load(f) - except FileNotFoundError: - data = {} - - data.update(answer) - - with open('/live_stream_data.json', 'w') as f: - data = json.load(f) - json.dump(answer, f, indent=4) - - - -## test data -# -# data_dict = {"apple": 0.5, "milk": 2.5, "bread": 4.0} -# data_json = json.dumps(data_dict) - -bucket_name = "de-2-1-bucket" - -# dag codes -with DAG( - 'get_raw_data', - default_args={ - 'owner': 'airflow', - 'depends_on_past': False, - 'start_date': datetime(2024,2,18), - 'retries':1, - 'retry_delay': timedelta(minutes=5), - }, - schedule_interval="*/5 * * * *", - catchup=False, -)as dag: - - task_get_s_list = PythonOperator( - task_id='get_s_list', - python_callable=get_s_list - ) - task_raw_chzzk = PythonOperator( - task_id='chzzk_raw', - python_callable=chzzk_raw - ) - task_raw_afreeca = PythonOperator( - task_id='afreeca_raw', - python_callable=afreeca_raw - ) - - # load - current_time = '{{ data_interval_end}}' - year = "{{ data_interval_end.year }}" - month = "{{ data_interval_end.month }}" - day = "{{ data_interval_end.day }}" - table_name = 'raw_live_viewer' - - try: - with open('/live_stream_data.json', 'r') as f: - data_json = json.load(f) - except FileNotFoundError: - data_json = {} - - task_load_raw_data = S3CreateObjectOperator( - task_id="create_object", - s3_bucket=bucket_name, - s3_key=f"source/json/table_name={table_name}/year={year}/month={month}/day={day}/{table_name}_{current_time}.json", - data=data_json, - replace=True, - aws_conn_id="aws_conn_id", - ) -task_get_s_list >> [task_raw_chzzk,task_raw_afreeca] >> task_load_raw_data - diff --git a/dataCollector/data_collect_dag.py b/dataCollector/data_collect_dag.py deleted file mode 100644 index 735c988..0000000 --- a/dataCollector/data_collect_dag.py +++ /dev/null @@ -1,135 +0,0 @@ -from airflow.decorators import dag, task -from airflow.utils.dates import days_ago -from airflow.operators.python import PythonOperator - -import time -from datetime import datetime - -import requests -import pandas as pd -from bs4 import BeautifulSoup as bs - - -# DAG 정의 -@dag(schedule_interval='@daily', start_date=days_ago(1), catchup=False) -def get_data(): - - # get streamer_list in elasticcache - @task - def get_streamer_list(): - # test streamer_list - return ["0d027498b18371674fac3ed17247e6b8","fe558c6d1b8ef3206ac0bc0419f3f564","0b33823ac81de48d5b78a38cdbc0ab94"] - - - # chzzk_method - @task - def get_chzzk_data(s_id_list: list,**kwargs): - # df_structure - df = pd.DataFrame(columns=["STREAMER_ID","BROADCAST_ID", "LIVE_COLLECT_TIME", "CHZ_BROADCAST_TITLE","AFC_BROADCAST_TITLE","CHZ_GAME_CODE","AFC_GAME_CODE", "CHZ_VIEWER_NUM","AFC_VIEWER_NUM"]) - broadcast_id = "" - afc_broadcast_title="" - afc_game_code="" - afc_viewer_num=0 - - for streamer_id in s_id_list: - # get response - res = requests.get(f"https://api.chzzk.naver.com/polling/v2/channels/{id}/live-status") - live_data = res.json() - - # check live_status - live = live_data["content"]["status"] - timestamp = kwargs("data_interval_end").strftime("%Y-%m-%d %H:%M") - - if live == "OPEN": - # status["STREAMER_ID","LIVE_COLLECT_TIME_STAMP","VIDEO_TITLE","GAME_CODE","VIEWER_NUM"] - video_title = live_data["content"]["liveTitle"] - game_code = live_data["content"]["liveCategoryValue"] # KR name - viewer_num = int(live_data["content"]["concurrentUserCount"]) - - status = [streamer_id, broadcast_id, timestamp, video_title, afc_broadcast_title, game_code, afc_game_code, viewer_num,afc_viewer_num] - df.loc[len(df)] = status - - else: - pass - return df - - @task - def afreeca_data(bj_ids: list, **kwargs): - def get_live_status(bjid, headers): - # BJ의 생방송 상태와 game category, broadcast title 등의 정보를 조회하는 함수 - live_status_url = ( - f"https://live.afreecatv.com/afreeca/player_live_api.php?bjid={bjid}" - ) - live_res = requests.post( - live_status_url, headers=headers, data={"bid": bjid, "type": "live"} - ).json()["CHANNEL"] - return live_res - - def get_broad_info(bjid, headers): - # BJ의 생방송 상태, 실시간 시청자 수, timestamp를 조회하는 함수 - broad_url = f"https://bjapi.afreecatv.com/api/{bjid}/station" - broad_res = requests.get(broad_url, headers=headers).json() - return broad_res - - - # 연결을 위한 헤더와 parameter설정 - headers = { - "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36", - } - - # live stream data를 저장할 리스트 선언 - live_stream_data = [] - - start_time = time.time() - - for bjid in bj_ids: - live_res = get_live_status(bjid, headers) - broad_res = get_broad_info(bjid, headers) - broad_info = broad_res.get("broad") - - try: - # if live is on, RESULT : 1 and res_broad_info is not null - if live_res.get("RESULT") and broad_info: - live_stream_data.append( - { - "STREAMER_ID": bjid, - "BROADCAST_ID": live_res["BNO"], - "LIVE_COLLECT_TIME": broad_res["current_timestamp"].strftime("%Y-%m-%d %H:%M"), - "CHZ_BROADCAST_TITLE": "", - "AFC_BROADCAST_TITLE": live_res["TITLE"], - "CHZ_GAME_CODE": "", - "AFC_GAME_CODE": int(live_res["CATE"]), - "CHZ_VIEWER_NUM": 0, - "AFC_VIEWER_NUM": broad_info["current_sum_viewer"], - } - ) - # else: - # print(f"bj {bjid} is not on live.") - except ValueError: - pass - - # dataframe에 저장 - live_stream_df = pd.DataFrame(live_stream_data) - return live_stream_df - - - @task - def merge_stream_data(chzzk_data: pd.DataFrame,afreeca_data: pd.DataFrame) -> pd.DataFrame: - stream_data = pd.concat([chzzk_data,afreeca_data], ignore_index=True) - return stream_data - - @task - def load(data): - # 데이터 로드 로직 - print(f"Loaded data: {transformed_data['transformed_data']}") - - # 태스크 실행 순서 지정 - streamer_list = get_streamer_list() - chzzk_data = get_chzzk_data(streamer_list) - afreeca_data = get_afreeca_data(streamer_list) - stream_data = merge_stream_data(chzzk_data,afreeca_data) - - load(stream_data) - -# DAG 인스턴스 생성 -example_dag = get_data() diff --git a/dataCollector/test_mysql_rds_connection.py b/dataCollector/test_files/test_mysql_rds_connection.py similarity index 100% rename from dataCollector/test_mysql_rds_connection.py rename to dataCollector/test_files/test_mysql_rds_connection.py diff --git a/dataCollector/test_s3_connection.py b/dataCollector/test_files/test_s3_connection.py similarity index 100% rename from dataCollector/test_s3_connection.py rename to dataCollector/test_files/test_s3_connection.py From 5184c7937852db2fea6970c14b55f4525dc957d1 Mon Sep 17 00:00:00 2001 From: Hun Soo Jeong <147886939+hunsoodev@users.noreply.github.com> Date: Mon, 19 Feb 2024 01:44:45 +0900 Subject: [PATCH 067/249] Update docker-compose.yaml Rendering Airflow UI in a Web Frame from another site Disable Deployment Exposure Warning False setting --- docker-compose.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docker-compose.yaml b/docker-compose.yaml index 7c19e29..88bc547 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -53,6 +53,8 @@ x-airflow-common: &airflow-common build: . environment: &airflow-common-env AIRFLOW__CORE__EXECUTOR: CeleryExecutor + AIRFLOW__WEBSERVER__X_FRAME_ENABLED: "false" + AIRFLOW__WEBSERVER__WARN_DEPLOYMENT_EXPOSURE: "false" AIRFLOW__DATABASE__SQL_ALCHEMY_CONN: postgresql+psycopg2://airflow:airflow@postgres/airflow # For backward compatibility, with Airflow <2.3 AIRFLOW__CORE__SQL_ALCHEMY_CONN: postgresql+psycopg2://airflow:airflow@postgres/airflow From eada3b87b6aa5e905db1ac7538a0b4522e32f6b2 Mon Sep 17 00:00:00 2001 From: lyh Date: Mon, 19 Feb 2024 06:07:17 +0900 Subject: [PATCH 068/249] [feat] ETL DAG --- dags/game/game_ccu_to_s3.py | 76 +++++++++ dags/game/game_comment_to_s3.py | 101 +++++++++++ dags/game/game_price_to_s3.py | 67 ++++++++ dags/game/game_rating_to_s3.py | 109 ++++++++++++ dags/game/top_300_games.py | 289 ++++++++++++++++++++++++++++++++ 5 files changed, 642 insertions(+) create mode 100644 dags/game/game_ccu_to_s3.py create mode 100644 dags/game/game_comment_to_s3.py create mode 100644 dags/game/game_price_to_s3.py create mode 100644 dags/game/game_rating_to_s3.py create mode 100644 dags/game/top_300_games.py diff --git a/dags/game/game_ccu_to_s3.py b/dags/game/game_ccu_to_s3.py new file mode 100644 index 0000000..3252d1b --- /dev/null +++ b/dags/game/game_ccu_to_s3.py @@ -0,0 +1,76 @@ +from airflow import DAG +from airflow.decorators import task +from airflow.providers.amazon.aws.operators.s3 import S3CreateObjectOperator + +from datetime import datetime, timedelta +# from plugins import slack +from top_300_games import games + +import requests +import json + + +# {"response":{"player_count":1188079,"result":1}} 이렇게 옴 +@task +def get_ccu(): + data = [] # 모든 API 응답을 저장할 리스트 + + for appid, game in games.items(): + url = f"http://api.steampowered.com/ISteamUserStats/GetNumberOfCurrentPlayers/v1?appid={appid}" + response = requests.get(url) + + temp = dict() + temp[appid] = response.json()['response'] + print('temp', temp) + + data.append(temp) # API 응답을 리스트에 추가 + print(temp[appid]['player_count'], temp[appid]['result']) + if temp[appid]['result'] != 1: + print(f'Warning! The CCU of {game} does not exists!') + continue + + ccu = temp[appid]['player_count'] + print(f'CCU of {game}: {ccu}') + + return data + + +@task +def save_to_json(data): + result = json.dumps(data) # API 응답들이 담긴 리스트를 JSON으로 저장 + + return result + + +with DAG( + dag_id = 'game_ccu_to_s3', + start_date = datetime(2024,1,1), + catchup=False, + tags=['Steam_API'], + schedule_interval = '@once', + default_args = { + 'retries': 3, + 'retry_delay': timedelta(seconds=15), + # 'on_failure_callback': slack.on_failure_callback, + } +) as dag: + + data = get_ccu() + data_json = save_to_json(data) + + bucket_name = "de-2-1-bucket" + + current_time = "{{ data_interval_end }}" + year = "{{ data_interval_end.year }}" + month = "{{ data_interval_end.month }}" + day = "{{ data_interval_end.day }}" + table_name = 'RAW_GAME_CCU' + + task_load_raw_data = S3CreateObjectOperator( + task_id="create_object", + s3_bucket=bucket_name, + s3_key=f"source/json/table_name={table_name}/year={year}/month={month}/day={day}/{table_name}_{current_time}.json", + data=data_json, + replace=True, + aws_conn_id="aws_conn_id", + ) diff --git a/dags/game/game_comment_to_s3.py b/dags/game/game_comment_to_s3.py new file mode 100644 index 0000000..3a2bf1c --- /dev/null +++ b/dags/game/game_comment_to_s3.py @@ -0,0 +1,101 @@ +from airflow import DAG +from airflow.decorators import task +from airflow.providers.amazon.aws.operators.s3 import S3CreateObjectOperator +from airflow.models import Variable + +from bs4 import BeautifulSoup +from datetime import datetime, timedelta +# from plugins import slack +from top_300_games import games + +import re +import pandas as pd +import requests +import json + + +# Game info 테이블에 있는 Game들의 app_id를 이용해 게임 정량 평가를 가져오는 함수 +def get_game_reviews(app_id): + # API URL + api_url = f'https://store.steampowered.com/appreviews/{app_id}?json=1' + + # API 키를 설정 + api_key = Variable.get("steam_api_key") + + # API 요청 매개변수 설정 + params = { + 'key': api_key, + 'json': '1', + 'language': 'korean', # 한국어 리뷰들만 가져오기 + 'num_per_page': 100, # 페이지당 100개의 리뷰 가져오기 + } + + # API 요청 보내기 + response = requests.get(api_url, params=params) + + # 응답 확인 + if response.status_code == 200: + data = response.json() + return data +# reviews = data.get('reviews', []) +# for review in reviews: +# print(f"Review ID: {review['recommendationid']}") +# print(f"Author: {review['author']['steamid']}") +# print(f"Review: {review['review']}") +# print(f"Recommended: {review['voted_up']}") +# print(f"----------------------------------") + else: + print(f"Error: Unable to fetch reviews. Status Code: {response.status_code}") + + +with DAG( + dag_id = 'game_comment_to_s3', + start_date = datetime(2024,1,1), + catchup=False, + tags=['Steam_API'], + schedule_interval = '@once', + default_args = { + 'retries': 3, + 'retry_delay': timedelta(minutes=1), + # 'on_failure_callback': slack.on_failure_callback, + } +) as dag: + + @task + def get_ratings_task(): + data = list() + for app_id, game in games.items(): + temp = dict() + temp[app_id] = get_game_reviews(app_id) + print(game, temp) + data.append(temp) + print() + return data + + + @task + def save_to_json(data): + result = json.dumps(data) # API 응답들이 담긴 리스트를 JSON으로 저장 + + return result + + + data = get_ratings_task() + data_json = save_to_json(data) + + bucket_name = "de-2-1-bucket" + + current_time = "{{ data_interval_end }}" + year = "{{ data_interval_end.year }}" + month = "{{ data_interval_end.month }}" + day = "{{ data_interval_end.day }}" + table_name = 'RAW_GAME_REVIEW' + + task_load_raw_data = S3CreateObjectOperator( + task_id="create_object", + s3_bucket=bucket_name, + s3_key=f"source/json/table_name={table_name}/year={year}/month={month}/day={day}/{table_name}_{current_time}.json", + data=data_json, + replace=True, + aws_conn_id="aws_conn_id", + ) diff --git a/dags/game/game_price_to_s3.py b/dags/game/game_price_to_s3.py new file mode 100644 index 0000000..06f11a0 --- /dev/null +++ b/dags/game/game_price_to_s3.py @@ -0,0 +1,67 @@ +from airflow import DAG +from airflow.decorators import task +from airflow.providers.amazon.aws.operators.s3 import S3CreateObjectOperator + +from datetime import datetime, timedelta +# from plugins import slack +from top_300_games import games + +import requests +import json + + +@task +def get_ccu(): + data = [] # 모든 API 응답을 저장할 리스트 + + for appid in games.keys(): + url = f"http://store.steampowered.com/api/appdetails?appids={appid}&cc=kr" + response = requests.get(url) + + temp = dict() + temp[appid] = response.json() + + data.append(temp) # API 응답을 리스트에 추가 + + return data + + +@task +def save_to_json(data): + result = json.dumps(data) # API 응답들이 담긴 리스트를 JSON으로 저장 + + return result + + +with DAG( + dag_id = 'game_price_to_s3', + start_date = datetime(2024,1,1), + catchup=False, + tags=['Steam_API'], + schedule_interval = '@once', + default_args = { + 'retries': 3, + 'retry_delay': timedelta(seconds=15), + # 'on_failure_callback': slack.on_failure_callback, + } +) as dag: + + data = get_ccu() + data_json = save_to_json(data) + + bucket_name = "de-2-1-bucket" + + current_time = "{{ data_interval_end }}" + year = "{{ data_interval_end.year }}" + month = "{{ data_interval_end.month }}" + day = "{{ data_interval_end.day }}" + table_name = 'RAW_GAME_PRICE' + + task_load_raw_data = S3CreateObjectOperator( + task_id="create_object", + s3_bucket=bucket_name, + s3_key=f"source/json/table_name={table_name}/year={year}/month={month}/day={day}/{table_name}_{current_time}.json", + data=data_json, + replace=True, + aws_conn_id="aws_conn_id", + ) diff --git a/dags/game/game_rating_to_s3.py b/dags/game/game_rating_to_s3.py new file mode 100644 index 0000000..15f5fad --- /dev/null +++ b/dags/game/game_rating_to_s3.py @@ -0,0 +1,109 @@ +from airflow import DAG +from airflow.decorators import task +from airflow.providers.amazon.aws.operators.s3 import S3CreateObjectOperator + +from bs4 import BeautifulSoup +from datetime import datetime, timedelta +# from plugins import slack +from top_300_games import games + +import re +import pandas as pd +import requests +import json + + +# Game info 테이블에 있는 Game들의 app_id를 이용해 게임 정량 평가를 가져오는 함수 +def get_rating(app_id): + url = f"https://store.steampowered.com/app/{app_id}" + response = requests.get(url) + soup = BeautifulSoup(response.text, 'html.parser') + + reviewdesc_short = soup.find_all('span', {'class': 'responsive_reviewdesc_short'}) + + if reviewdesc_short == []: + return {'ALL_POSITIVE_NUM': 0, 'ALL_POSITIVE_PERCENT': 0, 'RECENT_POSITIVE_NUM': 0, 'RECENT_POSITIVE_PERCENT': 0} + + recent_reviews = None + all_reviews = None + + for review in reviewdesc_short: + if "Recent" in review.text: + recent_reviews = review + elif "All Time" in review.text: + all_reviews = review + + recent_reviews_text = (recent_reviews.text.strip().replace('\xa0', ' ') if recent_reviews else 'No recent reviews') + all_reviews_text = (all_reviews.text.strip().replace('\xa0', ' ') if all_reviews else 'No reviews') + + # 최근, 모든 평가에서 추출한 숫자들을 리스트로 저장 + recent_reviews_numbers = [int(num) for num in re.findall(r'\d+', recent_reviews_text.replace(',', ''))][::-1] + all_reviews_numbers = [int(num) for num in re.findall(r'\d+', all_reviews_text.replace(',', ''))][::-1] + + print('r', recent_reviews_numbers) + print('a', all_reviews_numbers) + + data = {'ALL_POSITIVE_NUM': all_reviews_numbers[0], + 'ALL_POSITIVE_PERCENT': all_reviews_numbers[1]} + + if len(recent_reviews_numbers) == 0: + data['RECENT_POSITIVE_NUM'] = 0 + data['RECENT_POSITIVE_PERCENT'] = 0 + else: + data['RECENT_POSITIVE_NUM'] = recent_reviews_numbers[0] + data['RECENT_POSITIVE_PERCENT'] = recent_reviews_numbers[1] + + return data + + +with DAG( + dag_id = 'game_rating_to_s3', + start_date = datetime(2024,1,1), + catchup=False, + tags=['Steam_API'], + schedule_interval = '@once', + default_args = { + 'retries': 3, + 'retry_delay': timedelta(minutes=1), + # 'on_failure_callback': slack.on_failure_callback, + } +) as dag: + + @task + def get_ratings_task(): + data = list() + for app_id, game in games.items(): + temp = dict() + temp[app_id] = get_rating(app_id) + print(game, temp) + data.append(temp) + print() + return data + + + @task + def save_to_json(data): + result = json.dumps(data) # API 응답들이 담긴 리스트를 JSON으로 저장 + + return result + + + data = get_ratings_task() + data_json = save_to_json(data) + + bucket_name = "de-2-1-bucket" + + current_time = "{{ data_interval_end }}" + year = "{{ data_interval_end.year }}" + month = "{{ data_interval_end.month }}" + day = "{{ data_interval_end.day }}" + table_name = 'RAW_GAME_RATING' + + task_load_raw_data = S3CreateObjectOperator( + task_id="create_object", + s3_bucket=bucket_name, + s3_key=f"source/json/table_name={table_name}/year={year}/month={month}/day={day}/{table_name}_{current_time}.json", + data=data_json, + replace=True, + aws_conn_id="aws_conn_id", + ) diff --git a/dags/game/top_300_games.py b/dags/game/top_300_games.py new file mode 100644 index 0000000..a1a0616 --- /dev/null +++ b/dags/game/top_300_games.py @@ -0,0 +1,289 @@ +games = {730: 'Counter-Strike 2', + 1623730: 'Palworld', + 570: 'Dota 2', + 553850: 'HELLDIVERS™ 2', + 1172470: 'Apex Legends', + 1086940: "Baldur's Gate 3", + 271590: 'Grand Theft Auto V', + 1938090: 'Call of Duty®', + 578080: 'PUBG: BATTLEGROUNDS', + 359550: "Tom Clancy's Rainbow Six Siege", + 252490: 'Rust', + 230410: 'Warframe', + 236390: 'War Thunder', + 440: 'Team Fortress 2', + 2252570: 'Football Manager 2024', + 881020: 'Granblue Fantasy: Relink', + 1203620: 'Enshrouded', + 304930: 'Unturned', + 1966720: 'Lethal Company', + 2195250: 'EA SPORTS FC™ 24', + 1245620: 'ELDEN RING', + 1203220: 'NARAKA: BLADEPOINT', + 221100: 'DayZ', + 289070: "Sid Meier's Civilization VI", + 1174180: 'Red Dead Redemption 2', + 2357570: 'Overwatch® 2', + 1085660: 'Destiny 2', + 436150: 'Governor of Poker 3', + 413150: 'Stardew Valley', + 105600: 'Terraria', + 1222670: 'The Sims™ 4', + 1091500: 'Cyberpunk 2077', + 322170: 'Geometry Dash', + 394360: 'Hearts of Iron IV', + 252950: 'Rocket League', + 1449850: 'Yu-Gi-Oh! Master Duel', + 108600: 'Project Zomboid', + 438100: 'VRChat', + 489830: 'The Elder Scrolls V: Skyrim Special Edition', + 582010: 'Monster Hunter: World', + 381210: 'Dead by Daylight', + 2161700: 'Persona 3 Reload', + 218620: 'PAYDAY 2', + 2073850: 'THE FINALS', + 1778820: 'TEKKEN 8', + 2349820: "Hero's Land", + 227300: 'Euro Truck Simulator 2', + 251570: '7 Days to Die', + 346110: 'ARK: Survival Evolved', + 550: 'Left 4 Dead 2', + 294100: 'RimWorld', + 4000: "Garry's Mod", + 250900: 'The Binding of Isaac: Rebirth', + 892970: 'Valheim', + 291550: 'Brawlhalla', + 1248130: 'Farming Simulator 22', + 2399830: 'ARK: Survival Ascended', + 386360: 'SMITE', + 377160: 'Fallout 4', + 8930: "Sid Meier's Civilization V", + 899770: 'Last Epoch', + 1142710: 'Total War: WARHAMMER III', + 813780: 'Age of Empires II: Definitive Edition', + 1158310: 'Crusader Kings III', + 261550: 'Mount & Blade II: Bannerlord', + 236850: 'Europa Universalis IV', + 1454400: 'Cookie Clicker', + 960090: 'Bloons TD 6', + 306130: 'The Elder Scrolls Online', + 284160: 'BeamNG.drive', + 383180: 'Dead Island Riptide Definitive Edition', + 1063730: 'New World', + 427520: 'Factorio', + 2072450: 'Like a Dragon: Infinite Wealth', + 322330: "Don't Starve Together", + 739630: 'Phasmophobia', + 990080: 'Hogwarts Legacy', + 281990: 'Stellaris', + 292030: 'The Witcher 3: Wild Hunt', + 1238810: 'Battlefield™ V', + 107410: 'Arma 3', + 244210: 'Assetto Corsa', + 513710: 'SCUM', + 1151340: 'Fallout 76', + 1687950: 'Persona 5 Royal', + 1250410: 'Microsoft Flight Simulator', + 393380: 'Squad', + 594650: 'Hunt: Showdown', + 646570: 'Slay the Spire', + 1172620: 'Sea of Thieves', + 270880: 'American Truck Simulator', + 761890: 'Albion Online', + 632360: 'Risk of Rain 2', + 1517290: 'Battlefield™ 2042', + 526870: 'Satisfactory', + 1551360: 'Forza Horizon 5', + 1665460: 'eFootball™ 2024', + 440900: 'Conan Exiles', + 548430: 'Deep Rock Galactic', + 10: 'Counter-Strike', + 2140330: 'Madden NFL 24', + 1920960: 'VPet', + 2344520: 'Diablo® IV', + 1466860: 'Age of Empires IV: Anniversary Edition', + 686810: 'Hell Let Loose', + 255710: 'Cities: Skylines', + 1476970: 'Legends of Idleon MMO', + 374320: 'DARK SOULS™ III', + 444090: 'Paladins', + 365670: 'Blender', + 1716740: 'Starfield', + 976730: 'Halo: The Master Chief Collection', + 1144200: 'Ready or Not', + 2338770: 'NBA 2K24', + 1364780: 'Street Fighter™ 6', + 2141910: 'Magic: The Gathering Arena', + 1118200: 'People Playground', + 1997040: 'MARVEL SNAP', + 1240440: 'Halo Infinite', + 1677740: 'Stumble Guys', + 1811260: 'EA SPORTS™ FIFA 23', + 766570: 'Russian Fishing 4', + 1451190: 'Undisputed', + 1267910: 'Melvor Idle', + 552990: 'World of Warships', + 457140: 'Oxygen Not Included', + 1782210: 'Crab Game', + 529340: 'Victoria 3', + 1145360: 'Hades', + 1366540: 'Dyson Sphere Program', + 311210: 'Call of Duty: Black Ops III', + 1973530: 'Limbus Company', + 1238840: 'Battlefield 1 ™', + 1919590: 'NBA 2K23', + 444200: 'World of Tanks Blitz', + 1446780: 'MONSTER HUNTER RISE', + 367520: 'Hollow Knight', + 264710: 'Subnautica', + 22380: 'Fallout: New Vegas', + 1928420: 'Farlight 84', + 233860: 'Kenshi', + 714010: 'Aimlabs', + 949230: 'Cities: Skylines II', + 1326470: 'Sons Of The Forest', + 214950: 'Total War: ROME II - Emperor Edition', + 570940: 'DARK SOULS™: REMASTERED', + 1426210: 'It Takes Two', + 1286830: 'STAR WARS™: The Old Republic™', + 1721470: 'Poppy Playtime', + 2050650: 'Resident Evil 4', + 945360: 'Among Us', + 435150: 'Divinity: Original Sin 2', + 2471100: 'Unnamed Space Idle', + 1147690: 'NGU IDLE', + 244850: 'Space Engineers', + 1794680: 'Vampire Survivors', + 1361210: 'Warhammer 40,000: Darktide', + 627690: 'Idle Champions of the Forgotten Realms', + 386180: 'Crossout', + 1258080: 'Shop Titans', + 601510: 'Yu-Gi-Oh! Duel Links', + 275850: "No Man's Sky", + 1569040: 'Football Manager 2022', + 12210: 'Grand Theft Auto IV: The Complete Edition', + 985810: 'GrandChase', + 648800: 'Raft', + 286160: 'Tabletop Simulator', + 208650: 'Batman™: Arkham Knight', + 933110: 'Age of Empires III: Definitive Edition', + 304390: 'For Honor', + 779340: 'Total War: THREE KINGDOMS', + 268500: 'XCOM 2', + 4700: 'Total War: MEDIEVAL II - Definitive Edition', + 1284210: 'Guild Wars 2', + 1506830: 'FIFA 22', + 1313140: 'Cult of the Lamb', + 376210: 'The Isle', + 814380: 'Sekiro™: Shadows Die Twice', + 1973710: 'ヘブンバ?ンズレッド', + 700330: 'SCP: Secret Laboratory', + 459820: 'Crush Crush', + 1062090: 'Timberborn', + 1593500: 'God of War', + 1888160: 'ARMORED CORE™ VI FIRES OF RUBICON™', + 1260320: 'Party Animals', + 671860: 'BattleBit Remastered', + 1465360: 'SnowRunner', + 977400: 'Cell to Singularity - Evolution Never Ends', + 359320: 'Elite Dangerous', + 1343400: 'RuneScape', + 518790: 'theHunter: Call of the Wild™', + 1942280: 'Brotato', + 1336490: 'Against the Storm', + 1235140: 'Yakuza: Like a Dragon', + 1259420: 'Days Gone', + 1328670: 'Mass Effect™ Legendary Edition', + 1229490: 'ULTRAKILL', + 242760: 'The Forest', + 1128810: 'RISK: Global Domination', + 239140: 'Dying Light', + 1891700: 'Tap Ninja', + 240: 'Counter-Strike: Source', + 534380: 'Dying Light 2', + 655500: 'MX Bikes', + 1535560: 'Farmer Against Potatoes Idle', + 2186680: 'Warhammer 40,000: Rogue Trader', + 1568590: 'Goose Goose Duck', + 3590: 'Plants vs. Zombies: Game of the Year', + 363970: 'Clicker Heroes', + 8500: 'EVE Online', + 1151640: 'Horizon Zero Dawn™ Complete Edition', + 1404210: 'Red Dead Online', + 1462040: 'FINAL FANTASY VII REMAKE INTERGRADE', + 1868140: 'DAVE THE DIVER', + 10500: 'Total War: EMPIRE - Definitive Edition', + 1129580: 'Medieval Dynasty', + 958260: 'DEAD OR ALIVE Xtreme Venus Vacation', + 703080: 'Planet Zoo', + 2108330: 'F1® 23', + 1407200: 'World of Tanks', + 1797880: 'Lost Light', + 397540: 'Borderlands 3', + 638970: 'Yakuza 0', + 48700: 'Mount & Blade: Warband', + 34330: 'Total War: SHOGUN 2', + 1604030: 'V Rising', + 1167630: 'Teardown', + 1468810: '鬼谷八荒 Tale of Immortal', + 231430: 'Company of Heroes 2', + 594570: 'Total War: WARHAMMER II', + 916440: 'Anno 1800', + 380600: 'Fishing Planet', + 1293830: 'Forza Horizon 4', + 1158160: 'Coral Island', + 1774580: 'STAR WARS Jedi: Survivor™', + 219990: 'Grim Dawn', + 2444170: 'Backpack Battles Demo', + 203770: 'Crusader Kings II', + 49520: 'Borderlands 2', + 1850570: "DEATH STRANDING DIRECTOR'S CUT", + 2221490: "Tom Clancy's The Division 2", + 471710: 'Rec Room', + 787860: 'Farming Simulator 19', + 379430: 'Kingdom Come: Deliverance', + 1659040: 'HITMAN 3', + 812140: "Assassin's Creed Odyssey", + 1184370: 'Pathfinder: Wrath of the Righteous - Enhanced Edition', + 635260: 'CarX Drift Racing Online', + 262060: 'Darkest Dungeon®', + 367500: "Dragon's Dogma: Dark Arisen", + 32470: 'STAR WARS™ Empire at War: Gold Pack', + 335300: 'DARK SOULS™ II: Scholar of the First Sin', + 287700: 'METAL GEAR SOLID V: THE PHANTOM PAIN', + 315210: 'Suicide Squad: Kill the Justice League', + 2281730: 'Combat Master', + 1718570: 'ASTLIBRA ~生きた?~ Revision', + 1817070: 'Marvel’s Spider-Man Remastered', + 1066780: 'Transport Fever 2', + 573090: 'Stormworks: Build and Rescue', + 1113000: 'Persona 4 Golden', + 1818450: 'STALCRAFT', + 72850: 'The Elder Scrolls V: Skyrim', + 1943950: 'Escape the Backrooms', + 728880: 'Overcooked! 2', + 1084600: 'My Time at Sandrock', + 805550: 'Assetto Corsa Competizione', + 2321470: 'Deep Rock Galactic: Survivor', + 1222680: 'Need for Speed™ Heat', + 1238860: 'Battlefield 4™', + 1061100: "Hunter's Arena: Legends", + 844870: 'KurtzPel', + 1544020: 'The Callisto Protocol™', + 1805480: 'Like a Dragon: Ishin!', + 1448440: 'Wo Long: Fallen Dynasty', + 2503740: 'Storm Striker', + 1147560: 'Skul: The Hero Slayer', + 1237320: 'Sonic Frontiers', + 1367300: 'Blade Assault', + 1693980: 'Dead Space', + 222420: "THE KING OF FIGHTERS '98 ULTIMATE MATCH FINAL EDITION", + 2500750: 'Only Climb: Better Together', + 1498570: 'THE KING OF FIGHTERS XV', + 2178420: '트리 오브 세이비어', + 1530300: 'Auto Chess', + 1149460: 'Icarus', + 1627720: 'Lies of P', + 1304930: 'The Outlast Trials', + 389730: 'TEKKEN 7', + 1049590: 'Eternal Return'} \ No newline at end of file From 70f87a9e0651edbc5cabefd0a906a4ad402077ae Mon Sep 17 00:00:00 2001 From: poriz Date: Mon, 19 Feb 2024 11:46:10 +0900 Subject: [PATCH 069/249] [feat] glue_airflow --- dataCollector/glue&athena/glue_airflow.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 dataCollector/glue&athena/glue_airflow.py diff --git a/dataCollector/glue&athena/glue_airflow.py b/dataCollector/glue&athena/glue_airflow.py new file mode 100644 index 0000000..e69de29 From 544573a67308c6adc38a94682aa5a03f28625109 Mon Sep 17 00:00:00 2001 From: poriz Date: Mon, 19 Feb 2024 13:25:23 +0900 Subject: [PATCH 070/249] [feat] dag_raw_data v1.1 --- dags/streaming/dag_raw_data.py | 27 ++++--------- dataCollector/glue&athena/glue_airflow.py | 48 +++++++++++++++++++++++ 2 files changed, 55 insertions(+), 20 deletions(-) diff --git a/dags/streaming/dag_raw_data.py b/dags/streaming/dag_raw_data.py index cca2615..df5e5e4 100644 --- a/dags/streaming/dag_raw_data.py +++ b/dags/streaming/dag_raw_data.py @@ -15,29 +15,20 @@ def get_s_list(**kwargs): ti = kwargs['ti'] data = ti.xcom_pull(task_ids="get_data_using_query") - return data - -def process_data(**kwargs): - ti = kwargs['ti'] - # XCom에서 SQL 쿼리 결과 가져오기 - sql_data = ti.xcom_pull(task_ids='get_s_list_task') chzzk = [] afc = [] - for row in sql_data: + for row in data: if row[1] != '': chzzk.append(row[1]) if row[2] != '': afc.append(row[2]) - # 가공된 데이터 반환 - return [chzzk, afc] + + kwargs['ti'].xcom_push(key='chzzk',value=chzzk) + kwargs['ti'].xcom_push(key='afc',value=afc) def chzzk_raw(**kwargs): - ti = kwargs['ti'] - lists = ti.xcom_pull(task_ids='processing_task') - print(lists) - chzzk, afreeca = lists - chzzk_ids = chzzk + chzzk_ids = kwargs['ti'].xcom_pull(key='chzzk',task_ids='get_s_list') live_stream_data = {} for id in chzzk_ids: @@ -51,17 +42,13 @@ def chzzk_raw(**kwargs): else: pass - with open('./live_stream_data_chzzk.json', 'w') as f: json.dump(live_stream_data, f, indent=4) def afreeca_raw(**kwargs): - ti = kwargs['ti'] - lists = ti.xcom_pull(task_ids='processing_task') - chzzk, afreeca = lists + afreeca_ids = kwargs['ti'].xcom_pull(key='afc', task_ids='get_s_list') - afreeca_ids = afreeca live_stream_data = {} headers = { "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36", @@ -106,7 +93,7 @@ def merge_json(): # 파일 읽고 기존 데이터 로드 try: with open('./live_stream_data_chzzk.json', 'r') as f: - chzzk_data = json.load(f) + chzzk_data = json.load(f) except FileNotFoundError: chzzk_data = {} diff --git a/dataCollector/glue&athena/glue_airflow.py b/dataCollector/glue&athena/glue_airflow.py index e69de29..abef3f8 100644 --- a/dataCollector/glue&athena/glue_airflow.py +++ b/dataCollector/glue&athena/glue_airflow.py @@ -0,0 +1,48 @@ +from datetime import datetime, timedelta +from airflow import DAG +from airflow.providers.amazon.aws.operators.glue import AwsGlueJobOperator +from airflow.operators.python import PythonOperator + +# 전날 날짜를 계산하는 함수 +def set_glue_crawler_params(): + yesterday = datetime.now() - timedelta(1) + date_str = yesterday.strftime('%Y-%m-%d') + # 여기서 필요한 파라미터를 설정할 수 있습니다. + # 예: S3 경로 내 날짜 기반 폴더 + return {"date": date_str} + +default_args = { + 'owner': 'airflow', + 'depends_on_past': False, + 'email_on_failure': False, + 'email_on_retry': False, + 'retries': 1, + 'retry_delay': timedelta(minutes=5), +} + +with DAG( + 'glue_crawler_dag', + default_args=default_args, + description='DAG for running AWS Glue Crawler', + schedule_interval=timedelta(days=1), # 매일 실행 + start_date=datetime(2022, 1, 1), + catchup=False, +) as dag: + + # 파라미터 설정 Task + set_params = PythonOperator( + task_id='set_glue_crawler_params', + python_callable=set_glue_crawler_params, + ) + + # Glue Crawler 실행 Task + run_glue_crawler = AwsGlueJobOperator( + task_id='run_glue_crawler', + job_name='your_glue_crawler_name', # AWS Glue에서 설정한 Crawler 이름 + script_location='s3://your-bucket/path/to/glue/script', # Glue 스크립트 위치 + region_name='your-aws-region', + # 필요한 경우 아래에 추가 파라미터를 전달할 수 있습니다. + # 예: '--additional-python-modules', 'pyarrow==2, pandas' + ) + + set_params >> run_glue_crawler From 9eed54e61bcd62ec78e9c724c4bcd7a775ac8ac8 Mon Sep 17 00:00:00 2001 From: poriz Date: Mon, 19 Feb 2024 13:37:13 +0900 Subject: [PATCH 071/249] [feat] dag_raw_data v1.2 --- dags/streaming/dag_raw_data.py | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/dags/streaming/dag_raw_data.py b/dags/streaming/dag_raw_data.py index df5e5e4..4f0493e 100644 --- a/dags/streaming/dag_raw_data.py +++ b/dags/streaming/dag_raw_data.py @@ -3,6 +3,7 @@ from airflow.providers.amazon.aws.operators.s3 import S3CreateObjectOperator from airflow.providers.postgres.hooks.postgres import PostgresHook from airflow.providers.mysql.operators.mysql import MySqlOperator +from airflow.providers.mysql.hooks.mysql import MySqlHook import json import os @@ -12,12 +13,12 @@ # get streamer_list in rds def get_s_list(**kwargs): # RDS 연결 설정 - ti = kwargs['ti'] - data = ti.xcom_pull(task_ids="get_data_using_query") - + mysql_hook = MySqlHook(mysql_conn_id="aws_rds_conn_id") + result = mysql_hook.get_records("SELECT STREAMER_ID, CHZ_ID, AFC_ID FROM STREAMER_INFO;") + # kwargs['ti'].xcom_push(key='query_result', value=result) chzzk = [] afc = [] - for row in data: + for row in result: if row[1] != '': chzzk.append(row[1]) if row[2] != '': @@ -128,14 +129,9 @@ def merge_json(): catchup=False, )as dag: - task_get_s_list = MySqlOperator( + task_get_s_list = PythonOperator( task_id="get_s_list_task", - sql='select STREAMER_ID,CHZ_ID,AFC_ID from STREAMER_INFO;', - mysql_conn_id="aws_rds_conn_id" - ) - task_processing_list = PythonOperator( - task_id='processing_task', - python_callable= process_data + python_callable=get_s_list ) task_raw_chzzk = PythonOperator( task_id='chzzk_raw_task', From 4d1e3f5a11dbb18a4bee0c6523b8773ba35500b6 Mon Sep 17 00:00:00 2001 From: poriz Date: Mon, 19 Feb 2024 13:44:52 +0900 Subject: [PATCH 072/249] [feat] raw_data DAG 2.0 --- dags/streaming/dag_raw_data.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/dags/streaming/dag_raw_data.py b/dags/streaming/dag_raw_data.py index 4f0493e..93ea48b 100644 --- a/dags/streaming/dag_raw_data.py +++ b/dags/streaming/dag_raw_data.py @@ -29,7 +29,7 @@ def get_s_list(**kwargs): def chzzk_raw(**kwargs): - chzzk_ids = kwargs['ti'].xcom_pull(key='chzzk',task_ids='get_s_list') + chzzk_ids = kwargs['ti'].xcom_pull(key='chzzk',task_ids='get_s_list_task') live_stream_data = {} for id in chzzk_ids: @@ -48,7 +48,7 @@ def chzzk_raw(**kwargs): def afreeca_raw(**kwargs): - afreeca_ids = kwargs['ti'].xcom_pull(key='afc', task_ids='get_s_list') + afreeca_ids = kwargs['ti'].xcom_pull(key='afc', task_ids='get_s_list_task') live_stream_data = {} headers = { @@ -179,5 +179,5 @@ def merge_json(): replace=True, aws_conn_id="aws_conn_id", ) -task_get_s_list >> task_processing_list >> [task_raw_chzzk, task_raw_afreeca] >> task_merge_json >> task_load_raw_data +task_get_s_list >> [task_raw_chzzk, task_raw_afreeca] >> task_merge_json >> task_load_raw_data From 9ce017c0d2745a1189df3fbf433414288c3c5858 Mon Sep 17 00:00:00 2001 From: poriz Date: Mon, 19 Feb 2024 14:45:54 +0900 Subject: [PATCH 073/249] [feat] dag_raw_data v2.1 chzzk structure change, code refact --- dags/streaming/dag_raw_data.py | 104 +++++++++++++++++++++++---------- 1 file changed, 72 insertions(+), 32 deletions(-) diff --git a/dags/streaming/dag_raw_data.py b/dags/streaming/dag_raw_data.py index 93ea48b..c00ae3e 100644 --- a/dags/streaming/dag_raw_data.py +++ b/dags/streaming/dag_raw_data.py @@ -1,8 +1,7 @@ from airflow import DAG from airflow.operators.python import PythonOperator from airflow.providers.amazon.aws.operators.s3 import S3CreateObjectOperator -from airflow.providers.postgres.hooks.postgres import PostgresHook -from airflow.providers.mysql.operators.mysql import MySqlOperator +from airflow.providers.amazon.aws.hooks.s3 import S3Hook from airflow.providers.mysql.hooks.mysql import MySqlHook import json @@ -30,7 +29,7 @@ def get_s_list(**kwargs): def chzzk_raw(**kwargs): chzzk_ids = kwargs['ti'].xcom_pull(key='chzzk',task_ids='get_s_list_task') - live_stream_data = {} + live_stream_data = [] for id in chzzk_ids: res = requests.get(f"https://api.chzzk.naver.com/polling/v2/channels/{id}/live-status") @@ -39,11 +38,12 @@ def chzzk_raw(**kwargs): live_data = res.json() live = live_data["content"]["status"] if live == "OPEN": - live_stream_data[id] = live_data + stream_data = {'id':id, **live_data} + live_stream_data.append(stream_data) else: pass - with open('./live_stream_data_chzzk.json', 'w') as f: + with open(f'./chzzk_{current_time}.json', 'w') as f: json.dump(live_stream_data, f, indent=4) @@ -86,20 +86,19 @@ def get_broad_info(bjid, headers): else: pass - with open('./live_stream_data_afreeca.json', 'w') as f: + with open(f'./afc_{current_time}.json', 'w') as f: json.dump(live_stream_data, f, indent=4) - -def merge_json(): +def merge_json(**kwargs): # 파일 읽고 기존 데이터 로드 try: - with open('./live_stream_data_chzzk.json', 'r') as f: + with open(f'./chzzk_{current_time}.json', 'r') as f: chzzk_data = json.load(f) except FileNotFoundError: - chzzk_data = {} + chzzk_data = [{}] try: - with open('./live_stream_data_afreeca.json', 'r') as f: + with open(f'./afc_{current_time}.json', 'r') as f: afreeca_data = json.load(f) except FileNotFoundError: afreeca_data = {} @@ -110,9 +109,34 @@ def merge_json(): 'afreeca':afreeca_data, }} - with open('./live_stream_data.json', 'w') as f: + with open('local_path', 'w') as f: json.dump(stream_data, f, indent=4) +def upload_file_to_s3_without_reading(local_file_path, bucket_name, s3_key, aws_conn_id): + # S3Hook을 사용하여 파일을 S3에 업로드 + s3_hook = S3Hook(aws_conn_id=aws_conn_id) + s3_hook.load_file(filename=local_file_path, bucket_name=bucket_name, replace=True, key=s3_key) + + +def delete_file(file_path): + """주어진 경로의 파일을 삭제하는 함수""" + if os.path.exists(file_path): + os.remove(file_path) + print(f"Deleted {file_path}") + else: + print(f"The file {file_path} does not exist") + +def delete_files(**kwargs): + # 플랫폼별로 파일 삭제 + platforms = ['afc', 'chzzk'] + for platform in platforms: + file_path = f'./{platform}_{current_time}.json' + delete_file(file_path) + + # local_path를 사용하여 파일 삭제 + file_path = f'{local_path}' + delete_file(file_path) + bucket_name = "de-2-1-bucket" # dag codes @@ -128,6 +152,15 @@ def merge_json(): schedule_interval="*/5 * * * *", catchup=False, )as dag: + + # load + current_time = '{{ data_interval_end}}' + year = "{{ data_interval_end.year }}" + month = "{{ data_interval_end.month }}" + day = "{{ data_interval_end.day }}" + table_name = 'raw_live_viewer' + local_name = 'local_raw_live' + local_path = f'./{local_name}_{current_time}.json' task_get_s_list = PythonOperator( task_id="get_s_list_task", @@ -146,38 +179,45 @@ def merge_json(): task_id='merge_json_task', python_callable=merge_json ) + task_load_raw_data = PythonOperator( + task_id='upload_file_directly_to_s3', + python_callable=upload_file_to_s3_without_reading, + op_kwargs={ + 'local_file_path': local_path, + 'bucket_name': bucket_name, + 's3_key': f"source/json/table_name={table_name}/year={year}/month={month}/day={day}/{table_name}_{current_time}.json", + 'aws_conn_id': 'aws_conn_id', + } + ) - # load - current_time = '{{ data_interval_end}}' - year = "{{ data_interval_end.year }}" - month = "{{ data_interval_end.month }}" - day = "{{ data_interval_end.day }}" - table_name = 'raw_live_viewer' - - filename = './live_stream_data.json' + delete_local_files = PythonOperator( + task_id='delete_local_files_task', + python_callable=delete_files, + ) # 파일이 존재하는지 먼저 확인 - if not os.path.exists(filename): + if not os.path.exists(local_path): # 파일이 존재하지 않으면 빈 JSON 객체로 새 파일 생성 - with open(filename, 'w') as f: + with open(local_path, 'w') as f: json.dump({}, f) # 파일을 읽고 쓰기 모드로 열기 - with open(filename, 'r+') as f: + with open(local_path, 'r+') as f: # 파일 내용 읽기 try: data_json = json.load(f) except json.JSONDecodeError: # 파일이 비어있거나 JSON 형식이 아닐 경우 빈 객체 사용 data_json = {} + data_json = json.dumps(data_json) - task_load_raw_data = S3CreateObjectOperator( - task_id="create_object", - s3_bucket=bucket_name, - s3_key=f"source/json/table_name={table_name}/year={year}/month={month}/day={day}/{table_name}_{current_time}.json", - data=data_json, - replace=True, - aws_conn_id="aws_conn_id", - ) -task_get_s_list >> [task_raw_chzzk, task_raw_afreeca] >> task_merge_json >> task_load_raw_data + # task_load_raw_data = S3CreateObjectOperator( + # task_id="create_object", + # s3_bucket=bucket_name, + # s3_key=f"source/json/table_name={table_name}/year={year}/month={month}/day={day}/{table_name}_{current_time}.json", + # data=data_json, + # replace=True, + # aws_conn_id="aws_conn_id", + # ) +task_get_s_list >> [task_raw_chzzk, task_raw_afreeca] >> task_merge_json >> task_load_raw_data >> delete_local_files From 9c413b873be4283d37e8ad9fb8c8c4e5ae8cc98c Mon Sep 17 00:00:00 2001 From: poriz Date: Mon, 19 Feb 2024 15:04:30 +0900 Subject: [PATCH 074/249] [feat] dag_raw_data v2.2 --- dags/streaming/dag_raw_data.py | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/dags/streaming/dag_raw_data.py b/dags/streaming/dag_raw_data.py index c00ae3e..a6efddb 100644 --- a/dags/streaming/dag_raw_data.py +++ b/dags/streaming/dag_raw_data.py @@ -89,7 +89,7 @@ def get_broad_info(bjid, headers): with open(f'./afc_{current_time}.json', 'w') as f: json.dump(live_stream_data, f, indent=4) -def merge_json(**kwargs): +def merge_json(local_path,**kwargs): # 파일 읽고 기존 데이터 로드 try: with open(f'./chzzk_{current_time}.json', 'r') as f: @@ -109,7 +109,7 @@ def merge_json(**kwargs): 'afreeca':afreeca_data, }} - with open('local_path', 'w') as f: + with open(f'{local_path}', 'w') as f: json.dump(stream_data, f, indent=4) def upload_file_to_s3_without_reading(local_file_path, bucket_name, s3_key, aws_conn_id): @@ -174,10 +174,10 @@ def delete_files(**kwargs): task_id='afreeca_raw_task', python_callable=afreeca_raw ) - task_merge_json = PythonOperator( task_id='merge_json_task', - python_callable=merge_json + python_callable=merge_json, + op_kwargs={'local_path':local_path} ) task_load_raw_data = PythonOperator( task_id='upload_file_directly_to_s3', @@ -186,7 +186,7 @@ def delete_files(**kwargs): 'local_file_path': local_path, 'bucket_name': bucket_name, 's3_key': f"source/json/table_name={table_name}/year={year}/month={month}/day={day}/{table_name}_{current_time}.json", - 'aws_conn_id': 'aws_conn_id', + 'aws_conn_id': "aws_conn_id", } ) @@ -211,13 +211,6 @@ def delete_files(**kwargs): data_json = {} data_json = json.dumps(data_json) - # task_load_raw_data = S3CreateObjectOperator( - # task_id="create_object", - # s3_bucket=bucket_name, - # s3_key=f"source/json/table_name={table_name}/year={year}/month={month}/day={day}/{table_name}_{current_time}.json", - # data=data_json, - # replace=True, - # aws_conn_id="aws_conn_id", - # ) + task_get_s_list >> [task_raw_chzzk, task_raw_afreeca] >> task_merge_json >> task_load_raw_data >> delete_local_files From 4e2365a5f30cdfd4952f087f41761b97ee2453d1 Mon Sep 17 00:00:00 2001 From: poriz Date: Mon, 19 Feb 2024 15:09:19 +0900 Subject: [PATCH 075/249] [feat] dag_raw_data v2.3 --- dags/streaming/dag_raw_data.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/dags/streaming/dag_raw_data.py b/dags/streaming/dag_raw_data.py index a6efddb..64d80aa 100644 --- a/dags/streaming/dag_raw_data.py +++ b/dags/streaming/dag_raw_data.py @@ -50,7 +50,7 @@ def chzzk_raw(**kwargs): def afreeca_raw(**kwargs): afreeca_ids = kwargs['ti'].xcom_pull(key='afc', task_ids='get_s_list_task') - live_stream_data = {} + live_stream_data = [] headers = { "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36", } @@ -81,7 +81,9 @@ def get_broad_info(bjid, headers): "live_status":live_res, "broad_info":broad_res } - live_stream_data[bjid] = combined_res + + stream_data = {'id': bjid, **combined_res} + live_stream_data.append(stream_data) else: pass @@ -95,13 +97,13 @@ def merge_json(local_path,**kwargs): with open(f'./chzzk_{current_time}.json', 'r') as f: chzzk_data = json.load(f) except FileNotFoundError: - chzzk_data = [{}] + chzzk_data = [] try: with open(f'./afc_{current_time}.json', 'r') as f: afreeca_data = json.load(f) except FileNotFoundError: - afreeca_data = {} + afreeca_data = [] # 'stream_data'라는 최상위 키로 전체 데이터를 감싸는 새로운 딕셔너리 생성 stream_data = {'stream_data': { From 5703535d0c7f7e4dafba962742eedc5291dc7e58 Mon Sep 17 00:00:00 2001 From: poriz Date: Mon, 19 Feb 2024 17:36:32 +0900 Subject: [PATCH 076/249] [feat] dag_raw_data v3.0 error_check, slack --- dags/streaming/dag_raw_data.py | 41 ++++++++++++++++++++++++++-------- 1 file changed, 32 insertions(+), 9 deletions(-) diff --git a/dags/streaming/dag_raw_data.py b/dags/streaming/dag_raw_data.py index 64d80aa..8ac65a5 100644 --- a/dags/streaming/dag_raw_data.py +++ b/dags/streaming/dag_raw_data.py @@ -1,26 +1,50 @@ +import logging + from airflow import DAG from airflow.operators.python import PythonOperator -from airflow.providers.amazon.aws.operators.s3 import S3CreateObjectOperator from airflow.providers.amazon.aws.hooks.s3 import S3Hook from airflow.providers.mysql.hooks.mysql import MySqlHook +from airflow.providers.slack.operators.slack_webhook import SlackWebhookOperator import json import os import requests +import logging from datetime import datetime,timedelta +def send_slack_notification(message): + slack_msg = { + "text": message + } + slack_token = Variable.get("slack_webhook_token") + + slack_operator = SlackWebhookOperator( + task_id="send_slack", + http_conn_id="slack_conn", # Airflow Admin UI에서 설정한 Slack Connection ID + webhook_token=slack_token, # 여기에 실제 WebHook 토큰을 입력하세요 + message=slack_msg, + username="airflow" + ) + slack_operator.execute(context={}) + # get streamer_list in rds def get_s_list(**kwargs): # RDS 연결 설정 - mysql_hook = MySqlHook(mysql_conn_id="aws_rds_conn_id") - result = mysql_hook.get_records("SELECT STREAMER_ID, CHZ_ID, AFC_ID FROM STREAMER_INFO;") - # kwargs['ti'].xcom_push(key='query_result', value=result) - chzzk = [] - afc = [] + try: + mysql_hook = MySqlHook(mysql_conn_id="aws_rds_conn_id") + result = mysql_hook.get_records("SELECT STREAMER_ID, CHZ_ID, AFC_ID FROM STREAMER_INFO;") + except Exception as e: + error_msg = f"Error occurred: {str(e)}" + logging.error((error_msg)) + + send_slack_notification(error_msg) + raise AirflowException(error_msg) + + chzzk, afc = [], [] for row in result: - if row[1] != '': + if row[1]: chzzk.append(row[1]) - if row[2] != '': + if row[2]: afc.append(row[2]) kwargs['ti'].xcom_push(key='chzzk',value=chzzk) @@ -46,7 +70,6 @@ def chzzk_raw(**kwargs): with open(f'./chzzk_{current_time}.json', 'w') as f: json.dump(live_stream_data, f, indent=4) - def afreeca_raw(**kwargs): afreeca_ids = kwargs['ti'].xcom_pull(key='afc', task_ids='get_s_list_task') From 839d04f966be714708c27d35819791b43579401e Mon Sep 17 00:00:00 2001 From: poriz Date: Mon, 19 Feb 2024 19:31:40 +0900 Subject: [PATCH 077/249] [feat] dag_raw_data v3.1 add slack --- dags/streaming/dag_raw_data.py | 24 +++++------------------- plugins/slack.py | 26 ++++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 19 deletions(-) create mode 100644 plugins/slack.py diff --git a/dags/streaming/dag_raw_data.py b/dags/streaming/dag_raw_data.py index 8ac65a5..9a8ac85 100644 --- a/dags/streaming/dag_raw_data.py +++ b/dags/streaming/dag_raw_data.py @@ -1,31 +1,17 @@ -import logging - from airflow import DAG from airflow.operators.python import PythonOperator from airflow.providers.amazon.aws.hooks.s3 import S3Hook from airflow.providers.mysql.hooks.mysql import MySqlHook -from airflow.providers.slack.operators.slack_webhook import SlackWebhookOperator +from airflow.exceptions import AirflowException + import json import os import requests import logging from datetime import datetime,timedelta +import slack -def send_slack_notification(message): - slack_msg = { - "text": message - } - slack_token = Variable.get("slack_webhook_token") - - slack_operator = SlackWebhookOperator( - task_id="send_slack", - http_conn_id="slack_conn", # Airflow Admin UI에서 설정한 Slack Connection ID - webhook_token=slack_token, # 여기에 실제 WebHook 토큰을 입력하세요 - message=slack_msg, - username="airflow" - ) - slack_operator.execute(context={}) # get streamer_list in rds def get_s_list(**kwargs): @@ -37,7 +23,6 @@ def get_s_list(**kwargs): error_msg = f"Error occurred: {str(e)}" logging.error((error_msg)) - send_slack_notification(error_msg) raise AirflowException(error_msg) chzzk, afc = [], [] @@ -189,7 +174,8 @@ def delete_files(**kwargs): task_get_s_list = PythonOperator( task_id="get_s_list_task", - python_callable=get_s_list + python_callable=get_s_list, + on_failure_callback=slack.on_failure_callback, ) task_raw_chzzk = PythonOperator( task_id='chzzk_raw_task', diff --git a/plugins/slack.py b/plugins/slack.py new file mode 100644 index 0000000..0b64f92 --- /dev/null +++ b/plugins/slack.py @@ -0,0 +1,26 @@ +from airflow.models import Variable + +import logging +import requests + +def on_failure_callback(context): + """ + https://airflow.apache.org/_modules/airflow/operators/slack_operator.html + Define the callback to post on Slack if a failure is detected in the Workflow + :return: operator.execute + """ + text = str(context['task_instance']) + text += "```" + str(context.get('exception')) +"```" + send_message_to_a_slack_channel(text, ":scream:") + + +# def send_message_to_a_slack_channel(message, emoji, channel, access_token): +def send_message_to_a_slack_channel(message, emoji): + # url = "https://slack.com/api/chat.postMessage" + url = "https://hooks.slack.com/services/"+Variable.get("slack_url") + headers = { + 'content-type': 'application/json', + } + data = { "username": "Data GOD", "text": message, "icon_emoji": emoji } + r = requests.post(url, json=data, headers=headers) + return r \ No newline at end of file From 2c7e8ad03e17265fe4b59cc47f18cd461a6d0376 Mon Sep 17 00:00:00 2001 From: srlee056 Date: Mon, 19 Feb 2024 20:47:57 +0900 Subject: [PATCH 078/249] [feat] : Create pre-commit config file that works with black and flake8 --- .pre-commit-config.yaml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 .pre-commit-config.yaml diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000..0033109 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,16 @@ +repos: + - repo: https://github.com/psf/black + rev: 24.2.0 + hooks: + - id: black + language_version: python3.11 + # Black doesn't use file filters for inclusion, it formats all Python files by default. + + - repo: https://github.com/PyCQA/flake8 + rev: '7.0.0' + hooks: + - id: flake8 + # Use a regex pattern to include dags and tests/dags directories + files: ^(dags|tests/dags)/.*\.py$ + # Add errors that would be ignored + args: ['--ignore=E501,W503'] From 65ca9a5f8d699695c8357577784ede94a6a4957b Mon Sep 17 00:00:00 2001 From: srlee056 Date: Mon, 19 Feb 2024 20:57:13 +0900 Subject: [PATCH 079/249] [fix] : re-formatted using black --- dags/game/game_ccu_to_s3.py | 39 +- dags/game/game_comment_to_s3.py | 53 +- dags/game/game_price_to_s3.py | 25 +- dags/game/game_rating_to_s3.py | 86 ++- dags/game/top_300_games.py | 552 ++++++++-------- dags/streaming/dag_raw_data.py | 134 ++-- .../afreecaTV/afreecaTV_chat_test.py | 86 ++- .../afreecaTV/afreecaTV_websocket_test.py | 3 +- dataCollector/chzzk/chzzk_chat_data.py | 47 +- dataCollector/chzzk/chzzk_live_status.py | 32 +- dataCollector/chzzk/dag_chzzk_live_data.py | 28 +- dataCollector/chzzk/game_list.py | 602 +++++++++--------- dataCollector/chzzk/get_chzzk_gameid.py | 9 +- dataCollector/chzzk/get_chzzk_streamerid.py | 34 +- dataCollector/glue&athena/glue_airflow.py | 30 +- .../steam/steam_game_review_comment.py | 26 +- .../steam/steam_game_review_statistics.py | 18 +- dataCollector/steam/steam_getting_ccu.py | 24 +- .../steam/steam_price_and_sale_status.py | 12 +- .../steam/steam_top1000_game_list.py | 8 +- .../test_files/test_mysql_rds_connection.py | 20 +- .../test_files/test_s3_connection.py | 8 +- plugins/slack.py | 13 +- 23 files changed, 1005 insertions(+), 884 deletions(-) diff --git a/dags/game/game_ccu_to_s3.py b/dags/game/game_ccu_to_s3.py index 3252d1b..07328e9 100644 --- a/dags/game/game_ccu_to_s3.py +++ b/dags/game/game_ccu_to_s3.py @@ -3,6 +3,7 @@ from airflow.providers.amazon.aws.operators.s3 import S3CreateObjectOperator from datetime import datetime, timedelta + # from plugins import slack from top_300_games import games @@ -20,17 +21,17 @@ def get_ccu(): response = requests.get(url) temp = dict() - temp[appid] = response.json()['response'] - print('temp', temp) + temp[appid] = response.json()["response"] + print("temp", temp) data.append(temp) # API 응답을 리스트에 추가 - print(temp[appid]['player_count'], temp[appid]['result']) - if temp[appid]['result'] != 1: - print(f'Warning! The CCU of {game} does not exists!') + print(temp[appid]["player_count"], temp[appid]["result"]) + if temp[appid]["result"] != 1: + print(f"Warning! The CCU of {game} does not exists!") continue - ccu = temp[appid]['player_count'] - print(f'CCU of {game}: {ccu}') + ccu = temp[appid]["player_count"] + print(f"CCU of {game}: {ccu}") return data @@ -38,33 +39,33 @@ def get_ccu(): @task def save_to_json(data): result = json.dumps(data) # API 응답들이 담긴 리스트를 JSON으로 저장 - + return result with DAG( - dag_id = 'game_ccu_to_s3', - start_date = datetime(2024,1,1), + dag_id="game_ccu_to_s3", + start_date=datetime(2024, 1, 1), catchup=False, - tags=['Steam_API'], - schedule_interval = '@once', - default_args = { - 'retries': 3, - 'retry_delay': timedelta(seconds=15), + tags=["Steam_API"], + schedule_interval="@once", + default_args={ + "retries": 3, + "retry_delay": timedelta(seconds=15), # 'on_failure_callback': slack.on_failure_callback, - } + }, ) as dag: data = get_ccu() data_json = save_to_json(data) - + bucket_name = "de-2-1-bucket" - + current_time = "{{ data_interval_end }}" year = "{{ data_interval_end.year }}" month = "{{ data_interval_end.month }}" day = "{{ data_interval_end.day }}" - table_name = 'RAW_GAME_CCU' + table_name = "RAW_GAME_CCU" task_load_raw_data = S3CreateObjectOperator( task_id="create_object", diff --git a/dags/game/game_comment_to_s3.py b/dags/game/game_comment_to_s3.py index 3a2bf1c..ecc288f 100644 --- a/dags/game/game_comment_to_s3.py +++ b/dags/game/game_comment_to_s3.py @@ -5,6 +5,7 @@ from bs4 import BeautifulSoup from datetime import datetime, timedelta + # from plugins import slack from top_300_games import games @@ -17,17 +18,17 @@ # Game info 테이블에 있는 Game들의 app_id를 이용해 게임 정량 평가를 가져오는 함수 def get_game_reviews(app_id): # API URL - api_url = f'https://store.steampowered.com/appreviews/{app_id}?json=1' + api_url = f"https://store.steampowered.com/appreviews/{app_id}?json=1" # API 키를 설정 api_key = Variable.get("steam_api_key") # API 요청 매개변수 설정 params = { - 'key': api_key, - 'json': '1', - 'language': 'korean', # 한국어 리뷰들만 가져오기 - 'num_per_page': 100, # 페이지당 100개의 리뷰 가져오기 + "key": api_key, + "json": "1", + "language": "korean", # 한국어 리뷰들만 가져오기 + "num_per_page": 100, # 페이지당 100개의 리뷰 가져오기 } # API 요청 보내기 @@ -37,28 +38,28 @@ def get_game_reviews(app_id): if response.status_code == 200: data = response.json() return data -# reviews = data.get('reviews', []) -# for review in reviews: -# print(f"Review ID: {review['recommendationid']}") -# print(f"Author: {review['author']['steamid']}") -# print(f"Review: {review['review']}") -# print(f"Recommended: {review['voted_up']}") -# print(f"----------------------------------") + # reviews = data.get('reviews', []) + # for review in reviews: + # print(f"Review ID: {review['recommendationid']}") + # print(f"Author: {review['author']['steamid']}") + # print(f"Review: {review['review']}") + # print(f"Recommended: {review['voted_up']}") + # print(f"----------------------------------") else: print(f"Error: Unable to fetch reviews. Status Code: {response.status_code}") with DAG( - dag_id = 'game_comment_to_s3', - start_date = datetime(2024,1,1), + dag_id="game_comment_to_s3", + start_date=datetime(2024, 1, 1), catchup=False, - tags=['Steam_API'], - schedule_interval = '@once', - default_args = { - 'retries': 3, - 'retry_delay': timedelta(minutes=1), + tags=["Steam_API"], + schedule_interval="@once", + default_args={ + "retries": 3, + "retry_delay": timedelta(minutes=1), # 'on_failure_callback': slack.on_failure_callback, - } + }, ) as dag: @task @@ -71,25 +72,23 @@ def get_ratings_task(): data.append(temp) print() return data - - + @task def save_to_json(data): result = json.dumps(data) # API 응답들이 담긴 리스트를 JSON으로 저장 - - return result + return result data = get_ratings_task() data_json = save_to_json(data) - + bucket_name = "de-2-1-bucket" - + current_time = "{{ data_interval_end }}" year = "{{ data_interval_end.year }}" month = "{{ data_interval_end.month }}" day = "{{ data_interval_end.day }}" - table_name = 'RAW_GAME_REVIEW' + table_name = "RAW_GAME_REVIEW" task_load_raw_data = S3CreateObjectOperator( task_id="create_object", diff --git a/dags/game/game_price_to_s3.py b/dags/game/game_price_to_s3.py index 06f11a0..5574786 100644 --- a/dags/game/game_price_to_s3.py +++ b/dags/game/game_price_to_s3.py @@ -3,6 +3,7 @@ from airflow.providers.amazon.aws.operators.s3 import S3CreateObjectOperator from datetime import datetime, timedelta + # from plugins import slack from top_300_games import games @@ -29,33 +30,33 @@ def get_ccu(): @task def save_to_json(data): result = json.dumps(data) # API 응답들이 담긴 리스트를 JSON으로 저장 - + return result with DAG( - dag_id = 'game_price_to_s3', - start_date = datetime(2024,1,1), + dag_id="game_price_to_s3", + start_date=datetime(2024, 1, 1), catchup=False, - tags=['Steam_API'], - schedule_interval = '@once', - default_args = { - 'retries': 3, - 'retry_delay': timedelta(seconds=15), + tags=["Steam_API"], + schedule_interval="@once", + default_args={ + "retries": 3, + "retry_delay": timedelta(seconds=15), # 'on_failure_callback': slack.on_failure_callback, - } + }, ) as dag: data = get_ccu() data_json = save_to_json(data) - + bucket_name = "de-2-1-bucket" - + current_time = "{{ data_interval_end }}" year = "{{ data_interval_end.year }}" month = "{{ data_interval_end.month }}" day = "{{ data_interval_end.day }}" - table_name = 'RAW_GAME_PRICE' + table_name = "RAW_GAME_PRICE" task_load_raw_data = S3CreateObjectOperator( task_id="create_object", diff --git a/dags/game/game_rating_to_s3.py b/dags/game/game_rating_to_s3.py index 15f5fad..438a711 100644 --- a/dags/game/game_rating_to_s3.py +++ b/dags/game/game_rating_to_s3.py @@ -4,6 +4,7 @@ from bs4 import BeautifulSoup from datetime import datetime, timedelta + # from plugins import slack from top_300_games import games @@ -17,12 +18,17 @@ def get_rating(app_id): url = f"https://store.steampowered.com/app/{app_id}" response = requests.get(url) - soup = BeautifulSoup(response.text, 'html.parser') + soup = BeautifulSoup(response.text, "html.parser") + + reviewdesc_short = soup.find_all("span", {"class": "responsive_reviewdesc_short"}) - reviewdesc_short = soup.find_all('span', {'class': 'responsive_reviewdesc_short'}) - if reviewdesc_short == []: - return {'ALL_POSITIVE_NUM': 0, 'ALL_POSITIVE_PERCENT': 0, 'RECENT_POSITIVE_NUM': 0, 'RECENT_POSITIVE_PERCENT': 0} + return { + "ALL_POSITIVE_NUM": 0, + "ALL_POSITIVE_PERCENT": 0, + "RECENT_POSITIVE_NUM": 0, + "RECENT_POSITIVE_PERCENT": 0, + } recent_reviews = None all_reviews = None @@ -33,40 +39,52 @@ def get_rating(app_id): elif "All Time" in review.text: all_reviews = review - recent_reviews_text = (recent_reviews.text.strip().replace('\xa0', ' ') if recent_reviews else 'No recent reviews') - all_reviews_text = (all_reviews.text.strip().replace('\xa0', ' ') if all_reviews else 'No reviews') + recent_reviews_text = ( + recent_reviews.text.strip().replace("\xa0", " ") + if recent_reviews + else "No recent reviews" + ) + all_reviews_text = ( + all_reviews.text.strip().replace("\xa0", " ") if all_reviews else "No reviews" + ) # 최근, 모든 평가에서 추출한 숫자들을 리스트로 저장 - recent_reviews_numbers = [int(num) for num in re.findall(r'\d+', recent_reviews_text.replace(',', ''))][::-1] - all_reviews_numbers = [int(num) for num in re.findall(r'\d+', all_reviews_text.replace(',', ''))][::-1] - - print('r', recent_reviews_numbers) - print('a', all_reviews_numbers) - - data = {'ALL_POSITIVE_NUM': all_reviews_numbers[0], - 'ALL_POSITIVE_PERCENT': all_reviews_numbers[1]} - + recent_reviews_numbers = [ + int(num) for num in re.findall(r"\d+", recent_reviews_text.replace(",", "")) + ][::-1] + all_reviews_numbers = [ + int(num) for num in re.findall(r"\d+", all_reviews_text.replace(",", "")) + ][::-1] + + print("r", recent_reviews_numbers) + print("a", all_reviews_numbers) + + data = { + "ALL_POSITIVE_NUM": all_reviews_numbers[0], + "ALL_POSITIVE_PERCENT": all_reviews_numbers[1], + } + if len(recent_reviews_numbers) == 0: - data['RECENT_POSITIVE_NUM'] = 0 - data['RECENT_POSITIVE_PERCENT'] = 0 + data["RECENT_POSITIVE_NUM"] = 0 + data["RECENT_POSITIVE_PERCENT"] = 0 else: - data['RECENT_POSITIVE_NUM'] = recent_reviews_numbers[0] - data['RECENT_POSITIVE_PERCENT'] = recent_reviews_numbers[1] - + data["RECENT_POSITIVE_NUM"] = recent_reviews_numbers[0] + data["RECENT_POSITIVE_PERCENT"] = recent_reviews_numbers[1] + return data with DAG( - dag_id = 'game_rating_to_s3', - start_date = datetime(2024,1,1), + dag_id="game_rating_to_s3", + start_date=datetime(2024, 1, 1), catchup=False, - tags=['Steam_API'], - schedule_interval = '@once', - default_args = { - 'retries': 3, - 'retry_delay': timedelta(minutes=1), + tags=["Steam_API"], + schedule_interval="@once", + default_args={ + "retries": 3, + "retry_delay": timedelta(minutes=1), # 'on_failure_callback': slack.on_failure_callback, - } + }, ) as dag: @task @@ -79,25 +97,23 @@ def get_ratings_task(): data.append(temp) print() return data - - + @task def save_to_json(data): result = json.dumps(data) # API 응답들이 담긴 리스트를 JSON으로 저장 - - return result + return result data = get_ratings_task() data_json = save_to_json(data) - + bucket_name = "de-2-1-bucket" - + current_time = "{{ data_interval_end }}" year = "{{ data_interval_end.year }}" month = "{{ data_interval_end.month }}" day = "{{ data_interval_end.day }}" - table_name = 'RAW_GAME_RATING' + table_name = "RAW_GAME_RATING" task_load_raw_data = S3CreateObjectOperator( task_id="create_object", diff --git a/dags/game/top_300_games.py b/dags/game/top_300_games.py index a1a0616..4040f65 100644 --- a/dags/game/top_300_games.py +++ b/dags/game/top_300_games.py @@ -1,289 +1,291 @@ -games = {730: 'Counter-Strike 2', - 1623730: 'Palworld', - 570: 'Dota 2', - 553850: 'HELLDIVERS™ 2', - 1172470: 'Apex Legends', +games = { + 730: "Counter-Strike 2", + 1623730: "Palworld", + 570: "Dota 2", + 553850: "HELLDIVERS™ 2", + 1172470: "Apex Legends", 1086940: "Baldur's Gate 3", - 271590: 'Grand Theft Auto V', - 1938090: 'Call of Duty®', - 578080: 'PUBG: BATTLEGROUNDS', + 271590: "Grand Theft Auto V", + 1938090: "Call of Duty®", + 578080: "PUBG: BATTLEGROUNDS", 359550: "Tom Clancy's Rainbow Six Siege", - 252490: 'Rust', - 230410: 'Warframe', - 236390: 'War Thunder', - 440: 'Team Fortress 2', - 2252570: 'Football Manager 2024', - 881020: 'Granblue Fantasy: Relink', - 1203620: 'Enshrouded', - 304930: 'Unturned', - 1966720: 'Lethal Company', - 2195250: 'EA SPORTS FC™ 24', - 1245620: 'ELDEN RING', - 1203220: 'NARAKA: BLADEPOINT', - 221100: 'DayZ', + 252490: "Rust", + 230410: "Warframe", + 236390: "War Thunder", + 440: "Team Fortress 2", + 2252570: "Football Manager 2024", + 881020: "Granblue Fantasy: Relink", + 1203620: "Enshrouded", + 304930: "Unturned", + 1966720: "Lethal Company", + 2195250: "EA SPORTS FC™ 24", + 1245620: "ELDEN RING", + 1203220: "NARAKA: BLADEPOINT", + 221100: "DayZ", 289070: "Sid Meier's Civilization VI", - 1174180: 'Red Dead Redemption 2', - 2357570: 'Overwatch® 2', - 1085660: 'Destiny 2', - 436150: 'Governor of Poker 3', - 413150: 'Stardew Valley', - 105600: 'Terraria', - 1222670: 'The Sims™ 4', - 1091500: 'Cyberpunk 2077', - 322170: 'Geometry Dash', - 394360: 'Hearts of Iron IV', - 252950: 'Rocket League', - 1449850: 'Yu-Gi-Oh! Master Duel', - 108600: 'Project Zomboid', - 438100: 'VRChat', - 489830: 'The Elder Scrolls V: Skyrim Special Edition', - 582010: 'Monster Hunter: World', - 381210: 'Dead by Daylight', - 2161700: 'Persona 3 Reload', - 218620: 'PAYDAY 2', - 2073850: 'THE FINALS', - 1778820: 'TEKKEN 8', + 1174180: "Red Dead Redemption 2", + 2357570: "Overwatch® 2", + 1085660: "Destiny 2", + 436150: "Governor of Poker 3", + 413150: "Stardew Valley", + 105600: "Terraria", + 1222670: "The Sims™ 4", + 1091500: "Cyberpunk 2077", + 322170: "Geometry Dash", + 394360: "Hearts of Iron IV", + 252950: "Rocket League", + 1449850: "Yu-Gi-Oh! Master Duel", + 108600: "Project Zomboid", + 438100: "VRChat", + 489830: "The Elder Scrolls V: Skyrim Special Edition", + 582010: "Monster Hunter: World", + 381210: "Dead by Daylight", + 2161700: "Persona 3 Reload", + 218620: "PAYDAY 2", + 2073850: "THE FINALS", + 1778820: "TEKKEN 8", 2349820: "Hero's Land", - 227300: 'Euro Truck Simulator 2', - 251570: '7 Days to Die', - 346110: 'ARK: Survival Evolved', - 550: 'Left 4 Dead 2', - 294100: 'RimWorld', + 227300: "Euro Truck Simulator 2", + 251570: "7 Days to Die", + 346110: "ARK: Survival Evolved", + 550: "Left 4 Dead 2", + 294100: "RimWorld", 4000: "Garry's Mod", - 250900: 'The Binding of Isaac: Rebirth', - 892970: 'Valheim', - 291550: 'Brawlhalla', - 1248130: 'Farming Simulator 22', - 2399830: 'ARK: Survival Ascended', - 386360: 'SMITE', - 377160: 'Fallout 4', + 250900: "The Binding of Isaac: Rebirth", + 892970: "Valheim", + 291550: "Brawlhalla", + 1248130: "Farming Simulator 22", + 2399830: "ARK: Survival Ascended", + 386360: "SMITE", + 377160: "Fallout 4", 8930: "Sid Meier's Civilization V", - 899770: 'Last Epoch', - 1142710: 'Total War: WARHAMMER III', - 813780: 'Age of Empires II: Definitive Edition', - 1158310: 'Crusader Kings III', - 261550: 'Mount & Blade II: Bannerlord', - 236850: 'Europa Universalis IV', - 1454400: 'Cookie Clicker', - 960090: 'Bloons TD 6', - 306130: 'The Elder Scrolls Online', - 284160: 'BeamNG.drive', - 383180: 'Dead Island Riptide Definitive Edition', - 1063730: 'New World', - 427520: 'Factorio', - 2072450: 'Like a Dragon: Infinite Wealth', + 899770: "Last Epoch", + 1142710: "Total War: WARHAMMER III", + 813780: "Age of Empires II: Definitive Edition", + 1158310: "Crusader Kings III", + 261550: "Mount & Blade II: Bannerlord", + 236850: "Europa Universalis IV", + 1454400: "Cookie Clicker", + 960090: "Bloons TD 6", + 306130: "The Elder Scrolls Online", + 284160: "BeamNG.drive", + 383180: "Dead Island Riptide Definitive Edition", + 1063730: "New World", + 427520: "Factorio", + 2072450: "Like a Dragon: Infinite Wealth", 322330: "Don't Starve Together", - 739630: 'Phasmophobia', - 990080: 'Hogwarts Legacy', - 281990: 'Stellaris', - 292030: 'The Witcher 3: Wild Hunt', - 1238810: 'Battlefield™ V', - 107410: 'Arma 3', - 244210: 'Assetto Corsa', - 513710: 'SCUM', - 1151340: 'Fallout 76', - 1687950: 'Persona 5 Royal', - 1250410: 'Microsoft Flight Simulator', - 393380: 'Squad', - 594650: 'Hunt: Showdown', - 646570: 'Slay the Spire', - 1172620: 'Sea of Thieves', - 270880: 'American Truck Simulator', - 761890: 'Albion Online', - 632360: 'Risk of Rain 2', - 1517290: 'Battlefield™ 2042', - 526870: 'Satisfactory', - 1551360: 'Forza Horizon 5', - 1665460: 'eFootball™ 2024', - 440900: 'Conan Exiles', - 548430: 'Deep Rock Galactic', - 10: 'Counter-Strike', - 2140330: 'Madden NFL 24', - 1920960: 'VPet', - 2344520: 'Diablo® IV', - 1466860: 'Age of Empires IV: Anniversary Edition', - 686810: 'Hell Let Loose', - 255710: 'Cities: Skylines', - 1476970: 'Legends of Idleon MMO', - 374320: 'DARK SOULS™ III', - 444090: 'Paladins', - 365670: 'Blender', - 1716740: 'Starfield', - 976730: 'Halo: The Master Chief Collection', - 1144200: 'Ready or Not', - 2338770: 'NBA 2K24', - 1364780: 'Street Fighter™ 6', - 2141910: 'Magic: The Gathering Arena', - 1118200: 'People Playground', - 1997040: 'MARVEL SNAP', - 1240440: 'Halo Infinite', - 1677740: 'Stumble Guys', - 1811260: 'EA SPORTS™ FIFA 23', - 766570: 'Russian Fishing 4', - 1451190: 'Undisputed', - 1267910: 'Melvor Idle', - 552990: 'World of Warships', - 457140: 'Oxygen Not Included', - 1782210: 'Crab Game', - 529340: 'Victoria 3', - 1145360: 'Hades', - 1366540: 'Dyson Sphere Program', - 311210: 'Call of Duty: Black Ops III', - 1973530: 'Limbus Company', - 1238840: 'Battlefield 1 ™', - 1919590: 'NBA 2K23', - 444200: 'World of Tanks Blitz', - 1446780: 'MONSTER HUNTER RISE', - 367520: 'Hollow Knight', - 264710: 'Subnautica', - 22380: 'Fallout: New Vegas', - 1928420: 'Farlight 84', - 233860: 'Kenshi', - 714010: 'Aimlabs', - 949230: 'Cities: Skylines II', - 1326470: 'Sons Of The Forest', - 214950: 'Total War: ROME II - Emperor Edition', - 570940: 'DARK SOULS™: REMASTERED', - 1426210: 'It Takes Two', - 1286830: 'STAR WARS™: The Old Republic™', - 1721470: 'Poppy Playtime', - 2050650: 'Resident Evil 4', - 945360: 'Among Us', - 435150: 'Divinity: Original Sin 2', - 2471100: 'Unnamed Space Idle', - 1147690: 'NGU IDLE', - 244850: 'Space Engineers', - 1794680: 'Vampire Survivors', - 1361210: 'Warhammer 40,000: Darktide', - 627690: 'Idle Champions of the Forgotten Realms', - 386180: 'Crossout', - 1258080: 'Shop Titans', - 601510: 'Yu-Gi-Oh! Duel Links', + 739630: "Phasmophobia", + 990080: "Hogwarts Legacy", + 281990: "Stellaris", + 292030: "The Witcher 3: Wild Hunt", + 1238810: "Battlefield™ V", + 107410: "Arma 3", + 244210: "Assetto Corsa", + 513710: "SCUM", + 1151340: "Fallout 76", + 1687950: "Persona 5 Royal", + 1250410: "Microsoft Flight Simulator", + 393380: "Squad", + 594650: "Hunt: Showdown", + 646570: "Slay the Spire", + 1172620: "Sea of Thieves", + 270880: "American Truck Simulator", + 761890: "Albion Online", + 632360: "Risk of Rain 2", + 1517290: "Battlefield™ 2042", + 526870: "Satisfactory", + 1551360: "Forza Horizon 5", + 1665460: "eFootball™ 2024", + 440900: "Conan Exiles", + 548430: "Deep Rock Galactic", + 10: "Counter-Strike", + 2140330: "Madden NFL 24", + 1920960: "VPet", + 2344520: "Diablo® IV", + 1466860: "Age of Empires IV: Anniversary Edition", + 686810: "Hell Let Loose", + 255710: "Cities: Skylines", + 1476970: "Legends of Idleon MMO", + 374320: "DARK SOULS™ III", + 444090: "Paladins", + 365670: "Blender", + 1716740: "Starfield", + 976730: "Halo: The Master Chief Collection", + 1144200: "Ready or Not", + 2338770: "NBA 2K24", + 1364780: "Street Fighter™ 6", + 2141910: "Magic: The Gathering Arena", + 1118200: "People Playground", + 1997040: "MARVEL SNAP", + 1240440: "Halo Infinite", + 1677740: "Stumble Guys", + 1811260: "EA SPORTS™ FIFA 23", + 766570: "Russian Fishing 4", + 1451190: "Undisputed", + 1267910: "Melvor Idle", + 552990: "World of Warships", + 457140: "Oxygen Not Included", + 1782210: "Crab Game", + 529340: "Victoria 3", + 1145360: "Hades", + 1366540: "Dyson Sphere Program", + 311210: "Call of Duty: Black Ops III", + 1973530: "Limbus Company", + 1238840: "Battlefield 1 ™", + 1919590: "NBA 2K23", + 444200: "World of Tanks Blitz", + 1446780: "MONSTER HUNTER RISE", + 367520: "Hollow Knight", + 264710: "Subnautica", + 22380: "Fallout: New Vegas", + 1928420: "Farlight 84", + 233860: "Kenshi", + 714010: "Aimlabs", + 949230: "Cities: Skylines II", + 1326470: "Sons Of The Forest", + 214950: "Total War: ROME II - Emperor Edition", + 570940: "DARK SOULS™: REMASTERED", + 1426210: "It Takes Two", + 1286830: "STAR WARS™: The Old Republic™", + 1721470: "Poppy Playtime", + 2050650: "Resident Evil 4", + 945360: "Among Us", + 435150: "Divinity: Original Sin 2", + 2471100: "Unnamed Space Idle", + 1147690: "NGU IDLE", + 244850: "Space Engineers", + 1794680: "Vampire Survivors", + 1361210: "Warhammer 40,000: Darktide", + 627690: "Idle Champions of the Forgotten Realms", + 386180: "Crossout", + 1258080: "Shop Titans", + 601510: "Yu-Gi-Oh! Duel Links", 275850: "No Man's Sky", - 1569040: 'Football Manager 2022', - 12210: 'Grand Theft Auto IV: The Complete Edition', - 985810: 'GrandChase', - 648800: 'Raft', - 286160: 'Tabletop Simulator', - 208650: 'Batman™: Arkham Knight', - 933110: 'Age of Empires III: Definitive Edition', - 304390: 'For Honor', - 779340: 'Total War: THREE KINGDOMS', - 268500: 'XCOM 2', - 4700: 'Total War: MEDIEVAL II - Definitive Edition', - 1284210: 'Guild Wars 2', - 1506830: 'FIFA 22', - 1313140: 'Cult of the Lamb', - 376210: 'The Isle', - 814380: 'Sekiro™: Shadows Die Twice', - 1973710: 'ヘブンバ?ンズレッド', - 700330: 'SCP: Secret Laboratory', - 459820: 'Crush Crush', - 1062090: 'Timberborn', - 1593500: 'God of War', - 1888160: 'ARMORED CORE™ VI FIRES OF RUBICON™', - 1260320: 'Party Animals', - 671860: 'BattleBit Remastered', - 1465360: 'SnowRunner', - 977400: 'Cell to Singularity - Evolution Never Ends', - 359320: 'Elite Dangerous', - 1343400: 'RuneScape', - 518790: 'theHunter: Call of the Wild™', - 1942280: 'Brotato', - 1336490: 'Against the Storm', - 1235140: 'Yakuza: Like a Dragon', - 1259420: 'Days Gone', - 1328670: 'Mass Effect™ Legendary Edition', - 1229490: 'ULTRAKILL', - 242760: 'The Forest', - 1128810: 'RISK: Global Domination', - 239140: 'Dying Light', - 1891700: 'Tap Ninja', - 240: 'Counter-Strike: Source', - 534380: 'Dying Light 2', - 655500: 'MX Bikes', - 1535560: 'Farmer Against Potatoes Idle', - 2186680: 'Warhammer 40,000: Rogue Trader', - 1568590: 'Goose Goose Duck', - 3590: 'Plants vs. Zombies: Game of the Year', - 363970: 'Clicker Heroes', - 8500: 'EVE Online', - 1151640: 'Horizon Zero Dawn™ Complete Edition', - 1404210: 'Red Dead Online', - 1462040: 'FINAL FANTASY VII REMAKE INTERGRADE', - 1868140: 'DAVE THE DIVER', - 10500: 'Total War: EMPIRE - Definitive Edition', - 1129580: 'Medieval Dynasty', - 958260: 'DEAD OR ALIVE Xtreme Venus Vacation', - 703080: 'Planet Zoo', - 2108330: 'F1® 23', - 1407200: 'World of Tanks', - 1797880: 'Lost Light', - 397540: 'Borderlands 3', - 638970: 'Yakuza 0', - 48700: 'Mount & Blade: Warband', - 34330: 'Total War: SHOGUN 2', - 1604030: 'V Rising', - 1167630: 'Teardown', - 1468810: '鬼谷八荒 Tale of Immortal', - 231430: 'Company of Heroes 2', - 594570: 'Total War: WARHAMMER II', - 916440: 'Anno 1800', - 380600: 'Fishing Planet', - 1293830: 'Forza Horizon 4', - 1158160: 'Coral Island', - 1774580: 'STAR WARS Jedi: Survivor™', - 219990: 'Grim Dawn', - 2444170: 'Backpack Battles Demo', - 203770: 'Crusader Kings II', - 49520: 'Borderlands 2', + 1569040: "Football Manager 2022", + 12210: "Grand Theft Auto IV: The Complete Edition", + 985810: "GrandChase", + 648800: "Raft", + 286160: "Tabletop Simulator", + 208650: "Batman™: Arkham Knight", + 933110: "Age of Empires III: Definitive Edition", + 304390: "For Honor", + 779340: "Total War: THREE KINGDOMS", + 268500: "XCOM 2", + 4700: "Total War: MEDIEVAL II - Definitive Edition", + 1284210: "Guild Wars 2", + 1506830: "FIFA 22", + 1313140: "Cult of the Lamb", + 376210: "The Isle", + 814380: "Sekiro™: Shadows Die Twice", + 1973710: "ヘブンバ?ンズレッド", + 700330: "SCP: Secret Laboratory", + 459820: "Crush Crush", + 1062090: "Timberborn", + 1593500: "God of War", + 1888160: "ARMORED CORE™ VI FIRES OF RUBICON™", + 1260320: "Party Animals", + 671860: "BattleBit Remastered", + 1465360: "SnowRunner", + 977400: "Cell to Singularity - Evolution Never Ends", + 359320: "Elite Dangerous", + 1343400: "RuneScape", + 518790: "theHunter: Call of the Wild™", + 1942280: "Brotato", + 1336490: "Against the Storm", + 1235140: "Yakuza: Like a Dragon", + 1259420: "Days Gone", + 1328670: "Mass Effect™ Legendary Edition", + 1229490: "ULTRAKILL", + 242760: "The Forest", + 1128810: "RISK: Global Domination", + 239140: "Dying Light", + 1891700: "Tap Ninja", + 240: "Counter-Strike: Source", + 534380: "Dying Light 2", + 655500: "MX Bikes", + 1535560: "Farmer Against Potatoes Idle", + 2186680: "Warhammer 40,000: Rogue Trader", + 1568590: "Goose Goose Duck", + 3590: "Plants vs. Zombies: Game of the Year", + 363970: "Clicker Heroes", + 8500: "EVE Online", + 1151640: "Horizon Zero Dawn™ Complete Edition", + 1404210: "Red Dead Online", + 1462040: "FINAL FANTASY VII REMAKE INTERGRADE", + 1868140: "DAVE THE DIVER", + 10500: "Total War: EMPIRE - Definitive Edition", + 1129580: "Medieval Dynasty", + 958260: "DEAD OR ALIVE Xtreme Venus Vacation", + 703080: "Planet Zoo", + 2108330: "F1® 23", + 1407200: "World of Tanks", + 1797880: "Lost Light", + 397540: "Borderlands 3", + 638970: "Yakuza 0", + 48700: "Mount & Blade: Warband", + 34330: "Total War: SHOGUN 2", + 1604030: "V Rising", + 1167630: "Teardown", + 1468810: "鬼谷八荒 Tale of Immortal", + 231430: "Company of Heroes 2", + 594570: "Total War: WARHAMMER II", + 916440: "Anno 1800", + 380600: "Fishing Planet", + 1293830: "Forza Horizon 4", + 1158160: "Coral Island", + 1774580: "STAR WARS Jedi: Survivor™", + 219990: "Grim Dawn", + 2444170: "Backpack Battles Demo", + 203770: "Crusader Kings II", + 49520: "Borderlands 2", 1850570: "DEATH STRANDING DIRECTOR'S CUT", 2221490: "Tom Clancy's The Division 2", - 471710: 'Rec Room', - 787860: 'Farming Simulator 19', - 379430: 'Kingdom Come: Deliverance', - 1659040: 'HITMAN 3', + 471710: "Rec Room", + 787860: "Farming Simulator 19", + 379430: "Kingdom Come: Deliverance", + 1659040: "HITMAN 3", 812140: "Assassin's Creed Odyssey", - 1184370: 'Pathfinder: Wrath of the Righteous - Enhanced Edition', - 635260: 'CarX Drift Racing Online', - 262060: 'Darkest Dungeon®', + 1184370: "Pathfinder: Wrath of the Righteous - Enhanced Edition", + 635260: "CarX Drift Racing Online", + 262060: "Darkest Dungeon®", 367500: "Dragon's Dogma: Dark Arisen", - 32470: 'STAR WARS™ Empire at War: Gold Pack', - 335300: 'DARK SOULS™ II: Scholar of the First Sin', - 287700: 'METAL GEAR SOLID V: THE PHANTOM PAIN', - 315210: 'Suicide Squad: Kill the Justice League', - 2281730: 'Combat Master', - 1718570: 'ASTLIBRA ~生きた?~ Revision', - 1817070: 'Marvel’s Spider-Man Remastered', - 1066780: 'Transport Fever 2', - 573090: 'Stormworks: Build and Rescue', - 1113000: 'Persona 4 Golden', - 1818450: 'STALCRAFT', - 72850: 'The Elder Scrolls V: Skyrim', - 1943950: 'Escape the Backrooms', - 728880: 'Overcooked! 2', - 1084600: 'My Time at Sandrock', - 805550: 'Assetto Corsa Competizione', - 2321470: 'Deep Rock Galactic: Survivor', - 1222680: 'Need for Speed™ Heat', - 1238860: 'Battlefield 4™', + 32470: "STAR WARS™ Empire at War: Gold Pack", + 335300: "DARK SOULS™ II: Scholar of the First Sin", + 287700: "METAL GEAR SOLID V: THE PHANTOM PAIN", + 315210: "Suicide Squad: Kill the Justice League", + 2281730: "Combat Master", + 1718570: "ASTLIBRA ~生きた?~ Revision", + 1817070: "Marvel’s Spider-Man Remastered", + 1066780: "Transport Fever 2", + 573090: "Stormworks: Build and Rescue", + 1113000: "Persona 4 Golden", + 1818450: "STALCRAFT", + 72850: "The Elder Scrolls V: Skyrim", + 1943950: "Escape the Backrooms", + 728880: "Overcooked! 2", + 1084600: "My Time at Sandrock", + 805550: "Assetto Corsa Competizione", + 2321470: "Deep Rock Galactic: Survivor", + 1222680: "Need for Speed™ Heat", + 1238860: "Battlefield 4™", 1061100: "Hunter's Arena: Legends", - 844870: 'KurtzPel', - 1544020: 'The Callisto Protocol™', - 1805480: 'Like a Dragon: Ishin!', - 1448440: 'Wo Long: Fallen Dynasty', - 2503740: 'Storm Striker', - 1147560: 'Skul: The Hero Slayer', - 1237320: 'Sonic Frontiers', - 1367300: 'Blade Assault', - 1693980: 'Dead Space', + 844870: "KurtzPel", + 1544020: "The Callisto Protocol™", + 1805480: "Like a Dragon: Ishin!", + 1448440: "Wo Long: Fallen Dynasty", + 2503740: "Storm Striker", + 1147560: "Skul: The Hero Slayer", + 1237320: "Sonic Frontiers", + 1367300: "Blade Assault", + 1693980: "Dead Space", 222420: "THE KING OF FIGHTERS '98 ULTIMATE MATCH FINAL EDITION", - 2500750: 'Only Climb: Better Together', - 1498570: 'THE KING OF FIGHTERS XV', - 2178420: '트리 오브 세이비어', - 1530300: 'Auto Chess', - 1149460: 'Icarus', - 1627720: 'Lies of P', - 1304930: 'The Outlast Trials', - 389730: 'TEKKEN 7', - 1049590: 'Eternal Return'} \ No newline at end of file + 2500750: "Only Climb: Better Together", + 1498570: "THE KING OF FIGHTERS XV", + 2178420: "트리 오브 세이비어", + 1530300: "Auto Chess", + 1149460: "Icarus", + 1627720: "Lies of P", + 1304930: "The Outlast Trials", + 389730: "TEKKEN 7", + 1049590: "Eternal Return", +} diff --git a/dags/streaming/dag_raw_data.py b/dags/streaming/dag_raw_data.py index 9a8ac85..d8c53fa 100644 --- a/dags/streaming/dag_raw_data.py +++ b/dags/streaming/dag_raw_data.py @@ -9,7 +9,7 @@ import os import requests import logging -from datetime import datetime,timedelta +from datetime import datetime, timedelta import slack @@ -18,7 +18,9 @@ def get_s_list(**kwargs): # RDS 연결 설정 try: mysql_hook = MySqlHook(mysql_conn_id="aws_rds_conn_id") - result = mysql_hook.get_records("SELECT STREAMER_ID, CHZ_ID, AFC_ID FROM STREAMER_INFO;") + result = mysql_hook.get_records( + "SELECT STREAMER_ID, CHZ_ID, AFC_ID FROM STREAMER_INFO;" + ) except Exception as e: error_msg = f"Error occurred: {str(e)}" logging.error((error_msg)) @@ -32,36 +34,40 @@ def get_s_list(**kwargs): if row[2]: afc.append(row[2]) - kwargs['ti'].xcom_push(key='chzzk',value=chzzk) - kwargs['ti'].xcom_push(key='afc',value=afc) + kwargs["ti"].xcom_push(key="chzzk", value=chzzk) + kwargs["ti"].xcom_push(key="afc", value=afc) def chzzk_raw(**kwargs): - chzzk_ids = kwargs['ti'].xcom_pull(key='chzzk',task_ids='get_s_list_task') + chzzk_ids = kwargs["ti"].xcom_pull(key="chzzk", task_ids="get_s_list_task") live_stream_data = [] for id in chzzk_ids: - res = requests.get(f"https://api.chzzk.naver.com/polling/v2/channels/{id}/live-status") + res = requests.get( + f"https://api.chzzk.naver.com/polling/v2/channels/{id}/live-status" + ) if res.status_code == 200: live_data = res.json() live = live_data["content"]["status"] if live == "OPEN": - stream_data = {'id':id, **live_data} + stream_data = {"id": id, **live_data} live_stream_data.append(stream_data) else: pass - with open(f'./chzzk_{current_time}.json', 'w') as f: + with open(f"./chzzk_{current_time}.json", "w") as f: json.dump(live_stream_data, f, indent=4) + def afreeca_raw(**kwargs): - afreeca_ids = kwargs['ti'].xcom_pull(key='afc', task_ids='get_s_list_task') + afreeca_ids = kwargs["ti"].xcom_pull(key="afc", task_ids="get_s_list_task") live_stream_data = [] headers = { "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36", } + def get_live_status(bjid, headers): # BJ의 생방송 상태와 game category, broadcast title 등의 정보를 조회하는 함수 live_status_url = ( @@ -85,47 +91,52 @@ def get_broad_info(bjid, headers): broad_info = broad_res.get("broad") if live_res.get("RESULT") and broad_info: - combined_res = { - "live_status":live_res, - "broad_info":broad_res - } + combined_res = {"live_status": live_res, "broad_info": broad_res} - stream_data = {'id': bjid, **combined_res} + stream_data = {"id": bjid, **combined_res} live_stream_data.append(stream_data) else: pass - with open(f'./afc_{current_time}.json', 'w') as f: + with open(f"./afc_{current_time}.json", "w") as f: json.dump(live_stream_data, f, indent=4) -def merge_json(local_path,**kwargs): + +def merge_json(local_path, **kwargs): # 파일 읽고 기존 데이터 로드 try: - with open(f'./chzzk_{current_time}.json', 'r') as f: + with open(f"./chzzk_{current_time}.json", "r") as f: chzzk_data = json.load(f) except FileNotFoundError: chzzk_data = [] try: - with open(f'./afc_{current_time}.json', 'r') as f: - afreeca_data = json.load(f) + with open(f"./afc_{current_time}.json", "r") as f: + afreeca_data = json.load(f) except FileNotFoundError: afreeca_data = [] # 'stream_data'라는 최상위 키로 전체 데이터를 감싸는 새로운 딕셔너리 생성 - stream_data = {'stream_data': { - 'chzzk':chzzk_data, - 'afreeca':afreeca_data, - }} + stream_data = { + "stream_data": { + "chzzk": chzzk_data, + "afreeca": afreeca_data, + } + } - with open(f'{local_path}', 'w') as f: + with open(f"{local_path}", "w") as f: json.dump(stream_data, f, indent=4) -def upload_file_to_s3_without_reading(local_file_path, bucket_name, s3_key, aws_conn_id): + +def upload_file_to_s3_without_reading( + local_file_path, bucket_name, s3_key, aws_conn_id +): # S3Hook을 사용하여 파일을 S3에 업로드 s3_hook = S3Hook(aws_conn_id=aws_conn_id) - s3_hook.load_file(filename=local_file_path, bucket_name=bucket_name, replace=True, key=s3_key) + s3_hook.load_file( + filename=local_file_path, bucket_name=bucket_name, replace=True, key=s3_key + ) def delete_file(file_path): @@ -136,84 +147,82 @@ def delete_file(file_path): else: print(f"The file {file_path} does not exist") + def delete_files(**kwargs): # 플랫폼별로 파일 삭제 - platforms = ['afc', 'chzzk'] + platforms = ["afc", "chzzk"] for platform in platforms: - file_path = f'./{platform}_{current_time}.json' + file_path = f"./{platform}_{current_time}.json" delete_file(file_path) # local_path를 사용하여 파일 삭제 - file_path = f'{local_path}' + file_path = f"{local_path}" delete_file(file_path) + bucket_name = "de-2-1-bucket" # dag codes with DAG( - 'get_raw_data', + "get_raw_data", default_args={ - 'owner': 'airflow', - 'depends_on_past': False, - 'start_date': datetime(2024,1,17), - 'retries': 0, - 'retry_delay': timedelta(minutes=5), + "owner": "airflow", + "depends_on_past": False, + "start_date": datetime(2024, 1, 17), + "retries": 0, + "retry_delay": timedelta(minutes=5), }, schedule_interval="*/5 * * * *", catchup=False, -)as dag: +) as dag: # load - current_time = '{{ data_interval_end}}' + current_time = "{{ data_interval_end}}" year = "{{ data_interval_end.year }}" month = "{{ data_interval_end.month }}" day = "{{ data_interval_end.day }}" - table_name = 'raw_live_viewer' - local_name = 'local_raw_live' - local_path = f'./{local_name}_{current_time}.json' - + table_name = "raw_live_viewer" + local_name = "local_raw_live" + local_path = f"./{local_name}_{current_time}.json" + task_get_s_list = PythonOperator( task_id="get_s_list_task", python_callable=get_s_list, on_failure_callback=slack.on_failure_callback, ) - task_raw_chzzk = PythonOperator( - task_id='chzzk_raw_task', - python_callable=chzzk_raw - ) + task_raw_chzzk = PythonOperator(task_id="chzzk_raw_task", python_callable=chzzk_raw) task_raw_afreeca = PythonOperator( - task_id='afreeca_raw_task', - python_callable=afreeca_raw + task_id="afreeca_raw_task", python_callable=afreeca_raw ) task_merge_json = PythonOperator( - task_id='merge_json_task', + task_id="merge_json_task", python_callable=merge_json, - op_kwargs={'local_path':local_path} + op_kwargs={"local_path": local_path}, ) task_load_raw_data = PythonOperator( - task_id='upload_file_directly_to_s3', + task_id="upload_file_directly_to_s3", python_callable=upload_file_to_s3_without_reading, op_kwargs={ - 'local_file_path': local_path, - 'bucket_name': bucket_name, - 's3_key': f"source/json/table_name={table_name}/year={year}/month={month}/day={day}/{table_name}_{current_time}.json", - 'aws_conn_id': "aws_conn_id", - } + "local_file_path": local_path, + "bucket_name": bucket_name, + "s3_key": f"source/json/table_name={table_name}/year={year}/month={month}/day={day}/{table_name}_{current_time}.json", + "aws_conn_id": "aws_conn_id", + }, ) delete_local_files = PythonOperator( - task_id='delete_local_files_task', + task_id="delete_local_files_task", python_callable=delete_files, ) # 파일이 존재하는지 먼저 확인 if not os.path.exists(local_path): # 파일이 존재하지 않으면 빈 JSON 객체로 새 파일 생성 - with open(local_path, 'w') as f: + with open(local_path, "w") as f: json.dump({}, f) # 파일을 읽고 쓰기 모드로 열기 - with open(local_path, 'r+') as f: + with open(local_path, "r+") as f: # 파일 내용 읽기 try: data_json = json.load(f) @@ -223,5 +232,10 @@ def delete_files(**kwargs): data_json = json.dumps(data_json) -task_get_s_list >> [task_raw_chzzk, task_raw_afreeca] >> task_merge_json >> task_load_raw_data >> delete_local_files - +( + task_get_s_list + >> [task_raw_chzzk, task_raw_afreeca] + >> task_merge_json + >> task_load_raw_data + >> delete_local_files +) diff --git a/dataCollector/afreecaTV/afreecaTV_chat_test.py b/dataCollector/afreecaTV/afreecaTV_chat_test.py index e3ca7fb..64e2f13 100644 --- a/dataCollector/afreecaTV/afreecaTV_chat_test.py +++ b/dataCollector/afreecaTV/afreecaTV_chat_test.py @@ -13,22 +13,37 @@ ssl_context.check_hostname = False ssl_context.verify_mode = ssl.CERT_NONE + def decode(bytes): - test = bytes.split(b'\x0c') + test = bytes.split(b"\x0c") res = [] for i in test: - res.append(str(i, 'utf-8')) - if(res[1] != '-1' and res[1] != '1' and '|' not in res[1]): - if(len(res) > 5): - print(res[1], '\t| ', res[2], '|', res[6]) + res.append(str(i, "utf-8")) + if res[1] != "-1" and res[1] != "1" and "|" not in res[1]: + if len(res) > 5: + print(res[1], "\t| ", res[2], "|", res[6]) else: print(res) pass + def player_live_api(bno, bid): # type=aid 일 경우 aid(.A32~~~)불러옴 - data = {'bid': bid, 'bno':bno, 'type':'live', 'confirm_adult':'false', 'player_type':'html5', 'mode':'landing', 'from_api':'0', 'pwd':'', 'stream_type':'common', 'quality':'HD'} - res = requests.post(f'https://live.afreecatv.com/afreeca/player_live_api.php?bjid={bid}', data=data).json() + data = { + "bid": bid, + "bno": bno, + "type": "live", + "confirm_adult": "false", + "player_type": "html5", + "mode": "landing", + "from_api": "0", + "pwd": "", + "stream_type": "common", + "quality": "HD", + } + res = requests.post( + f"https://live.afreecatv.com/afreeca/player_live_api.php?bjid={bid}", data=data + ).json() CHDOMAIN = res["CHANNEL"]["CHDOMAIN"].lower() CHATNO = res["CHANNEL"]["CHATNO"] FTK = res["CHANNEL"]["FTK"] @@ -37,37 +52,43 @@ def player_live_api(bno, bid): CHPT = str(int(res["CHANNEL"]["CHPT"]) + 1) return CHDOMAIN, CHATNO, FTK, TITLE, BJID, CHPT + async def connect(url): - BNO = str(url.split('/')[-1]) - BID = str(url.split('/')[-2]) + BNO = str(url.split("/")[-1]) + BID = str(url.split("/")[-2]) CHDOMAIN, CHATNO, FTK, TITLE, BJID, CHPT = player_live_api(BNO, BID) - KEY = '' - if(len(BJID) == 5): - KEY = '80' - elif(len(BJID) == 6): - KEY = '81' - elif(len(BJID) == 7): - KEY = '82' - elif(len(BJID) == 8): - KEY = '83' - elif(len(BJID) == 9): - KEY = '84' - elif(len(BJID) == 10): - KEY = '85' - elif(len(BJID) == 11): - KEY = '86' - elif(len(BJID) == 12): - KEY = '87' + KEY = "" + if len(BJID) == 5: + KEY = "80" + elif len(BJID) == 6: + KEY = "81" + elif len(BJID) == 7: + KEY = "82" + elif len(BJID) == 8: + KEY = "83" + elif len(BJID) == 9: + KEY = "84" + elif len(BJID) == 10: + KEY = "85" + elif len(BJID) == 11: + KEY = "86" + elif len(BJID) == 12: + KEY = "87" - handshake = f' 000200032200 {CHATNO} {FTK} 0 log&set_bps=8000&view_bps=1000&quality=normal&uuid=cb2f85456a1844db7c6b5b99d618681e&geo_cc=KR&geo_rc=11&acpt_lang=ko_KR&svc_lang=ko_KR&subscribe=0&lowlatency=0pwdauth_infoNULLpver1access_systemhtml5 ' + handshake = f" 000200032200 {CHATNO} {FTK} 0 log&set_bps=8000&view_bps=1000&quality=normal&uuid=cb2f85456a1844db7c6b5b99d618681e&geo_cc=KR&geo_rc=11&acpt_lang=ko_KR&svc_lang=ko_KR&subscribe=0&lowlatency=0pwdauth_infoNULLpver1access_systemhtml5 " - async with websockets.connect(f"wss://{CHDOMAIN}:{CHPT}/Websocket/{BID}", subprotocols=['chat'],ssl=ssl_context, ping_interval=None) as websocket: + async with websockets.connect( + f"wss://{CHDOMAIN}:{CHPT}/Websocket/{BID}", + subprotocols=["chat"], + ssl=ssl_context, + ping_interval=None, + ) as websocket: # 핸드쉐이크 # await websocket.send(secret_1) - await websocket.send(' 000100000600 16 ') + await websocket.send(" 000100000600 16 ") data = await websocket.recv() - #print(data) + # print(data) await websocket.send(handshake) # 이후부터 채팅내용 받아와짐 while True: @@ -76,8 +97,9 @@ async def connect(url): decode(data) except Exception as e: print("ERROR:", e) - #sys.exit(0) + # sys.exit(0) # break -url = 'https://play.afreecatv.com/fbalstjr1234/253965341' + +url = "https://play.afreecatv.com/fbalstjr1234/253965341" asyncio.get_event_loop().run_until_complete(connect(url)) diff --git a/dataCollector/afreecaTV/afreecaTV_websocket_test.py b/dataCollector/afreecaTV/afreecaTV_websocket_test.py index 730b1d4..41ca5e4 100644 --- a/dataCollector/afreecaTV/afreecaTV_websocket_test.py +++ b/dataCollector/afreecaTV/afreecaTV_websocket_test.py @@ -46,7 +46,7 @@ def on_open(ws, bj_live_status): }, } - #print(message) + # print(message) ws.send(json.dumps(message)) print("Message sent to the server") @@ -72,7 +72,6 @@ def on_open(ws, bj_live_status): livestat_wss_url = f"wss://bridge.afreecatv.com/Websocket/{bj_id[0]}" print(livestat_wss_url) websocket.enableTrace(True) - # live status 가져오기 sslopt = {"cert_reqs": ssl.CERT_NONE} # 인증서 검증 관련 test code diff --git a/dataCollector/chzzk/chzzk_chat_data.py b/dataCollector/chzzk/chzzk_chat_data.py index c13493c..67786f0 100644 --- a/dataCollector/chzzk/chzzk_chat_data.py +++ b/dataCollector/chzzk/chzzk_chat_data.py @@ -4,18 +4,19 @@ import websocket from functools import partial + # 웹소켓 메시지 핸들러 정의 def on_message(ws, message): try: # 메시지 문자열에서 JSON 객체로 파싱 msg_json = json.loads(message) # 'bdy' 키가 있는지 확인하고, 리스트의 마지막 요소에서 'msg' 필드 추출 - if 'bdy' in msg_json and len(msg_json['bdy']) > 0: + if "bdy" in msg_json and len(msg_json["bdy"]) > 0: # 마지막 메시지 객체 - last_msg_obj = msg_json['bdy'][-1] + last_msg_obj = msg_json["bdy"][-1] # 'msg' 필드 값 추출 - if 'msg' in last_msg_obj: - last_msg = last_msg_obj['msg'] + if "msg" in last_msg_obj: + last_msg = last_msg_obj["msg"] print("가장 최근 메시지:", last_msg) else: print("마지막 메시지 객체에 'msg' 필드가 없습니다.") @@ -24,13 +25,16 @@ def on_message(ws, message): except json.JSONDecodeError: print("메시지가 JSON 형식이 아닙니다.") + def on_error(ws, error): print(f"Error: {error}") + def on_close(ws): print("### Connection closed ###") -def on_open(ws,cid, accTkn): + +def on_open(ws, cid, accTkn): # 서버에 보낼 메시지를 JSON 형식으로 작성 message = { "ver": "2", @@ -38,36 +42,37 @@ def on_open(ws,cid, accTkn): "svcid": "game", "cid": cid, "tid": 1, - "bdy": { - "uid": None, - "devType": 2001, - "accTkn": accTkn, - "auth": "READ" - } + "bdy": {"uid": None, "devType": 2001, "accTkn": accTkn, "auth": "READ"}, } # JSON 객체를 문자열로 변환하여 서버에 보냄 ws.send(json.dumps(message)) print("Message sent to the server") + if __name__ == "__main__": # channel_id 필요 - channel_id = ['1a1dd9ce56fb61a37ffb6f69f6d5b978'] + channel_id = ["1a1dd9ce56fb61a37ffb6f69f6d5b978"] # channel_id에 맞춰서 chat_channel_id를 구하고 - chat_channel_content=requests.get(f"https://api.chzzk.naver.com/polling/v2/channels/{channel_id[0]}/live-status").json()["content"] - if chat_channel_content["status"] == 'CLOSE': + chat_channel_content = requests.get( + f"https://api.chzzk.naver.com/polling/v2/channels/{channel_id[0]}/live-status" + ).json()["content"] + if chat_channel_content["status"] == "CLOSE": print("status == CLOSE") sys.exit(0) else: chat_channel_id = chat_channel_content["chatChannelId"] # accTkn을 발급받아야한다. - access_token = requests.get(f"https://comm-api.game.naver.com/nng_main/v1/chats/access-token?channelId={chat_channel_id}&chatType=STREAMING").json()["content"]["accessToken"] + access_token = requests.get( + f"https://comm-api.game.naver.com/nng_main/v1/chats/access-token?channelId={chat_channel_id}&chatType=STREAMING" + ).json()["content"]["accessToken"] websocket.enableTrace(False) # chating 가져오기 - ws = websocket.WebSocketApp("wss://kr-ss2.chat.naver.com/chat", - on_open=partial(on_open, cid=chat_channel_id, accTkn=access_token), - on_message=on_message, - on_error=on_error, - on_close=on_close) - + ws = websocket.WebSocketApp( + "wss://kr-ss2.chat.naver.com/chat", + on_open=partial(on_open, cid=chat_channel_id, accTkn=access_token), + on_message=on_message, + on_error=on_error, + on_close=on_close, + ) ws.run_forever() diff --git a/dataCollector/chzzk/chzzk_live_status.py b/dataCollector/chzzk/chzzk_live_status.py index 30e88b7..bac2cf1 100644 --- a/dataCollector/chzzk/chzzk_live_status.py +++ b/dataCollector/chzzk/chzzk_live_status.py @@ -3,33 +3,49 @@ import json from datetime import datetime + def datetime_converter(o): if isinstance(o, datetime): return o.isoformat() + # df_structure -df = pd.DataFrame(columns=["STREAMER_ID", "LIVE_COLLECT_TIME_STAMP","VIDEO_TITLE", "GAME_CODE", "VIEWER_NUM"]) +df = pd.DataFrame( + columns=[ + "STREAMER_ID", + "LIVE_COLLECT_TIME_STAMP", + "VIDEO_TITLE", + "GAME_CODE", + "VIEWER_NUM", + ] +) answer = [] # get streamer_id in redis -streamer_id = ['f39c3d74e33a81ab3080356b91bb8de5','bee4b42475b5937226b8b7ccbe2eb2dc','4d4a3e04937947aae221fc458cb902f7'] +streamer_id = [ + "f39c3d74e33a81ab3080356b91bb8de5", + "bee4b42475b5937226b8b7ccbe2eb2dc", + "4d4a3e04937947aae221fc458cb902f7", +] for id in streamer_id: # get response - res = requests.get(f"https://api.chzzk.naver.com/polling/v2/channels/{id}/live-status") + res = requests.get( + f"https://api.chzzk.naver.com/polling/v2/channels/{id}/live-status" + ) live_data = res.json() # check live_status - live=live_data["content"]["status"] + live = live_data["content"]["status"] timestamp = datetime.now().isoformat() # context("data_interval_end") if live == "OPEN": # status["STREAMER_ID","LIVE_COLLECT_TIME_STAMP","VIDEO_TITLE","GAME_CODE","VIEWER_NUM"] video_title = live_data["content"]["liveTitle"] - game_code = live_data["content"]["liveCategoryValue"] #KR name + game_code = live_data["content"]["liveCategoryValue"] # KR name viewer_num = int(live_data["content"]["concurrentUserCount"]) - status = [id,timestamp,video_title,game_code,viewer_num] + status = [id, timestamp, video_title, game_code, viewer_num] df.loc[len(df)] = status answer.append(status) @@ -37,7 +53,5 @@ def datetime_converter(o): pass # print(answer) -json_string = json.dumps(answer,ensure_ascii=False,indent=4) +json_string = json.dumps(answer, ensure_ascii=False, indent=4) print(json_string) - - diff --git a/dataCollector/chzzk/dag_chzzk_live_data.py b/dataCollector/chzzk/dag_chzzk_live_data.py index 5f86978..3d8d4de 100644 --- a/dataCollector/chzzk/dag_chzzk_live_data.py +++ b/dataCollector/chzzk/dag_chzzk_live_data.py @@ -6,17 +6,28 @@ import requests import pandas as pd + # get_chzzk_data def get_chzzk_data(context): # df_structure - df = pd.DataFrame(columns=["STREAMER_ID", "LIVE_COLLECT_TIME_STAMP", "VIDEO_TITLE", "GAME_CODE", "VIEWER_NUM"]) + df = pd.DataFrame( + columns=[ + "STREAMER_ID", + "LIVE_COLLECT_TIME_STAMP", + "VIDEO_TITLE", + "GAME_CODE", + "VIEWER_NUM", + ] + ) # get streamer_id in redis - streamer_id = ['0b33823ac81de48d5b78a38cdbc0ab94'] + streamer_id = ["0b33823ac81de48d5b78a38cdbc0ab94"] for id in streamer_id: # get response - res = requests.get(f"https://api.chzzk.naver.com/polling/v2/channels/{id}/live-status") + res = requests.get( + f"https://api.chzzk.naver.com/polling/v2/channels/{id}/live-status" + ) live_data = res.json() # check live_status @@ -40,13 +51,10 @@ def get_chzzk_data(context): # dag codes with DAG( -'example_python_operator_dag', + "example_python_operator_dag", default_args={}, - description='A simple example DAG with PythonOperator', + description="A simple example DAG with PythonOperator", catchup=False, -)as dag: +) as dag: - chzzk_task = PythonOperator( - task_id='run_chzzk', - python_callable=get_chzzk_data - ) + chzzk_task = PythonOperator(task_id="run_chzzk", python_callable=get_chzzk_data) diff --git a/dataCollector/chzzk/game_list.py b/dataCollector/chzzk/game_list.py index 064282f..15b159a 100644 --- a/dataCollector/chzzk/game_list.py +++ b/dataCollector/chzzk/game_list.py @@ -1,300 +1,302 @@ -games = ['Counter-Strike 2', - 'Palworld', - 'Dota 2', - 'Source SDK Base 2007', - 'HELLDIVERS™ 2', - 'Apex Legends', - "Baldur's Gate 3", - 'Grand Theft Auto V', - 'Call of Duty®', - 'PUBG: BATTLEGROUNDS', - "Tom Clancy's Rainbow Six Siege", - 'Rust', - 'Warframe', - 'War Thunder', - 'Team Fortress 2', - 'Wallpaper Engine', - 'Football Manager 2024', - 'Granblue Fantasy: Relink', - 'Enshrouded', - 'Unturned', - 'Lost Ark', - 'Lethal Company', - 'EA SPORTS FC™ 24', - 'ELDEN RING', - 'MIR4', - 'NARAKA: BLADEPOINT', - 'DayZ', - "Sid Meier's Civilization VI", - 'Red Dead Redemption 2', - 'Overwatch® 2', - 'Destiny 2', - 'Governor of Poker 3', - 'Stardew Valley', - 'Terraria', - 'The Sims™ 4', - 'Cyberpunk 2077', - 'Geometry Dash', - 'Hearts of Iron IV', - 'FINAL FANTASY XIV Online', - 'Rocket League', - 'Yu-Gi-Oh! Master Duel', - 'Project Zomboid', - 'VRChat', - 'The Elder Scrolls V: Skyrim Special Edition', - 'Monster Hunter: World', - 'Spacewar', - 'Dead by Daylight', - 'Black Desert', - 'Persona 3 Reload', - 'PAYDAY 2', - 'THE FINALS', - 'TEKKEN 8', - 'Palworld Dedicated Server', - "Hero's Land", - 'Euro Truck Simulator 2', - '7 Days to Die', - 'ARK: Survival Evolved', - 'Left 4 Dead 2', - 'RimWorld', - 'Path of Exile', - "Garry's Mod", - 'The Binding of Isaac: Rebirth', - 'Valheim', - 'Brawlhalla', - 'Farming Simulator 22', - 'ARK: Survival Ascended', - 'SMITE', - 'Fallout 4', - "Sid Meier's Civilization V", - 'Crosshair X', - 'Last Epoch', - 'Total War: WARHAMMER III', - 'Age of Empires II: Definitive Edition', - 'Crusader Kings III', - 'Soundpad', - 'Mount & Blade II: Bannerlord', - 'Europa Universalis IV', - 'Cookie Clicker', - 'Bloons TD 6', - 'The Elder Scrolls Online', - 'BeamNG.drive', - 'Dead Island Riptide Definitive Edition', - 'New World', - 'Factorio', - 'Like a Dragon: Infinite Wealth', - "Don't Starve Together", - 'tModLoader', - 'Football Manager 2023', - 'Phasmophobia', - 'Hogwarts Legacy', - 'Stellaris', - 'The Witcher 3: Wild Hunt', - 'Battlefield™ V', - 'Arma 3', - 'Summoners War', - 'Assetto Corsa', - 'SCUM', - 'Fallout 76', - 'Persona 5 Royal', - 'Microsoft Flight Simulator', - 'Squad', - 'Hunt: Showdown', - 'Slay the Spire', - 'Sea of Thieves', - 'American Truck Simulator', - 'Albion Online', - 'Risk of Rain 2', - 'Battlefield™ 2042', - 'Satisfactory', - 'Forza Horizon 5', - 'eFootball™ 2024', - 'Conan Exiles', - 'OBS Studio', - 'Deep Rock Galactic', - 'Counter-Strike', - 'Madden NFL 24', - 'VPet', - 'Diablo® IV', - 'VTube Studio', - 'Age of Empires IV: Anniversary Edition', - 'Hell Let Loose', - 'Cities: Skylines', - 'Legends of Idleon MMO', - 'DARK SOULS™ III', - 'Paladins', - 'Blender', - 'Starfield', - 'Halo: The Master Chief Collection', - 'Ready or Not', - 'NBA 2K24', - 'Street Fighter™ 6', - 'Magic: The Gathering Arena', - 'People Playground', - 'MARVEL SNAP', - 'Halo Infinite', - 'Stumble Guys', - 'MapleStory', - 'EA SPORTS™ FIFA 23', - 'Russian Fishing 4', - 'Undisputed', - 'Melvor Idle', - 'World of Warships', - 'Oxygen Not Included', - 'Crab Game', - 'Victoria 3', - 'Hades', - 'Dyson Sphere Program', - 'YoloMouse', - 'Call of Duty: Black Ops III', - 'Limbus Company', - 'Battlefield 1 ™', - 'NBA 2K23', - 'World of Tanks Blitz', - 'MONSTER HUNTER RISE', - 'Hollow Knight', - 'Subnautica', - 'Fallout: New Vegas', - 'Farlight 84', - 'Kenshi', - 'Aimlabs', - 'Cities: Skylines II', - 'Sons Of The Forest', - 'Total War: ROME II - Emperor Edition', - 'DARK SOULS™: REMASTERED', - 'It Takes Two', - 'STAR WARS™: The Old Republic™', - 'Poppy Playtime', - 'Resident Evil 4', - 'Among Us', - 'Divinity: Original Sin 2', - 'Unnamed Space Idle', - 'NGU IDLE', - 'Space Engineers', - '雀魂麻将(MahjongSoul)', - 'Vampire Survivors', - 'Warhammer 40,000: Darktide', - 'Idle Champions of the Forgotten Realms', - 'Crossout', - 'Shop Titans', - 'Yu-Gi-Oh! Duel Links', - "No Man's Sky", - 'Football Manager 2022', - 'Grand Theft Auto IV: The Complete Edition', - 'GrandChase', - 'Aseprite', - 'Raft', - 'Tabletop Simulator', - 'Batman™: Arkham Knight', - 'Age of Empires III: Definitive Edition', - 'For Honor', - 'Total War: THREE KINGDOMS', - 'XCOM 2', - 'Total War: MEDIEVAL II - Definitive Edition', - 'Crosshair V2', - 'Guild Wars 2', - 'FIFA 22', - 'Cult of the Lamb', - 'The Isle', - 'Sekiro™: Shadows Die Twice', - 'ヘブンバーンズレッド', - 'SCP: Secret Laboratory', - 'Crush Crush', - 'Timberborn', - '小黑盒加速器', - 'God of War', - 'ARMORED CORE™ VI FIRES OF RUBICON™', - 'Party Animals', - 'BattleBit Remastered', - 'SnowRunner', - 'Cell to Singularity - Evolution Never Ends', - 'Elite Dangerous', - 'Summoners War: Chronicles', - 'RuneScape', - 'Age of Empires II (2013)', - 'theHunter: Call of the Wild™', - 'Brotato', - 'Against the Storm', - 'Yakuza: Like a Dragon', - 'Days Gone', - 'Mass Effect™ Legendary Edition', - 'ULTRAKILL', - 'The Forest', - 'RISK: Global Domination', - 'Dying Light', - 'Tap Ninja', - 'Counter-Strike: Source', - 'Dying Light 2', - 'MX Bikes', - 'Farmer Against Potatoes Idle', - 'Warhammer 40,000: Rogue Trader', - 'Goose Goose Duck', - 'Plants vs. Zombies: Game of the Year', - 'Clicker Heroes', - 'EVE Online', - 'Horizon Zero Dawn™ Complete Edition', - 'Red Dead Online', - 'Wallpaper Alive', - 'FINAL FANTASY VII REMAKE INTERGRADE', - 'DAVE THE DIVER', - 'Total War: EMPIRE - Definitive Edition', - 'Medieval Dynasty', - 'Broken Arrow Playtest', - 'DEAD OR ALIVE Xtreme Venus Vacation', - 'Planet Zoo', - 'F1® 23', - 'World of Tanks', - 'Lost Light', - 'Borderlands 3', - 'Yakuza 0', - 'Mount & Blade: Warband', - 'Total War: SHOGUN 2', - 'V Rising', - 'Teardown', - '鬼谷八荒 Tale of Immortal', - 'ShareX', - 'Company of Heroes 2', - 'Total War: WARHAMMER II', - 'Anno 1800', - 'Fishing Planet', - 'Forza Horizon 4', - 'Coral Island', - 'STAR WARS Jedi: Survivor™', - 'Grim Dawn', - 'Backpack Battles Demo', - 'Crusader Kings II', - 'Borderlands 2', - "DEATH STRANDING DIRECTOR'S CUT", - 'OVR Advanced Settings', - "Tom Clancy's The Division 2", - 'Rec Room', - 'Farming Simulator 19', - 'Kingdom Come: Deliverance', - 'HITMAN 3', - "Assassin's Creed Odyssey", - 'Pathfinder: Wrath of the Righteous - Enhanced Edition', - 'CarX Drift Racing Online', - 'Darkest Dungeon®', - "Dragon's Dogma: Dark Arisen", - 'Age of Mythology: Extended Edition', - 'STAR WARS™ Empire at War: Gold Pack', - 'DARK SOULS™ II: Scholar of the First Sin', - 'Phantasy Star Online 2 New Genesis', - 'METAL GEAR SOLID V: THE PHANTOM PAIN', - 'Suicide Squad: Kill the Justice League', - 'Combat Master', - 'ASTLIBRA ~生きた証~ Revision', - 'Marvel’s Spider-Man Remastered', - 'Transport Fever 2', - 'Stormworks: Build and Rescue', - 'Persona 4 Golden', - 'STALCRAFT', - 'The Elder Scrolls V: Skyrim', - 'Escape the Backrooms', - 'Overcooked! 2', - 'My Time at Sandrock', - 'Assetto Corsa Competizione', - 'Deep Rock Galactic: Survivor', - 'Need for Speed™ Heat', - 'Tomb Raider I-III Remastered Starring Lara Croft', - 'Battlefield 4™'] \ No newline at end of file +games = [ + "Counter-Strike 2", + "Palworld", + "Dota 2", + "Source SDK Base 2007", + "HELLDIVERS™ 2", + "Apex Legends", + "Baldur's Gate 3", + "Grand Theft Auto V", + "Call of Duty®", + "PUBG: BATTLEGROUNDS", + "Tom Clancy's Rainbow Six Siege", + "Rust", + "Warframe", + "War Thunder", + "Team Fortress 2", + "Wallpaper Engine", + "Football Manager 2024", + "Granblue Fantasy: Relink", + "Enshrouded", + "Unturned", + "Lost Ark", + "Lethal Company", + "EA SPORTS FC™ 24", + "ELDEN RING", + "MIR4", + "NARAKA: BLADEPOINT", + "DayZ", + "Sid Meier's Civilization VI", + "Red Dead Redemption 2", + "Overwatch® 2", + "Destiny 2", + "Governor of Poker 3", + "Stardew Valley", + "Terraria", + "The Sims™ 4", + "Cyberpunk 2077", + "Geometry Dash", + "Hearts of Iron IV", + "FINAL FANTASY XIV Online", + "Rocket League", + "Yu-Gi-Oh! Master Duel", + "Project Zomboid", + "VRChat", + "The Elder Scrolls V: Skyrim Special Edition", + "Monster Hunter: World", + "Spacewar", + "Dead by Daylight", + "Black Desert", + "Persona 3 Reload", + "PAYDAY 2", + "THE FINALS", + "TEKKEN 8", + "Palworld Dedicated Server", + "Hero's Land", + "Euro Truck Simulator 2", + "7 Days to Die", + "ARK: Survival Evolved", + "Left 4 Dead 2", + "RimWorld", + "Path of Exile", + "Garry's Mod", + "The Binding of Isaac: Rebirth", + "Valheim", + "Brawlhalla", + "Farming Simulator 22", + "ARK: Survival Ascended", + "SMITE", + "Fallout 4", + "Sid Meier's Civilization V", + "Crosshair X", + "Last Epoch", + "Total War: WARHAMMER III", + "Age of Empires II: Definitive Edition", + "Crusader Kings III", + "Soundpad", + "Mount & Blade II: Bannerlord", + "Europa Universalis IV", + "Cookie Clicker", + "Bloons TD 6", + "The Elder Scrolls Online", + "BeamNG.drive", + "Dead Island Riptide Definitive Edition", + "New World", + "Factorio", + "Like a Dragon: Infinite Wealth", + "Don't Starve Together", + "tModLoader", + "Football Manager 2023", + "Phasmophobia", + "Hogwarts Legacy", + "Stellaris", + "The Witcher 3: Wild Hunt", + "Battlefield™ V", + "Arma 3", + "Summoners War", + "Assetto Corsa", + "SCUM", + "Fallout 76", + "Persona 5 Royal", + "Microsoft Flight Simulator", + "Squad", + "Hunt: Showdown", + "Slay the Spire", + "Sea of Thieves", + "American Truck Simulator", + "Albion Online", + "Risk of Rain 2", + "Battlefield™ 2042", + "Satisfactory", + "Forza Horizon 5", + "eFootball™ 2024", + "Conan Exiles", + "OBS Studio", + "Deep Rock Galactic", + "Counter-Strike", + "Madden NFL 24", + "VPet", + "Diablo® IV", + "VTube Studio", + "Age of Empires IV: Anniversary Edition", + "Hell Let Loose", + "Cities: Skylines", + "Legends of Idleon MMO", + "DARK SOULS™ III", + "Paladins", + "Blender", + "Starfield", + "Halo: The Master Chief Collection", + "Ready or Not", + "NBA 2K24", + "Street Fighter™ 6", + "Magic: The Gathering Arena", + "People Playground", + "MARVEL SNAP", + "Halo Infinite", + "Stumble Guys", + "MapleStory", + "EA SPORTS™ FIFA 23", + "Russian Fishing 4", + "Undisputed", + "Melvor Idle", + "World of Warships", + "Oxygen Not Included", + "Crab Game", + "Victoria 3", + "Hades", + "Dyson Sphere Program", + "YoloMouse", + "Call of Duty: Black Ops III", + "Limbus Company", + "Battlefield 1 ™", + "NBA 2K23", + "World of Tanks Blitz", + "MONSTER HUNTER RISE", + "Hollow Knight", + "Subnautica", + "Fallout: New Vegas", + "Farlight 84", + "Kenshi", + "Aimlabs", + "Cities: Skylines II", + "Sons Of The Forest", + "Total War: ROME II - Emperor Edition", + "DARK SOULS™: REMASTERED", + "It Takes Two", + "STAR WARS™: The Old Republic™", + "Poppy Playtime", + "Resident Evil 4", + "Among Us", + "Divinity: Original Sin 2", + "Unnamed Space Idle", + "NGU IDLE", + "Space Engineers", + "雀魂麻将(MahjongSoul)", + "Vampire Survivors", + "Warhammer 40,000: Darktide", + "Idle Champions of the Forgotten Realms", + "Crossout", + "Shop Titans", + "Yu-Gi-Oh! Duel Links", + "No Man's Sky", + "Football Manager 2022", + "Grand Theft Auto IV: The Complete Edition", + "GrandChase", + "Aseprite", + "Raft", + "Tabletop Simulator", + "Batman™: Arkham Knight", + "Age of Empires III: Definitive Edition", + "For Honor", + "Total War: THREE KINGDOMS", + "XCOM 2", + "Total War: MEDIEVAL II - Definitive Edition", + "Crosshair V2", + "Guild Wars 2", + "FIFA 22", + "Cult of the Lamb", + "The Isle", + "Sekiro™: Shadows Die Twice", + "ヘブンバーンズレッド", + "SCP: Secret Laboratory", + "Crush Crush", + "Timberborn", + "小黑盒加速器", + "God of War", + "ARMORED CORE™ VI FIRES OF RUBICON™", + "Party Animals", + "BattleBit Remastered", + "SnowRunner", + "Cell to Singularity - Evolution Never Ends", + "Elite Dangerous", + "Summoners War: Chronicles", + "RuneScape", + "Age of Empires II (2013)", + "theHunter: Call of the Wild™", + "Brotato", + "Against the Storm", + "Yakuza: Like a Dragon", + "Days Gone", + "Mass Effect™ Legendary Edition", + "ULTRAKILL", + "The Forest", + "RISK: Global Domination", + "Dying Light", + "Tap Ninja", + "Counter-Strike: Source", + "Dying Light 2", + "MX Bikes", + "Farmer Against Potatoes Idle", + "Warhammer 40,000: Rogue Trader", + "Goose Goose Duck", + "Plants vs. Zombies: Game of the Year", + "Clicker Heroes", + "EVE Online", + "Horizon Zero Dawn™ Complete Edition", + "Red Dead Online", + "Wallpaper Alive", + "FINAL FANTASY VII REMAKE INTERGRADE", + "DAVE THE DIVER", + "Total War: EMPIRE - Definitive Edition", + "Medieval Dynasty", + "Broken Arrow Playtest", + "DEAD OR ALIVE Xtreme Venus Vacation", + "Planet Zoo", + "F1® 23", + "World of Tanks", + "Lost Light", + "Borderlands 3", + "Yakuza 0", + "Mount & Blade: Warband", + "Total War: SHOGUN 2", + "V Rising", + "Teardown", + "鬼谷八荒 Tale of Immortal", + "ShareX", + "Company of Heroes 2", + "Total War: WARHAMMER II", + "Anno 1800", + "Fishing Planet", + "Forza Horizon 4", + "Coral Island", + "STAR WARS Jedi: Survivor™", + "Grim Dawn", + "Backpack Battles Demo", + "Crusader Kings II", + "Borderlands 2", + "DEATH STRANDING DIRECTOR'S CUT", + "OVR Advanced Settings", + "Tom Clancy's The Division 2", + "Rec Room", + "Farming Simulator 19", + "Kingdom Come: Deliverance", + "HITMAN 3", + "Assassin's Creed Odyssey", + "Pathfinder: Wrath of the Righteous - Enhanced Edition", + "CarX Drift Racing Online", + "Darkest Dungeon®", + "Dragon's Dogma: Dark Arisen", + "Age of Mythology: Extended Edition", + "STAR WARS™ Empire at War: Gold Pack", + "DARK SOULS™ II: Scholar of the First Sin", + "Phantasy Star Online 2 New Genesis", + "METAL GEAR SOLID V: THE PHANTOM PAIN", + "Suicide Squad: Kill the Justice League", + "Combat Master", + "ASTLIBRA ~生きた証~ Revision", + "Marvel’s Spider-Man Remastered", + "Transport Fever 2", + "Stormworks: Build and Rescue", + "Persona 4 Golden", + "STALCRAFT", + "The Elder Scrolls V: Skyrim", + "Escape the Backrooms", + "Overcooked! 2", + "My Time at Sandrock", + "Assetto Corsa Competizione", + "Deep Rock Galactic: Survivor", + "Need for Speed™ Heat", + "Tomb Raider I-III Remastered Starring Lara Croft", + "Battlefield 4™", +] diff --git a/dataCollector/chzzk/get_chzzk_gameid.py b/dataCollector/chzzk/get_chzzk_gameid.py index fe8a17b..e21ab6f 100644 --- a/dataCollector/chzzk/get_chzzk_gameid.py +++ b/dataCollector/chzzk/get_chzzk_gameid.py @@ -24,10 +24,10 @@ time.sleep(2) # 페이지 소스 가져오기 및 BeautifulSoup 객체 생성 html = driver.page_source - soup = BeautifulSoup(html, 'html.parser') + soup = BeautifulSoup(html, "html.parser") # 'video_card_category__xQ15T' 클래스를 가진 span 태그 찾기 - span_element = soup.find('span', class_='video_card_category__xQ15T') + span_element = soup.find("span", class_="video_card_category__xQ15T") # span 요소의 존재 여부 확인 if span_element: @@ -39,7 +39,6 @@ driver.quit() # to CSV -df = pd.DataFrame({"game_id": game_list, - "chzzk_game_id": chzzk_game_tags}) +df = pd.DataFrame({"game_id": game_list, "chzzk_game_id": chzzk_game_tags}) -df.to_csv("game_list.csv",encoding='utf-8') \ No newline at end of file +df.to_csv("game_list.csv", encoding="utf-8") diff --git a/dataCollector/chzzk/get_chzzk_streamerid.py b/dataCollector/chzzk/get_chzzk_streamerid.py index 8959471..e78b741 100644 --- a/dataCollector/chzzk/get_chzzk_streamerid.py +++ b/dataCollector/chzzk/get_chzzk_streamerid.py @@ -2,7 +2,31 @@ from bs4 import BeautifulSoup import time -name_list = ["한동숙입니다", "울프Wolf", "녹두로로", "이춘향이오", "풍월량월풍월량", "찐짜탬탬버린", "랄로10", "삼식123", "괴물쥐", "핫다주", "김뚜띠2", "따효니DDaHyoNi", "강퀴88", "파카", "옥냥이RoofTopCat", "김도KimDoe", "지누", "피닉스박", "죠니월드", "플러리", "러너Runner", "아야츠노유니본인", "아이리칸나에요"] +name_list = [ + "한동숙입니다", + "울프Wolf", + "녹두로로", + "이춘향이오", + "풍월량월풍월량", + "찐짜탬탬버린", + "랄로10", + "삼식123", + "괴물쥐", + "핫다주", + "김뚜띠2", + "따효니DDaHyoNi", + "강퀴88", + "파카", + "옥냥이RoofTopCat", + "김도KimDoe", + "지누", + "피닉스박", + "죠니월드", + "플러리", + "러너Runner", + "아야츠노유니본인", + "아이리칸나에요", +] base_url = "https://chzzk.naver.com/search?query=" @@ -19,13 +43,15 @@ html = driver.page_source # BeautifulSoup으로 파싱 - soup = BeautifulSoup(html, 'html.parser') + soup = BeautifulSoup(html, "html.parser") # XPath에 해당하는 요소 찾기 - element = soup.select_one('html > body > div:nth-of-type(1) > div > div:nth-of-type(4) > div > section > section:nth-of-type(1) > div:nth-of-type(1) > div:nth-of-type(1) > a:nth-of-type(1)') + element = soup.select_one( + "html > body > div:nth-of-type(1) > div > div:nth-of-type(4) > div > section > section:nth-of-type(1) > div:nth-of-type(1) > div:nth-of-type(1) > a:nth-of-type(1)" + ) if element: - id_value = element['href'] + id_value = element["href"] print(name, id_value) else: print(name, "ID를 찾을 수 없습니다.") diff --git a/dataCollector/glue&athena/glue_airflow.py b/dataCollector/glue&athena/glue_airflow.py index abef3f8..d8bb9ea 100644 --- a/dataCollector/glue&athena/glue_airflow.py +++ b/dataCollector/glue&athena/glue_airflow.py @@ -3,27 +3,29 @@ from airflow.providers.amazon.aws.operators.glue import AwsGlueJobOperator from airflow.operators.python import PythonOperator + # 전날 날짜를 계산하는 함수 def set_glue_crawler_params(): yesterday = datetime.now() - timedelta(1) - date_str = yesterday.strftime('%Y-%m-%d') + date_str = yesterday.strftime("%Y-%m-%d") # 여기서 필요한 파라미터를 설정할 수 있습니다. # 예: S3 경로 내 날짜 기반 폴더 return {"date": date_str} + default_args = { - 'owner': 'airflow', - 'depends_on_past': False, - 'email_on_failure': False, - 'email_on_retry': False, - 'retries': 1, - 'retry_delay': timedelta(minutes=5), + "owner": "airflow", + "depends_on_past": False, + "email_on_failure": False, + "email_on_retry": False, + "retries": 1, + "retry_delay": timedelta(minutes=5), } with DAG( - 'glue_crawler_dag', + "glue_crawler_dag", default_args=default_args, - description='DAG for running AWS Glue Crawler', + description="DAG for running AWS Glue Crawler", schedule_interval=timedelta(days=1), # 매일 실행 start_date=datetime(2022, 1, 1), catchup=False, @@ -31,16 +33,16 @@ def set_glue_crawler_params(): # 파라미터 설정 Task set_params = PythonOperator( - task_id='set_glue_crawler_params', + task_id="set_glue_crawler_params", python_callable=set_glue_crawler_params, ) # Glue Crawler 실행 Task run_glue_crawler = AwsGlueJobOperator( - task_id='run_glue_crawler', - job_name='your_glue_crawler_name', # AWS Glue에서 설정한 Crawler 이름 - script_location='s3://your-bucket/path/to/glue/script', # Glue 스크립트 위치 - region_name='your-aws-region', + task_id="run_glue_crawler", + job_name="your_glue_crawler_name", # AWS Glue에서 설정한 Crawler 이름 + script_location="s3://your-bucket/path/to/glue/script", # Glue 스크립트 위치 + region_name="your-aws-region", # 필요한 경우 아래에 추가 파라미터를 전달할 수 있습니다. # 예: '--additional-python-modules', 'pyarrow==2, pandas' ) diff --git a/dataCollector/steam/steam_game_review_comment.py b/dataCollector/steam/steam_game_review_comment.py index 7bc33b3..23ffbaf 100644 --- a/dataCollector/steam/steam_game_review_comment.py +++ b/dataCollector/steam/steam_game_review_comment.py @@ -1,18 +1,19 @@ import requests + def get_game_reviews(app_id): # API URL 설정 - api_url = f'https://store.steampowered.com/appreviews/{app_id}?json=1' + api_url = f"https://store.steampowered.com/appreviews/{app_id}?json=1" # API 키를 설정합니다. (https://steamcommunity.com/dev/apikey 에서 키를 발급받을 수 있습니다.) - api_key = '9B38F89D2AFA8356EACB2BBE13CB20D1' + api_key = "9B38F89D2AFA8356EACB2BBE13CB20D1" # API 요청 매개변수 설정 params = { - 'key': api_key, - 'json': '1', - 'language': 'korean', # 한국어 리뷰만 가져오기 - 'num_per_page': 100, # 페이지당 리뷰 수 + "key": api_key, + "json": "1", + "language": "korean", # 한국어 리뷰만 가져오기 + "num_per_page": 100, # 페이지당 리뷰 수 } while True: @@ -22,7 +23,7 @@ def get_game_reviews(app_id): # 응답 확인 if response.status_code == 200: data = response.json() - reviews = data.get('reviews', []) + reviews = data.get("reviews", []) for review in reviews: print(f"Review ID: {review['recommendationid']}") print(f"Author: {review['author']['steamid']}") @@ -31,16 +32,19 @@ def get_game_reviews(app_id): print(f"----------------------------------") # 리뷰가 100개 이상인 경우 다음 페이지로 이동 (페이지네이션) - if data['cursor'] != '*': - params['cursor'] = data['cursor'] + if data["cursor"] != "*": + params["cursor"] = data["cursor"] else: break else: - print(f"Error: Unable to fetch reviews. Status Code: {response.status_code}") + print( + f"Error: Unable to fetch reviews. Status Code: {response.status_code}" + ) break + # 게임의 app_id (예: Palworld) app_id = 1623730 # Steam Community API로부터 리뷰 가져오기 -get_game_reviews(app_id) \ No newline at end of file +get_game_reviews(app_id) diff --git a/dataCollector/steam/steam_game_review_statistics.py b/dataCollector/steam/steam_game_review_statistics.py index 451899c..c988a9c 100644 --- a/dataCollector/steam/steam_game_review_statistics.py +++ b/dataCollector/steam/steam_game_review_statistics.py @@ -1,21 +1,25 @@ import requests from bs4 import BeautifulSoup + def get_review_summary(app_id): url = f"https://store.steampowered.com/app/{app_id}" response = requests.get(url) - soup = BeautifulSoup(response.text, 'html.parser') + soup = BeautifulSoup(response.text, "html.parser") - recent_reviews = soup.find('span', {'class': 'responsive_reviewdesc_short'}) - all_reviews = soup.find_all('span', {'class': 'responsive_reviewdesc_short'})[1] + recent_reviews = soup.find("span", {"class": "responsive_reviewdesc_short"}) + all_reviews = soup.find_all("span", {"class": "responsive_reviewdesc_short"})[1] return { - 'all_reviews': recent_reviews.text.strip() if recent_reviews else 'No recent reviews', - 'recent_reviews': all_reviews.text.strip() if all_reviews else 'No reviews' + "all_reviews": ( + recent_reviews.text.strip() if recent_reviews else "No recent reviews" + ), + "recent_reviews": all_reviews.text.strip() if all_reviews else "No reviews", } + app_id = 730 # app_id 입력 review_summary = get_review_summary(app_id) -print("Recent reviews:", review_summary['recent_reviews']) -print("All reviews:", review_summary['all_reviews']) \ No newline at end of file +print("Recent reviews:", review_summary["recent_reviews"]) +print("All reviews:", review_summary["all_reviews"]) diff --git a/dataCollector/steam/steam_getting_ccu.py b/dataCollector/steam/steam_getting_ccu.py index e4e49ec..8202ee9 100644 --- a/dataCollector/steam/steam_getting_ccu.py +++ b/dataCollector/steam/steam_getting_ccu.py @@ -4,33 +4,33 @@ # CSV 파일 다운 받기 url = "https://raw.githubusercontent.com/dgibbs64/SteamCMD-AppID-List/main/steamcmd_appid.csv" response = requests.get(url) -with open('steamcmd_appid.csv', 'w', encoding='utf-8') as f: +with open("steamcmd_appid.csv", "w", encoding="utf-8") as f: f.write(response.text) # CSV파일 DF로 바꾸기 -df = pd.read_csv('steamcmd_appid.csv') +df = pd.read_csv("steamcmd_appid.csv") # 컬럼명 바꾸기 -df.columns = ['app_id', 'name'] +df.columns = ["app_id", "name"] # DF의 Values로 API를 호출해 게임별 CCU를 가져오기 cnt = 1 for index, row in df.iterrows(): - app_id, name = row['app_id'], row['name'] - + app_id, name = row["app_id"], row["name"] + url = f"http://api.steampowered.com/ISteamUserStats/GetNumberOfCurrentPlayers/v1?appid={app_id}" response = requests.get(url) data = response.json() - + # result의 값이 1인 경우에만 CCU를 제공 - if data['response']['result'] != 1: + if data["response"]["result"] != 1: continue - - ccu = data['response']['player_count'] + + ccu = data["response"]["player_count"] print(app_id, name) - print(f'CCU of {name}: {ccu}') - + print(f"CCU of {name}: {ccu}") + # test이므로 16만여개 중 50개만 가져오기 cnt += 1 if cnt >= 50: - break \ No newline at end of file + break diff --git a/dataCollector/steam/steam_price_and_sale_status.py b/dataCollector/steam/steam_price_and_sale_status.py index 27cb0d9..1e36584 100644 --- a/dataCollector/steam/steam_price_and_sale_status.py +++ b/dataCollector/steam/steam_price_and_sale_status.py @@ -1,23 +1,25 @@ import requests # 게임의 appid -appid = '1623730' # PalWorld +appid = "1623730" # PalWorld # API requests -response = requests.get(f'http://store.steampowered.com/api/appdetails?appids={appid}&cc=kr') +response = requests.get( + f"http://store.steampowered.com/api/appdetails?appids={appid}&cc=kr" +) # JSON 파싱 data = response.json() # 가격 얻기 -price = data[appid]['data']['price_overview']['final_formatted'] +price = data[appid]["data"]["price_overview"]["final_formatted"] # 할인율 체크 -is_on_sale = data[appid]['data']['price_overview']['discount_percent'] > 0 +is_on_sale = data[appid]["data"]["price_overview"]["discount_percent"] > 0 print(f"Price: {price}") if is_on_sale: print("The game is on sale.") else: - print("The game is not on sale.") \ No newline at end of file + print("The game is not on sale.") diff --git a/dataCollector/steam/steam_top1000_game_list.py b/dataCollector/steam/steam_top1000_game_list.py index dba45ec..eb84311 100644 --- a/dataCollector/steam/steam_top1000_game_list.py +++ b/dataCollector/steam/steam_top1000_game_list.py @@ -1,11 +1,11 @@ from bs4 import BeautifulSoup # steamdb_charts.html에서 인기 top 1000게임 app_id 가져오기 -with open('steamdb_charts.html', 'r', encoding='utf-8') as f: +with open("steamdb_charts.html", "r", encoding="utf-8") as f: html = f.read() # HTML 파싱 -soup = BeautifulSoup(html, 'html.parser') +soup = BeautifulSoup(html, "html.parser") rows = soup.select("#table-apps > tbody > tr") @@ -16,6 +16,6 @@ game = element.text # 게임 app_id - app_id = element['href'].split('/')[2] + app_id = element["href"].split("/")[2] - print(f"Game: {game}, app_id: {app_id}") \ No newline at end of file + print(f"Game: {game}, app_id: {app_id}") diff --git a/dataCollector/test_files/test_mysql_rds_connection.py b/dataCollector/test_files/test_mysql_rds_connection.py index f395fff..cb60a0b 100644 --- a/dataCollector/test_files/test_mysql_rds_connection.py +++ b/dataCollector/test_files/test_mysql_rds_connection.py @@ -8,10 +8,11 @@ def retrieve_data(**kwargs): - ti= kwargs['ti'] - data=ti.xcom_pull(task_ids="get_data_using_query") + ti = kwargs["ti"] + data = ti.xcom_pull(task_ids="get_data_using_query") return data + # test & load to s3 template with DAG( "get_from_rds", @@ -22,19 +23,18 @@ def retrieve_data(**kwargs): "retries": 1, "retry_delay": timedelta(minutes=5), }, - schedule_interval='@once', + schedule_interval="@once", catchup=False, ) as dag: - - + task_get_data = MySqlOperator( - task_id = "get_data_using_query", - sql='select * from STREAMER_INFO limit 10;', - mysql_conn_id = "aws_rds_conn_id" + task_id="get_data_using_query", + sql="select * from STREAMER_INFO limit 10;", + mysql_conn_id="aws_rds_conn_id", ) - + task_print_data = PythonOperator( - task_id='print', + task_id="print", provide_context=True, python_callable=retrieve_data, ) diff --git a/dataCollector/test_files/test_s3_connection.py b/dataCollector/test_files/test_s3_connection.py index 04477a6..395a2de 100644 --- a/dataCollector/test_files/test_s3_connection.py +++ b/dataCollector/test_files/test_s3_connection.py @@ -20,15 +20,15 @@ "retries": 1, "retry_delay": timedelta(minutes=5), }, - schedule_interval='@once', + schedule_interval="@once", catchup=False, ) as dag: - - current_time = '{{ data_interval_end}}' + + current_time = "{{ data_interval_end}}" year = "{{ data_interval_end.year }}" month = "{{ data_interval_end.month }}" day = "{{ data_interval_end.day }}" - table_name = 'raw_live_viewer' + table_name = "raw_live_viewer" task_load_raw_data = S3CreateObjectOperator( task_id="create_object", diff --git a/plugins/slack.py b/plugins/slack.py index 0b64f92..ff892d4 100644 --- a/plugins/slack.py +++ b/plugins/slack.py @@ -3,24 +3,25 @@ import logging import requests + def on_failure_callback(context): """ https://airflow.apache.org/_modules/airflow/operators/slack_operator.html Define the callback to post on Slack if a failure is detected in the Workflow :return: operator.execute """ - text = str(context['task_instance']) - text += "```" + str(context.get('exception')) +"```" + text = str(context["task_instance"]) + text += "```" + str(context.get("exception")) + "```" send_message_to_a_slack_channel(text, ":scream:") # def send_message_to_a_slack_channel(message, emoji, channel, access_token): def send_message_to_a_slack_channel(message, emoji): # url = "https://slack.com/api/chat.postMessage" - url = "https://hooks.slack.com/services/"+Variable.get("slack_url") + url = "https://hooks.slack.com/services/" + Variable.get("slack_url") headers = { - 'content-type': 'application/json', + "content-type": "application/json", } - data = { "username": "Data GOD", "text": message, "icon_emoji": emoji } + data = {"username": "Data GOD", "text": message, "icon_emoji": emoji} r = requests.post(url, json=data, headers=headers) - return r \ No newline at end of file + return r From 2f3f567479a09b1cb4f9a0d3ca2f590b0870f599 Mon Sep 17 00:00:00 2001 From: "imsolem1226@gmail.com" Date: Mon, 19 Feb 2024 21:00:17 +0900 Subject: [PATCH 080/249] commit test --- .pre-commit-config.yaml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 .pre-commit-config.yaml diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000..f4241a4 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,16 @@ +repos: + - repo: https://github.com/psf/black + rev: 24.2.0 + hooks: + - id: black + language_version: python3.11 + # Black doesn't use file filters for inclusion, it formats all Python files by default. + + - repo: https://github.com/PyCQA/flake8 + rev: '7.0.0' + hooks: + - id: flake8 + # Use a regex pattern to include dags and tests/dags directories + files: ^(dags|tests/dags)/.*\.py$ + # Add errors that would be ignored + args: ['--ignore=E501,W503'] From 04cdf379cb614c4f0719307c73206361d79e8a41 Mon Sep 17 00:00:00 2001 From: "imsolem1226@gmail.com" Date: Mon, 19 Feb 2024 21:07:58 +0900 Subject: [PATCH 081/249] [fix]: rewrite path of files to check --- .pre-commit-config.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index f4241a4..8c61abb 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -7,10 +7,10 @@ repos: # Black doesn't use file filters for inclusion, it formats all Python files by default. - repo: https://github.com/PyCQA/flake8 - rev: '7.0.0' + rev: "7.0.0" hooks: - id: flake8 # Use a regex pattern to include dags and tests/dags directories - files: ^(dags|tests/dags)/.*\.py$ + files: ^dags/|^tests/dags/ # Add errors that would be ignored - args: ['--ignore=E501,W503'] + args: ["--ignore=E501,W503"] From ee99e8179aea8a7d36bd71ac38e19cb3ca065d6d Mon Sep 17 00:00:00 2001 From: "imsolem1226@gmail.com" Date: Mon, 19 Feb 2024 21:08:30 +0900 Subject: [PATCH 082/249] [fix]: remove unused modules --- dags/game/game_comment_to_s3.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/dags/game/game_comment_to_s3.py b/dags/game/game_comment_to_s3.py index ecc288f..573e981 100644 --- a/dags/game/game_comment_to_s3.py +++ b/dags/game/game_comment_to_s3.py @@ -3,14 +3,11 @@ from airflow.providers.amazon.aws.operators.s3 import S3CreateObjectOperator from airflow.models import Variable -from bs4 import BeautifulSoup from datetime import datetime, timedelta # from plugins import slack from top_300_games import games -import re -import pandas as pd import requests import json From 372c88e26aaed15a87312a7737460781514717cd Mon Sep 17 00:00:00 2001 From: "imsolem1226@gmail.com" Date: Mon, 19 Feb 2024 21:10:22 +0900 Subject: [PATCH 083/249] [fix]: remove unused modules --- dags/game/game_rating_to_s3.py | 1 - 1 file changed, 1 deletion(-) diff --git a/dags/game/game_rating_to_s3.py b/dags/game/game_rating_to_s3.py index 438a711..2df4bee 100644 --- a/dags/game/game_rating_to_s3.py +++ b/dags/game/game_rating_to_s3.py @@ -9,7 +9,6 @@ from top_300_games import games import re -import pandas as pd import requests import json From 15d4504dda9e9a518c7eb1a13ae3a1d35f17fe83 Mon Sep 17 00:00:00 2001 From: srlee056 Date: Mon, 19 Feb 2024 21:18:22 +0900 Subject: [PATCH 084/249] [fix]: minor dag order fix for test --- dags/streaming/dag_raw_data.py | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/dags/streaming/dag_raw_data.py b/dags/streaming/dag_raw_data.py index d8c53fa..5ff485c 100644 --- a/dags/streaming/dag_raw_data.py +++ b/dags/streaming/dag_raw_data.py @@ -232,10 +232,5 @@ def delete_files(**kwargs): data_json = json.dumps(data_json) -( - task_get_s_list - >> [task_raw_chzzk, task_raw_afreeca] - >> task_merge_json - >> task_load_raw_data - >> delete_local_files -) +task_get_s_list >> [task_raw_chzzk, task_raw_afreeca] >> task_merge_json +task_merge_json >> task_load_raw_data >> delete_local_files From cec2cf3342484e1b7198008d5964377cd55a019c Mon Sep 17 00:00:00 2001 From: Hun Soo Jeong <147886939+hunsoodev@users.noreply.github.com> Date: Tue, 20 Feb 2024 09:14:59 +0900 Subject: [PATCH 085/249] Delete dags/.gitkeep --- dags/.gitkeep | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 dags/.gitkeep diff --git a/dags/.gitkeep b/dags/.gitkeep deleted file mode 100644 index e69de29..0000000 From 598a875d13d070b80421707b8aababa94b0186e6 Mon Sep 17 00:00:00 2001 From: poriz Date: Tue, 20 Feb 2024 16:00:52 +0900 Subject: [PATCH 086/249] [feat] dag_raw_data v4.0 add streamer_id(rds) --- dags/streaming/dag_raw_data.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/dags/streaming/dag_raw_data.py b/dags/streaming/dag_raw_data.py index 5ff485c..1270949 100644 --- a/dags/streaming/dag_raw_data.py +++ b/dags/streaming/dag_raw_data.py @@ -30,9 +30,9 @@ def get_s_list(**kwargs): chzzk, afc = [], [] for row in result: if row[1]: - chzzk.append(row[1]) + chzzk.append((row[0],row[1])) if row[2]: - afc.append(row[2]) + afc.append((row[0],row[2])) kwargs["ti"].xcom_push(key="chzzk", value=chzzk) kwargs["ti"].xcom_push(key="afc", value=afc) @@ -42,7 +42,7 @@ def chzzk_raw(**kwargs): chzzk_ids = kwargs["ti"].xcom_pull(key="chzzk", task_ids="get_s_list_task") live_stream_data = [] - for id in chzzk_ids: + for s_id,id in chzzk_ids: res = requests.get( f"https://api.chzzk.naver.com/polling/v2/channels/{id}/live-status" ) @@ -51,7 +51,7 @@ def chzzk_raw(**kwargs): live_data = res.json() live = live_data["content"]["status"] if live == "OPEN": - stream_data = {"id": id, **live_data} + stream_data = {"streamer_id": s_id, "chzzk_s_id": id, **live_data} live_stream_data.append(stream_data) else: pass @@ -85,7 +85,7 @@ def get_broad_info(bjid, headers): return broad_res if afreeca_ids != []: - for bjid in afreeca_ids: + for s_id,bjid in afreeca_ids: live_res = get_live_status(bjid, headers) broad_res = get_broad_info(bjid, headers) broad_info = broad_res.get("broad") @@ -93,7 +93,7 @@ def get_broad_info(bjid, headers): if live_res.get("RESULT") and broad_info: combined_res = {"live_status": live_res, "broad_info": broad_res} - stream_data = {"id": bjid, **combined_res} + stream_data = {"streamer_id": s_id, "afc_s_id": bjid, **combined_res} live_stream_data.append(stream_data) else: From 045b77b0f95d7b4d5511ddbab4efc4aa53b527d3 Mon Sep 17 00:00:00 2001 From: poriz Date: Tue, 20 Feb 2024 23:03:38 +0900 Subject: [PATCH 087/249] [feat] dag_raw_data v4.1 add current_time --- dags/streaming/dag_raw_data.py | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/dags/streaming/dag_raw_data.py b/dags/streaming/dag_raw_data.py index 1270949..6af5597 100644 --- a/dags/streaming/dag_raw_data.py +++ b/dags/streaming/dag_raw_data.py @@ -38,7 +38,7 @@ def get_s_list(**kwargs): kwargs["ti"].xcom_push(key="afc", value=afc) -def chzzk_raw(**kwargs): +def chzzk_raw(current_time,**kwargs): chzzk_ids = kwargs["ti"].xcom_pull(key="chzzk", task_ids="get_s_list_task") live_stream_data = [] @@ -51,7 +51,7 @@ def chzzk_raw(**kwargs): live_data = res.json() live = live_data["content"]["status"] if live == "OPEN": - stream_data = {"streamer_id": s_id, "chzzk_s_id": id, **live_data} + stream_data = {"streamer_id": s_id, "chzzk_s_id": id, "current_time":current_time, **live_data} live_stream_data.append(stream_data) else: pass @@ -60,7 +60,7 @@ def chzzk_raw(**kwargs): json.dump(live_stream_data, f, indent=4) -def afreeca_raw(**kwargs): +def afreeca_raw(current_time,**kwargs): afreeca_ids = kwargs["ti"].xcom_pull(key="afc", task_ids="get_s_list_task") live_stream_data = [] @@ -93,7 +93,7 @@ def get_broad_info(bjid, headers): if live_res.get("RESULT") and broad_info: combined_res = {"live_status": live_res, "broad_info": broad_res} - stream_data = {"streamer_id": s_id, "afc_s_id": bjid, **combined_res} + stream_data = {"streamer_id": s_id, "afc_s_id": bjid, "current_time":current_time, **combined_res} live_stream_data.append(stream_data) else: @@ -138,14 +138,13 @@ def upload_file_to_s3_without_reading( filename=local_file_path, bucket_name=bucket_name, replace=True, key=s3_key ) - def delete_file(file_path): """주어진 경로의 파일을 삭제하는 함수""" if os.path.exists(file_path): os.remove(file_path) - print(f"Deleted {file_path}") + # print(f"Deleted {file_path}") else: - print(f"The file {file_path} does not exist") + # print(f"The file {file_path} does not exist") def delete_files(**kwargs): @@ -190,9 +189,15 @@ def delete_files(**kwargs): python_callable=get_s_list, on_failure_callback=slack.on_failure_callback, ) - task_raw_chzzk = PythonOperator(task_id="chzzk_raw_task", python_callable=chzzk_raw) + task_raw_chzzk = PythonOperator( + task_id="chzzk_raw_task", + python_callable=chzzk_raw, + op_kwargs={"current_time":current_time} + ) task_raw_afreeca = PythonOperator( - task_id="afreeca_raw_task", python_callable=afreeca_raw + task_id="afreeca_raw_task", + python_callable=afreeca_raw, + op_kwargs={"current_time":current_time} ) task_merge_json = PythonOperator( task_id="merge_json_task", From 7771161719f94b95c57e895984d1731fd0c1a79b Mon Sep 17 00:00:00 2001 From: poriz Date: Wed, 21 Feb 2024 10:23:52 +0900 Subject: [PATCH 088/249] [feat] add glue code --- dags/glue/test.py | 0 dataCollector/glue&athena/glue_airflow.py | 94 +++++++++++++--------- dataCollector/glue&athena/glue_template.py | 38 +++++++++ 3 files changed, 95 insertions(+), 37 deletions(-) create mode 100644 dags/glue/test.py create mode 100644 dataCollector/glue&athena/glue_template.py diff --git a/dags/glue/test.py b/dags/glue/test.py new file mode 100644 index 0000000..e69de29 diff --git a/dataCollector/glue&athena/glue_airflow.py b/dataCollector/glue&athena/glue_airflow.py index d8bb9ea..281e3f0 100644 --- a/dataCollector/glue&athena/glue_airflow.py +++ b/dataCollector/glue&athena/glue_airflow.py @@ -1,50 +1,70 @@ -from datetime import datetime, timedelta from airflow import DAG -from airflow.providers.amazon.aws.operators.glue import AwsGlueJobOperator -from airflow.operators.python import PythonOperator +from airflow.operators.python_operator import PythonOperator +from airflow.providers.amazon.aws.operators.glue import GlueJobOperator +from airflow.providers.amazon.aws.hooks.s3 import S3Hook +from datetime import datetime, timedelta +from jinja2 import Template + +def upload_script_to_s3(bucket_name, s3_key, template_path, aws_conn_id, **kwargs): + # S3Hook 인스턴스 생성 + s3_hook = S3Hook(aws_conn_id=aws_conn_id) -# 전날 날짜를 계산하는 함수 -def set_glue_crawler_params(): - yesterday = datetime.now() - timedelta(1) - date_str = yesterday.strftime("%Y-%m-%d") - # 여기서 필요한 파라미터를 설정할 수 있습니다. - # 예: S3 경로 내 날짜 기반 폴더 - return {"date": date_str} + # Jinja 템플릿 파일 읽기 + with open(template_path, 'r') as file: + template = Template(file.read()) + # 템플릿 렌더링 + rendered_script = template.render(**kwargs) -default_args = { - "owner": "airflow", - "depends_on_past": False, - "email_on_failure": False, - "email_on_retry": False, - "retries": 1, - "retry_delay": timedelta(minutes=5), -} + # 렌더링된 스크립트를 S3에 업로드 + s3_hook.load_string( + string_data=rendered_script, + bucket_name=bucket_name, + key=s3_key, + replace=True + ) with DAG( - "glue_crawler_dag", - default_args=default_args, - description="DAG for running AWS Glue Crawler", - schedule_interval=timedelta(days=1), # 매일 실행 - start_date=datetime(2022, 1, 1), + "get_raw_data", + default_args={ + "owner": "airflow", + "depends_on_past": False, + "start_date": datetime(2024, 1, 17), + "retries": 0, + "retry_delay": timedelta(minutes=5), + }, + schedule_interval="0 * * * *", catchup=False, ) as dag: - # 파라미터 설정 Task - set_params = PythonOperator( - task_id="set_glue_crawler_params", - python_callable=set_glue_crawler_params, - ) + bucket_name = "de-2-1-bucket" + local_path = f'./glue_script.py' + year = "{{ data_interval_end.year }}" + month = "{{ data_interval_end.month }}" + day = "{{ data_interval_end.day }}" + + upload_script = PythonOperator( + task_id='upload_script_to_s3', + python_callable=upload_script_to_s3, + op_kwargs={ + "bucket_name": bucket_name, + "aws_conn_id": "aws_conn_id", + "s3_key": f"source/script/glue_script.py", + 'template_path': './glue_template.py', + # into template + 'input_path': f's3://de-2-1-bucket/source/json/table_name=raw_live_viewer/year={year}/month={month}/day={day}/', + 'output_path': 's3://de-2-1-bucket/source/parquet/', # do change_path + } + ) - # Glue Crawler 실행 Task - run_glue_crawler = AwsGlueJobOperator( - task_id="run_glue_crawler", - job_name="your_glue_crawler_name", # AWS Glue에서 설정한 Crawler 이름 - script_location="s3://your-bucket/path/to/glue/script", # Glue 스크립트 위치 - region_name="your-aws-region", - # 필요한 경우 아래에 추가 파라미터를 전달할 수 있습니다. - # 예: '--additional-python-modules', 'pyarrow==2, pandas' + run_glue_job = GlueJobOperator( + task_id='run_glue_job', + job_name='DE-2-1-testjob', + script_location='s3://your_bucket_name/path/to/your_script.py', + aws_conn_id='aws_conn_id', + region_name='ap-northeast-2', + dag=dag, ) - set_params >> run_glue_crawler +upload_script >> run_glue_job diff --git a/dataCollector/glue&athena/glue_template.py b/dataCollector/glue&athena/glue_template.py new file mode 100644 index 0000000..68a5c23 --- /dev/null +++ b/dataCollector/glue&athena/glue_template.py @@ -0,0 +1,38 @@ +import sys +from awsglue.transforms import * +from awsglue.utils import getResolvedOptions +from pyspark.context import SparkContext +from awsglue.context import GlueContext +from awsglue.job import Job + +# SparkContext와 GlueContext 초기화 +sc = SparkContext() +glueContext = GlueContext(sc) +spark = glueContext.spark_session + +# Job 초기화 (Job Bookmark 활성화 포함) +job = Job(glueContext) +args = getResolvedOptions(sys.argv, ['JOB_NAME']) +job.init(args['JOB_NAME'], args) + +# S3에서 데이터를 읽어오는 부분 +datasource = glueContext.create_dynamic_frame.from_options( + 's3', + {'paths': ['{{ input_path }}'], 'recurse':True}, + format='json', + transformation_ctx='datasource', + additional_options={"bookmarkEnabled":"true"} +) + +# Parquet으로 변환하여 S3에 저장 +glueContext.write_dynamic_frame.from_options( + frame=datasource, + connection_type='s3', + connection_options={'path': '{{ output_path }}'}, + format='parquet', + transformation_ctx='datasource' +) + + +# Job Bookmark의 상태를 최종적으로 커밋 +job.commit() From 2f0e5f4be09d3d0c60c9b1bd3e73067c3ec471e8 Mon Sep 17 00:00:00 2001 From: poriz Date: Wed, 21 Feb 2024 10:38:01 +0900 Subject: [PATCH 089/249] [feat] add glue code v1.1 --- dags/streaming/dag_raw_data.py | 2 -- dataCollector/glue&athena/glue_airflow.py | 21 ++++++++++----------- 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/dags/streaming/dag_raw_data.py b/dags/streaming/dag_raw_data.py index 6af5597..3fe6ae2 100644 --- a/dags/streaming/dag_raw_data.py +++ b/dags/streaming/dag_raw_data.py @@ -143,8 +143,6 @@ def delete_file(file_path): if os.path.exists(file_path): os.remove(file_path) # print(f"Deleted {file_path}") - else: - # print(f"The file {file_path} does not exist") def delete_files(**kwargs): diff --git a/dataCollector/glue&athena/glue_airflow.py b/dataCollector/glue&athena/glue_airflow.py index 281e3f0..f2ac6b8 100644 --- a/dataCollector/glue&athena/glue_airflow.py +++ b/dataCollector/glue&athena/glue_airflow.py @@ -5,23 +5,22 @@ from datetime import datetime, timedelta from jinja2 import Template - -def upload_script_to_s3(bucket_name, s3_key, template_path, aws_conn_id, **kwargs): +def upload_rendered_script_to_s3(bucket_name, template_s3_key, rendered_s3_key, aws_conn_id, **kwargs): # S3Hook 인스턴스 생성 s3_hook = S3Hook(aws_conn_id=aws_conn_id) - # Jinja 템플릿 파일 읽기 - with open(template_path, 'r') as file: - template = Template(file.read()) + # S3에서 Jinja 템플릿 파일 읽기 + template_str = s3_hook.read_key(template_s3_key, bucket_name) - # 템플릿 렌더링 + # Jinja 템플릿 렌더링 + template = Template(template_str) rendered_script = template.render(**kwargs) # 렌더링된 스크립트를 S3에 업로드 s3_hook.load_string( string_data=rendered_script, bucket_name=bucket_name, - key=s3_key, + key=rendered_s3_key, replace=True ) @@ -46,12 +45,12 @@ def upload_script_to_s3(bucket_name, s3_key, template_path, aws_conn_id, **kwarg upload_script = PythonOperator( task_id='upload_script_to_s3', - python_callable=upload_script_to_s3, + python_callable=upload_rendered_script_to_s3, op_kwargs={ "bucket_name": bucket_name, "aws_conn_id": "aws_conn_id", - "s3_key": f"source/script/glue_script.py", - 'template_path': './glue_template.py', + "template_s3_key": f"source/script/glue_template.py", + "rendered_s3_key": f"source/script/glue_script.py", # into template 'input_path': f's3://de-2-1-bucket/source/json/table_name=raw_live_viewer/year={year}/month={month}/day={day}/', 'output_path': 's3://de-2-1-bucket/source/parquet/', # do change_path @@ -61,7 +60,7 @@ def upload_script_to_s3(bucket_name, s3_key, template_path, aws_conn_id, **kwarg run_glue_job = GlueJobOperator( task_id='run_glue_job', job_name='DE-2-1-testjob', - script_location='s3://your_bucket_name/path/to/your_script.py', + script_location= 's3://de-2-1-bucket/source/script/glue_script.py', aws_conn_id='aws_conn_id', region_name='ap-northeast-2', dag=dag, From 37cf15d00198809153647992afb1b90748cd3470 Mon Sep 17 00:00:00 2001 From: poriz Date: Wed, 21 Feb 2024 10:47:06 +0900 Subject: [PATCH 090/249] [feat] add glue code v1.2 --- {dataCollector/glue&athena => dags/glue}/glue_airflow.py | 0 dags/glue/test.py | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename {dataCollector/glue&athena => dags/glue}/glue_airflow.py (100%) delete mode 100644 dags/glue/test.py diff --git a/dataCollector/glue&athena/glue_airflow.py b/dags/glue/glue_airflow.py similarity index 100% rename from dataCollector/glue&athena/glue_airflow.py rename to dags/glue/glue_airflow.py diff --git a/dags/glue/test.py b/dags/glue/test.py deleted file mode 100644 index e69de29..0000000 From eea932574585dbc03c233f848dd129b344bda6be Mon Sep 17 00:00:00 2001 From: poriz Date: Wed, 21 Feb 2024 12:05:36 +0900 Subject: [PATCH 091/249] [feat] add glue code v2.0 --- dags/glue/glue_airflow.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/dags/glue/glue_airflow.py b/dags/glue/glue_airflow.py index f2ac6b8..99fe72e 100644 --- a/dags/glue/glue_airflow.py +++ b/dags/glue/glue_airflow.py @@ -25,7 +25,7 @@ def upload_rendered_script_to_s3(bucket_name, template_s3_key, rendered_s3_key, ) with DAG( - "get_raw_data", + "glue_test_dag", default_args={ "owner": "airflow", "depends_on_past": False, @@ -39,6 +39,7 @@ def upload_rendered_script_to_s3(bucket_name, template_s3_key, rendered_s3_key, bucket_name = "de-2-1-bucket" local_path = f'./glue_script.py' + current_time = "{{ data_interval_end.strftime('%Y-%m-%dT%H:%M:%S+00:00') }}" year = "{{ data_interval_end.year }}" month = "{{ data_interval_end.month }}" day = "{{ data_interval_end.day }}" @@ -53,7 +54,7 @@ def upload_rendered_script_to_s3(bucket_name, template_s3_key, rendered_s3_key, "rendered_s3_key": f"source/script/glue_script.py", # into template 'input_path': f's3://de-2-1-bucket/source/json/table_name=raw_live_viewer/year={year}/month={month}/day={day}/', - 'output_path': 's3://de-2-1-bucket/source/parquet/', # do change_path + 'output_path': f's3://de-2-1-bucket/source/parquet/', # do change_path } ) @@ -63,6 +64,7 @@ def upload_rendered_script_to_s3(bucket_name, template_s3_key, rendered_s3_key, script_location= 's3://de-2-1-bucket/source/script/glue_script.py', aws_conn_id='aws_conn_id', region_name='ap-northeast-2', + iam_role_name='AWSGlueServiceRole-crawler', dag=dag, ) From a9ddf99e7411077b77a7839e76c4dfa47cb1021a Mon Sep 17 00:00:00 2001 From: poriz Date: Wed, 21 Feb 2024 12:20:49 +0900 Subject: [PATCH 092/249] [feat] add glue code v2.1 --- dataCollector/glue&athena/glue_template.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/dataCollector/glue&athena/glue_template.py b/dataCollector/glue&athena/glue_template.py index 68a5c23..cc471a7 100644 --- a/dataCollector/glue&athena/glue_template.py +++ b/dataCollector/glue&athena/glue_template.py @@ -20,8 +20,7 @@ 's3', {'paths': ['{{ input_path }}'], 'recurse':True}, format='json', - transformation_ctx='datasource', - additional_options={"bookmarkEnabled":"true"} + transformation_ctx='datasource' ) # Parquet으로 변환하여 S3에 저장 From a0daf529942a368785d5213618b5bccd271c5037 Mon Sep 17 00:00:00 2001 From: poriz Date: Wed, 21 Feb 2024 13:44:07 +0900 Subject: [PATCH 093/249] [feat] dag_raw_data v4.2 --- dags/glue/glue_airflow.py | 46 +++++---- dags/streaming/dag_raw_data.py | 107 ++++++++++++++------- dataCollector/glue&athena/glue_template.py | 20 ++-- 3 files changed, 108 insertions(+), 65 deletions(-) diff --git a/dags/glue/glue_airflow.py b/dags/glue/glue_airflow.py index 99fe72e..f599739 100644 --- a/dags/glue/glue_airflow.py +++ b/dags/glue/glue_airflow.py @@ -5,7 +5,10 @@ from datetime import datetime, timedelta from jinja2 import Template -def upload_rendered_script_to_s3(bucket_name, template_s3_key, rendered_s3_key, aws_conn_id, **kwargs): + +def upload_rendered_script_to_s3( + bucket_name, template_s3_key, rendered_s3_key, aws_conn_id, **kwargs +): # S3Hook 인스턴스 생성 s3_hook = S3Hook(aws_conn_id=aws_conn_id) @@ -21,9 +24,10 @@ def upload_rendered_script_to_s3(bucket_name, template_s3_key, rendered_s3_key, string_data=rendered_script, bucket_name=bucket_name, key=rendered_s3_key, - replace=True + replace=True, ) + with DAG( "glue_test_dag", default_args={ @@ -38,33 +42,33 @@ def upload_rendered_script_to_s3(bucket_name, template_s3_key, rendered_s3_key, ) as dag: bucket_name = "de-2-1-bucket" - local_path = f'./glue_script.py' + local_path = "./glue_script.py" current_time = "{{ data_interval_end.strftime('%Y-%m-%dT%H:%M:%S+00:00') }}" year = "{{ data_interval_end.year }}" month = "{{ data_interval_end.month }}" day = "{{ data_interval_end.day }}" upload_script = PythonOperator( - task_id='upload_script_to_s3', - python_callable=upload_rendered_script_to_s3, - op_kwargs={ - "bucket_name": bucket_name, - "aws_conn_id": "aws_conn_id", - "template_s3_key": f"source/script/glue_template.py", - "rendered_s3_key": f"source/script/glue_script.py", - # into template - 'input_path': f's3://de-2-1-bucket/source/json/table_name=raw_live_viewer/year={year}/month={month}/day={day}/', - 'output_path': f's3://de-2-1-bucket/source/parquet/', # do change_path - } - ) + task_id="upload_script_to_s3", + python_callable=upload_rendered_script_to_s3, + op_kwargs={ + "bucket_name": bucket_name, + "aws_conn_id": "aws_conn_id", + "template_s3_key": "source/script/glue_template.py", + "rendered_s3_key": "source/script/glue_script.py", + # into template + "input_path": f"s3://de-2-1-bucket/source/json/table_name=raw_live_viewer/year={year}/month={month}/day={day}/", + "output_path": "s3://de-2-1-bucket/source/parquet/", # do change_path + }, + ) run_glue_job = GlueJobOperator( - task_id='run_glue_job', - job_name='DE-2-1-testjob', - script_location= 's3://de-2-1-bucket/source/script/glue_script.py', - aws_conn_id='aws_conn_id', - region_name='ap-northeast-2', - iam_role_name='AWSGlueServiceRole-crawler', + task_id="run_glue_job", + job_name="DE-2-1-testjob", + script_location="s3://de-2-1-bucket/source/script/glue_script.py", + aws_conn_id="aws_conn_id", + region_name="ap-northeast-2", + iam_role_name="AWSGlueServiceRole-crawler", dag=dag, ) diff --git a/dags/streaming/dag_raw_data.py b/dags/streaming/dag_raw_data.py index 3fe6ae2..42751e2 100644 --- a/dags/streaming/dag_raw_data.py +++ b/dags/streaming/dag_raw_data.py @@ -8,6 +8,7 @@ import json import os import requests +from requests.exceptions import RequestException import logging from datetime import datetime, timedelta import slack @@ -30,37 +31,46 @@ def get_s_list(**kwargs): chzzk, afc = [], [] for row in result: if row[1]: - chzzk.append((row[0],row[1])) + chzzk.append((row[0], row[1])) if row[2]: - afc.append((row[0],row[2])) + afc.append((row[0], row[2])) kwargs["ti"].xcom_push(key="chzzk", value=chzzk) kwargs["ti"].xcom_push(key="afc", value=afc) -def chzzk_raw(current_time,**kwargs): +def chzzk_raw(current_time, **kwargs): chzzk_ids = kwargs["ti"].xcom_pull(key="chzzk", task_ids="get_s_list_task") live_stream_data = [] - for s_id,id in chzzk_ids: + for s_id, id in chzzk_ids: res = requests.get( f"https://api.chzzk.naver.com/polling/v2/channels/{id}/live-status" ) if res.status_code == 200: live_data = res.json() - live = live_data["content"]["status"] - if live == "OPEN": - stream_data = {"streamer_id": s_id, "chzzk_s_id": id, "current_time":current_time, **live_data} - live_stream_data.append(stream_data) - else: - pass + try: + live = live_data["content"]["status"] + if live == "OPEN": + stream_data = { + "streamer_id": s_id, + "chzzk_s_id": id, + "current_time": current_time, + **live_data, + } + live_stream_data.append(stream_data) + except KeyError as e: + error_msg = f"Error occurred: {str(e)}" + logging.error((error_msg)) + + raise AirflowException(error_msg) with open(f"./chzzk_{current_time}.json", "w") as f: json.dump(live_stream_data, f, indent=4) -def afreeca_raw(current_time,**kwargs): +def afreeca_raw(current_time, **kwargs): afreeca_ids = kwargs["ti"].xcom_pull(key="afc", task_ids="get_s_list_task") live_stream_data = [] @@ -70,34 +80,52 @@ def afreeca_raw(current_time,**kwargs): def get_live_status(bjid, headers): # BJ의 생방송 상태와 game category, broadcast title 등의 정보를 조회하는 함수 - live_status_url = ( - f"https://live.afreecatv.com/afreeca/player_live_api.php?bjid={bjid}" - ) - live_res = requests.post( - live_status_url, headers=headers, data={"bid": bjid, "type": "live"} - ).json()["CHANNEL"] + try: + live_status_url = ( + f"https://live.afreecatv.com/afreeca/player_live_api.php?bjid={bjid}" + ) + live_res = requests.post( + live_status_url, headers=headers, data={"bid": bjid, "type": "live"} + ).json()["CHANNEL"] + except RequestException: + live_res = {} return live_res def get_broad_info(bjid, headers): # BJ의 생방송 상태, 실시간 시청자 수, timestamp를 조회하는 함수 broad_url = f"https://bjapi.afreecatv.com/api/{bjid}/station" - broad_res = requests.get(broad_url, headers=headers).json() + try: + broad_res = requests.get(broad_url, headers=headers).json() + except RequestException: + broad_res = {} + return broad_res if afreeca_ids != []: - for s_id,bjid in afreeca_ids: + for s_id, bjid in afreeca_ids: live_res = get_live_status(bjid, headers) broad_res = get_broad_info(bjid, headers) - broad_info = broad_res.get("broad") - - if live_res.get("RESULT") and broad_info: - combined_res = {"live_status": live_res, "broad_info": broad_res} - stream_data = {"streamer_id": s_id, "afc_s_id": bjid, "current_time":current_time, **combined_res} - live_stream_data.append(stream_data) - - else: - pass + if broad_res != {}: + broad_info = broad_res.get("broad") + if live_res != {}: + live_stat = live_res.get("RESULT") + + try: + if live_stat and broad_info: + combined_res = {"live_status": live_res, "broad_info": broad_res} + + stream_data = { + "streamer_id": s_id, + "afc_s_id": bjid, + "current_time": current_time, + **combined_res, + } + live_stream_data.append(stream_data) + except (AttributeError, TypeError) as e: + error_msg = f"Error occurred: {str(e)}" + logging.error((error_msg)) + raise AirflowException(error_msg) with open(f"./afc_{current_time}.json", "w") as f: json.dump(live_stream_data, f, indent=4) @@ -133,10 +161,17 @@ def upload_file_to_s3_without_reading( local_file_path, bucket_name, s3_key, aws_conn_id ): # S3Hook을 사용하여 파일을 S3에 업로드 - s3_hook = S3Hook(aws_conn_id=aws_conn_id) - s3_hook.load_file( - filename=local_file_path, bucket_name=bucket_name, replace=True, key=s3_key - ) + try: + s3_hook = S3Hook(aws_conn_id=aws_conn_id) + s3_hook.load_file( + filename=local_file_path, bucket_name=bucket_name, replace=True, key=s3_key + ) + except Exception as e: + error_msg = f"Error occurred: {str(e)}" + logging.error((error_msg)) + + raise AirflowException(error_msg) + def delete_file(file_path): """주어진 경로의 파일을 삭제하는 함수""" @@ -190,17 +225,20 @@ def delete_files(**kwargs): task_raw_chzzk = PythonOperator( task_id="chzzk_raw_task", python_callable=chzzk_raw, - op_kwargs={"current_time":current_time} + op_kwargs={"current_time": current_time}, + on_failure_callback=slack.on_failure_callback, ) task_raw_afreeca = PythonOperator( task_id="afreeca_raw_task", python_callable=afreeca_raw, - op_kwargs={"current_time":current_time} + op_kwargs={"current_time": current_time}, + on_failure_callback=slack.on_failure_callback, ) task_merge_json = PythonOperator( task_id="merge_json_task", python_callable=merge_json, op_kwargs={"local_path": local_path}, + on_failure_callback=slack.on_failure_callback, ) task_load_raw_data = PythonOperator( task_id="upload_file_directly_to_s3", @@ -211,6 +249,7 @@ def delete_files(**kwargs): "s3_key": f"source/json/table_name={table_name}/year={year}/month={month}/day={day}/{table_name}_{current_time}.json", "aws_conn_id": "aws_conn_id", }, + on_failure_callback=slack.on_failure_callback, ) delete_local_files = PythonOperator( diff --git a/dataCollector/glue&athena/glue_template.py b/dataCollector/glue&athena/glue_template.py index cc471a7..0990e36 100644 --- a/dataCollector/glue&athena/glue_template.py +++ b/dataCollector/glue&athena/glue_template.py @@ -12,24 +12,24 @@ # Job 초기화 (Job Bookmark 활성화 포함) job = Job(glueContext) -args = getResolvedOptions(sys.argv, ['JOB_NAME']) -job.init(args['JOB_NAME'], args) +args = getResolvedOptions(sys.argv, ["JOB_NAME"]) +job.init(args["JOB_NAME"], args) # S3에서 데이터를 읽어오는 부분 datasource = glueContext.create_dynamic_frame.from_options( - 's3', - {'paths': ['{{ input_path }}'], 'recurse':True}, - format='json', - transformation_ctx='datasource' + "s3", + {"paths": ["{{ input_path }}"], "recurse": True}, + format="json", + transformation_ctx="datasource", ) # Parquet으로 변환하여 S3에 저장 glueContext.write_dynamic_frame.from_options( frame=datasource, - connection_type='s3', - connection_options={'path': '{{ output_path }}'}, - format='parquet', - transformation_ctx='datasource' + connection_type="s3", + connection_options={"path": "{{ output_path }}"}, + format="parquet", + transformation_ctx="datasource", ) From 6538fd8ffa405d6f78fbc19e2c73c2801af0f740 Mon Sep 17 00:00:00 2001 From: poriz Date: Wed, 21 Feb 2024 15:25:57 +0900 Subject: [PATCH 094/249] [feat] dag_raw_data v4.2.1 --- dags/streaming/dag_raw_data.py | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/dags/streaming/dag_raw_data.py b/dags/streaming/dag_raw_data.py index 42751e2..e3e0755 100644 --- a/dags/streaming/dag_raw_data.py +++ b/dags/streaming/dag_raw_data.py @@ -106,13 +106,10 @@ def get_broad_info(bjid, headers): live_res = get_live_status(bjid, headers) broad_res = get_broad_info(bjid, headers) - if broad_res != {}: + try: broad_info = broad_res.get("broad") - if live_res != {}: live_stat = live_res.get("RESULT") - - try: - if live_stat and broad_info: + if live_stat and broad_info!= None: combined_res = {"live_status": live_res, "broad_info": broad_res} stream_data = { @@ -122,6 +119,8 @@ def get_broad_info(bjid, headers): **combined_res, } live_stream_data.append(stream_data) + + except (AttributeError, TypeError) as e: error_msg = f"Error occurred: {str(e)}" logging.error((error_msg)) @@ -131,7 +130,7 @@ def get_broad_info(bjid, headers): json.dump(live_stream_data, f, indent=4) -def merge_json(local_path, **kwargs): +def merge_json(current_time,local_path, **kwargs): # 파일 읽고 기존 데이터 로드 try: with open(f"./chzzk_{current_time}.json", "r") as f: @@ -144,7 +143,7 @@ def merge_json(local_path, **kwargs): afreeca_data = json.load(f) except FileNotFoundError: afreeca_data = [] - + print(chzzk_data,afreeca_data) # 'stream_data'라는 최상위 키로 전체 데이터를 감싸는 새로운 딕셔너리 생성 stream_data = { "stream_data": { @@ -237,7 +236,7 @@ def delete_files(**kwargs): task_merge_json = PythonOperator( task_id="merge_json_task", python_callable=merge_json, - op_kwargs={"local_path": local_path}, + op_kwargs={"local_path": local_path, "current_time": current_time}, on_failure_callback=slack.on_failure_callback, ) task_load_raw_data = PythonOperator( From 8714d3b915bd7d58743230d14eb921eb0f62f140 Mon Sep 17 00:00:00 2001 From: poriz Date: Wed, 21 Feb 2024 15:27:46 +0900 Subject: [PATCH 095/249] [feat] dag_raw_data v4.2.2 --- dags/streaming/dag_raw_data.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/dags/streaming/dag_raw_data.py b/dags/streaming/dag_raw_data.py index e3e0755..16fc7b9 100644 --- a/dags/streaming/dag_raw_data.py +++ b/dags/streaming/dag_raw_data.py @@ -109,7 +109,7 @@ def get_broad_info(bjid, headers): try: broad_info = broad_res.get("broad") live_stat = live_res.get("RESULT") - if live_stat and broad_info!= None: + if live_stat and broad_info: combined_res = {"live_status": live_res, "broad_info": broad_res} stream_data = { @@ -120,7 +120,6 @@ def get_broad_info(bjid, headers): } live_stream_data.append(stream_data) - except (AttributeError, TypeError) as e: error_msg = f"Error occurred: {str(e)}" logging.error((error_msg)) @@ -130,7 +129,7 @@ def get_broad_info(bjid, headers): json.dump(live_stream_data, f, indent=4) -def merge_json(current_time,local_path, **kwargs): +def merge_json(current_time, local_path, **kwargs): # 파일 읽고 기존 데이터 로드 try: with open(f"./chzzk_{current_time}.json", "r") as f: @@ -143,7 +142,7 @@ def merge_json(current_time,local_path, **kwargs): afreeca_data = json.load(f) except FileNotFoundError: afreeca_data = [] - print(chzzk_data,afreeca_data) + print(chzzk_data, afreeca_data) # 'stream_data'라는 최상위 키로 전체 데이터를 감싸는 새로운 딕셔너리 생성 stream_data = { "stream_data": { From 114c3e2c5667dbff99f2c14a3f16f2b9cf607314 Mon Sep 17 00:00:00 2001 From: poriz Date: Wed, 21 Feb 2024 15:29:55 +0900 Subject: [PATCH 096/249] [feat] dag_raw_data v4.3 change_conn name slack_api_key --- plugins/slack.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/slack.py b/plugins/slack.py index ff892d4..fc39906 100644 --- a/plugins/slack.py +++ b/plugins/slack.py @@ -18,7 +18,7 @@ def on_failure_callback(context): # def send_message_to_a_slack_channel(message, emoji, channel, access_token): def send_message_to_a_slack_channel(message, emoji): # url = "https://slack.com/api/chat.postMessage" - url = "https://hooks.slack.com/services/" + Variable.get("slack_url") + url = "https://hooks.slack.com/services/" + Variable.get("slack_api_key") headers = { "content-type": "application/json", } From d439ddc1b079a48ca563495707bd9b36050e2bc5 Mon Sep 17 00:00:00 2001 From: poriz Date: Wed, 21 Feb 2024 15:58:29 +0900 Subject: [PATCH 097/249] [feat] change s3 file path --- dags/glue/glue_airflow.py | 5 +++-- dags/streaming/dag_raw_data.py | 35 +++++++++++++++++----------------- 2 files changed, 21 insertions(+), 19 deletions(-) diff --git a/dags/glue/glue_airflow.py b/dags/glue/glue_airflow.py index f599739..0dd9768 100644 --- a/dags/glue/glue_airflow.py +++ b/dags/glue/glue_airflow.py @@ -47,6 +47,7 @@ def upload_rendered_script_to_s3( year = "{{ data_interval_end.year }}" month = "{{ data_interval_end.month }}" day = "{{ data_interval_end.day }}" + hour = "{{ data_interval_end.hour }}" upload_script = PythonOperator( task_id="upload_script_to_s3", @@ -57,8 +58,8 @@ def upload_rendered_script_to_s3( "template_s3_key": "source/script/glue_template.py", "rendered_s3_key": "source/script/glue_script.py", # into template - "input_path": f"s3://de-2-1-bucket/source/json/table_name=raw_live_viewer/year={year}/month={month}/day={day}/", - "output_path": "s3://de-2-1-bucket/source/parquet/", # do change_path + "input_path": f"s3://de-2-1-bucket/source/json/table_name=raw_live_viewer/year={year}/month={month}/day={day}/hour={hour}/", + "output_path": f"s3://de-2-1-bucket/source/parquet/table_name=raw_live_viewer/year={year}/month={month}/day={day}/hour={hour}/", }, ) diff --git a/dags/streaming/dag_raw_data.py b/dags/streaming/dag_raw_data.py index 42751e2..e42802c 100644 --- a/dags/streaming/dag_raw_data.py +++ b/dags/streaming/dag_raw_data.py @@ -213,6 +213,7 @@ def delete_files(**kwargs): year = "{{ data_interval_end.year }}" month = "{{ data_interval_end.month }}" day = "{{ data_interval_end.day }}" + hour = "{{ data_interval_end.hour }}" table_name = "raw_live_viewer" local_name = "local_raw_live" local_path = f"./{local_name}_{current_time}.json" @@ -246,7 +247,7 @@ def delete_files(**kwargs): op_kwargs={ "local_file_path": local_path, "bucket_name": bucket_name, - "s3_key": f"source/json/table_name={table_name}/year={year}/month={month}/day={day}/{table_name}_{current_time}.json", + "s3_key": f"source/json/table_name={table_name}/year={year}/month={month}/day={day}/hour={hour}/{table_name}_{current_time}.json", "aws_conn_id": "aws_conn_id", }, on_failure_callback=slack.on_failure_callback, @@ -257,22 +258,22 @@ def delete_files(**kwargs): python_callable=delete_files, ) - # 파일이 존재하는지 먼저 확인 - if not os.path.exists(local_path): - # 파일이 존재하지 않으면 빈 JSON 객체로 새 파일 생성 - with open(local_path, "w") as f: - json.dump({}, f) - - # 파일을 읽고 쓰기 모드로 열기 - with open(local_path, "r+") as f: - # 파일 내용 읽기 - try: - data_json = json.load(f) - except json.JSONDecodeError: - # 파일이 비어있거나 JSON 형식이 아닐 경우 빈 객체 사용 - data_json = {} - - data_json = json.dumps(data_json) + # # 파일이 존재하는지 먼저 확인 + # if not os.path.exists(local_path): + # # 파일이 존재하지 않으면 빈 JSON 객체로 새 파일 생성 + # with open(local_path, "w") as f: + # json.dump({}, f) + # + # # 파일을 읽고 쓰기 모드로 열기 + # with open(local_path, "r+") as f: + # # 파일 내용 읽기 + # try: + # data_json = json.load(f) + # except json.JSONDecodeError: + # # 파일이 비어있거나 JSON 형식이 아닐 경우 빈 객체 사용 + # data_json = {} + # + # data_json = json.dumps(data_json) task_get_s_list >> [task_raw_chzzk, task_raw_afreeca] >> task_merge_json task_merge_json >> task_load_raw_data >> delete_local_files From 06a54d726f62d5c7b5ffbcec8e64d5002fa074eb Mon Sep 17 00:00:00 2001 From: Lee Sarah Date: Wed, 21 Feb 2024 16:08:11 +0900 Subject: [PATCH 098/249] [feat] : remove flake8 and black from workflow (pre-commit) --- .github/workflows/sync_dag_code.yml | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/.github/workflows/sync_dag_code.yml b/.github/workflows/sync_dag_code.yml index e68f7b1..888db62 100644 --- a/.github/workflows/sync_dag_code.yml +++ b/.github/workflows/sync_dag_code.yml @@ -55,22 +55,11 @@ jobs: pip install "apache-airflow==${AIRFLOW_VERSION}" --constraint "${CONSTRAINT_URL}" pip install pytest - - name: Install Flake8 - run: pip install flake8 - - name: Run Flake8 - run: flake8 dags/ tests/dags/ --max-line-length=120 || true - - name: Install Pylint run: pip install pylint - name: Run Pylint run: find dags/ tests/dags/ -name "*.py" | xargs pylint --output-format=colorized --disable=missing-docstring,invalid-name,W0104 - - name: Install Black - run: pip install black - - name: Run Black - run: find dags/ tests/dags/ -name "*.py" | xargs black --check - continue-on-error: true - - name: Test DAG integrity run: pytest tests/ From 2c889ae1c9099870a068feda6570e8df141086fc Mon Sep 17 00:00:00 2001 From: poriz Date: Wed, 21 Feb 2024 16:12:36 +0900 Subject: [PATCH 099/249] [feat] dag_raw_data v5.0 --- dags/streaming/dag_raw_data.py | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/dags/streaming/dag_raw_data.py b/dags/streaming/dag_raw_data.py index 640985a..5e19c06 100644 --- a/dags/streaming/dag_raw_data.py +++ b/dags/streaming/dag_raw_data.py @@ -256,22 +256,5 @@ def delete_files(**kwargs): python_callable=delete_files, ) - # # 파일이 존재하는지 먼저 확인 - # if not os.path.exists(local_path): - # # 파일이 존재하지 않으면 빈 JSON 객체로 새 파일 생성 - # with open(local_path, "w") as f: - # json.dump({}, f) - # - # # 파일을 읽고 쓰기 모드로 열기 - # with open(local_path, "r+") as f: - # # 파일 내용 읽기 - # try: - # data_json = json.load(f) - # except json.JSONDecodeError: - # # 파일이 비어있거나 JSON 형식이 아닐 경우 빈 객체 사용 - # data_json = {} - # - # data_json = json.dumps(data_json) - task_get_s_list >> [task_raw_chzzk, task_raw_afreeca] >> task_merge_json task_merge_json >> task_load_raw_data >> delete_local_files From 8fbb5fdee94b7dc7c3e82afd857942217c01bbfb Mon Sep 17 00:00:00 2001 From: Lee Sarah Date: Wed, 21 Feb 2024 17:55:45 +0900 Subject: [PATCH 100/249] [fix] : fix precommit yaml code --- .pre-commit-config.yaml | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 7386ee8..518d211 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,10 +1,16 @@ repos: - - repo: https://github.com/psf/black - rev: 24.2.0 - hooks: - - id: black - language_version: python3.11 - # Black doesn't use file filters for inclusion, it formats all Python files by default. - - - repo: https://github.com/PyCQA/flake8 + - repo: https://github.com/psf/black + rev: 24.2.0 + hooks: + - id: black + language_version: python3.11 + # Black doesn't use file filters for inclusion, it formats all Python files by default. + - repo: https://github.com/PyCQA/flake8 + rev: "7.0.0" + hooks: + - id: flake8 + # Use a regex pattern to include dags and tests/dags directories + files: ^(dags|tests/dags)/.*\.py$ + # Add errors that would be ignored + args: ["--ignore=E501,W503"] From 2bbb684242ea997f5140ca5977e83b65ada3d0c9 Mon Sep 17 00:00:00 2001 From: Lee Sarah Date: Wed, 21 Feb 2024 17:56:00 +0900 Subject: [PATCH 101/249] [fix] add personal venv path --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 59b40da..63ceed3 100644 --- a/.gitignore +++ b/.gitignore @@ -135,6 +135,7 @@ venv/ ENV/ env.bak/ venv.bak/ +airflowvenv/ # Spyder project settings .spyderproject From 939d8ecf279c65a9b334cd01158d95937f7f57fa Mon Sep 17 00:00:00 2001 From: Lee Sarah Date: Wed, 21 Feb 2024 17:56:27 +0900 Subject: [PATCH 102/249] [fix] : fix errors shown in pylint --- dags/game/game_ccu_to_s3.py | 8 ++++---- dags/game/game_comment_to_s3.py | 8 ++++---- dags/game/game_price_to_s3.py | 8 ++++---- dags/game/game_rating_to_s3.py | 16 +++++++++------- dags/glue/glue_airflow.py | 6 ++++-- dags/streaming/dag_raw_data.py | 21 ++++++++++++--------- 6 files changed, 37 insertions(+), 30 deletions(-) diff --git a/dags/game/game_ccu_to_s3.py b/dags/game/game_ccu_to_s3.py index 07328e9..b04effd 100644 --- a/dags/game/game_ccu_to_s3.py +++ b/dags/game/game_ccu_to_s3.py @@ -1,15 +1,15 @@ +from datetime import datetime, timedelta +import json +import requests + from airflow import DAG from airflow.decorators import task from airflow.providers.amazon.aws.operators.s3 import S3CreateObjectOperator -from datetime import datetime, timedelta # from plugins import slack from top_300_games import games -import requests -import json - # {"response":{"player_count":1188079,"result":1}} 이렇게 옴 @task diff --git a/dags/game/game_comment_to_s3.py b/dags/game/game_comment_to_s3.py index 573e981..e3c6827 100644 --- a/dags/game/game_comment_to_s3.py +++ b/dags/game/game_comment_to_s3.py @@ -1,16 +1,16 @@ +from datetime import datetime, timedelta +import json +import requests + from airflow import DAG from airflow.decorators import task from airflow.providers.amazon.aws.operators.s3 import S3CreateObjectOperator from airflow.models import Variable -from datetime import datetime, timedelta # from plugins import slack from top_300_games import games -import requests -import json - # Game info 테이블에 있는 Game들의 app_id를 이용해 게임 정량 평가를 가져오는 함수 def get_game_reviews(app_id): diff --git a/dags/game/game_price_to_s3.py b/dags/game/game_price_to_s3.py index 5574786..9696878 100644 --- a/dags/game/game_price_to_s3.py +++ b/dags/game/game_price_to_s3.py @@ -1,15 +1,15 @@ +from datetime import datetime, timedelta +import json +import requests + from airflow import DAG from airflow.decorators import task from airflow.providers.amazon.aws.operators.s3 import S3CreateObjectOperator -from datetime import datetime, timedelta # from plugins import slack from top_300_games import games -import requests -import json - @task def get_ccu(): diff --git a/dags/game/game_rating_to_s3.py b/dags/game/game_rating_to_s3.py index 2df4bee..f3549f6 100644 --- a/dags/game/game_rating_to_s3.py +++ b/dags/game/game_rating_to_s3.py @@ -1,17 +1,19 @@ +import re +from bs4 import BeautifulSoup + +from datetime import datetime, timedelta +import json +import requests + + from airflow import DAG from airflow.decorators import task from airflow.providers.amazon.aws.operators.s3 import S3CreateObjectOperator -from bs4 import BeautifulSoup -from datetime import datetime, timedelta # from plugins import slack from top_300_games import games -import re -import requests -import json - # Game info 테이블에 있는 Game들의 app_id를 이용해 게임 정량 평가를 가져오는 함수 def get_rating(app_id): @@ -21,7 +23,7 @@ def get_rating(app_id): reviewdesc_short = soup.find_all("span", {"class": "responsive_reviewdesc_short"}) - if reviewdesc_short == []: + if not reviewdesc_short: return { "ALL_POSITIVE_NUM": 0, "ALL_POSITIVE_PERCENT": 0, diff --git a/dags/glue/glue_airflow.py b/dags/glue/glue_airflow.py index 0dd9768..a23b139 100644 --- a/dags/glue/glue_airflow.py +++ b/dags/glue/glue_airflow.py @@ -1,8 +1,10 @@ +from datetime import datetime, timedelta + from airflow import DAG -from airflow.operators.python_operator import PythonOperator +from airflow.operators.python import PythonOperator from airflow.providers.amazon.aws.operators.glue import GlueJobOperator from airflow.providers.amazon.aws.hooks.s3 import S3Hook -from datetime import datetime, timedelta + from jinja2 import Template diff --git a/dags/streaming/dag_raw_data.py b/dags/streaming/dag_raw_data.py index 5e19c06..c2771ff 100644 --- a/dags/streaming/dag_raw_data.py +++ b/dags/streaming/dag_raw_data.py @@ -1,19 +1,22 @@ -from airflow import DAG -from airflow.operators.python import PythonOperator -from airflow.providers.amazon.aws.hooks.s3 import S3Hook -from airflow.providers.mysql.hooks.mysql import MySqlHook -from airflow.exceptions import AirflowException - +from datetime import datetime, timedelta import json import os -import requests -from requests.exceptions import RequestException import logging -from datetime import datetime, timedelta +import requests + import slack +from requests.exceptions import RequestException + +from airflow import DAG +from airflow.operators.python import PythonOperator +from airflow.providers.amazon.aws.hooks.s3 import S3Hook +from airflow.providers.mysql.hooks.mysql import MySqlHook +from airflow.exceptions import AirflowException + + # get streamer_list in rds def get_s_list(**kwargs): # RDS 연결 설정 From 9095a19b142a94baa7088c8c7b56f25740d015cf Mon Sep 17 00:00:00 2001 From: Lee Sarah Date: Wed, 21 Feb 2024 17:58:35 +0900 Subject: [PATCH 103/249] [feat] : disable one error at pylint check, and fix pip install part --- .github/workflows/sync_dag_code.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/sync_dag_code.yml b/.github/workflows/sync_dag_code.yml index 888db62..91e73a1 100644 --- a/.github/workflows/sync_dag_code.yml +++ b/.github/workflows/sync_dag_code.yml @@ -52,13 +52,13 @@ jobs: run: | CONSTRAINT_URL="https://raw.githubusercontent.com/apache/airflow/constraints-${AIRFLOW_VERSION}/constraints-${PYTHON_VERSION}.txt" echo "Installing Apache Airflow version ${AIRFLOW_VERSION} with constraints from ${CONSTRAINT_URL}" - pip install "apache-airflow==${AIRFLOW_VERSION}" --constraint "${CONSTRAINT_URL}" - pip install pytest + pip install "apache-airflow[amazon,mysql]==${AIRFLOW_VERSION}" --constraint "${CONSTRAINT_URL}" + pip install pytest slack - name: Install Pylint run: pip install pylint - name: Run Pylint - run: find dags/ tests/dags/ -name "*.py" | xargs pylint --output-format=colorized --disable=missing-docstring,invalid-name,W0104 + run: find dags/ tests/dags/ -name "*.py" | xargs pylint --output-format=colorized --disable=missing-docstring,invalid-name,W0104,C0301 - name: Test DAG integrity run: pytest tests/ From 4b02d06bdbefc87c56f2401223b73f35e4857d34 Mon Sep 17 00:00:00 2001 From: Lee Sarah Date: Wed, 21 Feb 2024 18:03:55 +0900 Subject: [PATCH 104/249] Update .gitignore --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 59b40da..5e317a3 100644 --- a/.gitignore +++ b/.gitignore @@ -135,7 +135,7 @@ venv/ ENV/ env.bak/ venv.bak/ - +airflowvenv/ # Spyder project settings .spyderproject .spyproject From 6d2e198bff46af827134d582ec91ceb1a8ac5f1a Mon Sep 17 00:00:00 2001 From: Lee Sarah Date: Wed, 21 Feb 2024 18:07:16 +0900 Subject: [PATCH 105/249] [test]: test fix for testing pylint for this branch --- dags/streaming/dag_raw_data.py | 1 - 1 file changed, 1 deletion(-) diff --git a/dags/streaming/dag_raw_data.py b/dags/streaming/dag_raw_data.py index c2771ff..6b02f63 100644 --- a/dags/streaming/dag_raw_data.py +++ b/dags/streaming/dag_raw_data.py @@ -7,7 +7,6 @@ import slack - from requests.exceptions import RequestException from airflow import DAG From f3c53cd190b988b1387b18ba6f43592349231100 Mon Sep 17 00:00:00 2001 From: Lee Sarah Date: Wed, 21 Feb 2024 18:11:18 +0900 Subject: [PATCH 106/249] [fix] : uninstall slack --- .github/workflows/sync_dag_code.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/sync_dag_code.yml b/.github/workflows/sync_dag_code.yml index 91e73a1..0b54df3 100644 --- a/.github/workflows/sync_dag_code.yml +++ b/.github/workflows/sync_dag_code.yml @@ -53,7 +53,7 @@ jobs: CONSTRAINT_URL="https://raw.githubusercontent.com/apache/airflow/constraints-${AIRFLOW_VERSION}/constraints-${PYTHON_VERSION}.txt" echo "Installing Apache Airflow version ${AIRFLOW_VERSION} with constraints from ${CONSTRAINT_URL}" pip install "apache-airflow[amazon,mysql]==${AIRFLOW_VERSION}" --constraint "${CONSTRAINT_URL}" - pip install pytest slack + pip install pytest - name: Install Pylint run: pip install pylint From 659396d42338499d045ebf7035eb0f9fd45674ef Mon Sep 17 00:00:00 2001 From: Lee Sarah Date: Wed, 21 Feb 2024 18:13:27 +0900 Subject: [PATCH 107/249] [test] : test fix for testing pylint --- dags/game/game_ccu_to_s3.py | 1 - 1 file changed, 1 deletion(-) diff --git a/dags/game/game_ccu_to_s3.py b/dags/game/game_ccu_to_s3.py index b04effd..fa3b7f1 100644 --- a/dags/game/game_ccu_to_s3.py +++ b/dags/game/game_ccu_to_s3.py @@ -6,7 +6,6 @@ from airflow.decorators import task from airflow.providers.amazon.aws.operators.s3 import S3CreateObjectOperator - # from plugins import slack from top_300_games import games From e71aa9bafb827b637fc026ffe12ef012a24f5406 Mon Sep 17 00:00:00 2001 From: poriz Date: Wed, 21 Feb 2024 18:23:27 +0900 Subject: [PATCH 108/249] [feat] result exception --- dags/streaming/dag_raw_data.py | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/dags/streaming/dag_raw_data.py b/dags/streaming/dag_raw_data.py index 640985a..ede11a6 100644 --- a/dags/streaming/dag_raw_data.py +++ b/dags/streaming/dag_raw_data.py @@ -22,21 +22,20 @@ def get_s_list(**kwargs): result = mysql_hook.get_records( "SELECT STREAMER_ID, CHZ_ID, AFC_ID FROM STREAMER_INFO;" ) + chzzk, afc = [], [] + if result: # result가 None이 아닌 경우에만 처리 + for row in result: + if row[1]: + chzzk.append((row[0], row[1])) + if row[2]: + afc.append((row[0], row[2])) except Exception as e: error_msg = f"Error occurred: {str(e)}" logging.error((error_msg)) - raise AirflowException(error_msg) - - chzzk, afc = [], [] - for row in result: - if row[1]: - chzzk.append((row[0], row[1])) - if row[2]: - afc.append((row[0], row[2])) - - kwargs["ti"].xcom_push(key="chzzk", value=chzzk) - kwargs["ti"].xcom_push(key="afc", value=afc) + finally: + kwargs["ti"].xcom_push(key="chzzk", value=chzzk) + kwargs["ti"].xcom_push(key="afc", value=afc) def chzzk_raw(current_time, **kwargs): From f1727080c041211f638d84327966f4140563fe2a Mon Sep 17 00:00:00 2001 From: lyh Date: Wed, 21 Feb 2024 18:36:54 +0900 Subject: [PATCH 109/249] [feature] DAGs for GCP Airflow --- dags/game/game_ccu_to_s3.py | 77 ++++++--- dags/game/game_comment_to_s3.py | 90 ++++++---- dags/game/game_price_to_s3.py | 96 ++++++++--- dags/game/game_rating_to_s3.py | 96 ++++++----- dags/game/top_300_games.py | 291 -------------------------------- 5 files changed, 239 insertions(+), 411 deletions(-) delete mode 100644 dags/game/top_300_games.py diff --git a/dags/game/game_ccu_to_s3.py b/dags/game/game_ccu_to_s3.py index fa3b7f1..8ff02a6 100644 --- a/dags/game/game_ccu_to_s3.py +++ b/dags/game/game_ccu_to_s3.py @@ -1,43 +1,71 @@ -from datetime import datetime, timedelta -import json -import requests - from airflow import DAG from airflow.decorators import task +from airflow.providers.mysql.hooks.mysql import MySqlHook from airflow.providers.amazon.aws.operators.s3 import S3CreateObjectOperator -# from plugins import slack -from top_300_games import games +from datetime import datetime, timedelta +import slack + +import requests +import json +import time + + +def connect_to_mysql(): + db_hook = MySqlHook(mysql_conn_id="de-2-1-tmp-database") + conn = db_hook.get_conn() + conn.autocommit = True + + return conn.cursor() -# {"response":{"player_count":1188079,"result":1}} 이렇게 옴 @task def get_ccu(): + # 1. GCE의 RDS의 GAME_INFO 테이블에서 게임 리스트 가져오기 + cur = connect_to_mysql() + sql = """ + SELECT game_id, game_nm + FROM GAME_INFO + WHERE + CASE + WHEN IS_TOP300 = "T" THEN TRUE + WHEN IS_TOP300 = "F" AND DATE(REDO_TIME) >= CURDATE() THEN TRUE + ELSE FALSE + END; + """ + cur.execute(sql) + records = cur.fetchall() + data = [] # 모든 API 응답을 저장할 리스트 - for appid, game in games.items(): + # 2. Steam API를 통해 게임별 현재 접속자 수 가져오기 + for appid, game in records: url = f"http://api.steampowered.com/ISteamUserStats/GetNumberOfCurrentPlayers/v1?appid={appid}" response = requests.get(url) + temp = response.json()["response"] + + if temp["result"] != 1: # 실패했을 경우 최대 3번까지 3초 간격으로 재시도 + for _ in range(3): + time.sleep(3) + response = requests.get(url) + temp = response.json()["response"] + if temp["result"] == 1: + break + else: + print(f"Failed to get CCU of {game}!") + else: + temp["game_id"] = appid + data.append(temp) # API 응답을 리스트에 추가 - temp = dict() - temp[appid] = response.json()["response"] print("temp", temp) - data.append(temp) # API 응답을 리스트에 추가 - print(temp[appid]["player_count"], temp[appid]["result"]) - if temp[appid]["result"] != 1: - print(f"Warning! The CCU of {game} does not exists!") - continue - - ccu = temp[appid]["player_count"] - print(f"CCU of {game}: {ccu}") - return data +# 3. API 응답들이 담긴 리스트를 JSON으로 저장 @task def save_to_json(data): - result = json.dumps(data) # API 응답들이 담긴 리스트를 JSON으로 저장 + result = json.dumps(data, ensure_ascii=False) return result @@ -47,11 +75,11 @@ def save_to_json(data): start_date=datetime(2024, 1, 1), catchup=False, tags=["Steam_API"], - schedule_interval="@once", + schedule_interval="0,30 * * * *", # 매 시간 0분과 30분에 시작 default_args={ "retries": 3, "retry_delay": timedelta(seconds=15), - # 'on_failure_callback': slack.on_failure_callback, + "on_failure_callback": slack.on_failure_callback, }, ) as dag: @@ -64,12 +92,13 @@ def save_to_json(data): year = "{{ data_interval_end.year }}" month = "{{ data_interval_end.month }}" day = "{{ data_interval_end.day }}" - table_name = "RAW_GAME_CCU" + hour = "{{ data_interval_end.hour }}" + table_name = "raw_game_ccu" task_load_raw_data = S3CreateObjectOperator( task_id="create_object", s3_bucket=bucket_name, - s3_key=f"source/json/table_name={table_name}/year={year}/month={month}/day={day}/{table_name}_{current_time}.json", + s3_key=f"source/json/table_name={table_name}/year={year}/month={month}/day={day}/hour={hour}/{table_name}_{current_time}.json", data=data_json, replace=True, aws_conn_id="aws_conn_id", diff --git a/dags/game/game_comment_to_s3.py b/dags/game/game_comment_to_s3.py index e3c6827..4102c67 100644 --- a/dags/game/game_comment_to_s3.py +++ b/dags/game/game_comment_to_s3.py @@ -1,26 +1,28 @@ -from datetime import datetime, timedelta -import json -import requests - from airflow import DAG from airflow.decorators import task +from airflow.providers.mysql.hooks.mysql import MySqlHook from airflow.providers.amazon.aws.operators.s3 import S3CreateObjectOperator from airflow.models import Variable +from datetime import datetime, timedelta +import slack -# from plugins import slack -from top_300_games import games +import requests +import json + + +def connect_to_mysql(): + db_hook = MySqlHook(mysql_conn_id="de-2-1-tmp-database") + conn = db_hook.get_conn() + conn.autocommit = True + + return conn.cursor() -# Game info 테이블에 있는 Game들의 app_id를 이용해 게임 정량 평가를 가져오는 함수 def get_game_reviews(app_id): - # API URL api_url = f"https://store.steampowered.com/appreviews/{app_id}?json=1" - # API 키를 설정 api_key = Variable.get("steam_api_key") - - # API 요청 매개변수 설정 params = { "key": api_key, "json": "1", @@ -34,48 +36,61 @@ def get_game_reviews(app_id): # 응답 확인 if response.status_code == 200: data = response.json() + data["game_id"] = app_id return data - # reviews = data.get('reviews', []) + # reviews = data.get("reviews", []) # for review in reviews: - # print(f"Review ID: {review['recommendationid']}") - # print(f"Author: {review['author']['steamid']}") - # print(f"Review: {review['review']}") - # print(f"Recommended: {review['voted_up']}") + # print(f"Review ID: {review["recommendationid"]}") + # print(f"Author: {review["author"]["steamid"]}") + # print(f"Review: {review["review"]}") + # print(f"Recommended: {review["voted_up"]}") # print(f"----------------------------------") else: print(f"Error: Unable to fetch reviews. Status Code: {response.status_code}") +@task +def get_ratings_task(): + # 1. GCE의 RDS의 GAME_INFO 테이블에서 게임 리스트 가져오기 + cur = connect_to_mysql() + sql = """ + SELECT game_id + FROM GAME_INFO + WHERE IS_TOP300 IN ("T", "F"); + """ + cur.execute(sql) + records = cur.fetchall() + + data = [] + # 2. Steam API를 통해 게임별 커멘트 가져오기 + for app_id in records: + temp = get_game_reviews(app_id) + data.append(temp) + + return data + + +# 3. API 응답들이 담긴 리스트를 JSON으로 저장 +@task +def save_to_json(data): + result = json.dumps(data, ensure_ascii=False) + + return result + + with DAG( dag_id="game_comment_to_s3", start_date=datetime(2024, 1, 1), catchup=False, tags=["Steam_API"], - schedule_interval="@once", + schedule_interval="0 0 1 * *", default_args={ "retries": 3, "retry_delay": timedelta(minutes=1), - # 'on_failure_callback': slack.on_failure_callback, + "on_failure_callback": slack.on_failure_callback, }, ) as dag: - @task - def get_ratings_task(): - data = list() - for app_id, game in games.items(): - temp = dict() - temp[app_id] = get_game_reviews(app_id) - print(game, temp) - data.append(temp) - print() - return data - - @task - def save_to_json(data): - result = json.dumps(data) # API 응답들이 담긴 리스트를 JSON으로 저장 - - return result - data = get_ratings_task() data_json = save_to_json(data) @@ -85,12 +100,13 @@ def save_to_json(data): year = "{{ data_interval_end.year }}" month = "{{ data_interval_end.month }}" day = "{{ data_interval_end.day }}" - table_name = "RAW_GAME_REVIEW" + hour = "{{ data_interval_end.hour }}" + table_name = "raw_game_review" task_load_raw_data = S3CreateObjectOperator( task_id="create_object", s3_bucket=bucket_name, - s3_key=f"source/json/table_name={table_name}/year={year}/month={month}/day={day}/{table_name}_{current_time}.json", + s3_key=f"source/json/table_name={table_name}/year={year}/month={month}/day={day}/hour={hour}/{table_name}_{current_time}.json", data=data_json, replace=True, aws_conn_id="aws_conn_id", diff --git a/dags/game/game_price_to_s3.py b/dags/game/game_price_to_s3.py index 9696878..643927d 100644 --- a/dags/game/game_price_to_s3.py +++ b/dags/game/game_price_to_s3.py @@ -1,35 +1,91 @@ -from datetime import datetime, timedelta -import json -import requests - from airflow import DAG from airflow.decorators import task +from airflow.providers.mysql.hooks.mysql import MySqlHook from airflow.providers.amazon.aws.operators.s3 import S3CreateObjectOperator +from airflow.models import Variable + +from datetime import datetime, timedelta +import slack +import requests +import json +import time -# from plugins import slack -from top_300_games import games +def connect_to_mysql(): + db_hook = MySqlHook(mysql_conn_id="de-2-1-tmp-database") + conn = db_hook.get_conn() + conn.autocommit = True -@task -def get_ccu(): - data = [] # 모든 API 응답을 저장할 리스트 + return conn.cursor() - for appid in games.keys(): - url = f"http://store.steampowered.com/api/appdetails?appids={appid}&cc=kr" - response = requests.get(url) - temp = dict() - temp[appid] = response.json() +@task +def get_price(): + # 1. GCE의 RDS의 GAME_INFO 테이블에서 게임 리스트 가져오기 + cur = connect_to_mysql() + sql = """ + SELECT game_id, game_nm + FROM GAME_INFO + WHERE IS_TOP300 IN ("T", "F"); + """ + cur.execute(sql) + records = cur.fetchall() + + data = [] + # 2. Steam API를 통해 게임별 가격 가져오기 + for appid, name in records: + appid = str(appid) - data.append(temp) # API 응답을 리스트에 추가 + url = f"http://store.steampowered.com/api/appdetails?appids={appid}&cc=kr" + api_key = Variable.get("steam_api_key") + params = { + "key": api_key, + "json": "1", + } + + response = requests.get(url, params=params) + temp = response.json() + + # 실패했을 경우 최대 3번까지 90초 간격으로 재시도 + if not temp or not temp[appid]["success"]: # {"1891701":{"success":false}} + for i in range(3): + time.sleep(90) + url = ( + f"http://store.steampowered.com/api/appdetails?appids={appid}&cc=kr" + ) + response = requests.get(url, params=params) + temp = response.json() + + if temp and temp[appid]["success"]: + break + print(f"The response of {appid, name} failed! {i+1} times") + else: + print(f"Failed to get price of {appid, name}!") + + if not temp: + temp = { + appid: { + "success": False, + "data": { + "price_overview": {"final": 999999999, "initial": 999999999} + }, + } + } + else: + temp = temp[appid] + + print(appid, name) + # print(temp) + data.append(temp) return data +# 3. API 응답들이 담긴 리스트를 JSON으로 저장 @task def save_to_json(data): - result = json.dumps(data) # API 응답들이 담긴 리스트를 JSON으로 저장 + result = json.dumps(data, ensure_ascii=False) return result @@ -39,15 +95,15 @@ def save_to_json(data): start_date=datetime(2024, 1, 1), catchup=False, tags=["Steam_API"], - schedule_interval="@once", + schedule_interval="0 0 * * *", default_args={ "retries": 3, "retry_delay": timedelta(seconds=15), - # 'on_failure_callback': slack.on_failure_callback, + "on_failure_callback": slack.on_failure_callback, }, ) as dag: - data = get_ccu() + data = get_price() data_json = save_to_json(data) bucket_name = "de-2-1-bucket" @@ -56,7 +112,7 @@ def save_to_json(data): year = "{{ data_interval_end.year }}" month = "{{ data_interval_end.month }}" day = "{{ data_interval_end.day }}" - table_name = "RAW_GAME_PRICE" + table_name = "raw_game_price" task_load_raw_data = S3CreateObjectOperator( task_id="create_object", diff --git a/dags/game/game_rating_to_s3.py b/dags/game/game_rating_to_s3.py index f3549f6..4211889 100644 --- a/dags/game/game_rating_to_s3.py +++ b/dags/game/game_rating_to_s3.py @@ -1,18 +1,23 @@ -import re -from bs4 import BeautifulSoup +from airflow import DAG +from airflow.decorators import task +from airflow.providers.mysql.hooks.mysql import MySqlHook +from airflow.providers.amazon.aws.operators.s3 import S3CreateObjectOperator +from bs4 import BeautifulSoup from datetime import datetime, timedelta -import json -import requests +import slack +import re +import requests +import json -from airflow import DAG -from airflow.decorators import task -from airflow.providers.amazon.aws.operators.s3 import S3CreateObjectOperator +def connect_to_mysql(): + db_hook = MySqlHook(mysql_conn_id="de-2-1-tmp-database") + conn = db_hook.get_conn() + conn.autocommit = True -# from plugins import slack -from top_300_games import games + return conn.cursor() # Game info 테이블에 있는 Game들의 app_id를 이용해 게임 정량 평가를 가져오는 함수 @@ -23,8 +28,9 @@ def get_rating(app_id): reviewdesc_short = soup.find_all("span", {"class": "responsive_reviewdesc_short"}) - if not reviewdesc_short: + if reviewdesc_short == []: return { + "game_id": app_id, "ALL_POSITIVE_NUM": 0, "ALL_POSITIVE_PERCENT": 0, "RECENT_POSITIVE_NUM": 0, @@ -57,54 +63,66 @@ def get_rating(app_id): int(num) for num in re.findall(r"\d+", all_reviews_text.replace(",", "")) ][::-1] - print("r", recent_reviews_numbers) - print("a", all_reviews_numbers) - data = { - "ALL_POSITIVE_NUM": all_reviews_numbers[0], - "ALL_POSITIVE_PERCENT": all_reviews_numbers[1], + "game_id": app_id, + "all_positive_num": all_reviews_numbers[0], + "all_positive_percent": all_reviews_numbers[1], } if len(recent_reviews_numbers) == 0: - data["RECENT_POSITIVE_NUM"] = 0 - data["RECENT_POSITIVE_PERCENT"] = 0 + data["recent_positive_num"] = 0 + data["recent_positive_percent"] = 0 else: - data["RECENT_POSITIVE_NUM"] = recent_reviews_numbers[0] - data["RECENT_POSITIVE_PERCENT"] = recent_reviews_numbers[1] + data["recent_positive_num"] = recent_reviews_numbers[0] + data["recent_positive_percent"] = recent_reviews_numbers[1] + + return data + +@task +def get_ratings_task(): + # 1. GCE의 RDS의 GAME_INFO 테이블에서 게임 리스트 가져오기 + cur = connect_to_mysql() + sql = """ + SELECT game_id, game_nm + FROM GAME_INFO + WHERE IS_TOP300 IN ("T", "F"); + """ + cur.execute(sql) + records = cur.fetchall() + + data = [] + # 2. Steam API를 통해 게임별 정량 평가 가져오기 + for app_id, game in records: + temp = get_rating(app_id) + data.append(temp) + print(game, temp) return data +# 3. API 응답들이 담긴 리스트를 JSON으로 저장 +@task +def save_to_json(data): + result = json.dumps( + data, ensure_ascii=False + ) # API 응답들이 담긴 리스트를 JSON으로 저장 + + return result + + with DAG( dag_id="game_rating_to_s3", start_date=datetime(2024, 1, 1), catchup=False, tags=["Steam_API"], - schedule_interval="@once", + schedule_interval="0 0 * * *", default_args={ "retries": 3, "retry_delay": timedelta(minutes=1), - # 'on_failure_callback': slack.on_failure_callback, + "on_failure_callback": slack.on_failure_callback, }, ) as dag: - @task - def get_ratings_task(): - data = list() - for app_id, game in games.items(): - temp = dict() - temp[app_id] = get_rating(app_id) - print(game, temp) - data.append(temp) - print() - return data - - @task - def save_to_json(data): - result = json.dumps(data) # API 응답들이 담긴 리스트를 JSON으로 저장 - - return result - data = get_ratings_task() data_json = save_to_json(data) @@ -114,7 +132,7 @@ def save_to_json(data): year = "{{ data_interval_end.year }}" month = "{{ data_interval_end.month }}" day = "{{ data_interval_end.day }}" - table_name = "RAW_GAME_RATING" + table_name = "raw_game_rating" task_load_raw_data = S3CreateObjectOperator( task_id="create_object", diff --git a/dags/game/top_300_games.py b/dags/game/top_300_games.py deleted file mode 100644 index 4040f65..0000000 --- a/dags/game/top_300_games.py +++ /dev/null @@ -1,291 +0,0 @@ -games = { - 730: "Counter-Strike 2", - 1623730: "Palworld", - 570: "Dota 2", - 553850: "HELLDIVERS™ 2", - 1172470: "Apex Legends", - 1086940: "Baldur's Gate 3", - 271590: "Grand Theft Auto V", - 1938090: "Call of Duty®", - 578080: "PUBG: BATTLEGROUNDS", - 359550: "Tom Clancy's Rainbow Six Siege", - 252490: "Rust", - 230410: "Warframe", - 236390: "War Thunder", - 440: "Team Fortress 2", - 2252570: "Football Manager 2024", - 881020: "Granblue Fantasy: Relink", - 1203620: "Enshrouded", - 304930: "Unturned", - 1966720: "Lethal Company", - 2195250: "EA SPORTS FC™ 24", - 1245620: "ELDEN RING", - 1203220: "NARAKA: BLADEPOINT", - 221100: "DayZ", - 289070: "Sid Meier's Civilization VI", - 1174180: "Red Dead Redemption 2", - 2357570: "Overwatch® 2", - 1085660: "Destiny 2", - 436150: "Governor of Poker 3", - 413150: "Stardew Valley", - 105600: "Terraria", - 1222670: "The Sims™ 4", - 1091500: "Cyberpunk 2077", - 322170: "Geometry Dash", - 394360: "Hearts of Iron IV", - 252950: "Rocket League", - 1449850: "Yu-Gi-Oh! Master Duel", - 108600: "Project Zomboid", - 438100: "VRChat", - 489830: "The Elder Scrolls V: Skyrim Special Edition", - 582010: "Monster Hunter: World", - 381210: "Dead by Daylight", - 2161700: "Persona 3 Reload", - 218620: "PAYDAY 2", - 2073850: "THE FINALS", - 1778820: "TEKKEN 8", - 2349820: "Hero's Land", - 227300: "Euro Truck Simulator 2", - 251570: "7 Days to Die", - 346110: "ARK: Survival Evolved", - 550: "Left 4 Dead 2", - 294100: "RimWorld", - 4000: "Garry's Mod", - 250900: "The Binding of Isaac: Rebirth", - 892970: "Valheim", - 291550: "Brawlhalla", - 1248130: "Farming Simulator 22", - 2399830: "ARK: Survival Ascended", - 386360: "SMITE", - 377160: "Fallout 4", - 8930: "Sid Meier's Civilization V", - 899770: "Last Epoch", - 1142710: "Total War: WARHAMMER III", - 813780: "Age of Empires II: Definitive Edition", - 1158310: "Crusader Kings III", - 261550: "Mount & Blade II: Bannerlord", - 236850: "Europa Universalis IV", - 1454400: "Cookie Clicker", - 960090: "Bloons TD 6", - 306130: "The Elder Scrolls Online", - 284160: "BeamNG.drive", - 383180: "Dead Island Riptide Definitive Edition", - 1063730: "New World", - 427520: "Factorio", - 2072450: "Like a Dragon: Infinite Wealth", - 322330: "Don't Starve Together", - 739630: "Phasmophobia", - 990080: "Hogwarts Legacy", - 281990: "Stellaris", - 292030: "The Witcher 3: Wild Hunt", - 1238810: "Battlefield™ V", - 107410: "Arma 3", - 244210: "Assetto Corsa", - 513710: "SCUM", - 1151340: "Fallout 76", - 1687950: "Persona 5 Royal", - 1250410: "Microsoft Flight Simulator", - 393380: "Squad", - 594650: "Hunt: Showdown", - 646570: "Slay the Spire", - 1172620: "Sea of Thieves", - 270880: "American Truck Simulator", - 761890: "Albion Online", - 632360: "Risk of Rain 2", - 1517290: "Battlefield™ 2042", - 526870: "Satisfactory", - 1551360: "Forza Horizon 5", - 1665460: "eFootball™ 2024", - 440900: "Conan Exiles", - 548430: "Deep Rock Galactic", - 10: "Counter-Strike", - 2140330: "Madden NFL 24", - 1920960: "VPet", - 2344520: "Diablo® IV", - 1466860: "Age of Empires IV: Anniversary Edition", - 686810: "Hell Let Loose", - 255710: "Cities: Skylines", - 1476970: "Legends of Idleon MMO", - 374320: "DARK SOULS™ III", - 444090: "Paladins", - 365670: "Blender", - 1716740: "Starfield", - 976730: "Halo: The Master Chief Collection", - 1144200: "Ready or Not", - 2338770: "NBA 2K24", - 1364780: "Street Fighter™ 6", - 2141910: "Magic: The Gathering Arena", - 1118200: "People Playground", - 1997040: "MARVEL SNAP", - 1240440: "Halo Infinite", - 1677740: "Stumble Guys", - 1811260: "EA SPORTS™ FIFA 23", - 766570: "Russian Fishing 4", - 1451190: "Undisputed", - 1267910: "Melvor Idle", - 552990: "World of Warships", - 457140: "Oxygen Not Included", - 1782210: "Crab Game", - 529340: "Victoria 3", - 1145360: "Hades", - 1366540: "Dyson Sphere Program", - 311210: "Call of Duty: Black Ops III", - 1973530: "Limbus Company", - 1238840: "Battlefield 1 ™", - 1919590: "NBA 2K23", - 444200: "World of Tanks Blitz", - 1446780: "MONSTER HUNTER RISE", - 367520: "Hollow Knight", - 264710: "Subnautica", - 22380: "Fallout: New Vegas", - 1928420: "Farlight 84", - 233860: "Kenshi", - 714010: "Aimlabs", - 949230: "Cities: Skylines II", - 1326470: "Sons Of The Forest", - 214950: "Total War: ROME II - Emperor Edition", - 570940: "DARK SOULS™: REMASTERED", - 1426210: "It Takes Two", - 1286830: "STAR WARS™: The Old Republic™", - 1721470: "Poppy Playtime", - 2050650: "Resident Evil 4", - 945360: "Among Us", - 435150: "Divinity: Original Sin 2", - 2471100: "Unnamed Space Idle", - 1147690: "NGU IDLE", - 244850: "Space Engineers", - 1794680: "Vampire Survivors", - 1361210: "Warhammer 40,000: Darktide", - 627690: "Idle Champions of the Forgotten Realms", - 386180: "Crossout", - 1258080: "Shop Titans", - 601510: "Yu-Gi-Oh! Duel Links", - 275850: "No Man's Sky", - 1569040: "Football Manager 2022", - 12210: "Grand Theft Auto IV: The Complete Edition", - 985810: "GrandChase", - 648800: "Raft", - 286160: "Tabletop Simulator", - 208650: "Batman™: Arkham Knight", - 933110: "Age of Empires III: Definitive Edition", - 304390: "For Honor", - 779340: "Total War: THREE KINGDOMS", - 268500: "XCOM 2", - 4700: "Total War: MEDIEVAL II - Definitive Edition", - 1284210: "Guild Wars 2", - 1506830: "FIFA 22", - 1313140: "Cult of the Lamb", - 376210: "The Isle", - 814380: "Sekiro™: Shadows Die Twice", - 1973710: "ヘブンバ?ンズレッド", - 700330: "SCP: Secret Laboratory", - 459820: "Crush Crush", - 1062090: "Timberborn", - 1593500: "God of War", - 1888160: "ARMORED CORE™ VI FIRES OF RUBICON™", - 1260320: "Party Animals", - 671860: "BattleBit Remastered", - 1465360: "SnowRunner", - 977400: "Cell to Singularity - Evolution Never Ends", - 359320: "Elite Dangerous", - 1343400: "RuneScape", - 518790: "theHunter: Call of the Wild™", - 1942280: "Brotato", - 1336490: "Against the Storm", - 1235140: "Yakuza: Like a Dragon", - 1259420: "Days Gone", - 1328670: "Mass Effect™ Legendary Edition", - 1229490: "ULTRAKILL", - 242760: "The Forest", - 1128810: "RISK: Global Domination", - 239140: "Dying Light", - 1891700: "Tap Ninja", - 240: "Counter-Strike: Source", - 534380: "Dying Light 2", - 655500: "MX Bikes", - 1535560: "Farmer Against Potatoes Idle", - 2186680: "Warhammer 40,000: Rogue Trader", - 1568590: "Goose Goose Duck", - 3590: "Plants vs. Zombies: Game of the Year", - 363970: "Clicker Heroes", - 8500: "EVE Online", - 1151640: "Horizon Zero Dawn™ Complete Edition", - 1404210: "Red Dead Online", - 1462040: "FINAL FANTASY VII REMAKE INTERGRADE", - 1868140: "DAVE THE DIVER", - 10500: "Total War: EMPIRE - Definitive Edition", - 1129580: "Medieval Dynasty", - 958260: "DEAD OR ALIVE Xtreme Venus Vacation", - 703080: "Planet Zoo", - 2108330: "F1® 23", - 1407200: "World of Tanks", - 1797880: "Lost Light", - 397540: "Borderlands 3", - 638970: "Yakuza 0", - 48700: "Mount & Blade: Warband", - 34330: "Total War: SHOGUN 2", - 1604030: "V Rising", - 1167630: "Teardown", - 1468810: "鬼谷八荒 Tale of Immortal", - 231430: "Company of Heroes 2", - 594570: "Total War: WARHAMMER II", - 916440: "Anno 1800", - 380600: "Fishing Planet", - 1293830: "Forza Horizon 4", - 1158160: "Coral Island", - 1774580: "STAR WARS Jedi: Survivor™", - 219990: "Grim Dawn", - 2444170: "Backpack Battles Demo", - 203770: "Crusader Kings II", - 49520: "Borderlands 2", - 1850570: "DEATH STRANDING DIRECTOR'S CUT", - 2221490: "Tom Clancy's The Division 2", - 471710: "Rec Room", - 787860: "Farming Simulator 19", - 379430: "Kingdom Come: Deliverance", - 1659040: "HITMAN 3", - 812140: "Assassin's Creed Odyssey", - 1184370: "Pathfinder: Wrath of the Righteous - Enhanced Edition", - 635260: "CarX Drift Racing Online", - 262060: "Darkest Dungeon®", - 367500: "Dragon's Dogma: Dark Arisen", - 32470: "STAR WARS™ Empire at War: Gold Pack", - 335300: "DARK SOULS™ II: Scholar of the First Sin", - 287700: "METAL GEAR SOLID V: THE PHANTOM PAIN", - 315210: "Suicide Squad: Kill the Justice League", - 2281730: "Combat Master", - 1718570: "ASTLIBRA ~生きた?~ Revision", - 1817070: "Marvel’s Spider-Man Remastered", - 1066780: "Transport Fever 2", - 573090: "Stormworks: Build and Rescue", - 1113000: "Persona 4 Golden", - 1818450: "STALCRAFT", - 72850: "The Elder Scrolls V: Skyrim", - 1943950: "Escape the Backrooms", - 728880: "Overcooked! 2", - 1084600: "My Time at Sandrock", - 805550: "Assetto Corsa Competizione", - 2321470: "Deep Rock Galactic: Survivor", - 1222680: "Need for Speed™ Heat", - 1238860: "Battlefield 4™", - 1061100: "Hunter's Arena: Legends", - 844870: "KurtzPel", - 1544020: "The Callisto Protocol™", - 1805480: "Like a Dragon: Ishin!", - 1448440: "Wo Long: Fallen Dynasty", - 2503740: "Storm Striker", - 1147560: "Skul: The Hero Slayer", - 1237320: "Sonic Frontiers", - 1367300: "Blade Assault", - 1693980: "Dead Space", - 222420: "THE KING OF FIGHTERS '98 ULTIMATE MATCH FINAL EDITION", - 2500750: "Only Climb: Better Together", - 1498570: "THE KING OF FIGHTERS XV", - 2178420: "트리 오브 세이비어", - 1530300: "Auto Chess", - 1149460: "Icarus", - 1627720: "Lies of P", - 1304930: "The Outlast Trials", - 389730: "TEKKEN 7", - 1049590: "Eternal Return", -} From 0ed38788f0df29b63ffb192e74048caca5fedcf5 Mon Sep 17 00:00:00 2001 From: Lee Sarah Date: Wed, 21 Feb 2024 18:40:15 +0900 Subject: [PATCH 110/249] [feat]: using plugin as package --- plugins/__init__.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 plugins/__init__.py diff --git a/plugins/__init__.py b/plugins/__init__.py new file mode 100644 index 0000000..e69de29 From 63a771739293f98d1615a381fb24fdc94c2cc58e Mon Sep 17 00:00:00 2001 From: Lee Sarah Date: Wed, 21 Feb 2024 18:51:09 +0900 Subject: [PATCH 111/249] [feat] : add steps when plugin created --- .github/workflows/sync_dag_code.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/sync_dag_code.yml b/.github/workflows/sync_dag_code.yml index 0b54df3..bfd0708 100644 --- a/.github/workflows/sync_dag_code.yml +++ b/.github/workflows/sync_dag_code.yml @@ -16,6 +16,7 @@ jobs: outputs: dags-changed: ${{ steps.filter.outputs.dags }} docker-changed: ${{ steps.filter.outputs.docker }} + plugin-created: ${{ steps.filter.outputs.plugin}} steps: - uses: actions/checkout@v4 @@ -30,10 +31,12 @@ jobs: docker: - 'docker-compose.yaml' - 'Dockerfile' + plugin: + - 'plugins/***' build: needs: path-filter - if: needs.path-filter.outputs.dags-changed == 'true' && github.event_name == 'pull_request' + if: (needs.path-filter.outputs.dags-changed == 'true' || needs.path-filter.outputs.plugin-created == 'true') && github.event_name == 'pull_request' runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 @@ -80,7 +83,7 @@ jobs: run: | rsync -av --include='dags/***' --include='docker-compose.yaml' --include='Dockerfile' --exclude='*' ./ $DEPLOY_DIRECTORY - name: Restart Docker Services - if: ${{ needs.path-filter.outputs.docker-changed == 'true' }} + if: ${{ needs.path-filter.outputs.docker-changed == 'true' || needs.path-filter.outputs.plugin-created == 'true'}} env: DEPLOY_DIRECTORY: /home/zizzicteam2/${{ env.REPO_NAME }} run: | From 6d09ceedad26f35d51c06e03dc936f99e6f20690 Mon Sep 17 00:00:00 2001 From: Lee Sarah Date: Wed, 21 Feb 2024 18:52:28 +0900 Subject: [PATCH 112/249] [fix] : remove plugin CI check -update later --- .github/workflows/sync_dag_code.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/sync_dag_code.yml b/.github/workflows/sync_dag_code.yml index bfd0708..4029cbc 100644 --- a/.github/workflows/sync_dag_code.yml +++ b/.github/workflows/sync_dag_code.yml @@ -36,7 +36,7 @@ jobs: build: needs: path-filter - if: (needs.path-filter.outputs.dags-changed == 'true' || needs.path-filter.outputs.plugin-created == 'true') && github.event_name == 'pull_request' + if: needs.path-filter.outputs.dags-changed == 'true' && github.event_name == 'pull_request' runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 From d14c7b722f22c3249d5c57353f24cfd7769a9cc4 Mon Sep 17 00:00:00 2001 From: Lee Sarah Date: Wed, 21 Feb 2024 18:54:07 +0900 Subject: [PATCH 113/249] [fix] update slack plugin (minor change) --- plugins/slack.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/slack.py b/plugins/slack.py index fc39906..b544352 100644 --- a/plugins/slack.py +++ b/plugins/slack.py @@ -12,7 +12,7 @@ def on_failure_callback(context): """ text = str(context["task_instance"]) text += "```" + str(context.get("exception")) + "```" - send_message_to_a_slack_channel(text, ":scream:") + send_message_to_a_slack_channel(text) # def send_message_to_a_slack_channel(message, emoji, channel, access_token): From 3678d1242547a4f7ff6aaf3be295ea10650e118b Mon Sep 17 00:00:00 2001 From: Lee Sarah Date: Wed, 21 Feb 2024 18:59:15 +0900 Subject: [PATCH 114/249] [fix] : fix rsync code --- .github/workflows/sync_dag_code.yml | 2 +- plugins/slack.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/sync_dag_code.yml b/.github/workflows/sync_dag_code.yml index 4029cbc..af609b5 100644 --- a/.github/workflows/sync_dag_code.yml +++ b/.github/workflows/sync_dag_code.yml @@ -81,7 +81,7 @@ jobs: env: DEPLOY_DIRECTORY: /home/zizzicteam2/${{ env.REPO_NAME }} run: | - rsync -av --include='dags/***' --include='docker-compose.yaml' --include='Dockerfile' --exclude='*' ./ $DEPLOY_DIRECTORY + rsync -av --include='dags/***' --include='plugins/***' --include='docker-compose.yaml' --include='Dockerfile' --exclude='*' ./ $DEPLOY_DIRECTORY - name: Restart Docker Services if: ${{ needs.path-filter.outputs.docker-changed == 'true' || needs.path-filter.outputs.plugin-created == 'true'}} env: diff --git a/plugins/slack.py b/plugins/slack.py index b544352..fc39906 100644 --- a/plugins/slack.py +++ b/plugins/slack.py @@ -12,7 +12,7 @@ def on_failure_callback(context): """ text = str(context["task_instance"]) text += "```" + str(context.get("exception")) + "```" - send_message_to_a_slack_channel(text) + send_message_to_a_slack_channel(text, ":scream:") # def send_message_to_a_slack_channel(message, emoji, channel, access_token): From ae86d10b33b9d28b2de6494f24622aabd695936c Mon Sep 17 00:00:00 2001 From: lyh Date: Wed, 21 Feb 2024 19:13:53 +0900 Subject: [PATCH 115/249] [hotfix] tag and connections --- dags/dummy_dag_for_test.py | 1 + dags/game/game_ccu_to_s3.py | 2 +- dags/game/game_comment_to_s3.py | 2 +- dags/game/game_price_to_s3.py | 2 +- dags/game/game_rating_to_s3.py | 2 +- dags/glue/glue_airflow.py | 1 + 6 files changed, 6 insertions(+), 4 deletions(-) diff --git a/dags/dummy_dag_for_test.py b/dags/dummy_dag_for_test.py index 23497f7..6608608 100644 --- a/dags/dummy_dag_for_test.py +++ b/dags/dummy_dag_for_test.py @@ -9,6 +9,7 @@ dag_id="dag_cycle_test", start_date=airflow.utils.dates.days_ago(3), schedule_interval=None, + tags=["Streaming"], description="A simple test DAG using EmptyOperator", # DAG 설명 추가 ) diff --git a/dags/game/game_ccu_to_s3.py b/dags/game/game_ccu_to_s3.py index 8ff02a6..6bda3a7 100644 --- a/dags/game/game_ccu_to_s3.py +++ b/dags/game/game_ccu_to_s3.py @@ -12,7 +12,7 @@ def connect_to_mysql(): - db_hook = MySqlHook(mysql_conn_id="de-2-1-tmp-database") + db_hook = MySqlHook(mysql_conn_id="aws_rds_conn_id") conn = db_hook.get_conn() conn.autocommit = True diff --git a/dags/game/game_comment_to_s3.py b/dags/game/game_comment_to_s3.py index 4102c67..57c326b 100644 --- a/dags/game/game_comment_to_s3.py +++ b/dags/game/game_comment_to_s3.py @@ -12,7 +12,7 @@ def connect_to_mysql(): - db_hook = MySqlHook(mysql_conn_id="de-2-1-tmp-database") + db_hook = MySqlHook(mysql_conn_id="aws_rds_conn_id") conn = db_hook.get_conn() conn.autocommit = True diff --git a/dags/game/game_price_to_s3.py b/dags/game/game_price_to_s3.py index 643927d..9f5de0d 100644 --- a/dags/game/game_price_to_s3.py +++ b/dags/game/game_price_to_s3.py @@ -13,7 +13,7 @@ def connect_to_mysql(): - db_hook = MySqlHook(mysql_conn_id="de-2-1-tmp-database") + db_hook = MySqlHook(mysql_conn_id="aws_rds_conn_id") conn = db_hook.get_conn() conn.autocommit = True diff --git a/dags/game/game_rating_to_s3.py b/dags/game/game_rating_to_s3.py index 4211889..a80ab74 100644 --- a/dags/game/game_rating_to_s3.py +++ b/dags/game/game_rating_to_s3.py @@ -13,7 +13,7 @@ def connect_to_mysql(): - db_hook = MySqlHook(mysql_conn_id="de-2-1-tmp-database") + db_hook = MySqlHook(mysql_conn_id="aws_rds_conn_id") conn = db_hook.get_conn() conn.autocommit = True diff --git a/dags/glue/glue_airflow.py b/dags/glue/glue_airflow.py index a23b139..71f41ad 100644 --- a/dags/glue/glue_airflow.py +++ b/dags/glue/glue_airflow.py @@ -40,6 +40,7 @@ def upload_rendered_script_to_s3( "retry_delay": timedelta(minutes=5), }, schedule_interval="0 * * * *", + tags=["Glue"], catchup=False, ) as dag: From fd7cf6bf5d6692227e14517b827fc6e654e9c6e7 Mon Sep 17 00:00:00 2001 From: Lee Sarah Date: Wed, 21 Feb 2024 20:25:44 +0900 Subject: [PATCH 116/249] [feat]: add pythonpath env for plugin check --- .github/workflows/sync_dag_code.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/sync_dag_code.yml b/.github/workflows/sync_dag_code.yml index af609b5..4113564 100644 --- a/.github/workflows/sync_dag_code.yml +++ b/.github/workflows/sync_dag_code.yml @@ -61,7 +61,9 @@ jobs: - name: Install Pylint run: pip install pylint - name: Run Pylint - run: find dags/ tests/dags/ -name "*.py" | xargs pylint --output-format=colorized --disable=missing-docstring,invalid-name,W0104,C0301 + env: + PYTHONPATH: plugins + run: find dags/ tests/dags/ -name "*.py" | xargs pylint --output-format=colorized --disable=missing-docstring,invalid-name,W0104,C0301,C0411 - name: Test DAG integrity run: pytest tests/ From b4b3e9f84c4545de39de57630570e1408a3df1d1 Mon Sep 17 00:00:00 2001 From: Lee Sarah Date: Wed, 21 Feb 2024 20:27:32 +0900 Subject: [PATCH 117/249] [test] : code fix for test --- dags/game/game_price_to_s3.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dags/game/game_price_to_s3.py b/dags/game/game_price_to_s3.py index 9f5de0d..cca5418 100644 --- a/dags/game/game_price_to_s3.py +++ b/dags/game/game_price_to_s3.py @@ -59,7 +59,7 @@ def get_price(): if temp and temp[appid]["success"]: break - print(f"The response of {appid, name} failed! {i+1} times") + print(f"The response of {appid, name} failed! {i + 1} times") else: print(f"Failed to get price of {appid, name}!") From a719e639896f27f27400e22a6f822605508cc101 Mon Sep 17 00:00:00 2001 From: Lee Sarah Date: Wed, 21 Feb 2024 20:52:45 +0900 Subject: [PATCH 118/249] [feat] : add plugins to condition and checked folders --- .github/workflows/sync_dag_code.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/sync_dag_code.yml b/.github/workflows/sync_dag_code.yml index 4113564..28f7127 100644 --- a/.github/workflows/sync_dag_code.yml +++ b/.github/workflows/sync_dag_code.yml @@ -36,7 +36,7 @@ jobs: build: needs: path-filter - if: needs.path-filter.outputs.dags-changed == 'true' && github.event_name == 'pull_request' + if: (needs.path-filter.outputs.dags-changed == 'true'|| needs.path-filter.outputs.plugin-created == 'true') && github.event_name == 'pull_request' runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 @@ -63,7 +63,7 @@ jobs: - name: Run Pylint env: PYTHONPATH: plugins - run: find dags/ tests/dags/ -name "*.py" | xargs pylint --output-format=colorized --disable=missing-docstring,invalid-name,W0104,C0301,C0411 + run: find dags/ tests/dags/ plugins/ -name "*.py" | xargs pylint --output-format=colorized --disable=missing-docstring,invalid-name,W0104,C0301,C0411 - name: Test DAG integrity run: pytest tests/ From 148817c2e93662d0bb52c3da77263899188f3c5a Mon Sep 17 00:00:00 2001 From: Lee Sarah Date: Wed, 21 Feb 2024 20:53:06 +0900 Subject: [PATCH 119/249] [fix] : remove unused files --- dags/dummy_dag_for_test.py | 22 ---------------------- dags/game/.gitkeep | 0 dags/streaming/.gitkeep | 0 3 files changed, 22 deletions(-) delete mode 100644 dags/dummy_dag_for_test.py delete mode 100644 dags/game/.gitkeep delete mode 100644 dags/streaming/.gitkeep diff --git a/dags/dummy_dag_for_test.py b/dags/dummy_dag_for_test.py deleted file mode 100644 index 6608608..0000000 --- a/dags/dummy_dag_for_test.py +++ /dev/null @@ -1,22 +0,0 @@ -"""Example Airflow DAG for testing task dependencies using EmptyOperator.""" - -import airflow.utils.dates -from airflow import DAG -from airflow.operators.empty import EmptyOperator - -# DAG 정의 -dag = DAG( - dag_id="dag_cycle_test", - start_date=airflow.utils.dates.days_ago(3), - schedule_interval=None, - tags=["Streaming"], - description="A simple test DAG using EmptyOperator", # DAG 설명 추가 -) - -# 태스크 정의 -t1 = EmptyOperator(task_id="t1", dag=dag) -t2 = EmptyOperator(task_id="t2", dag=dag) -t3 = EmptyOperator(task_id="t3", dag=dag) - -# 태스크 종속성 설정 -t1 >> t2 >> t3 diff --git a/dags/game/.gitkeep b/dags/game/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/dags/streaming/.gitkeep b/dags/streaming/.gitkeep deleted file mode 100644 index e69de29..0000000 From 5ca5ed82141c22e14099bbc5133d6413b401398d Mon Sep 17 00:00:00 2001 From: Lee Sarah Date: Wed, 21 Feb 2024 20:53:44 +0900 Subject: [PATCH 120/249] [fix] : resolve 'not-an-iterable' error --- dags/streaming/dag_raw_data.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/dags/streaming/dag_raw_data.py b/dags/streaming/dag_raw_data.py index b2ce1ea..e21b0a0 100644 --- a/dags/streaming/dag_raw_data.py +++ b/dags/streaming/dag_raw_data.py @@ -1,5 +1,6 @@ from datetime import datetime, timedelta +from collections.abc import Iterable import json import os import logging @@ -25,7 +26,9 @@ def get_s_list(**kwargs): "SELECT STREAMER_ID, CHZ_ID, AFC_ID FROM STREAMER_INFO;" ) chzzk, afc = [], [] - if result: # result가 None이 아닌 경우에만 처리 + if result and isinstance( + result, Iterable + ): # result가 None이 아닌 경우에만 처리 for row in result: if row[1]: chzzk.append((row[0], row[1])) From d3057cfd9c678c2e65cfd58c17f8b7bc24c92002 Mon Sep 17 00:00:00 2001 From: Lee Sarah Date: Wed, 21 Feb 2024 20:54:04 +0900 Subject: [PATCH 121/249] [fix] : import from plugin --- dags/game/game_comment_to_s3.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dags/game/game_comment_to_s3.py b/dags/game/game_comment_to_s3.py index 57c326b..f3ee255 100644 --- a/dags/game/game_comment_to_s3.py +++ b/dags/game/game_comment_to_s3.py @@ -5,7 +5,7 @@ from airflow.models import Variable from datetime import datetime, timedelta -import slack +from plugins import slack import requests import json From d600e29b1dd1f956680eca3595cd9ec36c5ef857 Mon Sep 17 00:00:00 2001 From: poriz Date: Wed, 21 Feb 2024 20:58:44 +0900 Subject: [PATCH 122/249] [hotfix] tags & retries change - dag_raw_data.py --- dags/streaming/dag_raw_data.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dags/streaming/dag_raw_data.py b/dags/streaming/dag_raw_data.py index b2ce1ea..33a722e 100644 --- a/dags/streaming/dag_raw_data.py +++ b/dags/streaming/dag_raw_data.py @@ -200,10 +200,11 @@ def delete_files(**kwargs): "owner": "airflow", "depends_on_past": False, "start_date": datetime(2024, 1, 17), - "retries": 0, + "retries": 1, "retry_delay": timedelta(minutes=5), }, schedule_interval="*/5 * * * *", + tags=["Streaming"], catchup=False, ) as dag: From fc1e122cfcf4e9024ae52b6f7b0a453109af4ccb Mon Sep 17 00:00:00 2001 From: Lee Sarah Date: Wed, 21 Feb 2024 21:03:23 +0900 Subject: [PATCH 123/249] [fix] : resolve 'not-an-iterable' error --- dags/streaming/dag_raw_data.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/dags/streaming/dag_raw_data.py b/dags/streaming/dag_raw_data.py index e21b0a0..fd1b004 100644 --- a/dags/streaming/dag_raw_data.py +++ b/dags/streaming/dag_raw_data.py @@ -1,6 +1,5 @@ from datetime import datetime, timedelta -from collections.abc import Iterable import json import os import logging @@ -22,13 +21,15 @@ def get_s_list(**kwargs): # RDS 연결 설정 try: mysql_hook = MySqlHook(mysql_conn_id="aws_rds_conn_id") - result = mysql_hook.get_records( - "SELECT STREAMER_ID, CHZ_ID, AFC_ID FROM STREAMER_INFO;" + result = ( + mysql_hook.get_records( + "SELECT STREAMER_ID, CHZ_ID, AFC_ID FROM STREAMER_INFO;" + ) + or [] ) + # None 인경우 []로 처리 chzzk, afc = [], [] - if result and isinstance( - result, Iterable - ): # result가 None이 아닌 경우에만 처리 + if result: for row in result: if row[1]: chzzk.append((row[0], row[1])) From 0e77bae9570e5ecf426cf531977080eba61d9f72 Mon Sep 17 00:00:00 2001 From: Lee Sarah Date: Wed, 21 Feb 2024 21:16:06 +0900 Subject: [PATCH 124/249] [fix] : add -r option for xargs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --no-run-if-empty (or -r) - xargs에게 입력이 비어 있을 경우에는 명령어를 실행하지 않도록 지시 - find 명령어로 아무런 파일도 찾지 못했을 때 pylint가 실행되지 않아 불필요한 오류를 방지할 수 있음 --- .github/workflows/sync_dag_code.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/sync_dag_code.yml b/.github/workflows/sync_dag_code.yml index 28f7127..b0cfbf9 100644 --- a/.github/workflows/sync_dag_code.yml +++ b/.github/workflows/sync_dag_code.yml @@ -63,7 +63,7 @@ jobs: - name: Run Pylint env: PYTHONPATH: plugins - run: find dags/ tests/dags/ plugins/ -name "*.py" | xargs pylint --output-format=colorized --disable=missing-docstring,invalid-name,W0104,C0301,C0411 + run: find dags/ tests/dags/ plugins/ -name "*.py" | xargs -r pylint --output-format=colorized --disable=missing-docstring,invalid-name,W0104,C0301,C0411 - name: Test DAG integrity run: pytest tests/ From 8a57b462f47c37e909332b923a45dd10e989a842 Mon Sep 17 00:00:00 2001 From: Lee Sarah Date: Wed, 21 Feb 2024 21:22:49 +0900 Subject: [PATCH 125/249] [fix] : code not using xargs --- .github/workflows/sync_dag_code.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/sync_dag_code.yml b/.github/workflows/sync_dag_code.yml index b0cfbf9..c706668 100644 --- a/.github/workflows/sync_dag_code.yml +++ b/.github/workflows/sync_dag_code.yml @@ -63,8 +63,7 @@ jobs: - name: Run Pylint env: PYTHONPATH: plugins - run: find dags/ tests/dags/ plugins/ -name "*.py" | xargs -r pylint --output-format=colorized --disable=missing-docstring,invalid-name,W0104,C0301,C0411 - + run: pylint --output-format=colorized --disable=missing-docstring,invalid-name,W0104,C0301,C0411 $(find dags/ tests/dags/ plugins/ -name "*.py") - name: Test DAG integrity run: pytest tests/ From 843b7ce571facf1449b3a26e6f41d98b81110ac6 Mon Sep 17 00:00:00 2001 From: Lee Sarah Date: Wed, 21 Feb 2024 21:45:01 +0900 Subject: [PATCH 126/249] [hot fix] : module import error fix --- dags/game/game_comment_to_s3.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dags/game/game_comment_to_s3.py b/dags/game/game_comment_to_s3.py index f3ee255..57c326b 100644 --- a/dags/game/game_comment_to_s3.py +++ b/dags/game/game_comment_to_s3.py @@ -5,7 +5,7 @@ from airflow.models import Variable from datetime import datetime, timedelta -from plugins import slack +import slack import requests import json From 0d64aa2773173f0b561ff22cbe7eefc86c3ed4ef Mon Sep 17 00:00:00 2001 From: lyh Date: Thu, 22 Feb 2024 11:26:49 +0900 Subject: [PATCH 127/249] [feature] test Glue files --- dags/glue/glue_game.py | 78 +++++++++++++++++++ .../glue&athena/glue_game_price_template.py | 37 +++++++++ 2 files changed, 115 insertions(+) create mode 100644 dags/glue/glue_game.py create mode 100644 dataCollector/glue&athena/glue_game_price_template.py diff --git a/dags/glue/glue_game.py b/dags/glue/glue_game.py new file mode 100644 index 0000000..a23b139 --- /dev/null +++ b/dags/glue/glue_game.py @@ -0,0 +1,78 @@ +from datetime import datetime, timedelta + +from airflow import DAG +from airflow.operators.python import PythonOperator +from airflow.providers.amazon.aws.operators.glue import GlueJobOperator +from airflow.providers.amazon.aws.hooks.s3 import S3Hook + +from jinja2 import Template + + +def upload_rendered_script_to_s3( + bucket_name, template_s3_key, rendered_s3_key, aws_conn_id, **kwargs +): + # S3Hook 인스턴스 생성 + s3_hook = S3Hook(aws_conn_id=aws_conn_id) + + # S3에서 Jinja 템플릿 파일 읽기 + template_str = s3_hook.read_key(template_s3_key, bucket_name) + + # Jinja 템플릿 렌더링 + template = Template(template_str) + rendered_script = template.render(**kwargs) + + # 렌더링된 스크립트를 S3에 업로드 + s3_hook.load_string( + string_data=rendered_script, + bucket_name=bucket_name, + key=rendered_s3_key, + replace=True, + ) + + +with DAG( + "glue_test_dag", + default_args={ + "owner": "airflow", + "depends_on_past": False, + "start_date": datetime(2024, 1, 17), + "retries": 0, + "retry_delay": timedelta(minutes=5), + }, + schedule_interval="0 * * * *", + catchup=False, +) as dag: + + bucket_name = "de-2-1-bucket" + local_path = "./glue_script.py" + current_time = "{{ data_interval_end.strftime('%Y-%m-%dT%H:%M:%S+00:00') }}" + year = "{{ data_interval_end.year }}" + month = "{{ data_interval_end.month }}" + day = "{{ data_interval_end.day }}" + hour = "{{ data_interval_end.hour }}" + + upload_script = PythonOperator( + task_id="upload_script_to_s3", + python_callable=upload_rendered_script_to_s3, + op_kwargs={ + "bucket_name": bucket_name, + "aws_conn_id": "aws_conn_id", + "template_s3_key": "source/script/glue_template.py", + "rendered_s3_key": "source/script/glue_script.py", + # into template + "input_path": f"s3://de-2-1-bucket/source/json/table_name=raw_live_viewer/year={year}/month={month}/day={day}/hour={hour}/", + "output_path": f"s3://de-2-1-bucket/source/parquet/table_name=raw_live_viewer/year={year}/month={month}/day={day}/hour={hour}/", + }, + ) + + run_glue_job = GlueJobOperator( + task_id="run_glue_job", + job_name="DE-2-1-testjob", + script_location="s3://de-2-1-bucket/source/script/glue_script.py", + aws_conn_id="aws_conn_id", + region_name="ap-northeast-2", + iam_role_name="AWSGlueServiceRole-crawler", + dag=dag, + ) + +upload_script >> run_glue_job diff --git a/dataCollector/glue&athena/glue_game_price_template.py b/dataCollector/glue&athena/glue_game_price_template.py new file mode 100644 index 0000000..0990e36 --- /dev/null +++ b/dataCollector/glue&athena/glue_game_price_template.py @@ -0,0 +1,37 @@ +import sys +from awsglue.transforms import * +from awsglue.utils import getResolvedOptions +from pyspark.context import SparkContext +from awsglue.context import GlueContext +from awsglue.job import Job + +# SparkContext와 GlueContext 초기화 +sc = SparkContext() +glueContext = GlueContext(sc) +spark = glueContext.spark_session + +# Job 초기화 (Job Bookmark 활성화 포함) +job = Job(glueContext) +args = getResolvedOptions(sys.argv, ["JOB_NAME"]) +job.init(args["JOB_NAME"], args) + +# S3에서 데이터를 읽어오는 부분 +datasource = glueContext.create_dynamic_frame.from_options( + "s3", + {"paths": ["{{ input_path }}"], "recurse": True}, + format="json", + transformation_ctx="datasource", +) + +# Parquet으로 변환하여 S3에 저장 +glueContext.write_dynamic_frame.from_options( + frame=datasource, + connection_type="s3", + connection_options={"path": "{{ output_path }}"}, + format="parquet", + transformation_ctx="datasource", +) + + +# Job Bookmark의 상태를 최종적으로 커밋 +job.commit() From 2d4280c3ad4f9f183d5f3e6ed1edb2d4eff85526 Mon Sep 17 00:00:00 2001 From: poriz Date: Thu, 22 Feb 2024 12:02:26 +0900 Subject: [PATCH 128/249] [feat] live_viewer glue code v1.0 --- dags/glue/live_viewer.py | 78 +++++++++++++++++++ .../glue&athena/live_viewer_template.py | 70 +++++++++++++++++ 2 files changed, 148 insertions(+) create mode 100644 dags/glue/live_viewer.py create mode 100644 dataCollector/glue&athena/live_viewer_template.py diff --git a/dags/glue/live_viewer.py b/dags/glue/live_viewer.py new file mode 100644 index 0000000..14d920a --- /dev/null +++ b/dags/glue/live_viewer.py @@ -0,0 +1,78 @@ +from datetime import datetime, timedelta + +from airflow import DAG +from airflow.operators.python import PythonOperator +from airflow.providers.amazon.aws.operators.glue import GlueJobOperator +from airflow.providers.amazon.aws.hooks.s3 import S3Hook + +from jinja2 import Template + + +def upload_rendered_script_to_s3( + bucket_name, template_s3_key, rendered_s3_key, aws_conn_id, **kwargs +): + # S3Hook 인스턴스 생성 + s3_hook = S3Hook(aws_conn_id=aws_conn_id) + + # S3에서 Jinja 템플릿 파일 읽기 + template_str = s3_hook.read_key(template_s3_key, bucket_name) + + # Jinja 템플릿 렌더링 + template = Template(template_str) + rendered_script = template.render(**kwargs) + + # 렌더링된 스크립트를 S3에 업로드 + s3_hook.load_string( + string_data=rendered_script, + bucket_name=bucket_name, + key=rendered_s3_key, + replace=True, + ) + + +with DAG( + "glue_test_dag", + default_args={ + "owner": "airflow", + "depends_on_past": False, + "start_date": datetime(2024, 1, 17), + "retries": 0, + "retry_delay": timedelta(minutes=5), + }, + schedule_interval="0 * * * *", + catchup=False, +) as dag: + + bucket_name = "de-2-1-bucket" + local_path = "./glue_script.py" + current_time = "{{ data_interval_end.strftime('%Y-%m-%dT%H:%M:%S+00:00') }}" + year = "{{ data_interval_end.year }}" + month = "{{ data_interval_end.month }}" + day = "{{ data_interval_end.day }}" + hour = "{{ data_interval_end.hour }}" + + upload_script = PythonOperator( + task_id="upload_script_to_s3", + python_callable=upload_rendered_script_to_s3, + op_kwargs={ + "bucket_name": bucket_name, + "aws_conn_id": "aws_conn_id", + "template_s3_key": "source/script/live_viewer_template.py", + "rendered_s3_key": "source/script/live_viewer_script.py", + # into template + "input_path": f"s3://de-2-1-bucket/source/json/table_name=raw_live_viewer/year={year}/month={month}/day={day}/hour={hour}/", + "output_path": f"s3://de-2-1-bucket/source/parquet/table_name=raw_live_viewer/year={year}/month={month}/day={day}/hour={hour}/", + }, + ) + + run_glue_job = GlueJobOperator( + task_id="run_glue_job", + job_name="DE-2-1-testjob", + script_location="s3://de-2-1-bucket/source/script/live_viewer_script.py", + aws_conn_id="aws_conn_id", + region_name="ap-northeast-2", + iam_role_name="AWSGlueServiceRole-crawler", + dag=dag, + ) + +upload_script >> run_glue_job diff --git a/dataCollector/glue&athena/live_viewer_template.py b/dataCollector/glue&athena/live_viewer_template.py new file mode 100644 index 0000000..08e9adc --- /dev/null +++ b/dataCollector/glue&athena/live_viewer_template.py @@ -0,0 +1,70 @@ +## live_viewer glue script template + +import sys +from awsglue.transforms import * +from awsglue.utils import getResolvedOptions +from pyspark.context import SparkContext +from awsglue.context import GlueContext +from awsglue.job import Job + +# SparkContext와 GlueContext 초기화 +sc = SparkContext() +glueContext = GlueContext(sc) +spark = glueContext.spark_session + +# Job 초기화 (Job Bookmark 활성화 포함) +job = Job(glueContext) +args = getResolvedOptions(sys.argv, ["JOB_NAME"]) +job.init(args["JOB_NAME"], args) + +# S3에서 데이터를 읽어오는 부분 +datasource = glueContext.create_dynamic_frame.from_options( + "s3", + {"paths": ["{{ input_path }}"], "recurse": True}, + format="json", + transformation_ctx="datasource", +) +# 데이터 가공 +datasource_df = datasource.toDF() + +chzzk_source = datasource_df.select("stream_data.chzzk").select(explode("chzzk")) +afreeca_source = datasource_df.select("stream_data.afreeca").select(explode("afreeca")) + +# chzzk_source.printSchema() +chzzk_df = chzzk_source.select( + col("col.streamer_id").alias("STREAMER_ID"), + col("col.chzzk_s_id").alias("CHZ_STEAMER_ID"), + col("col.content.liveTitle").alias("CHZ_BROADCAST_TITLE"), + col("col.content.liveCategoryValue").alias("CHZ_GAME_CODE"), + col("col.content.concurrentUserCount").alias("CHZ_VIEWER_NUM"), +) +# chzzk_df.show() + +# afreeca_source.printSchema() +afreeca_df = afreeca_source.select( + col("col.streamer_id").alias("STREAMER_ID"), + col("col.afc_s_id").alias("AFC_STEAMER_ID"), + col("col.live_status.BNO").alias("BROADCAST_ID"), + col("col.live_status.TITLE").alias("AFC_BROADCAST_TITLE"), + col("col.live_status.CATE").alias("AFC_GAME_CODE"), + col("col.broad_info.broad.current_sum_viewer").alias("AFC_VIEWER_NUM"), +) +# afreeca_df.show(truncate=False) + +result_df = chzzk_df.join(afreeca_df, "STREAMER_ID", "outer") + +dynamicframe = DynamicFrame.fromDF(result_df, glueContext, "dynamicframe") + + +# Parquet으로 변환하여 S3에 저장 +glueContext.write_dynamic_frame.from_options( + frame=datasource, + connection_type="s3", + connection_options={"path": "{{ output_path }}"}, + format="parquet", + transformation_ctx="datasource", +) + + +# Job Bookmark의 상태를 최종적으로 커밋 +job.commit() From 81f1b3853b3daad2864d6b1538bf4cba2a7b0a74 Mon Sep 17 00:00:00 2001 From: poriz Date: Thu, 22 Feb 2024 12:27:26 +0900 Subject: [PATCH 129/249] [feat] live_viewer glue code v1.1 --- dataCollector/glue&athena/live_viewer_template.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dataCollector/glue&athena/live_viewer_template.py b/dataCollector/glue&athena/live_viewer_template.py index 08e9adc..1357c94 100644 --- a/dataCollector/glue&athena/live_viewer_template.py +++ b/dataCollector/glue&athena/live_viewer_template.py @@ -6,6 +6,8 @@ from pyspark.context import SparkContext from awsglue.context import GlueContext from awsglue.job import Job +from pyspark.sql.functions import * +from awsglue.dynamicframe import DynamicFrame # SparkContext와 GlueContext 초기화 sc = SparkContext() From 85251e079a32bf9b6c39a0c997f2b4979ffbdcc4 Mon Sep 17 00:00:00 2001 From: poriz Date: Thu, 22 Feb 2024 14:33:26 +0900 Subject: [PATCH 130/249] [feat] live_viewer glue code v1.2, dag_name, tags change --- dags/glue/live_viewer.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/dags/glue/live_viewer.py b/dags/glue/live_viewer.py index 14d920a..b610fbb 100644 --- a/dags/glue/live_viewer.py +++ b/dags/glue/live_viewer.py @@ -31,7 +31,7 @@ def upload_rendered_script_to_s3( with DAG( - "glue_test_dag", + "glue_live_viewer", default_args={ "owner": "airflow", "depends_on_past": False, @@ -39,6 +39,7 @@ def upload_rendered_script_to_s3( "retries": 0, "retry_delay": timedelta(minutes=5), }, + tags=["glue","streaming"], schedule_interval="0 * * * *", catchup=False, ) as dag: @@ -67,7 +68,7 @@ def upload_rendered_script_to_s3( run_glue_job = GlueJobOperator( task_id="run_glue_job", - job_name="DE-2-1-testjob", + job_name="DE-2-1-testjob2", # when launch, plz clean&change glue jobs script_location="s3://de-2-1-bucket/source/script/live_viewer_script.py", aws_conn_id="aws_conn_id", region_name="ap-northeast-2", From 6ade33a1cb21942459f9487d5e1f651d44b965f1 Mon Sep 17 00:00:00 2001 From: poriz Date: Thu, 22 Feb 2024 14:43:20 +0900 Subject: [PATCH 131/249] [hotfix] change_timezone --- dags/game/game_ccu_to_s3.py | 10 +++++----- dags/game/game_comment_to_s3.py | 10 +++++----- dags/game/game_price_to_s3.py | 9 +++++---- dags/game/game_rating_to_s3.py | 9 +++++---- dags/streaming/dag_raw_data.py | 10 +++++----- 5 files changed, 25 insertions(+), 23 deletions(-) diff --git a/dags/game/game_ccu_to_s3.py b/dags/game/game_ccu_to_s3.py index 6bda3a7..e7802e9 100644 --- a/dags/game/game_ccu_to_s3.py +++ b/dags/game/game_ccu_to_s3.py @@ -88,11 +88,11 @@ def save_to_json(data): bucket_name = "de-2-1-bucket" - current_time = "{{ data_interval_end }}" - year = "{{ data_interval_end.year }}" - month = "{{ data_interval_end.month }}" - day = "{{ data_interval_end.day }}" - hour = "{{ data_interval_end.hour }}" + current_time = "{{ data_interval_end.in_timezone('Asia/Seoul') }}" + year = "{{ data_interval_end.in_timezone('Asia/Seoul').year }}" + month = "{{ data_interval_end.in_timezone('Asia/Seoul').month }}" + day = "{{ data_interval_end.in_timezone('Asia/Seoul').day }}" + hour = "{{ data_interval_end.in_timezone('Asia/Seoul').hour }}" table_name = "raw_game_ccu" task_load_raw_data = S3CreateObjectOperator( diff --git a/dags/game/game_comment_to_s3.py b/dags/game/game_comment_to_s3.py index 57c326b..864bd68 100644 --- a/dags/game/game_comment_to_s3.py +++ b/dags/game/game_comment_to_s3.py @@ -96,11 +96,11 @@ def save_to_json(data): bucket_name = "de-2-1-bucket" - current_time = "{{ data_interval_end }}" - year = "{{ data_interval_end.year }}" - month = "{{ data_interval_end.month }}" - day = "{{ data_interval_end.day }}" - hour = "{{ data_interval_end.hour }}" + current_time = "{{ data_interval_end.in_timezone('Asia/Seoul') }}" + year = "{{ data_interval_end.in_timezone('Asia/Seoul').year }}" + month = "{{ data_interval_end.in_timezone('Asia/Seoul').month }}" + day = "{{ data_interval_end.in_timezone('Asia/Seoul').day }}" + hour = "{{ data_interval_end.in_timezone('Asia/Seoul').hour }}" table_name = "raw_game_review" task_load_raw_data = S3CreateObjectOperator( diff --git a/dags/game/game_price_to_s3.py b/dags/game/game_price_to_s3.py index cca5418..29f0b2f 100644 --- a/dags/game/game_price_to_s3.py +++ b/dags/game/game_price_to_s3.py @@ -108,10 +108,11 @@ def save_to_json(data): bucket_name = "de-2-1-bucket" - current_time = "{{ data_interval_end }}" - year = "{{ data_interval_end.year }}" - month = "{{ data_interval_end.month }}" - day = "{{ data_interval_end.day }}" + current_time = "{{ data_interval_end.in_timezone('Asia/Seoul') }}" + year = "{{ data_interval_end.in_timezone('Asia/Seoul').year }}" + month = "{{ data_interval_end.in_timezone('Asia/Seoul').month }}" + day = "{{ data_interval_end.in_timezone('Asia/Seoul').day }}" + hour = "{{ data_interval_end.in_timezone('Asia/Seoul').hour }}" table_name = "raw_game_price" task_load_raw_data = S3CreateObjectOperator( diff --git a/dags/game/game_rating_to_s3.py b/dags/game/game_rating_to_s3.py index a80ab74..1e727de 100644 --- a/dags/game/game_rating_to_s3.py +++ b/dags/game/game_rating_to_s3.py @@ -128,10 +128,11 @@ def save_to_json(data): bucket_name = "de-2-1-bucket" - current_time = "{{ data_interval_end }}" - year = "{{ data_interval_end.year }}" - month = "{{ data_interval_end.month }}" - day = "{{ data_interval_end.day }}" + current_time = "{{ data_interval_end.in_timezone('Asia/Seoul') }}" + year = "{{ data_interval_end.in_timezone('Asia/Seoul').year }}" + month = "{{ data_interval_end.in_timezone('Asia/Seoul').month }}" + day = "{{ data_interval_end.in_timezone('Asia/Seoul').day }}" + hour = "{{ data_interval_end.in_timezone('Asia/Seoul').hour }}" table_name = "raw_game_rating" task_load_raw_data = S3CreateObjectOperator( diff --git a/dags/streaming/dag_raw_data.py b/dags/streaming/dag_raw_data.py index 514b5a7..59e5a03 100644 --- a/dags/streaming/dag_raw_data.py +++ b/dags/streaming/dag_raw_data.py @@ -213,11 +213,11 @@ def delete_files(**kwargs): ) as dag: # load - current_time = "{{ data_interval_end}}" - year = "{{ data_interval_end.year }}" - month = "{{ data_interval_end.month }}" - day = "{{ data_interval_end.day }}" - hour = "{{ data_interval_end.hour }}" + current_time = "{{ data_interval_end.in_timezone('Asia/Seoul') }}" + year = "{{ data_interval_end.in_timezone('Asia/Seoul').year }}" + month = "{{ data_interval_end.in_timezone('Asia/Seoul').month }}" + day = "{{ data_interval_end.in_timezone('Asia/Seoul').day }}" + hour = "{{ data_interval_end.in_timezone('Asia/Seoul').hour }}" table_name = "raw_live_viewer" local_name = "local_raw_live" local_path = f"./{local_name}_{current_time}.json" From 02407d88bfd0e5024bbf9467f7de9f41ad95435d Mon Sep 17 00:00:00 2001 From: lyh Date: Thu, 22 Feb 2024 15:00:25 +0900 Subject: [PATCH 132/249] [test] Error test --- ...lue_game.py => glue_airflow_game_price.py} | 20 ++++++------ .../glue&athena/glue_game_price_template.py | 31 ++++++++++++++++--- 2 files changed, 38 insertions(+), 13 deletions(-) rename dags/glue/{glue_game.py => glue_airflow_game_price.py} (77%) diff --git a/dags/glue/glue_game.py b/dags/glue/glue_airflow_game_price.py similarity index 77% rename from dags/glue/glue_game.py rename to dags/glue/glue_airflow_game_price.py index a23b139..f6c9a43 100644 --- a/dags/glue/glue_game.py +++ b/dags/glue/glue_airflow_game_price.py @@ -31,15 +31,16 @@ def upload_rendered_script_to_s3( with DAG( - "glue_test_dag", + "glue_airflow_game_price", default_args={ "owner": "airflow", "depends_on_past": False, - "start_date": datetime(2024, 1, 17), + "start_date": datetime(2024, 2, 22), "retries": 0, "retry_delay": timedelta(minutes=5), }, schedule_interval="0 * * * *", + tags=["Steam_Glue", "Game_Price"], catchup=False, ) as dag: @@ -49,7 +50,7 @@ def upload_rendered_script_to_s3( year = "{{ data_interval_end.year }}" month = "{{ data_interval_end.month }}" day = "{{ data_interval_end.day }}" - hour = "{{ data_interval_end.hour }}" + # hour = "{{ data_interval_end.hour }}" upload_script = PythonOperator( task_id="upload_script_to_s3", @@ -57,18 +58,19 @@ def upload_rendered_script_to_s3( op_kwargs={ "bucket_name": bucket_name, "aws_conn_id": "aws_conn_id", - "template_s3_key": "source/script/glue_template.py", - "rendered_s3_key": "source/script/glue_script.py", + "template_s3_key": "source/script/glue_game_price_template.py", + "rendered_s3_key": "source/script/glue_game_price_script.py", # into template - "input_path": f"s3://de-2-1-bucket/source/json/table_name=raw_live_viewer/year={year}/month={month}/day={day}/hour={hour}/", - "output_path": f"s3://de-2-1-bucket/source/parquet/table_name=raw_live_viewer/year={year}/month={month}/day={day}/hour={hour}/", + "input_path": f"s3://de-2-1-bucket/source/json/table_name=raw_game_price/year={year}/month={month}/day={day}/", + "output_path": f"s3://de-2-1-bucket/source/parquet/table_name=raw_game_price/year={year}/month={month}/day={day}/", + "collect_date": f"{year}-{month}-{day}", }, ) run_glue_job = GlueJobOperator( task_id="run_glue_job", - job_name="DE-2-1-testjob", - script_location="s3://de-2-1-bucket/source/script/glue_script.py", + job_name="DE-2-1-glue_game_price_job", + script_location="s3://de-2-1-bucket/source/script/glue_game_script.py", aws_conn_id="aws_conn_id", region_name="ap-northeast-2", iam_role_name="AWSGlueServiceRole-crawler", diff --git a/dataCollector/glue&athena/glue_game_price_template.py b/dataCollector/glue&athena/glue_game_price_template.py index 0990e36..7ad395b 100644 --- a/dataCollector/glue&athena/glue_game_price_template.py +++ b/dataCollector/glue&athena/glue_game_price_template.py @@ -1,9 +1,18 @@ import sys -from awsglue.transforms import * -from awsglue.utils import getResolvedOptions + from pyspark.context import SparkContext +from pyspark.sql.functions import col, lit, when, udf +from pyspark.sql.types import IntegerType, StringType + from awsglue.context import GlueContext +from awsglue.dynamicframe import DynamicFrame from awsglue.job import Job +from awsglue.utils import getResolvedOptions + + +def remove_krw(price): + return price.replace('₩ ', '') + # SparkContext와 GlueContext 초기화 sc = SparkContext() @@ -23,13 +32,27 @@ transformation_ctx="datasource", ) +# 전처리 하기 +game_price_datasource = datasource.toDF() + +remove_krw_udf = udf(remove_krw, StringType()) + +df = game_price_datasource.select( + col("data.steam_appid").alias("GAME_ID"), + lit("{{ collect_date }}").alias("COLLECT_DATE"), + remove_krw_udf(col("data.price_overview.final_formatted")).cast(IntegerType()).alias("CURRENT_PRICE"), + when(col("data.price_overview.discount_percent") == 0, 'F').otherwise('T').alias("IS_DISCOUNT") +) + +dynamic_frame = DynamicFrame.fromDF(df, glueContext, "dynamic_frame") + # Parquet으로 변환하여 S3에 저장 glueContext.write_dynamic_frame.from_options( - frame=datasource, + frame=dynamic_frame, connection_type="s3", connection_options={"path": "{{ output_path }}"}, format="parquet", - transformation_ctx="datasource", + transformation_ctx="dynamic_frame", ) From a32fa5231b62f71c22db2467d18f00f57ca917a4 Mon Sep 17 00:00:00 2001 From: Lee Sarah Date: Thu, 22 Feb 2024 15:50:14 +0900 Subject: [PATCH 133/249] [feat] : ignore all warning code of pylint --- .github/workflows/sync_dag_code.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/sync_dag_code.yml b/.github/workflows/sync_dag_code.yml index c706668..bde2697 100644 --- a/.github/workflows/sync_dag_code.yml +++ b/.github/workflows/sync_dag_code.yml @@ -63,7 +63,7 @@ jobs: - name: Run Pylint env: PYTHONPATH: plugins - run: pylint --output-format=colorized --disable=missing-docstring,invalid-name,W0104,C0301,C0411 $(find dags/ tests/dags/ plugins/ -name "*.py") + run: pylint --output-format=colorized --disable=missing-docstring,invalid-name,W,C0301,C0411 $(find dags/ tests/dags/ plugins/ -name "*.py") - name: Test DAG integrity run: pytest tests/ From 3405dcf0d704a1b3268be04570a61830e64e5eb2 Mon Sep 17 00:00:00 2001 From: poriz Date: Thu, 22 Feb 2024 16:27:32 +0900 Subject: [PATCH 134/249] [feat] live_viewer glue code v1.2, timechange --- dags/glue/glue_airflow.py | 12 ++++++------ dags/glue/live_viewer.py | 11 +++++------ 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/dags/glue/glue_airflow.py b/dags/glue/glue_airflow.py index a23b139..fb0c848 100644 --- a/dags/glue/glue_airflow.py +++ b/dags/glue/glue_airflow.py @@ -40,16 +40,16 @@ def upload_rendered_script_to_s3( "retry_delay": timedelta(minutes=5), }, schedule_interval="0 * * * *", + tags=["glue","streaming"], catchup=False, ) as dag: bucket_name = "de-2-1-bucket" - local_path = "./glue_script.py" - current_time = "{{ data_interval_end.strftime('%Y-%m-%dT%H:%M:%S+00:00') }}" - year = "{{ data_interval_end.year }}" - month = "{{ data_interval_end.month }}" - day = "{{ data_interval_end.day }}" - hour = "{{ data_interval_end.hour }}" + current_time = "{{ data_interval_end.in_timezone('Asia/Seoul').strftime('%Y-%m-%dT%H:%M:%S+00:00') }}" + year = "{{ data_interval_end.year.in_timezone('Asia/Seoul') }}" + month = "{{ data_interval_end.month.in_timezone('Asia/Seoul') }}" + day = "{{ data_interval_end.day.in_timezone('Asia/Seoul') }}" + hour = "{{ data_interval_end.hour.in_timezone('Asia/Seoul') }}" upload_script = PythonOperator( task_id="upload_script_to_s3", diff --git a/dags/glue/live_viewer.py b/dags/glue/live_viewer.py index b610fbb..9b5a97e 100644 --- a/dags/glue/live_viewer.py +++ b/dags/glue/live_viewer.py @@ -45,12 +45,11 @@ def upload_rendered_script_to_s3( ) as dag: bucket_name = "de-2-1-bucket" - local_path = "./glue_script.py" - current_time = "{{ data_interval_end.strftime('%Y-%m-%dT%H:%M:%S+00:00') }}" - year = "{{ data_interval_end.year }}" - month = "{{ data_interval_end.month }}" - day = "{{ data_interval_end.day }}" - hour = "{{ data_interval_end.hour }}" + current_time = "{{ data_interval_end.in_timezone('Asia/Seoul').strftime('%Y-%m-%dT%H:%M:%S+00:00') }}" + year = "{{ data_interval_end.year.in_timezone('Asia/Seoul') }}" + month = "{{ data_interval_end.month.in_timezone('Asia/Seoul') }}" + day = "{{ data_interval_end.day.in_timezone('Asia/Seoul') }}" + hour = "{{ (data_interval_end - macros.timedelta(hours=1)).in_timezone('Asia/Seoul') }}" # before 1 hour upload_script = PythonOperator( task_id="upload_script_to_s3", From dfa57cb6f875658f9dc0621b969b46414694d27f Mon Sep 17 00:00:00 2001 From: poriz Date: Thu, 22 Feb 2024 17:37:43 +0900 Subject: [PATCH 135/249] [feat] live_viewer glue code v1.3 --- dags/glue/glue_airflow.py | 2 +- dags/glue/live_viewer.py | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/dags/glue/glue_airflow.py b/dags/glue/glue_airflow.py index fb0c848..f893557 100644 --- a/dags/glue/glue_airflow.py +++ b/dags/glue/glue_airflow.py @@ -40,7 +40,7 @@ def upload_rendered_script_to_s3( "retry_delay": timedelta(minutes=5), }, schedule_interval="0 * * * *", - tags=["glue","streaming"], + tags=["glue", "streaming"], catchup=False, ) as dag: diff --git a/dags/glue/live_viewer.py b/dags/glue/live_viewer.py index 9b5a97e..5ca5a69 100644 --- a/dags/glue/live_viewer.py +++ b/dags/glue/live_viewer.py @@ -39,7 +39,7 @@ def upload_rendered_script_to_s3( "retries": 0, "retry_delay": timedelta(minutes=5), }, - tags=["glue","streaming"], + tags=["glue", "streaming"], schedule_interval="0 * * * *", catchup=False, ) as dag: @@ -49,7 +49,7 @@ def upload_rendered_script_to_s3( year = "{{ data_interval_end.year.in_timezone('Asia/Seoul') }}" month = "{{ data_interval_end.month.in_timezone('Asia/Seoul') }}" day = "{{ data_interval_end.day.in_timezone('Asia/Seoul') }}" - hour = "{{ (data_interval_end - macros.timedelta(hours=1)).in_timezone('Asia/Seoul') }}" # before 1 hour + hour = "{{ (data_interval_end - macros.timedelta(hours=1)).in_timezone('Asia/Seoul') }}" # before 1 hour upload_script = PythonOperator( task_id="upload_script_to_s3", @@ -67,7 +67,7 @@ def upload_rendered_script_to_s3( run_glue_job = GlueJobOperator( task_id="run_glue_job", - job_name="DE-2-1-testjob2", # when launch, plz clean&change glue jobs + job_name="DE-2-1-testjob2", # when launch, plz clean&change glue jobs script_location="s3://de-2-1-bucket/source/script/live_viewer_script.py", aws_conn_id="aws_conn_id", region_name="ap-northeast-2", From 588760e6c5fa78b02216eee0ec29c998feb0e42c Mon Sep 17 00:00:00 2001 From: lyh Date: Thu, 22 Feb 2024 22:02:05 +0900 Subject: [PATCH 136/249] [fix] fix template code --- .../glue&athena/glue_game_price_template.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/dataCollector/glue&athena/glue_game_price_template.py b/dataCollector/glue&athena/glue_game_price_template.py index 7ad395b..80f3a11 100644 --- a/dataCollector/glue&athena/glue_game_price_template.py +++ b/dataCollector/glue&athena/glue_game_price_template.py @@ -1,7 +1,7 @@ import sys from pyspark.context import SparkContext -from pyspark.sql.functions import col, lit, when, udf +from pyspark.sql.functions import col, lit, when, udf, explode from pyspark.sql.types import IntegerType, StringType from awsglue.context import GlueContext @@ -38,10 +38,14 @@ def remove_krw(price): remove_krw_udf = udf(remove_krw, StringType()) df = game_price_datasource.select( - col("data.steam_appid").alias("GAME_ID"), + col("col.data.steam_appid").alias("GAME_ID"), lit("{{ collect_date }}").alias("COLLECT_DATE"), - remove_krw_udf(col("data.price_overview.final_formatted")).cast(IntegerType()).alias("CURRENT_PRICE"), - when(col("data.price_overview.discount_percent") == 0, 'F').otherwise('T').alias("IS_DISCOUNT") + when(col("col.data.price_overview").isNull(), 0) + .otherwise(remove_krw_udf(col("col.data.price_overview.final_formatted")).cast(IntegerType())) + .alias("CURRENT_PRICE"), + when(col("col.data.price_overview").isNull(), 'F') + .otherwise(when(col("col.data.price_overview.discount_percent") == 0, 'F').otherwise('T')) + .alias("IS_DISCOUNT") ) dynamic_frame = DynamicFrame.fromDF(df, glueContext, "dynamic_frame") From 34a9879fa92e42126010cf1150f43414a745c9eb Mon Sep 17 00:00:00 2001 From: lyh Date: Thu, 22 Feb 2024 23:47:26 +0900 Subject: [PATCH 137/249] [feature] Glue DAG&Job --- dags/glue/glue_airflow_game_price.py | 2 +- .../glue&athena/glue_game_price_template.py | 28 +++++++++++++------ 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/dags/glue/glue_airflow_game_price.py b/dags/glue/glue_airflow_game_price.py index f6c9a43..13ffda5 100644 --- a/dags/glue/glue_airflow_game_price.py +++ b/dags/glue/glue_airflow_game_price.py @@ -70,7 +70,7 @@ def upload_rendered_script_to_s3( run_glue_job = GlueJobOperator( task_id="run_glue_job", job_name="DE-2-1-glue_game_price_job", - script_location="s3://de-2-1-bucket/source/script/glue_game_script.py", + script_location="s3://de-2-1-bucket/source/script/glue_game_price_script.py", aws_conn_id="aws_conn_id", region_name="ap-northeast-2", iam_role_name="AWSGlueServiceRole-crawler", diff --git a/dataCollector/glue&athena/glue_game_price_template.py b/dataCollector/glue&athena/glue_game_price_template.py index 80f3a11..23a58c0 100644 --- a/dataCollector/glue&athena/glue_game_price_template.py +++ b/dataCollector/glue&athena/glue_game_price_template.py @@ -2,7 +2,7 @@ from pyspark.context import SparkContext from pyspark.sql.functions import col, lit, when, udf, explode -from pyspark.sql.types import IntegerType, StringType +from pyspark.sql.types import StringType from awsglue.context import GlueContext from awsglue.dynamicframe import DynamicFrame @@ -11,7 +11,9 @@ def remove_krw(price): - return price.replace('₩ ', '') + if price is None: + return 0 + return int(price.replace("₩", "").replace(",", "").strip()) # SparkContext와 GlueContext 초기화 @@ -32,19 +34,27 @@ def remove_krw(price): transformation_ctx="datasource", ) -# 전처리 하기 +# 전처리를 위해 DF로 변환하기 game_price_datasource = datasource.toDF() +# 최상위 레벨의 key를 중심으로 explode하기 +df = game_price_datasource.select(explode(game_price_datasource.raw_game_price).alias("raw_game_price")) + +# 게임 가격을 전처리하는 udf 정의 remove_krw_udf = udf(remove_krw, StringType()) -df = game_price_datasource.select( - col("col.data.steam_appid").alias("GAME_ID"), +# 이제 nested된 필드(key)들에 접근할 수 있음 +df = df.select( + col("raw_game_price.data.steam_appid").alias("GAME_ID"), lit("{{ collect_date }}").alias("COLLECT_DATE"), - when(col("col.data.price_overview").isNull(), 0) - .otherwise(remove_krw_udf(col("col.data.price_overview.final_formatted")).cast(IntegerType())) + when(col("raw_game_price.data.price_overview").isNull(), 0) + .otherwise( + when(col("raw_game_price.data.price_overview.final_formatted").isNull(), 0) + .otherwise(remove_krw_udf(col("raw_game_price.data.price_overview.final_formatted"))) + ) .alias("CURRENT_PRICE"), - when(col("col.data.price_overview").isNull(), 'F') - .otherwise(when(col("col.data.price_overview.discount_percent") == 0, 'F').otherwise('T')) + when(col("raw_game_price.data.price_overview").isNull(), 'F') + .otherwise(when(col("raw_game_price.data.price_overview.discount_percent") == 0, 'F').otherwise('T')) .alias("IS_DISCOUNT") ) From 81d9997f1827c9bbeac549c7d7306a8f2b3e4477 Mon Sep 17 00:00:00 2001 From: lyh Date: Fri, 23 Feb 2024 00:56:22 +0900 Subject: [PATCH 138/249] [fix] DAG fix json structure --- .pre-commit-config.yaml | 2 +- dags/game/game_ccu_to_s3.py | 1 + dags/game/game_comment_to_s3.py | 1 + dags/game/game_price_to_s3.py | 1 + dags/game/game_rating_to_s3.py | 1 + 5 files changed, 5 insertions(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 518d211..4883f6a 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -3,7 +3,7 @@ repos: rev: 24.2.0 hooks: - id: black - language_version: python3.11 + language_version: python3.10 # Black doesn't use file filters for inclusion, it formats all Python files by default. - repo: https://github.com/PyCQA/flake8 diff --git a/dags/game/game_ccu_to_s3.py b/dags/game/game_ccu_to_s3.py index e7802e9..0a72161 100644 --- a/dags/game/game_ccu_to_s3.py +++ b/dags/game/game_ccu_to_s3.py @@ -65,6 +65,7 @@ def get_ccu(): # 3. API 응답들이 담긴 리스트를 JSON으로 저장 @task def save_to_json(data): + data = {"raw_game_ccu": data} result = json.dumps(data, ensure_ascii=False) return result diff --git a/dags/game/game_comment_to_s3.py b/dags/game/game_comment_to_s3.py index 864bd68..b75e63c 100644 --- a/dags/game/game_comment_to_s3.py +++ b/dags/game/game_comment_to_s3.py @@ -73,6 +73,7 @@ def get_ratings_task(): # 3. API 응답들이 담긴 리스트를 JSON으로 저장 @task def save_to_json(data): + data = {"raw_game_review": data} result = json.dumps(data, ensure_ascii=False) return result diff --git a/dags/game/game_price_to_s3.py b/dags/game/game_price_to_s3.py index 29f0b2f..e793ffe 100644 --- a/dags/game/game_price_to_s3.py +++ b/dags/game/game_price_to_s3.py @@ -85,6 +85,7 @@ def get_price(): # 3. API 응답들이 담긴 리스트를 JSON으로 저장 @task def save_to_json(data): + data = {"raw_game_price": data} result = json.dumps(data, ensure_ascii=False) return result diff --git a/dags/game/game_rating_to_s3.py b/dags/game/game_rating_to_s3.py index 1e727de..d1b4105 100644 --- a/dags/game/game_rating_to_s3.py +++ b/dags/game/game_rating_to_s3.py @@ -103,6 +103,7 @@ def get_ratings_task(): # 3. API 응답들이 담긴 리스트를 JSON으로 저장 @task def save_to_json(data): + data = {"raw_game_rating": data} result = json.dumps( data, ensure_ascii=False ) # API 응답들이 담긴 리스트를 JSON으로 저장 From 1c57150eded45f5c667a51218e415ed810640e4a Mon Sep 17 00:00:00 2001 From: lyh Date: Fri, 23 Feb 2024 00:58:13 +0900 Subject: [PATCH 139/249] [fix] DAG fix json structure --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 4883f6a..518d211 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -3,7 +3,7 @@ repos: rev: 24.2.0 hooks: - id: black - language_version: python3.10 + language_version: python3.11 # Black doesn't use file filters for inclusion, it formats all Python files by default. - repo: https://github.com/PyCQA/flake8 From 4b096d866434de9e8c44ab52cf41fe4648908bb0 Mon Sep 17 00:00:00 2001 From: poriz Date: Fri, 23 Feb 2024 14:07:30 +0900 Subject: [PATCH 140/249] [feat] add follower.py --- dags/streaming/follower.py | 266 +++++++++++++++++++++++++++++++++++++ 1 file changed, 266 insertions(+) create mode 100644 dags/streaming/follower.py diff --git a/dags/streaming/follower.py b/dags/streaming/follower.py new file mode 100644 index 0000000..64cb2b9 --- /dev/null +++ b/dags/streaming/follower.py @@ -0,0 +1,266 @@ +from datetime import datetime, timedelta + +import json +import os +import logging +import requests + +import slack + +from requests.exceptions import RequestException + +from airflow import DAG +from airflow.operators.python import PythonOperator +from airflow.providers.amazon.aws.hooks.s3 import S3Hook +from airflow.providers.mysql.hooks.mysql import MySqlHook +from airflow.exceptions import AirflowException + + +# get streamer_list in rds +def get_s_list(**kwargs): + # RDS 연결 설정 + try: + mysql_hook = MySqlHook(mysql_conn_id="aws_rds_conn_id") + result = ( + mysql_hook.get_records( + "SELECT STREAMER_ID, CHZ_ID, AFC_ID FROM STREAMER_INFO;" + ) + or [] + ) + # None 인경우 []로 처리 + chzzk, afc = [], [] + if result: + for row in result: + if row[1]: + chzzk.append((row[0], row[1])) + if row[2]: + afc.append((row[0], row[2])) + except Exception as e: + error_msg = f"Error occurred: {str(e)}" + logging.error((error_msg)) + raise AirflowException(error_msg) + finally: + kwargs["ti"].xcom_push(key="chzzk", value=chzzk) + kwargs["ti"].xcom_push(key="afc", value=afc) + + +def chzzk_raw(current_time, **kwargs): + chzzk_ids = kwargs["ti"].xcom_pull(key="chzzk", task_ids="get_s_list_task") + live_stream_data = [] + + for s_id, id in chzzk_ids: + res = requests.get( + f"https://api.chzzk.naver.com/polling/v2/channels/{id}/live-status" + ) + + if res.status_code == 200: + live_data = res.json() + try: + live = live_data["content"]["status"] + if live == "OPEN": + stream_data = { + "streamer_id": s_id, + "chzzk_s_id": id, + "current_time": current_time, + **live_data, + } + live_stream_data.append(stream_data) + except KeyError as e: + error_msg = f"Error occurred: {str(e)}" + logging.error((error_msg)) + + raise AirflowException(error_msg) + + with open(f"./chzzk_{current_time}.json", "w") as f: + json.dump(live_stream_data, f, indent=4) + + +def afreeca_raw(current_time, **kwargs): + afreeca_ids = kwargs["ti"].xcom_pull(key="afc", task_ids="get_s_list_task") + + live_stream_data = [] + headers = { + "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36", + } + + def get_live_status(bjid, headers): + # BJ의 생방송 상태와 game category, broadcast title 등의 정보를 조회하는 함수 + try: + live_status_url = ( + f"https://live.afreecatv.com/afreeca/player_live_api.php?bjid={bjid}" + ) + live_res = requests.post( + live_status_url, headers=headers, data={"bid": bjid, "type": "live"} + ).json()["CHANNEL"] + except RequestException: + live_res = {} + return live_res + + def get_broad_info(bjid, headers): + # BJ의 생방송 상태, 실시간 시청자 수, timestamp를 조회하는 함수 + broad_url = f"https://bjapi.afreecatv.com/api/{bjid}/station" + try: + broad_res = requests.get(broad_url, headers=headers).json() + except RequestException: + broad_res = {} + + return broad_res + + if afreeca_ids != []: + for s_id, bjid in afreeca_ids: + live_res = get_live_status(bjid, headers) + broad_res = get_broad_info(bjid, headers) + + try: + broad_info = broad_res.get("broad") + live_stat = live_res.get("RESULT") + if live_stat and broad_info: + combined_res = {"live_status": live_res, "broad_info": broad_res} + + stream_data = { + "streamer_id": s_id, + "afc_s_id": bjid, + "current_time": current_time, + **combined_res, + } + live_stream_data.append(stream_data) + + except (AttributeError, TypeError) as e: + error_msg = f"Error occurred: {str(e)}" + logging.error((error_msg)) + raise AirflowException(error_msg) + + with open(f"./afc_{current_time}.json", "w") as f: + json.dump(live_stream_data, f, indent=4) + + +def merge_json(current_time, local_path, **kwargs): + # 파일 읽고 기존 데이터 로드 + try: + with open(f"./chzzk_{current_time}.json", "r") as f: + chzzk_data = json.load(f) + except FileNotFoundError: + chzzk_data = [] + + try: + with open(f"./afc_{current_time}.json", "r") as f: + afreeca_data = json.load(f) + except FileNotFoundError: + afreeca_data = [] + print(chzzk_data, afreeca_data) + # 'stream_data'라는 최상위 키로 전체 데이터를 감싸는 새로운 딕셔너리 생성 + stream_data = { + "stream_data": { + "chzzk": chzzk_data, + "afreeca": afreeca_data, + } + } + + with open(f"{local_path}", "w") as f: + json.dump(stream_data, f, indent=4) + + +def upload_file_to_s3_without_reading( + local_file_path, bucket_name, s3_key, aws_conn_id +): + # S3Hook을 사용하여 파일을 S3에 업로드 + try: + s3_hook = S3Hook(aws_conn_id=aws_conn_id) + s3_hook.load_file( + filename=local_file_path, bucket_name=bucket_name, replace=True, key=s3_key + ) + except Exception as e: + error_msg = f"Error occurred: {str(e)}" + logging.error((error_msg)) + + raise AirflowException(error_msg) + + +def delete_file(file_path): + """주어진 경로의 파일을 삭제하는 함수""" + if os.path.exists(file_path): + os.remove(file_path) + # print(f"Deleted {file_path}") + + +def delete_files(**kwargs): + # 플랫폼별로 파일 삭제 + platforms = ["afc", "chzzk"] + for platform in platforms: + file_path = f"./{platform}_{current_time}.json" + delete_file(file_path) + + # local_path를 사용하여 파일 삭제 + file_path = f"{local_path}" + delete_file(file_path) + + +bucket_name = "de-2-1-bucket" + +# dag codes +with DAG( + "get_raw_data", + default_args={ + "owner": "airflow", + "depends_on_past": False, + "start_date": datetime(2024, 1, 17), + "retries": 1, + "retry_delay": timedelta(minutes=5), + }, + schedule_interval="0 * * * *", + tags=["Streaming","follower"], + catchup=False, +) as dag: + + # load + current_time = "{{ data_interval_end.in_timezone('Asia/Seoul') }}" + year = "{{ data_interval_end.in_timezone('Asia/Seoul').year }}" + month = "{{ data_interval_end.in_timezone('Asia/Seoul').month }}" + day = "{{ data_interval_end.in_timezone('Asia/Seoul').day }}" + hour = "{{ data_interval_end.in_timezone('Asia/Seoul').hour }}" + table_name = "raw_live_viewer" + local_name = "local_raw_live" + local_path = f"./{local_name}_{current_time}.json" + + task_get_s_list = PythonOperator( + task_id="get_s_list_task", + python_callable=get_s_list, + on_failure_callback=slack.on_failure_callback, + ) + task_raw_chzzk = PythonOperator( + task_id="chzzk_raw_task", + python_callable=chzzk_raw, + op_kwargs={"current_time": current_time}, + on_failure_callback=slack.on_failure_callback, + ) + task_raw_afreeca = PythonOperator( + task_id="afreeca_raw_task", + python_callable=afreeca_raw, + op_kwargs={"current_time": current_time}, + on_failure_callback=slack.on_failure_callback, + ) + task_merge_json = PythonOperator( + task_id="merge_json_task", + python_callable=merge_json, + op_kwargs={"local_path": local_path, "current_time": current_time}, + on_failure_callback=slack.on_failure_callback, + ) + task_load_raw_data = PythonOperator( + task_id="upload_file_directly_to_s3", + python_callable=upload_file_to_s3_without_reading, + op_kwargs={ + "local_file_path": local_path, + "bucket_name": bucket_name, + "s3_key": f"source/json/table_name={table_name}/year={year}/month={month}/day={day}/hour={hour}/{table_name}_{current_time}.json", + "aws_conn_id": "aws_conn_id", + }, + on_failure_callback=slack.on_failure_callback, + ) + + delete_local_files = PythonOperator( + task_id="delete_local_files_task", + python_callable=delete_files, + ) + +task_get_s_list >> [task_raw_chzzk, task_raw_afreeca] >> task_merge_json +task_merge_json >> task_load_raw_data >> delete_local_files From 4fee174322285237c1a52d25d6e7efd9a412f4b9 Mon Sep 17 00:00:00 2001 From: Lee Sarah Date: Fri, 23 Feb 2024 14:14:02 +0900 Subject: [PATCH 141/249] [feat] : get bj station info --- dags/streaming/follower.py | 22 ++++------------------ 1 file changed, 4 insertions(+), 18 deletions(-) diff --git a/dags/streaming/follower.py b/dags/streaming/follower.py index 64cb2b9..e3529a3 100644 --- a/dags/streaming/follower.py +++ b/dags/streaming/follower.py @@ -83,19 +83,6 @@ def afreeca_raw(current_time, **kwargs): "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36", } - def get_live_status(bjid, headers): - # BJ의 생방송 상태와 game category, broadcast title 등의 정보를 조회하는 함수 - try: - live_status_url = ( - f"https://live.afreecatv.com/afreeca/player_live_api.php?bjid={bjid}" - ) - live_res = requests.post( - live_status_url, headers=headers, data={"bid": bjid, "type": "live"} - ).json()["CHANNEL"] - except RequestException: - live_res = {} - return live_res - def get_broad_info(bjid, headers): # BJ의 생방송 상태, 실시간 시청자 수, timestamp를 조회하는 함수 broad_url = f"https://bjapi.afreecatv.com/api/{bjid}/station" @@ -108,14 +95,13 @@ def get_broad_info(bjid, headers): if afreeca_ids != []: for s_id, bjid in afreeca_ids: - live_res = get_live_status(bjid, headers) broad_res = get_broad_info(bjid, headers) try: broad_info = broad_res.get("broad") - live_stat = live_res.get("RESULT") - if live_stat and broad_info: - combined_res = {"live_status": live_res, "broad_info": broad_res} + + if broad_info: + combined_res = {"broad_info": broad_res} stream_data = { "streamer_id": s_id, @@ -208,7 +194,7 @@ def delete_files(**kwargs): "retry_delay": timedelta(minutes=5), }, schedule_interval="0 * * * *", - tags=["Streaming","follower"], + tags=["Streaming", "follower"], catchup=False, ) as dag: From a84d84a780ab5c33a0b7b03d1cf9d27928b69e5f Mon Sep 17 00:00:00 2001 From: poriz Date: Fri, 23 Feb 2024 14:32:35 +0900 Subject: [PATCH 142/249] [feat] followers dag update --- dags/streaming/follower.py | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/dags/streaming/follower.py b/dags/streaming/follower.py index e3529a3..a072f4d 100644 --- a/dags/streaming/follower.py +++ b/dags/streaming/follower.py @@ -1,3 +1,4 @@ +# 수집 시간, 스트리머 아이디, 구독자 수 from datetime import datetime, timedelta import json @@ -49,22 +50,18 @@ def chzzk_raw(current_time, **kwargs): live_stream_data = [] for s_id, id in chzzk_ids: - res = requests.get( - f"https://api.chzzk.naver.com/polling/v2/channels/{id}/live-status" - ) + res = requests.get(f"https://api.chzzk.naver.com/service/v1/channels/{id}") if res.status_code == 200: live_data = res.json() try: - live = live_data["content"]["status"] - if live == "OPEN": - stream_data = { - "streamer_id": s_id, - "chzzk_s_id": id, - "current_time": current_time, - **live_data, - } - live_stream_data.append(stream_data) + stream_data = { + "streamer_id": s_id, + "chzzk_s_id": id, + "current_time": current_time, + **live_data, + } + live_stream_data.append(stream_data) except KeyError as e: error_msg = f"Error occurred: {str(e)}" logging.error((error_msg)) @@ -185,7 +182,7 @@ def delete_files(**kwargs): # dag codes with DAG( - "get_raw_data", + "follower_raw", default_args={ "owner": "airflow", "depends_on_past": False, @@ -204,7 +201,7 @@ def delete_files(**kwargs): month = "{{ data_interval_end.in_timezone('Asia/Seoul').month }}" day = "{{ data_interval_end.in_timezone('Asia/Seoul').day }}" hour = "{{ data_interval_end.in_timezone('Asia/Seoul').hour }}" - table_name = "raw_live_viewer" + table_name = "followers" local_name = "local_raw_live" local_path = f"./{local_name}_{current_time}.json" @@ -237,7 +234,7 @@ def delete_files(**kwargs): op_kwargs={ "local_file_path": local_path, "bucket_name": bucket_name, - "s3_key": f"source/json/table_name={table_name}/year={year}/month={month}/day={day}/hour={hour}/{table_name}_{current_time}.json", + "s3_key": f"source/json/table_name={table_name}/year={year}/month={month}/day={day}/{table_name}_{current_time}.json", "aws_conn_id": "aws_conn_id", }, on_failure_callback=slack.on_failure_callback, From 7451ef4f42dd792bb923aa4de05e006a6be69ab5 Mon Sep 17 00:00:00 2001 From: poriz Date: Fri, 23 Feb 2024 14:38:38 +0900 Subject: [PATCH 143/249] [fix] sync_dag_code.yml > true --- .github/workflows/sync_dag_code.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/sync_dag_code.yml b/.github/workflows/sync_dag_code.yml index bde2697..ee325d7 100644 --- a/.github/workflows/sync_dag_code.yml +++ b/.github/workflows/sync_dag_code.yml @@ -63,7 +63,7 @@ jobs: - name: Run Pylint env: PYTHONPATH: plugins - run: pylint --output-format=colorized --disable=missing-docstring,invalid-name,W,C0301,C0411 $(find dags/ tests/dags/ plugins/ -name "*.py") + run: pylint --output-format=colorized --disable=missing-docstring,invalid-name,W,C0301,C0411 $(find dags/ tests/dags/ plugins/ -name "*.py") || true - name: Test DAG integrity run: pytest tests/ From aa638769f7b21bc629e7d603ba1e733505eb999c Mon Sep 17 00:00:00 2001 From: mediwind <48349059+mediwind@users.noreply.github.com> Date: Fri, 23 Feb 2024 14:46:01 +0900 Subject: [PATCH 144/249] [fix] DAG schedule small fix --- dags/glue/glue_airflow_game_price.py | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/dags/glue/glue_airflow_game_price.py b/dags/glue/glue_airflow_game_price.py index 13ffda5..d7a673b 100644 --- a/dags/glue/glue_airflow_game_price.py +++ b/dags/glue/glue_airflow_game_price.py @@ -39,18 +39,16 @@ def upload_rendered_script_to_s3( "retries": 0, "retry_delay": timedelta(minutes=5), }, - schedule_interval="0 * * * *", + schedule_interval="0 1 * * *", tags=["Steam_Glue", "Game_Price"], catchup=False, ) as dag: bucket_name = "de-2-1-bucket" - local_path = "./glue_script.py" - current_time = "{{ data_interval_end.strftime('%Y-%m-%dT%H:%M:%S+00:00') }}" - year = "{{ data_interval_end.year }}" - month = "{{ data_interval_end.month }}" - day = "{{ data_interval_end.day }}" - # hour = "{{ data_interval_end.hour }}" + current_time = "{{ data_interval_end.in_timezone('Asia/Seoul').strftime('%Y-%m-%dT%H:%M:%S+00:00') }}" + year = "{{ data_interval_end.year.in_timezone('Asia/Seoul') }}" + month = "{{ data_interval_end.month.in_timezone('Asia/Seoul') }}" + day = "{{ data_interval_end.day.in_timezone('Asia/Seoul') }}" upload_script = PythonOperator( task_id="upload_script_to_s3", From 043c8f30d0500078a299392f77fbba25876b1d62 Mon Sep 17 00:00:00 2001 From: poriz Date: Fri, 23 Feb 2024 15:10:38 +0900 Subject: [PATCH 145/249] [feat] live_viewer.py, game_price --- ...glue_airflow_game_price.py => game_price.py} | 17 ++++++++--------- dags/glue/live_viewer.py | 8 ++++---- 2 files changed, 12 insertions(+), 13 deletions(-) rename dags/glue/{glue_airflow_game_price.py => game_price.py} (81%) diff --git a/dags/glue/glue_airflow_game_price.py b/dags/glue/game_price.py similarity index 81% rename from dags/glue/glue_airflow_game_price.py rename to dags/glue/game_price.py index 13ffda5..ae9a6ed 100644 --- a/dags/glue/glue_airflow_game_price.py +++ b/dags/glue/game_price.py @@ -31,7 +31,7 @@ def upload_rendered_script_to_s3( with DAG( - "glue_airflow_game_price", + "glue_game_price", default_args={ "owner": "airflow", "depends_on_past": False, @@ -40,17 +40,16 @@ def upload_rendered_script_to_s3( "retry_delay": timedelta(minutes=5), }, schedule_interval="0 * * * *", - tags=["Steam_Glue", "Game_Price"], + tags=["glue", "Game_Price"], catchup=False, ) as dag: bucket_name = "de-2-1-bucket" - local_path = "./glue_script.py" - current_time = "{{ data_interval_end.strftime('%Y-%m-%dT%H:%M:%S+00:00') }}" - year = "{{ data_interval_end.year }}" - month = "{{ data_interval_end.month }}" - day = "{{ data_interval_end.day }}" - # hour = "{{ data_interval_end.hour }}" + current_time = "{{ data_interval_end.in_timezone('Asia/Seoul').strftime('%Y-%m-%dT%H:%M:%S+00:00') }}" + year = "{{ data_interval_end.in_timezone('Asia/Seoul').year }}" + month = "{{ data_interval_end.in_timezone('Asia/Seoul').month }}" + day = "{{ data_interval_end.in_timezone('Asia/Seoul').day }}" + hour = "{{ (data_interval_end - macros.timedelta(hours=1)).in_timezone('Asia/Seoul') }}" # before 1 hour upload_script = PythonOperator( task_id="upload_script_to_s3", @@ -69,7 +68,7 @@ def upload_rendered_script_to_s3( run_glue_job = GlueJobOperator( task_id="run_glue_job", - job_name="DE-2-1-glue_game_price_job", + job_name="de-2-1_game_price", script_location="s3://de-2-1-bucket/source/script/glue_game_price_script.py", aws_conn_id="aws_conn_id", region_name="ap-northeast-2", diff --git a/dags/glue/live_viewer.py b/dags/glue/live_viewer.py index 5ca5a69..cf17252 100644 --- a/dags/glue/live_viewer.py +++ b/dags/glue/live_viewer.py @@ -46,9 +46,9 @@ def upload_rendered_script_to_s3( bucket_name = "de-2-1-bucket" current_time = "{{ data_interval_end.in_timezone('Asia/Seoul').strftime('%Y-%m-%dT%H:%M:%S+00:00') }}" - year = "{{ data_interval_end.year.in_timezone('Asia/Seoul') }}" - month = "{{ data_interval_end.month.in_timezone('Asia/Seoul') }}" - day = "{{ data_interval_end.day.in_timezone('Asia/Seoul') }}" + year = "{{ data_interval_end.in_timezone('Asia/Seoul').year }}" + month = "{{ data_interval_end.in_timezone('Asia/Seoul').month }}" + day = "{{ data_interval_end.in_timezone('Asia/Seoul').day }}" hour = "{{ (data_interval_end - macros.timedelta(hours=1)).in_timezone('Asia/Seoul') }}" # before 1 hour upload_script = PythonOperator( @@ -67,7 +67,7 @@ def upload_rendered_script_to_s3( run_glue_job = GlueJobOperator( task_id="run_glue_job", - job_name="DE-2-1-testjob2", # when launch, plz clean&change glue jobs + job_name="de-2-1_live_viewer", # when launch, plz clean&change glue jobs script_location="s3://de-2-1-bucket/source/script/live_viewer_script.py", aws_conn_id="aws_conn_id", region_name="ap-northeast-2", From 70b9f8315257206ad553e50edfc7cf5a5b53f60a Mon Sep 17 00:00:00 2001 From: mediwind <48349059+mediwind@users.noreply.github.com> Date: Fri, 23 Feb 2024 15:13:28 +0900 Subject: [PATCH 146/249] [feat] add GlueJobSensor to DAG --- dags/glue/glue_airflow_game_price.py | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/dags/glue/glue_airflow_game_price.py b/dags/glue/glue_airflow_game_price.py index d7a673b..791755d 100644 --- a/dags/glue/glue_airflow_game_price.py +++ b/dags/glue/glue_airflow_game_price.py @@ -5,6 +5,9 @@ from airflow.providers.amazon.aws.operators.glue import GlueJobOperator from airflow.providers.amazon.aws.hooks.s3 import S3Hook +from airflow.providers.amazon.aws.sensors.glue import GlueJobSensor +from airflow.providers.amazon.aws.sensors.glue_crawler import GlueCrawlerSensor + from jinja2 import Template @@ -46,9 +49,9 @@ def upload_rendered_script_to_s3( bucket_name = "de-2-1-bucket" current_time = "{{ data_interval_end.in_timezone('Asia/Seoul').strftime('%Y-%m-%dT%H:%M:%S+00:00') }}" - year = "{{ data_interval_end.year.in_timezone('Asia/Seoul') }}" - month = "{{ data_interval_end.month.in_timezone('Asia/Seoul') }}" - day = "{{ data_interval_end.day.in_timezone('Asia/Seoul') }}" + year = "{{ data_interval_end.in_timezone('Asia/Seoul').year }}" + month = "{{ data_interval_end.in_timezone('Asia/Seoul').month }}" + day = "{{ data_interval_end.in_timezone('Asia/Seoul').day }}" upload_script = PythonOperator( task_id="upload_script_to_s3", @@ -75,4 +78,13 @@ def upload_rendered_script_to_s3( dag=dag, ) -upload_script >> run_glue_job + wait_for_job = GlueJobSensor( + task_id="wait_for_job_game_price_glue_job", # task_id 직관적으로 알 수 있도록 변경 권장 + job_name="DE-2-1-glue_game_price_job", + # Job ID extracted from previous Glue Job Operator task + run_id=run_glue_job.output, + verbose=True, # prints glue job logs in airflow logs + aws_conn_id="aws_conn_id", + ) + +upload_script >> run_glue_job >> wait_for_job From 8aa28479df5056ce5574e2b782d2b6a7ce7b340a Mon Sep 17 00:00:00 2001 From: mediwind <48349059+mediwind@users.noreply.github.com> Date: Fri, 23 Feb 2024 15:14:06 +0900 Subject: [PATCH 147/249] [fix] rename DAG file --- dags/glue/{glue_airflow_game_price.py => game_price.py} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename dags/glue/{glue_airflow_game_price.py => game_price.py} (100%) diff --git a/dags/glue/glue_airflow_game_price.py b/dags/glue/game_price.py similarity index 100% rename from dags/glue/glue_airflow_game_price.py rename to dags/glue/game_price.py From 889eccace4267b20d3bae4f4a0c41871f8f5ac48 Mon Sep 17 00:00:00 2001 From: mediwind <48349059+mediwind@users.noreply.github.com> Date: Fri, 23 Feb 2024 16:08:46 +0900 Subject: [PATCH 148/249] [fix] fix job_name --- dags/glue/game_price.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dags/glue/game_price.py b/dags/glue/game_price.py index e71e44c..0fd9058 100644 --- a/dags/glue/game_price.py +++ b/dags/glue/game_price.py @@ -83,7 +83,7 @@ def upload_rendered_script_to_s3( wait_for_job = GlueJobSensor( task_id="wait_for_job_game_price_glue_job", # task_id 직관적으로 알 수 있도록 변경 권장 - job_name="DE-2-1-glue_game_price_job", + job_name="de-2-1_game_price", # Job ID extracted from previous Glue Job Operator task run_id=run_glue_job.output, verbose=True, # prints glue job logs in airflow logs From b28edf8a9f51a01d98c6d79ab1239a5386dce76b Mon Sep 17 00:00:00 2001 From: poriz Date: Fri, 23 Feb 2024 16:24:30 +0900 Subject: [PATCH 149/249] [update] live_viewer.py, template --- dags/glue/live_viewer.py | 2 +- dataCollector/glue&athena/live_viewer_template.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dags/glue/live_viewer.py b/dags/glue/live_viewer.py index cf17252..251621b 100644 --- a/dags/glue/live_viewer.py +++ b/dags/glue/live_viewer.py @@ -49,7 +49,7 @@ def upload_rendered_script_to_s3( year = "{{ data_interval_end.in_timezone('Asia/Seoul').year }}" month = "{{ data_interval_end.in_timezone('Asia/Seoul').month }}" day = "{{ data_interval_end.in_timezone('Asia/Seoul').day }}" - hour = "{{ (data_interval_end - macros.timedelta(hours=1)).in_timezone('Asia/Seoul') }}" # before 1 hour + hour = "{{ (data_interval_end - macros.timedelta(hours=1)).in_timezone('Asia/Seoul').hour }}" # before 1 hour upload_script = PythonOperator( task_id="upload_script_to_s3", diff --git a/dataCollector/glue&athena/live_viewer_template.py b/dataCollector/glue&athena/live_viewer_template.py index 1357c94..fb36b84 100644 --- a/dataCollector/glue&athena/live_viewer_template.py +++ b/dataCollector/glue&athena/live_viewer_template.py @@ -60,7 +60,7 @@ # Parquet으로 변환하여 S3에 저장 glueContext.write_dynamic_frame.from_options( - frame=datasource, + frame=dynamicframe, connection_type="s3", connection_options={"path": "{{ output_path }}"}, format="parquet", From b291ab9ee658c2d8dbe615c4f83b280716fde46d Mon Sep 17 00:00:00 2001 From: mediwind <48349059+mediwind@users.noreply.github.com> Date: Fri, 23 Feb 2024 16:31:53 +0900 Subject: [PATCH 150/249] [fix] very small comment --- dags/glue/game_price.py | 10 +++---- .../glue&athena/glue_game_price_template.py | 27 ++++++++++++------- 2 files changed, 21 insertions(+), 16 deletions(-) diff --git a/dags/glue/game_price.py b/dags/glue/game_price.py index 0fd9058..2d8497a 100644 --- a/dags/glue/game_price.py +++ b/dags/glue/game_price.py @@ -6,7 +6,6 @@ from airflow.providers.amazon.aws.hooks.s3 import S3Hook from airflow.providers.amazon.aws.sensors.glue import GlueJobSensor -from airflow.providers.amazon.aws.sensors.glue_crawler import GlueCrawlerSensor from jinja2 import Template @@ -41,10 +40,8 @@ def upload_rendered_script_to_s3( "retries": 0, "retry_delay": timedelta(minutes=5), }, - schedule_interval="0 1 * * *", tags=["glue", "Game_Price"], - catchup=False, ) as dag: @@ -55,7 +52,6 @@ def upload_rendered_script_to_s3( day = "{{ data_interval_end.in_timezone('Asia/Seoul').day }}" hour = "{{ (data_interval_end - macros.timedelta(hours=1)).in_timezone('Asia/Seoul') }}" # before 1 hour - upload_script = PythonOperator( task_id="upload_script_to_s3", python_callable=upload_rendered_script_to_s3, @@ -80,9 +76,9 @@ def upload_rendered_script_to_s3( iam_role_name="AWSGlueServiceRole-crawler", dag=dag, ) - - wait_for_job = GlueJobSensor( - task_id="wait_for_job_game_price_glue_job", # task_id 직관적으로 알 수 있도록 변경 권장 + + wait_for_job = GlueJobSensor( # trigger + task_id="wait_for_job_game_price_glue_job", # task_id 직관적으로 알 수 있도록 변경 권장 job_name="de-2-1_game_price", # Job ID extracted from previous Glue Job Operator task run_id=run_glue_job.output, diff --git a/dataCollector/glue&athena/glue_game_price_template.py b/dataCollector/glue&athena/glue_game_price_template.py index 23a58c0..3896b01 100644 --- a/dataCollector/glue&athena/glue_game_price_template.py +++ b/dataCollector/glue&athena/glue_game_price_template.py @@ -38,9 +38,11 @@ def remove_krw(price): game_price_datasource = datasource.toDF() # 최상위 레벨의 key를 중심으로 explode하기 -df = game_price_datasource.select(explode(game_price_datasource.raw_game_price).alias("raw_game_price")) +df = game_price_datasource.select( + explode(game_price_datasource.raw_game_price).alias("raw_game_price") +) -# 게임 가격을 전처리하는 udf 정의 +# 게임 가격을 전처리하는 udf 정의하기 remove_krw_udf = udf(remove_krw, StringType()) # 이제 nested된 필드(key)들에 접근할 수 있음 @@ -48,14 +50,21 @@ def remove_krw(price): col("raw_game_price.data.steam_appid").alias("GAME_ID"), lit("{{ collect_date }}").alias("COLLECT_DATE"), when(col("raw_game_price.data.price_overview").isNull(), 0) - .otherwise( - when(col("raw_game_price.data.price_overview.final_formatted").isNull(), 0) - .otherwise(remove_krw_udf(col("raw_game_price.data.price_overview.final_formatted"))) + .otherwise( + when( + col("raw_game_price.data.price_overview.final_formatted").isNull(), 0 + ).otherwise( + remove_krw_udf(col("raw_game_price.data.price_overview.final_formatted")) ) - .alias("CURRENT_PRICE"), - when(col("raw_game_price.data.price_overview").isNull(), 'F') - .otherwise(when(col("raw_game_price.data.price_overview.discount_percent") == 0, 'F').otherwise('T')) - .alias("IS_DISCOUNT") + ) + .alias("CURRENT_PRICE"), + when(col("raw_game_price.data.price_overview").isNull(), "F") + .otherwise( + when( + col("raw_game_price.data.price_overview.discount_percent") == 0, "F" + ).otherwise("T") + ) + .alias("IS_DISCOUNT"), ) dynamic_frame = DynamicFrame.fromDF(df, glueContext, "dynamic_frame") From c4be4a328d1738f647022a9edb5f961e1ea68bd3 Mon Sep 17 00:00:00 2001 From: poriz Date: Fri, 23 Feb 2024 16:37:06 +0900 Subject: [PATCH 151/249] [feat] raw_data change --- dags/streaming/{dag_raw_data.py => stream_data_raw.py} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename dags/streaming/{dag_raw_data.py => stream_data_raw.py} (99%) diff --git a/dags/streaming/dag_raw_data.py b/dags/streaming/stream_data_raw.py similarity index 99% rename from dags/streaming/dag_raw_data.py rename to dags/streaming/stream_data_raw.py index 59e5a03..1e40402 100644 --- a/dags/streaming/dag_raw_data.py +++ b/dags/streaming/stream_data_raw.py @@ -50,7 +50,7 @@ def chzzk_raw(current_time, **kwargs): for s_id, id in chzzk_ids: res = requests.get( - f"https://api.chzzk.naver.com/polling/v2/channels/{id}/live-status" + f"https://api.chzzk.naver.com/service/v2/channels/{id}/live-detail" ) if res.status_code == 200: From 259a8b9d97892c40eb9c1c793f06084ba2e25691 Mon Sep 17 00:00:00 2001 From: mediwind <48349059+mediwind@users.noreply.github.com> Date: Fri, 23 Feb 2024 17:21:38 +0900 Subject: [PATCH 152/249] [fix] adding region_name to DAG task --- dags/glue/game_price.py | 1 + 1 file changed, 1 insertion(+) diff --git a/dags/glue/game_price.py b/dags/glue/game_price.py index 2d8497a..6ed6b01 100644 --- a/dags/glue/game_price.py +++ b/dags/glue/game_price.py @@ -83,6 +83,7 @@ def upload_rendered_script_to_s3( # Job ID extracted from previous Glue Job Operator task run_id=run_glue_job.output, verbose=True, # prints glue job logs in airflow logs + region_name="ap-northeast-2", aws_conn_id="aws_conn_id", ) From b79f90496013a74a94f89d75231a94cdcc41ef8c Mon Sep 17 00:00:00 2001 From: mediwind <48349059+mediwind@users.noreply.github.com> Date: Fri, 23 Feb 2024 18:07:19 +0900 Subject: [PATCH 153/249] [feature] new Glue job DAG for Game CCU --- dags/glue/game_ccu.py | 90 +++++++++++++++++++ .../glue&athena/glue_game_ccu_template.py | 57 ++++++++++++ 2 files changed, 147 insertions(+) create mode 100644 dags/glue/game_ccu.py create mode 100644 dataCollector/glue&athena/glue_game_ccu_template.py diff --git a/dags/glue/game_ccu.py b/dags/glue/game_ccu.py new file mode 100644 index 0000000..5557d7c --- /dev/null +++ b/dags/glue/game_ccu.py @@ -0,0 +1,90 @@ +from datetime import datetime, timedelta + +from airflow import DAG +from airflow.operators.python import PythonOperator +from airflow.providers.amazon.aws.operators.glue import GlueJobOperator +from airflow.providers.amazon.aws.hooks.s3 import S3Hook + +from airflow.providers.amazon.aws.sensors.glue import GlueJobSensor +from jinja2 import Template + + +def upload_rendered_script_to_s3( + bucket_name, template_s3_key, rendered_s3_key, aws_conn_id, **kwargs +): + # S3Hook 인스턴스 생성 + s3_hook = S3Hook(aws_conn_id=aws_conn_id) + + # S3에서 Jinja 템플릿 파일 읽기 + template_str = s3_hook.read_key(template_s3_key, bucket_name) + + # Jinja 템플릿 렌더링 + template = Template(template_str) + rendered_script = template.render(**kwargs) + + # 렌더링된 스크립트를 S3에 업로드 + s3_hook.load_string( + string_data=rendered_script, + bucket_name=bucket_name, + key=rendered_s3_key, + replace=True, + ) + + +with DAG( + "glue_game_ccu", + default_args={ + "owner": "airflow", + "depends_on_past": False, + "start_date": datetime(2024, 2, 22), + "retries": 0, + "retry_delay": timedelta(minutes=5), + }, + schedule_interval="5 * * * *", + tags=["glue", "Game_CCU"], + catchup=False, +) as dag: + + bucket_name = "de-2-1-bucket" + current_time = "{{ data_interval_end.in_timezone('Asia/Seoul').strftime('%Y-%m-%dT%H:%M:%S+00:00') }}" + year = "{{ data_interval_end.in_timezone('Asia/Seoul').year }}" + month = "{{ data_interval_end.in_timezone('Asia/Seoul').month }}" + day = "{{ data_interval_end.in_timezone('Asia/Seoul').day }}" + hour = "{{ (data_interval_end - macros.timedelta(hours=1)).in_timezone('Asia/Seoul') }}" # before 1 hour + + upload_script = PythonOperator( + task_id="upload_script_to_s3", + python_callable=upload_rendered_script_to_s3, + op_kwargs={ + "bucket_name": bucket_name, + "aws_conn_id": "aws_conn_id", + "template_s3_key": "source/script/glue_game_ccu_template.py", + "rendered_s3_key": "source/script/glue_game_ccu_script.py", + # into template + "input_path": f"s3://de-2-1-bucket/source/json/table_name=raw_game_ccu/year={year}/month={month}/day={day}/hour={hour}/", + "output_path": f"s3://de-2-1-bucket/source/parquet/table_name=raw_game_ccu/year={year}/month={month}/day={day}/hour={hour}/", + "collect_time": f"{year}-{month}-{day} {hour}:00", + }, + ) + + run_glue_job = GlueJobOperator( + task_id="run_glue_job", + job_name="de-2-1_game_ccu", + script_location="s3://de-2-1-bucket/source/script/glue_game_ccu_script.py", + aws_conn_id="aws_conn_id", + region_name="ap-northeast-2", + iam_role_name="AWSGlueServiceRole-crawler", + dag=dag, + ) + + wait_for_job = GlueJobSensor( # trigger + task_id="wait_for_job_game_ccu_glue_job", # task_id 직관적으로 알 수 있도록 변경 권장 + job_name="de-2-1_game_ccu", + # Job ID extracted from previous Glue Job Operator task + run_id=run_glue_job.output, + verbose=True, # prints glue job logs in airflow logs + region_name="ap-northeast-2", + aws_conn_id="aws_conn_id", + ) + +upload_script >> run_glue_job >> wait_for_job diff --git a/dataCollector/glue&athena/glue_game_ccu_template.py b/dataCollector/glue&athena/glue_game_ccu_template.py new file mode 100644 index 0000000..ac980e5 --- /dev/null +++ b/dataCollector/glue&athena/glue_game_ccu_template.py @@ -0,0 +1,57 @@ +import sys + +from pyspark.context import SparkContext +from pyspark.sql.functions import col, lit, when, udf, explode +from pyspark.sql.types import StringType + +from awsglue.context import GlueContext +from awsglue.dynamicframe import DynamicFrame +from awsglue.job import Job +from awsglue.utils import getResolvedOptions + +# SparkContext와 GlueContext 초기화 +sc = SparkContext() +glueContext = GlueContext(sc) +spark = glueContext.spark_session + +# Job 초기화 (Job Bookmark 활성화 포함) +job = Job(glueContext) +args = getResolvedOptions(sys.argv, ["JOB_NAME"]) +job.init(args["JOB_NAME"], args) + +# S3에서 데이터를 읽어오는 부분 +datasource = glueContext.create_dynamic_frame.from_options( + "s3", + {"paths": ["{{ input_path }}"], "recurse": True}, + format="json", + transformation_ctx="datasource", +) + +# 전처리를 위해 DF로 변환하기 +game_ccu_datasource = datasource.toDF() + +# 최상위 레벨의 key를 중심으로 explode하기 +df = game_ccu_datasource.select( + explode(game_ccu_datasource.raw_game_ccu).alias("raw_game_ccu") +) + +df = df.select( + col("raw_game_ccu.game_id").alias("GAME_ID"), + lit("{{ collect_time }}").alias("COLLECT_TIME"), + col("raw_game_ccu.player_count").alias("GAME_CCU"), +) + +dynamic_frame = DynamicFrame.fromDF(df, glueContext, "dynamic_frame") + +# Parquet으로 변환하여 S3에 저장 +glueContext.write_dynamic_frame.from_options( + frame=dynamic_frame, + connection_type="s3", + connection_options={"path": "{{ output_path }}"}, + format="parquet", + transformation_ctx="dynamic_frame", +) + + +# Job Bookmark의 상태를 최종적으로 커밋 +job.commit() From c2abca1041ed762b25ae2fa8e1a3420039be5780 Mon Sep 17 00:00:00 2001 From: mediwind <48349059+mediwind@users.noreply.github.com> Date: Fri, 23 Feb 2024 18:21:42 +0900 Subject: [PATCH 154/249] [fix] DAG time fix --- dags/glue/game_ccu.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dags/glue/game_ccu.py b/dags/glue/game_ccu.py index 5557d7c..353ab7b 100644 --- a/dags/glue/game_ccu.py +++ b/dags/glue/game_ccu.py @@ -50,7 +50,7 @@ def upload_rendered_script_to_s3( year = "{{ data_interval_end.in_timezone('Asia/Seoul').year }}" month = "{{ data_interval_end.in_timezone('Asia/Seoul').month }}" day = "{{ data_interval_end.in_timezone('Asia/Seoul').day }}" - hour = "{{ (data_interval_end - macros.timedelta(hours=1)).in_timezone('Asia/Seoul') }}" # before 1 hour + hour = "{{ (data_interval_end - macros.timedelta(hours=1)).in_timezone('Asia/Seoul').hour }}" # before 1 hour upload_script = PythonOperator( task_id="upload_script_to_s3", From 007fc1d64d73010ce7c52b06b341fd8b2dd80061 Mon Sep 17 00:00:00 2001 From: mediwind <48349059+mediwind@users.noreply.github.com> Date: Fri, 23 Feb 2024 18:35:17 +0900 Subject: [PATCH 155/249] [fix] remove region_name --- dags/glue/game_ccu.py | 2 +- dags/glue/game_price.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dags/glue/game_ccu.py b/dags/glue/game_ccu.py index 353ab7b..b05ab26 100644 --- a/dags/glue/game_ccu.py +++ b/dags/glue/game_ccu.py @@ -83,7 +83,7 @@ def upload_rendered_script_to_s3( # Job ID extracted from previous Glue Job Operator task run_id=run_glue_job.output, verbose=True, # prints glue job logs in airflow logs - region_name="ap-northeast-2", + # region_name="ap-northeast-2", aws_conn_id="aws_conn_id", ) diff --git a/dags/glue/game_price.py b/dags/glue/game_price.py index 6ed6b01..213e8b9 100644 --- a/dags/glue/game_price.py +++ b/dags/glue/game_price.py @@ -83,7 +83,7 @@ def upload_rendered_script_to_s3( # Job ID extracted from previous Glue Job Operator task run_id=run_glue_job.output, verbose=True, # prints glue job logs in airflow logs - region_name="ap-northeast-2", + # region_name="ap-northeast-2", aws_conn_id="aws_conn_id", ) From 72ba984d60c85ad979b8e8680d217664d873d37f Mon Sep 17 00:00:00 2001 From: poriz Date: Sat, 24 Feb 2024 12:22:10 +0900 Subject: [PATCH 156/249] [feat] live_viewer_template.py change code, add platform --- dags/glue/glue_airflow.py | 2 - .../glue&athena/live_viewer_template.py | 37 ++++++++++++++----- 2 files changed, 27 insertions(+), 12 deletions(-) diff --git a/dags/glue/glue_airflow.py b/dags/glue/glue_airflow.py index 7c0a4f2..f893557 100644 --- a/dags/glue/glue_airflow.py +++ b/dags/glue/glue_airflow.py @@ -40,9 +40,7 @@ def upload_rendered_script_to_s3( "retry_delay": timedelta(minutes=5), }, schedule_interval="0 * * * *", - tags=["glue", "streaming"], - catchup=False, ) as dag: diff --git a/dataCollector/glue&athena/live_viewer_template.py b/dataCollector/glue&athena/live_viewer_template.py index fb36b84..5348cb7 100644 --- a/dataCollector/glue&athena/live_viewer_template.py +++ b/dataCollector/glue&athena/live_viewer_template.py @@ -35,25 +35,43 @@ # chzzk_source.printSchema() chzzk_df = chzzk_source.select( col("col.streamer_id").alias("STREAMER_ID"), - col("col.chzzk_s_id").alias("CHZ_STEAMER_ID"), - col("col.content.liveTitle").alias("CHZ_BROADCAST_TITLE"), - col("col.content.liveCategoryValue").alias("CHZ_GAME_CODE"), - col("col.content.concurrentUserCount").alias("CHZ_VIEWER_NUM"), + col("col.content.liveID").alias("BROADCAST_ID"), + col("col.content.liveTitle").alias("BROADCAST_TITLE"), + col("col.content.liveCategoryValue").alias("GAME_CODE"), + col("col.content.concurrentUserCount").alias("VIEWER_NUM"), ) +# add platform +chzzk_df = chzzk_df.withColumn("PLATFORM", lit("chzzk")) # chzzk_df.show() # afreeca_source.printSchema() afreeca_df = afreeca_source.select( col("col.streamer_id").alias("STREAMER_ID"), - col("col.afc_s_id").alias("AFC_STEAMER_ID"), col("col.live_status.BNO").alias("BROADCAST_ID"), - col("col.live_status.TITLE").alias("AFC_BROADCAST_TITLE"), - col("col.live_status.CATE").alias("AFC_GAME_CODE"), - col("col.broad_info.broad.current_sum_viewer").alias("AFC_VIEWER_NUM"), + col("col.live_status.TITLE").alias("BROADCAST_TITLE"), + col("col.live_status.CATE").alias("GAME_CODE"), + col("col.broad_info.broad.current_sum_viewer").alias("VIEWER_NUM"), ) +afreeca_df = afreeca_df.withColumn("PLATFORM", lit("afreeca")) # afreeca_df.show(truncate=False) -result_df = chzzk_df.join(afreeca_df, "STREAMER_ID", "outer") + +result_df = chzzk_df.join( + afreeca_df, + [ + "STREAMER_ID", + "BROADCAST_ID", + "BROADCAST_TITLE", + "GAME_CODE", + "PLATFORM", + "VIEWER_NUM", + ], + "outer", +) + +# 스키마 정보를 로깅 +print("Schema Information:") +result_df.printSchema() dynamicframe = DynamicFrame.fromDF(result_df, glueContext, "dynamicframe") @@ -67,6 +85,5 @@ transformation_ctx="datasource", ) - # Job Bookmark의 상태를 최종적으로 커밋 job.commit() From 62954ee870f5558519f28090b670baab30094f54 Mon Sep 17 00:00:00 2001 From: poriz Date: Sat, 24 Feb 2024 12:46:17 +0900 Subject: [PATCH 157/249] [feat] add liveid check again --- dags/streaming/stream_data_raw.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/dags/streaming/stream_data_raw.py b/dags/streaming/stream_data_raw.py index 1e40402..1cbad14 100644 --- a/dags/streaming/stream_data_raw.py +++ b/dags/streaming/stream_data_raw.py @@ -1,3 +1,4 @@ +import time from datetime import datetime, timedelta import json @@ -55,6 +56,9 @@ def chzzk_raw(current_time, **kwargs): if res.status_code == 200: live_data = res.json() + if live_data["content"]["liveId"]: + time.sleep(5) + live_data = requests.get(f"https://api.chzzk.naver.com/service/v2/channels/{id}/live-detail").json() try: live = live_data["content"]["status"] if live == "OPEN": From 35247e7148109eadea928c5a1cd0fc6869e974fb Mon Sep 17 00:00:00 2001 From: poriz Date: Sat, 24 Feb 2024 12:57:34 +0900 Subject: [PATCH 158/249] [hotfix] null check --- dags/streaming/stream_data_raw.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dags/streaming/stream_data_raw.py b/dags/streaming/stream_data_raw.py index 1cbad14..21210aa 100644 --- a/dags/streaming/stream_data_raw.py +++ b/dags/streaming/stream_data_raw.py @@ -56,7 +56,7 @@ def chzzk_raw(current_time, **kwargs): if res.status_code == 200: live_data = res.json() - if live_data["content"]["liveId"]: + if not live_data["content"]["liveId"]: time.sleep(5) live_data = requests.get(f"https://api.chzzk.naver.com/service/v2/channels/{id}/live-detail").json() try: From 5a7b7f9609be6f3b9fbbc9612d382647dcaa8417 Mon Sep 17 00:00:00 2001 From: srlee056 Date: Sat, 24 Feb 2024 17:29:06 +0900 Subject: [PATCH 159/249] [feat]: dag for getting banners of streamers --- dags/streaming/streamers_banner.py | 125 +++++++++++++++++++++++++++++ 1 file changed, 125 insertions(+) create mode 100644 dags/streaming/streamers_banner.py diff --git a/dags/streaming/streamers_banner.py b/dags/streaming/streamers_banner.py new file mode 100644 index 0000000..e3bd7a9 --- /dev/null +++ b/dags/streaming/streamers_banner.py @@ -0,0 +1,125 @@ +from datetime import datetime, timedelta + +import logging +import requests + +import slack + +from requests.exceptions import RequestException + +from airflow import DAG +from airflow.operators.python import PythonOperator +from airflow.providers.mysql.hooks.mysql import MySqlHook +from airflow.exceptions import AirflowException + + +# get streamer_list in rds +def get_s_list(**kwargs): + # RDS 연결 설정 + mysql_hook = MySqlHook(mysql_conn_id="aws_rds_conn_id") + query = "SELECT STREAMER_ID, CHZ_ID, AFC_ID FROM STREAMER_INFO;" + try: + result = mysql_hook.get_records(query) + chzzk = [(row[0], row[1]) for row in result if row[1]] + afc = [(row[0], row[2]) for row in result if row[2]] + except Exception as e: + logging.error(f"Error occurred while fetching streamer list: {e}") + raise AirflowException("Failed to fetch streamer list from RDS.") + else: + kwargs["ti"].xcom_push(key="chzzk", value=chzzk) + kwargs["ti"].xcom_push(key="afc", value=afc) + + +def chzzk_banner(**kwargs): + chzzk_ids = kwargs["ti"].xcom_pull(key="chzzk", task_ids="get_s_list_task") + mysql_hook = MySqlHook(mysql_conn_id="aws_rds_conn_id") + + for s_id, chzzk_id in chzzk_ids: + try: + res = requests.get( + f"https://api.chzzk.naver.com/service/v1/channels/{chzzk_id}" + ) + res.raise_for_status() # Raises an HTTPError if the HTTP request returned an unsuccessful status code. + banner_url = res.json()["content"]["channelImageUrl"] + + update_stmt = """ + UPDATE STREAMER_INFO + SET CHZ_BANNER_URL = %s + WHERE CHZ_ID = %s + """ + mysql_hook.run(update_stmt, parameters=(banner_url, chzzk_id)) + except RequestException as e: + logging.error(f"Request failed: {e}") + except KeyError as e: + logging.error(f"Key error: {e}") + except Exception as e: + logging.error(f"Unexpected error: {e}") + raise AirflowException( + f"Failed to update CHZ_BANNER_URL for CHZ_ID {chzzk_id}" + ) + + +def afreeca_banner(**kwargs): + afreeca_ids = kwargs["ti"].xcom_pull(key="afc", task_ids="get_s_list_task") + mysql_hook = MySqlHook(mysql_conn_id="aws_rds_conn_id") + headers = { + "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36", + } + + for s_id, bjid in afreeca_ids: + try: + res = requests.get( + f"https://bjapi.afreecatv.com/api/{bjid}/station", headers=headers + ) + res.raise_for_status() + banner_url = f'https:{res.json().get("profile_image")}' + + update_stmt = """ + UPDATE STREAMER_INFO + SET AFC_BANNER_URL = %s + WHERE AFC_ID = %s + """ + mysql_hook.run(update_stmt, parameters=(banner_url, bjid)) + except RequestException as e: + logging.error(f"Request failed: {e}") + except KeyError as e: + logging.error(f"Key error: {e}") + except Exception as e: + logging.error(f"Unexpected error: {e}") + raise AirflowException(f"Failed to update AFC_BANNER_URL for AFC_ID {bjid}") + + +# dag codes +with DAG( + "streamer_banner_raw", + default_args={ + "owner": "airflow", + "depends_on_past": False, + "start_date": datetime(2024, 1, 17), + "retries": 1, + "retry_delay": timedelta(minutes=5), + }, + schedule_interval="@once", + tags=["Streamer", "banner"], + catchup=False, +) as dag: + + # load + + task_get_s_list = PythonOperator( + task_id="get_s_list_task", + python_callable=get_s_list, + on_failure_callback=slack.on_failure_callback, + ) + task_raw_chzzk = PythonOperator( + task_id="chzzk_raw_task", + python_callable=chzzk_banner, + on_failure_callback=slack.on_failure_callback, + ) + task_raw_afreeca = PythonOperator( + task_id="afreeca_raw_task", + python_callable=afreeca_banner, + on_failure_callback=slack.on_failure_callback, + ) + +task_get_s_list >> [task_raw_chzzk, task_raw_afreeca] From e09d2253b69c56c9ab7a3c71808b750e3cd40828 Mon Sep 17 00:00:00 2001 From: srlee056 Date: Sat, 24 Feb 2024 17:40:05 +0900 Subject: [PATCH 160/249] [feat]: change airflow image to 3.11 --- Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index b87cd74..ca6e9be 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ # 기본 이미지 지정. 버전은 2.7.2 -FROM apache/airflow:2.7.2 +FROM apache/airflow:2.7.2-python3.11 # root 사용자로 전환 (필요한 경우) USER root @@ -10,4 +10,4 @@ RUN apt-get update && \ vim \ && rm -rf /var/lib/apt/lists/* -# 이후 필요한 작업 수행. 예를 들어, 환경 설정 변경, 파일 복사 등 \ No newline at end of file +# 이후 필요한 작업 수행. 예를 들어, 환경 설정 변경, 파일 복사 등 From 79c799ac10cb048f1b5f1907561660aa6fd369ba Mon Sep 17 00:00:00 2001 From: Kangho-Lee Date: Thu, 22 Feb 2024 21:40:44 +0900 Subject: [PATCH 161/249] Feat: Add templates of github and Code-owners --- .github/CODEOWNERS | 1 + .github/ISSUE_TEMPLATE/bug_issue_template.md | 16 ++++++++++++++++ .../ISSUE_TEMPLATE/feature_issue_template.md | 16 ++++++++++++++++ .github/pull_request_template.md | 17 +++++++++++++++++ 4 files changed, 50 insertions(+) create mode 100644 .github/CODEOWNERS create mode 100644 .github/ISSUE_TEMPLATE/bug_issue_template.md create mode 100644 .github/ISSUE_TEMPLATE/feature_issue_template.md create mode 100644 .github/pull_request_template.md diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 0000000..f90d76e --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1 @@ +* @zizzic/programmers \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/bug_issue_template.md b/.github/ISSUE_TEMPLATE/bug_issue_template.md new file mode 100644 index 0000000..388980d --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_issue_template.md @@ -0,0 +1,16 @@ +--- +name: 버그 관련 이슈 템플릿 +about: 버그와 관련된 이슈 +title: "[BUG] XXXXX" +labels: bug +assignees: '' + +--- + + +### Description + diff --git a/.github/ISSUE_TEMPLATE/feature_issue_template.md b/.github/ISSUE_TEMPLATE/feature_issue_template.md new file mode 100644 index 0000000..3f32eef --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_issue_template.md @@ -0,0 +1,16 @@ +--- +name: 새로운 기능 이슈 템플릿 +about: 새로운 기능 이슈와 관련된 템플릿 +title: "[FEAT] XXXXXXX" +labels: enhancement +assignees: '' + +--- + + +### Description + diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 0000000..6c36d67 --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,17 @@ + +### 작업 분류 + +- [x] 신규 기능 +- [ ] 기능 수정 +- [ ] 버그 수정 +- [ ] 프로젝트 구조 변경 + +### 작업 상세 내용 + + + +### 생각해볼 문제 + + + +resolve #{issue number} \ No newline at end of file From 8051486480ef518d1c57136a8c47b52458a41c19 Mon Sep 17 00:00:00 2001 From: srlee056 Date: Sat, 24 Feb 2024 18:51:53 +0900 Subject: [PATCH 162/249] [feat]: dag for getting banners of steam games --- dags/game/steam_games_banner.py | 83 +++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 dags/game/steam_games_banner.py diff --git a/dags/game/steam_games_banner.py b/dags/game/steam_games_banner.py new file mode 100644 index 0000000..147ed54 --- /dev/null +++ b/dags/game/steam_games_banner.py @@ -0,0 +1,83 @@ +from datetime import datetime, timedelta + +import requests + +import slack +import time + +from airflow import DAG +from airflow.providers.mysql.hooks.mysql import MySqlHook +from airflow.models import Variable +from airflow.operators.python import PythonOperator +from requests.exceptions import RequestException + + +def get_game_info_from_api(appid, params): + session = requests.Session() # 세션을 사용하여 연결 재사용 + url = f"http://store.steampowered.com/api/appdetails?appids={appid}&cc=kr" + + for _ in range(3): # 최대 3번 재시도 + try: + response = session.get(url, params=params) + response.raise_for_status() # 상태 코드가 200이 아니면 예외 발생 + data = response.json() + if data[appid]["success"]: + return data[appid]["data"]["header_image"] + except (RequestException, KeyError): + time.sleep(90) # 재시도 전 90초 대기 + return None # 3번 시도 후 성공하지 못하면 None 반환 + + +def update_banner_url_in_db(appid, banner_url): + mysql_hook = MySqlHook(mysql_conn_id="aws_rds_conn_id") + update_stmt = """ + UPDATE GAME_INFO + SET GAME_BANNER_URL = %s + WHERE GAME_ID = %s + """ + mysql_hook.run(update_stmt, parameters=(banner_url, appid)) + + +def get_rds_game_info(): + mysql_hook = MySqlHook(mysql_conn_id="aws_rds_conn_id") + query = """ + SELECT game_id, game_nm + FROM GAME_INFO + WHERE IS_TOP300 IN ('T', 'F'); + """ + records = mysql_hook.get_records(query) + + api_key = Variable.get("steam_api_key") + params = {"key": api_key, "json": "1"} + + for appid, name in records: + banner_url = get_game_info_from_api(str(appid), params) + if banner_url: + update_banner_url_in_db(str(appid), banner_url) + else: + print(f"Failed to get banner for {name} (AppID: {appid})") + + +# dag codes +with DAG( + "steam_game_banner_raw", + default_args={ + "owner": "airflow", + "depends_on_past": False, + "start_date": datetime(2024, 1, 17), + "retries": 1, + "retry_delay": timedelta(minutes=5), + }, + schedule_interval="@once", + tags=["game", "banner"], + catchup=False, +) as dag: + + get_steam_game_banner = PythonOperator( + task_id="get_steam_game_banner_task", + python_callable=get_rds_game_info, + on_failure_callback=slack.on_failure_callback, + ) + + +get_steam_game_banner From c24dbec850a17b439c65a2e2729f291386579e47 Mon Sep 17 00:00:00 2001 From: srlee056 Date: Sat, 24 Feb 2024 19:04:32 +0900 Subject: [PATCH 163/249] [fix]:fix non iterable and try-else warnings --- dags/game/steam_games_banner.py | 2 +- dags/streaming/streamers_banner.py | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/dags/game/steam_games_banner.py b/dags/game/steam_games_banner.py index 147ed54..960e335 100644 --- a/dags/game/steam_games_banner.py +++ b/dags/game/steam_games_banner.py @@ -45,7 +45,7 @@ def get_rds_game_info(): FROM GAME_INFO WHERE IS_TOP300 IN ('T', 'F'); """ - records = mysql_hook.get_records(query) + records = mysql_hook.get_records(query) or [] api_key = Variable.get("steam_api_key") params = {"key": api_key, "json": "1"} diff --git a/dags/streaming/streamers_banner.py b/dags/streaming/streamers_banner.py index e3bd7a9..5beba48 100644 --- a/dags/streaming/streamers_banner.py +++ b/dags/streaming/streamers_banner.py @@ -19,15 +19,15 @@ def get_s_list(**kwargs): mysql_hook = MySqlHook(mysql_conn_id="aws_rds_conn_id") query = "SELECT STREAMER_ID, CHZ_ID, AFC_ID FROM STREAMER_INFO;" try: - result = mysql_hook.get_records(query) + result = mysql_hook.get_records(query) or [] chzzk = [(row[0], row[1]) for row in result if row[1]] afc = [(row[0], row[2]) for row in result if row[2]] except Exception as e: logging.error(f"Error occurred while fetching streamer list: {e}") raise AirflowException("Failed to fetch streamer list from RDS.") - else: - kwargs["ti"].xcom_push(key="chzzk", value=chzzk) - kwargs["ti"].xcom_push(key="afc", value=afc) + + kwargs["ti"].xcom_push(key="chzzk", value=chzzk) + kwargs["ti"].xcom_push(key="afc", value=afc) def chzzk_banner(**kwargs): From d9f4a5df6f04859c9efd9c2ea833d34e6069c39f Mon Sep 17 00:00:00 2001 From: lyh Date: Sat, 24 Feb 2024 19:53:50 +0900 Subject: [PATCH 164/249] [feat] make Glue DAG for game_rating --- dags/glue/game_ccu.py | 2 +- dags/glue/game_price.py | 2 +- dags/glue/game_rating.py | 90 +++++++++++++++++++ .../glue&athena/glue_game_ccu_template.py | 3 +- .../glue&athena/glue_game_rating_template.py | 59 ++++++++++++ 5 files changed, 152 insertions(+), 4 deletions(-) create mode 100644 dags/glue/game_rating.py create mode 100644 dataCollector/glue&athena/glue_game_rating_template.py diff --git a/dags/glue/game_ccu.py b/dags/glue/game_ccu.py index b05ab26..1e8ab01 100644 --- a/dags/glue/game_ccu.py +++ b/dags/glue/game_ccu.py @@ -82,7 +82,7 @@ def upload_rendered_script_to_s3( job_name="de-2-1_game_ccu", # Job ID extracted from previous Glue Job Operator task run_id=run_glue_job.output, - verbose=True, # prints glue job logs in airflow logs + verbose=False, # prints glue job logs in airflow logs # region_name="ap-northeast-2", aws_conn_id="aws_conn_id", ) diff --git a/dags/glue/game_price.py b/dags/glue/game_price.py index 213e8b9..3d6d679 100644 --- a/dags/glue/game_price.py +++ b/dags/glue/game_price.py @@ -82,7 +82,7 @@ def upload_rendered_script_to_s3( job_name="de-2-1_game_price", # Job ID extracted from previous Glue Job Operator task run_id=run_glue_job.output, - verbose=True, # prints glue job logs in airflow logs + verbose=False, # prints glue job logs in airflow logs # region_name="ap-northeast-2", aws_conn_id="aws_conn_id", ) diff --git a/dags/glue/game_rating.py b/dags/glue/game_rating.py new file mode 100644 index 0000000..5ce34f7 --- /dev/null +++ b/dags/glue/game_rating.py @@ -0,0 +1,90 @@ +from datetime import datetime, timedelta + +from airflow import DAG +from airflow.operators.python import PythonOperator +from airflow.providers.amazon.aws.operators.glue import GlueJobOperator +from airflow.providers.amazon.aws.hooks.s3 import S3Hook + +from airflow.providers.amazon.aws.sensors.glue import GlueJobSensor +from jinja2 import Template + + +def upload_rendered_script_to_s3( + bucket_name, template_s3_key, rendered_s3_key, aws_conn_id, **kwargs +): + # S3Hook 인스턴스 생성 + s3_hook = S3Hook(aws_conn_id=aws_conn_id) + + # S3에서 Jinja 템플릿 파일 읽기 + template_str = s3_hook.read_key(template_s3_key, bucket_name) + + # Jinja 템플릿 렌더링 + template = Template(template_str) + rendered_script = template.render(**kwargs) + + # 렌더링된 스크립트를 S3에 업로드 + s3_hook.load_string( + string_data=rendered_script, + bucket_name=bucket_name, + key=rendered_s3_key, + replace=True, + ) + + +with DAG( + "glue_game_rating", + default_args={ + "owner": "airflow", + "depends_on_past": False, + "start_date": datetime(2024, 2, 22), + "retries": 0, + "retry_delay": timedelta(minutes=5), + }, + schedule_interval="0 1 * * *", + tags=["glue", "Game_Rating"], + catchup=False, +) as dag: + + bucket_name = "de-2-1-bucket" + current_time = "{{ data_interval_end.in_timezone('Asia/Seoul').strftime('%Y-%m-%dT%H:%M:%S+00:00') }}" + year = "{{ data_interval_end.in_timezone('Asia/Seoul').year }}" + month = "{{ data_interval_end.in_timezone('Asia/Seoul').month }}" + day = "{{ data_interval_end.in_timezone('Asia/Seoul').day }}" + hour = "{{ (data_interval_end - macros.timedelta(hours=1)).in_timezone('Asia/Seoul') }}" # before 1 hour + + upload_script = PythonOperator( + task_id="upload_script_to_s3", + python_callable=upload_rendered_script_to_s3, + op_kwargs={ + "bucket_name": bucket_name, + "aws_conn_id": "aws_conn_id", + "template_s3_key": "source/script/glue_game_rating_template.py", + "rendered_s3_key": "source/script/glue_game_rating_script.py", + # into template + "input_path": f"s3://de-2-1-bucket/source/json/table_name=raw_game_rating/year={year}/month={month}/day={day}/", + "output_path": f"s3://de-2-1-bucket/source/parquet/table_name=raw_game_rating/year={year}/month={month}/day={day}/", + "collect_date": f"{year}-{month}-{day}", + }, + ) + + run_glue_job = GlueJobOperator( + task_id="run_glue_job", + job_name="de-2-1_game_rating", + script_location="s3://de-2-1-bucket/source/script/glue_game_rating_script.py", + aws_conn_id="aws_conn_id", + region_name="ap-northeast-2", + iam_role_name="AWSGlueServiceRole-crawler", + dag=dag, + ) + + wait_for_job = GlueJobSensor( # trigger + task_id="wait_for_job_game_rating_glue_job", # task_id 직관적으로 알 수 있도록 변경 권장 + job_name="de-2-1_game_rating", + # Job ID extracted from previous Glue Job Operator task + run_id=run_glue_job.output, + verbose=False, # prints glue job logs in airflow logs + # region_name="ap-northeast-2", + aws_conn_id="aws_conn_id", + ) + +upload_script >> run_glue_job >> wait_for_job diff --git a/dataCollector/glue&athena/glue_game_ccu_template.py b/dataCollector/glue&athena/glue_game_ccu_template.py index ac980e5..1f8c68d 100644 --- a/dataCollector/glue&athena/glue_game_ccu_template.py +++ b/dataCollector/glue&athena/glue_game_ccu_template.py @@ -1,8 +1,7 @@ import sys from pyspark.context import SparkContext -from pyspark.sql.functions import col, lit, when, udf, explode -from pyspark.sql.types import StringType +from pyspark.sql.functions import col, lit, explode from awsglue.context import GlueContext from awsglue.dynamicframe import DynamicFrame diff --git a/dataCollector/glue&athena/glue_game_rating_template.py b/dataCollector/glue&athena/glue_game_rating_template.py new file mode 100644 index 0000000..802d947 --- /dev/null +++ b/dataCollector/glue&athena/glue_game_rating_template.py @@ -0,0 +1,59 @@ +import sys + +from pyspark.context import SparkContext +from pyspark.sql.functions import col, lit, explode + +from awsglue.context import GlueContext +from awsglue.dynamicframe import DynamicFrame +from awsglue.job import Job +from awsglue.utils import getResolvedOptions + +# SparkContext와 GlueContext 초기화 +sc = SparkContext() +glueContext = GlueContext(sc) +spark = glueContext.spark_session + +# Job 초기화 (Job Bookmark 활성화 포함) +job = Job(glueContext) +args = getResolvedOptions(sys.argv, ["JOB_NAME"]) +job.init(args["JOB_NAME"], args) + +# S3에서 데이터를 읽어오는 부분 +datasource = glueContext.create_dynamic_frame.from_options( + "s3", + {"paths": ["{{ input_path }}"], "recurse": True}, + format="json", + transformation_ctx="datasource", +) + +# 전처리를 위해 DF로 변환하기 +game_rating_datasource = datasource.toDF() + +# 최상위 레벨의 key를 중심으로 explode하기 +df = game_rating_datasource.select( + explode(game_rating_datasource.raw_game_rating).alias("raw_game_rating") +) + +df = df.select( + col("raw_game_rating.game_id").alias("GAME_ID"), + lit("{{ collect_time }}").alias("COLLECT_DATE"), + col("raw_game_rating.recent_positive_num").alias("RECENT_POSITIVE_NUM"), + col("raw_game_rating.recent_positive_percent").alias("RECENT_POSITIVE_PERCENT"), + col("raw_game_rating.all_positive_num").alias("ALL_POSITIVE_NUM"), + col("raw_game_rating.all_positive_percent").alias("ALL_POSITIVE_PERCENT"), +) + +dynamic_frame = DynamicFrame.fromDF(df, glueContext, "dynamic_frame") + +# Parquet으로 변환하여 S3에 저장 +glueContext.write_dynamic_frame.from_options( + frame=dynamic_frame, + connection_type="s3", + connection_options={"path": "{{ output_path }}"}, + format="parquet", + transformation_ctx="dynamic_frame", +) + + +# Job Bookmark의 상태를 최종적으로 커밋 +job.commit() From 19511e826273fcf8190e2f91c84f229687a55c76 Mon Sep 17 00:00:00 2001 From: lyh Date: Sat, 24 Feb 2024 19:54:16 +0900 Subject: [PATCH 165/249] Revert "[feat] make Glue DAG for game_rating" This reverts commit d9f4a5df6f04859c9efd9c2ea833d34e6069c39f. --- dags/glue/game_ccu.py | 2 +- dags/glue/game_price.py | 2 +- dags/glue/game_rating.py | 90 ------------------- .../glue&athena/glue_game_ccu_template.py | 3 +- .../glue&athena/glue_game_rating_template.py | 59 ------------ 5 files changed, 4 insertions(+), 152 deletions(-) delete mode 100644 dags/glue/game_rating.py delete mode 100644 dataCollector/glue&athena/glue_game_rating_template.py diff --git a/dags/glue/game_ccu.py b/dags/glue/game_ccu.py index 1e8ab01..b05ab26 100644 --- a/dags/glue/game_ccu.py +++ b/dags/glue/game_ccu.py @@ -82,7 +82,7 @@ def upload_rendered_script_to_s3( job_name="de-2-1_game_ccu", # Job ID extracted from previous Glue Job Operator task run_id=run_glue_job.output, - verbose=False, # prints glue job logs in airflow logs + verbose=True, # prints glue job logs in airflow logs # region_name="ap-northeast-2", aws_conn_id="aws_conn_id", ) diff --git a/dags/glue/game_price.py b/dags/glue/game_price.py index 3d6d679..213e8b9 100644 --- a/dags/glue/game_price.py +++ b/dags/glue/game_price.py @@ -82,7 +82,7 @@ def upload_rendered_script_to_s3( job_name="de-2-1_game_price", # Job ID extracted from previous Glue Job Operator task run_id=run_glue_job.output, - verbose=False, # prints glue job logs in airflow logs + verbose=True, # prints glue job logs in airflow logs # region_name="ap-northeast-2", aws_conn_id="aws_conn_id", ) diff --git a/dags/glue/game_rating.py b/dags/glue/game_rating.py deleted file mode 100644 index 5ce34f7..0000000 --- a/dags/glue/game_rating.py +++ /dev/null @@ -1,90 +0,0 @@ -from datetime import datetime, timedelta - -from airflow import DAG -from airflow.operators.python import PythonOperator -from airflow.providers.amazon.aws.operators.glue import GlueJobOperator -from airflow.providers.amazon.aws.hooks.s3 import S3Hook - -from airflow.providers.amazon.aws.sensors.glue import GlueJobSensor -from jinja2 import Template - - -def upload_rendered_script_to_s3( - bucket_name, template_s3_key, rendered_s3_key, aws_conn_id, **kwargs -): - # S3Hook 인스턴스 생성 - s3_hook = S3Hook(aws_conn_id=aws_conn_id) - - # S3에서 Jinja 템플릿 파일 읽기 - template_str = s3_hook.read_key(template_s3_key, bucket_name) - - # Jinja 템플릿 렌더링 - template = Template(template_str) - rendered_script = template.render(**kwargs) - - # 렌더링된 스크립트를 S3에 업로드 - s3_hook.load_string( - string_data=rendered_script, - bucket_name=bucket_name, - key=rendered_s3_key, - replace=True, - ) - - -with DAG( - "glue_game_rating", - default_args={ - "owner": "airflow", - "depends_on_past": False, - "start_date": datetime(2024, 2, 22), - "retries": 0, - "retry_delay": timedelta(minutes=5), - }, - schedule_interval="0 1 * * *", - tags=["glue", "Game_Rating"], - catchup=False, -) as dag: - - bucket_name = "de-2-1-bucket" - current_time = "{{ data_interval_end.in_timezone('Asia/Seoul').strftime('%Y-%m-%dT%H:%M:%S+00:00') }}" - year = "{{ data_interval_end.in_timezone('Asia/Seoul').year }}" - month = "{{ data_interval_end.in_timezone('Asia/Seoul').month }}" - day = "{{ data_interval_end.in_timezone('Asia/Seoul').day }}" - hour = "{{ (data_interval_end - macros.timedelta(hours=1)).in_timezone('Asia/Seoul') }}" # before 1 hour - - upload_script = PythonOperator( - task_id="upload_script_to_s3", - python_callable=upload_rendered_script_to_s3, - op_kwargs={ - "bucket_name": bucket_name, - "aws_conn_id": "aws_conn_id", - "template_s3_key": "source/script/glue_game_rating_template.py", - "rendered_s3_key": "source/script/glue_game_rating_script.py", - # into template - "input_path": f"s3://de-2-1-bucket/source/json/table_name=raw_game_rating/year={year}/month={month}/day={day}/", - "output_path": f"s3://de-2-1-bucket/source/parquet/table_name=raw_game_rating/year={year}/month={month}/day={day}/", - "collect_date": f"{year}-{month}-{day}", - }, - ) - - run_glue_job = GlueJobOperator( - task_id="run_glue_job", - job_name="de-2-1_game_rating", - script_location="s3://de-2-1-bucket/source/script/glue_game_rating_script.py", - aws_conn_id="aws_conn_id", - region_name="ap-northeast-2", - iam_role_name="AWSGlueServiceRole-crawler", - dag=dag, - ) - - wait_for_job = GlueJobSensor( # trigger - task_id="wait_for_job_game_rating_glue_job", # task_id 직관적으로 알 수 있도록 변경 권장 - job_name="de-2-1_game_rating", - # Job ID extracted from previous Glue Job Operator task - run_id=run_glue_job.output, - verbose=False, # prints glue job logs in airflow logs - # region_name="ap-northeast-2", - aws_conn_id="aws_conn_id", - ) - -upload_script >> run_glue_job >> wait_for_job diff --git a/dataCollector/glue&athena/glue_game_ccu_template.py b/dataCollector/glue&athena/glue_game_ccu_template.py index 1f8c68d..ac980e5 100644 --- a/dataCollector/glue&athena/glue_game_ccu_template.py +++ b/dataCollector/glue&athena/glue_game_ccu_template.py @@ -1,7 +1,8 @@ import sys from pyspark.context import SparkContext -from pyspark.sql.functions import col, lit, explode +from pyspark.sql.functions import col, lit, when, udf, explode +from pyspark.sql.types import StringType from awsglue.context import GlueContext from awsglue.dynamicframe import DynamicFrame diff --git a/dataCollector/glue&athena/glue_game_rating_template.py b/dataCollector/glue&athena/glue_game_rating_template.py deleted file mode 100644 index 802d947..0000000 --- a/dataCollector/glue&athena/glue_game_rating_template.py +++ /dev/null @@ -1,59 +0,0 @@ -import sys - -from pyspark.context import SparkContext -from pyspark.sql.functions import col, lit, explode - -from awsglue.context import GlueContext -from awsglue.dynamicframe import DynamicFrame -from awsglue.job import Job -from awsglue.utils import getResolvedOptions - -# SparkContext와 GlueContext 초기화 -sc = SparkContext() -glueContext = GlueContext(sc) -spark = glueContext.spark_session - -# Job 초기화 (Job Bookmark 활성화 포함) -job = Job(glueContext) -args = getResolvedOptions(sys.argv, ["JOB_NAME"]) -job.init(args["JOB_NAME"], args) - -# S3에서 데이터를 읽어오는 부분 -datasource = glueContext.create_dynamic_frame.from_options( - "s3", - {"paths": ["{{ input_path }}"], "recurse": True}, - format="json", - transformation_ctx="datasource", -) - -# 전처리를 위해 DF로 변환하기 -game_rating_datasource = datasource.toDF() - -# 최상위 레벨의 key를 중심으로 explode하기 -df = game_rating_datasource.select( - explode(game_rating_datasource.raw_game_rating).alias("raw_game_rating") -) - -df = df.select( - col("raw_game_rating.game_id").alias("GAME_ID"), - lit("{{ collect_time }}").alias("COLLECT_DATE"), - col("raw_game_rating.recent_positive_num").alias("RECENT_POSITIVE_NUM"), - col("raw_game_rating.recent_positive_percent").alias("RECENT_POSITIVE_PERCENT"), - col("raw_game_rating.all_positive_num").alias("ALL_POSITIVE_NUM"), - col("raw_game_rating.all_positive_percent").alias("ALL_POSITIVE_PERCENT"), -) - -dynamic_frame = DynamicFrame.fromDF(df, glueContext, "dynamic_frame") - -# Parquet으로 변환하여 S3에 저장 -glueContext.write_dynamic_frame.from_options( - frame=dynamic_frame, - connection_type="s3", - connection_options={"path": "{{ output_path }}"}, - format="parquet", - transformation_ctx="dynamic_frame", -) - - -# Job Bookmark의 상태를 최종적으로 커밋 -job.commit() From c1483c7b5d58686388629d65661b31abc003d5f0 Mon Sep 17 00:00:00 2001 From: lyh Date: Sat, 24 Feb 2024 20:01:08 +0900 Subject: [PATCH 166/249] [feat] make Glue DAG for game_rating --- dags/glue/game_ccu.py | 2 +- dags/glue/game_price.py | 2 +- dags/glue/game_rating.py | 90 +++++++++++++++++++ dags/streaming/stream_data_raw.py | 4 +- .../glue&athena/glue_game_rating_template.py | 59 ++++++++++++ 5 files changed, 154 insertions(+), 3 deletions(-) create mode 100644 dags/glue/game_rating.py create mode 100644 dataCollector/glue&athena/glue_game_rating_template.py diff --git a/dags/glue/game_ccu.py b/dags/glue/game_ccu.py index b05ab26..1e8ab01 100644 --- a/dags/glue/game_ccu.py +++ b/dags/glue/game_ccu.py @@ -82,7 +82,7 @@ def upload_rendered_script_to_s3( job_name="de-2-1_game_ccu", # Job ID extracted from previous Glue Job Operator task run_id=run_glue_job.output, - verbose=True, # prints glue job logs in airflow logs + verbose=False, # prints glue job logs in airflow logs # region_name="ap-northeast-2", aws_conn_id="aws_conn_id", ) diff --git a/dags/glue/game_price.py b/dags/glue/game_price.py index 213e8b9..3d6d679 100644 --- a/dags/glue/game_price.py +++ b/dags/glue/game_price.py @@ -82,7 +82,7 @@ def upload_rendered_script_to_s3( job_name="de-2-1_game_price", # Job ID extracted from previous Glue Job Operator task run_id=run_glue_job.output, - verbose=True, # prints glue job logs in airflow logs + verbose=False, # prints glue job logs in airflow logs # region_name="ap-northeast-2", aws_conn_id="aws_conn_id", ) diff --git a/dags/glue/game_rating.py b/dags/glue/game_rating.py new file mode 100644 index 0000000..5ce34f7 --- /dev/null +++ b/dags/glue/game_rating.py @@ -0,0 +1,90 @@ +from datetime import datetime, timedelta + +from airflow import DAG +from airflow.operators.python import PythonOperator +from airflow.providers.amazon.aws.operators.glue import GlueJobOperator +from airflow.providers.amazon.aws.hooks.s3 import S3Hook + +from airflow.providers.amazon.aws.sensors.glue import GlueJobSensor +from jinja2 import Template + + +def upload_rendered_script_to_s3( + bucket_name, template_s3_key, rendered_s3_key, aws_conn_id, **kwargs +): + # S3Hook 인스턴스 생성 + s3_hook = S3Hook(aws_conn_id=aws_conn_id) + + # S3에서 Jinja 템플릿 파일 읽기 + template_str = s3_hook.read_key(template_s3_key, bucket_name) + + # Jinja 템플릿 렌더링 + template = Template(template_str) + rendered_script = template.render(**kwargs) + + # 렌더링된 스크립트를 S3에 업로드 + s3_hook.load_string( + string_data=rendered_script, + bucket_name=bucket_name, + key=rendered_s3_key, + replace=True, + ) + + +with DAG( + "glue_game_rating", + default_args={ + "owner": "airflow", + "depends_on_past": False, + "start_date": datetime(2024, 2, 22), + "retries": 0, + "retry_delay": timedelta(minutes=5), + }, + schedule_interval="0 1 * * *", + tags=["glue", "Game_Rating"], + catchup=False, +) as dag: + + bucket_name = "de-2-1-bucket" + current_time = "{{ data_interval_end.in_timezone('Asia/Seoul').strftime('%Y-%m-%dT%H:%M:%S+00:00') }}" + year = "{{ data_interval_end.in_timezone('Asia/Seoul').year }}" + month = "{{ data_interval_end.in_timezone('Asia/Seoul').month }}" + day = "{{ data_interval_end.in_timezone('Asia/Seoul').day }}" + hour = "{{ (data_interval_end - macros.timedelta(hours=1)).in_timezone('Asia/Seoul') }}" # before 1 hour + + upload_script = PythonOperator( + task_id="upload_script_to_s3", + python_callable=upload_rendered_script_to_s3, + op_kwargs={ + "bucket_name": bucket_name, + "aws_conn_id": "aws_conn_id", + "template_s3_key": "source/script/glue_game_rating_template.py", + "rendered_s3_key": "source/script/glue_game_rating_script.py", + # into template + "input_path": f"s3://de-2-1-bucket/source/json/table_name=raw_game_rating/year={year}/month={month}/day={day}/", + "output_path": f"s3://de-2-1-bucket/source/parquet/table_name=raw_game_rating/year={year}/month={month}/day={day}/", + "collect_date": f"{year}-{month}-{day}", + }, + ) + + run_glue_job = GlueJobOperator( + task_id="run_glue_job", + job_name="de-2-1_game_rating", + script_location="s3://de-2-1-bucket/source/script/glue_game_rating_script.py", + aws_conn_id="aws_conn_id", + region_name="ap-northeast-2", + iam_role_name="AWSGlueServiceRole-crawler", + dag=dag, + ) + + wait_for_job = GlueJobSensor( # trigger + task_id="wait_for_job_game_rating_glue_job", # task_id 직관적으로 알 수 있도록 변경 권장 + job_name="de-2-1_game_rating", + # Job ID extracted from previous Glue Job Operator task + run_id=run_glue_job.output, + verbose=False, # prints glue job logs in airflow logs + # region_name="ap-northeast-2", + aws_conn_id="aws_conn_id", + ) + +upload_script >> run_glue_job >> wait_for_job diff --git a/dags/streaming/stream_data_raw.py b/dags/streaming/stream_data_raw.py index 1cbad14..e55aa7c 100644 --- a/dags/streaming/stream_data_raw.py +++ b/dags/streaming/stream_data_raw.py @@ -58,7 +58,9 @@ def chzzk_raw(current_time, **kwargs): live_data = res.json() if live_data["content"]["liveId"]: time.sleep(5) - live_data = requests.get(f"https://api.chzzk.naver.com/service/v2/channels/{id}/live-detail").json() + live_data = requests.get( + f"https://api.chzzk.naver.com/service/v2/channels/{id}/live-detail" + ).json() try: live = live_data["content"]["status"] if live == "OPEN": diff --git a/dataCollector/glue&athena/glue_game_rating_template.py b/dataCollector/glue&athena/glue_game_rating_template.py new file mode 100644 index 0000000..802d947 --- /dev/null +++ b/dataCollector/glue&athena/glue_game_rating_template.py @@ -0,0 +1,59 @@ +import sys + +from pyspark.context import SparkContext +from pyspark.sql.functions import col, lit, explode + +from awsglue.context import GlueContext +from awsglue.dynamicframe import DynamicFrame +from awsglue.job import Job +from awsglue.utils import getResolvedOptions + +# SparkContext와 GlueContext 초기화 +sc = SparkContext() +glueContext = GlueContext(sc) +spark = glueContext.spark_session + +# Job 초기화 (Job Bookmark 활성화 포함) +job = Job(glueContext) +args = getResolvedOptions(sys.argv, ["JOB_NAME"]) +job.init(args["JOB_NAME"], args) + +# S3에서 데이터를 읽어오는 부분 +datasource = glueContext.create_dynamic_frame.from_options( + "s3", + {"paths": ["{{ input_path }}"], "recurse": True}, + format="json", + transformation_ctx="datasource", +) + +# 전처리를 위해 DF로 변환하기 +game_rating_datasource = datasource.toDF() + +# 최상위 레벨의 key를 중심으로 explode하기 +df = game_rating_datasource.select( + explode(game_rating_datasource.raw_game_rating).alias("raw_game_rating") +) + +df = df.select( + col("raw_game_rating.game_id").alias("GAME_ID"), + lit("{{ collect_time }}").alias("COLLECT_DATE"), + col("raw_game_rating.recent_positive_num").alias("RECENT_POSITIVE_NUM"), + col("raw_game_rating.recent_positive_percent").alias("RECENT_POSITIVE_PERCENT"), + col("raw_game_rating.all_positive_num").alias("ALL_POSITIVE_NUM"), + col("raw_game_rating.all_positive_percent").alias("ALL_POSITIVE_PERCENT"), +) + +dynamic_frame = DynamicFrame.fromDF(df, glueContext, "dynamic_frame") + +# Parquet으로 변환하여 S3에 저장 +glueContext.write_dynamic_frame.from_options( + frame=dynamic_frame, + connection_type="s3", + connection_options={"path": "{{ output_path }}"}, + format="parquet", + transformation_ctx="dynamic_frame", +) + + +# Job Bookmark의 상태를 최종적으로 커밋 +job.commit() From cfa93fa3117c4dba2bc81b609efc1fdc9d317ae5 Mon Sep 17 00:00:00 2001 From: poriz Date: Sat, 24 Feb 2024 20:02:45 +0900 Subject: [PATCH 167/249] [feat] live_viewer sensor add --- dags/glue/live_viewer.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/dags/glue/live_viewer.py b/dags/glue/live_viewer.py index 251621b..3127d69 100644 --- a/dags/glue/live_viewer.py +++ b/dags/glue/live_viewer.py @@ -4,6 +4,7 @@ from airflow.operators.python import PythonOperator from airflow.providers.amazon.aws.operators.glue import GlueJobOperator from airflow.providers.amazon.aws.hooks.s3 import S3Hook +from airflow.providers.amazon.aws.sensors.glue import GlueJobSensor from jinja2 import Template @@ -74,5 +75,15 @@ def upload_rendered_script_to_s3( iam_role_name="AWSGlueServiceRole-crawler", dag=dag, ) + wait_for_job = GlueJobSensor( # trigger + task_id="wait_for_job_live_viewer_job", # task_id 직관적으로 알 수 있도록 변경 권장 + job_name="de-2-1_live_viewer", + # Job ID extracted from previous Glue Job Operator task + run_id=run_glue_job.output, + verbose=True, # prints glue job logs in airflow logs + # region_name="ap-northeast-2", + aws_conn_id="aws_conn_id", + ) + -upload_script >> run_glue_job +upload_script >> run_glue_job >> wait_for_job From 2a465dd1078585adfeec6ed1b8388e10fd32c972 Mon Sep 17 00:00:00 2001 From: poriz Date: Sat, 24 Feb 2024 20:05:23 +0900 Subject: [PATCH 168/249] [feat] live_viewer sensor verbose=False --- dags/glue/live_viewer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dags/glue/live_viewer.py b/dags/glue/live_viewer.py index 3127d69..8522446 100644 --- a/dags/glue/live_viewer.py +++ b/dags/glue/live_viewer.py @@ -80,7 +80,7 @@ def upload_rendered_script_to_s3( job_name="de-2-1_live_viewer", # Job ID extracted from previous Glue Job Operator task run_id=run_glue_job.output, - verbose=True, # prints glue job logs in airflow logs + verbose=False, # prints glue job logs in airflow logs # region_name="ap-northeast-2", aws_conn_id="aws_conn_id", ) From 8baf39a89db249126e77d1f3e406feab2ba71675 Mon Sep 17 00:00:00 2001 From: poriz Date: Sat, 24 Feb 2024 20:30:41 +0900 Subject: [PATCH 169/249] [feat] live_viewer sensor add --- dags/glue/live_viewer.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/dags/glue/live_viewer.py b/dags/glue/live_viewer.py index 8522446..2251b54 100644 --- a/dags/glue/live_viewer.py +++ b/dags/glue/live_viewer.py @@ -80,8 +80,6 @@ def upload_rendered_script_to_s3( job_name="de-2-1_live_viewer", # Job ID extracted from previous Glue Job Operator task run_id=run_glue_job.output, - verbose=False, # prints glue job logs in airflow logs - # region_name="ap-northeast-2", aws_conn_id="aws_conn_id", ) From 94001d1e7e44b95928a422e733b05ab67c818faa Mon Sep 17 00:00:00 2001 From: lyh Date: Sat, 24 Feb 2024 20:44:18 +0900 Subject: [PATCH 170/249] [fix] remove verbose®ion_name parameter --- dags/glue/game_ccu.py | 2 -- dags/glue/game_price.py | 2 -- dags/glue/game_rating.py | 2 -- 3 files changed, 6 deletions(-) diff --git a/dags/glue/game_ccu.py b/dags/glue/game_ccu.py index 1e8ab01..226f526 100644 --- a/dags/glue/game_ccu.py +++ b/dags/glue/game_ccu.py @@ -82,8 +82,6 @@ def upload_rendered_script_to_s3( job_name="de-2-1_game_ccu", # Job ID extracted from previous Glue Job Operator task run_id=run_glue_job.output, - verbose=False, # prints glue job logs in airflow logs - # region_name="ap-northeast-2", aws_conn_id="aws_conn_id", ) diff --git a/dags/glue/game_price.py b/dags/glue/game_price.py index 3d6d679..2e0b5e6 100644 --- a/dags/glue/game_price.py +++ b/dags/glue/game_price.py @@ -82,8 +82,6 @@ def upload_rendered_script_to_s3( job_name="de-2-1_game_price", # Job ID extracted from previous Glue Job Operator task run_id=run_glue_job.output, - verbose=False, # prints glue job logs in airflow logs - # region_name="ap-northeast-2", aws_conn_id="aws_conn_id", ) diff --git a/dags/glue/game_rating.py b/dags/glue/game_rating.py index 5ce34f7..ed44137 100644 --- a/dags/glue/game_rating.py +++ b/dags/glue/game_rating.py @@ -82,8 +82,6 @@ def upload_rendered_script_to_s3( job_name="de-2-1_game_rating", # Job ID extracted from previous Glue Job Operator task run_id=run_glue_job.output, - verbose=False, # prints glue job logs in airflow logs - # region_name="ap-northeast-2", aws_conn_id="aws_conn_id", ) From bd15c108ff1083f0c6945ed32fe399f63b2dcc5d Mon Sep 17 00:00:00 2001 From: lyh Date: Sat, 24 Feb 2024 20:48:24 +0900 Subject: [PATCH 171/249] [fix] change json key to lowercase --- dags/game/game_rating_to_s3.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/dags/game/game_rating_to_s3.py b/dags/game/game_rating_to_s3.py index d1b4105..c56b86f 100644 --- a/dags/game/game_rating_to_s3.py +++ b/dags/game/game_rating_to_s3.py @@ -31,10 +31,10 @@ def get_rating(app_id): if reviewdesc_short == []: return { "game_id": app_id, - "ALL_POSITIVE_NUM": 0, - "ALL_POSITIVE_PERCENT": 0, - "RECENT_POSITIVE_NUM": 0, - "RECENT_POSITIVE_PERCENT": 0, + "all_positive_num": 0, + "all_positive_percent": 0, + "recent_positive_num": 0, + "recent_positive_percent": 0, } recent_reviews = None From 49e1c89128997cb773a03ac08a16a20579015829 Mon Sep 17 00:00:00 2001 From: poriz Date: Sun, 25 Feb 2024 18:50:16 +0900 Subject: [PATCH 172/249] [feat] add partitions use PLATFORM -> result 2files in folder -> S3 code change after 02.25 --- dataCollector/glue&athena/glue_template.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/dataCollector/glue&athena/glue_template.py b/dataCollector/glue&athena/glue_template.py index 0990e36..cff904c 100644 --- a/dataCollector/glue&athena/glue_template.py +++ b/dataCollector/glue&athena/glue_template.py @@ -22,6 +22,14 @@ format="json", transformation_ctx="datasource", ) +# <---------add functions-----------> + +# "PLATFORM" 컬럼을 기준으로 파티션을 구성 +partitioned_df = result_df.repartition("PLATFORM") + +# 파티션된 Spark DataFrame을 DynamicFrame으로 변환 +partitioned_dynamic_frame = DynamicFrame.fromDF(partitioned_df, glueContext, "partitioned_dynamic_frame") + # Parquet으로 변환하여 S3에 저장 glueContext.write_dynamic_frame.from_options( @@ -31,7 +39,3 @@ format="parquet", transformation_ctx="datasource", ) - - -# Job Bookmark의 상태를 최종적으로 커밋 -job.commit() From 1484593785398c7a33bbe636db44f4159967b82e Mon Sep 17 00:00:00 2001 From: poriz Date: Sun, 25 Feb 2024 23:17:27 +0900 Subject: [PATCH 173/249] [feat] live_viewer add 59 if -> if not --- dags/streaming/stream_data_raw.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dags/streaming/stream_data_raw.py b/dags/streaming/stream_data_raw.py index e55aa7c..a2833e1 100644 --- a/dags/streaming/stream_data_raw.py +++ b/dags/streaming/stream_data_raw.py @@ -56,7 +56,7 @@ def chzzk_raw(current_time, **kwargs): if res.status_code == 200: live_data = res.json() - if live_data["content"]["liveId"]: + if not live_data["content"]["liveId"]: time.sleep(5) live_data = requests.get( f"https://api.chzzk.naver.com/service/v2/channels/{id}/live-detail" From befe1c8ae84bc266345a0189322216c3a202fda5 Mon Sep 17 00:00:00 2001 From: poriz Date: Sun, 25 Feb 2024 23:53:43 +0900 Subject: [PATCH 174/249] [feat] live_viewer_template.py change code --- dataCollector/glue&athena/live_viewer_template.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/dataCollector/glue&athena/live_viewer_template.py b/dataCollector/glue&athena/live_viewer_template.py index 5348cb7..4983604 100644 --- a/dataCollector/glue&athena/live_viewer_template.py +++ b/dataCollector/glue&athena/live_viewer_template.py @@ -73,17 +73,18 @@ print("Schema Information:") result_df.printSchema() -dynamicframe = DynamicFrame.fromDF(result_df, glueContext, "dynamicframe") +# "PLATFORM" 컬럼을 기준으로 파티션을 구성 +partitioned_df = result_df.repartition("PLATFORM") + +# 파티션된 Spark DataFrame을 DynamicFrame으로 변환 +partitioned_dynamic_frame = DynamicFrame.fromDF(partitioned_df, glueContext, "partitioned_dynamic_frame") # Parquet으로 변환하여 S3에 저장 glueContext.write_dynamic_frame.from_options( - frame=dynamicframe, + frame=partitioned_dynamic_frame, connection_type="s3", connection_options={"path": "{{ output_path }}"}, format="parquet", transformation_ctx="datasource", -) - -# Job Bookmark의 상태를 최종적으로 커밋 -job.commit() +) \ No newline at end of file From 95ef84a51eb719dd4da2ff493e4bb47e89334390 Mon Sep 17 00:00:00 2001 From: mediwind <48349059+mediwind@users.noreply.github.com> Date: Mon, 26 Feb 2024 14:30:24 +0900 Subject: [PATCH 175/249] [feat] set Catchup&Startdate for Glue DAG --- dags/glue/game_ccu.py | 5 +++-- dags/glue/game_price.py | 5 +++-- dags/glue/game_rating.py | 5 +++-- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/dags/glue/game_ccu.py b/dags/glue/game_ccu.py index 226f526..922a512 100644 --- a/dags/glue/game_ccu.py +++ b/dags/glue/game_ccu.py @@ -37,12 +37,13 @@ def upload_rendered_script_to_s3( "owner": "airflow", "depends_on_past": False, "start_date": datetime(2024, 2, 22), - "retries": 0, + "retries": 3, "retry_delay": timedelta(minutes=5), }, + max_active_runs=1, schedule_interval="5 * * * *", tags=["glue", "Game_CCU"], - catchup=False, + catchup=True, ) as dag: bucket_name = "de-2-1-bucket" diff --git a/dags/glue/game_price.py b/dags/glue/game_price.py index 2e0b5e6..30dfebb 100644 --- a/dags/glue/game_price.py +++ b/dags/glue/game_price.py @@ -37,12 +37,13 @@ def upload_rendered_script_to_s3( "owner": "airflow", "depends_on_past": False, "start_date": datetime(2024, 2, 22), - "retries": 0, + "retries": 3, "retry_delay": timedelta(minutes=5), }, + max_active_runs=1, schedule_interval="0 1 * * *", tags=["glue", "Game_Price"], - catchup=False, + catchup=True, ) as dag: bucket_name = "de-2-1-bucket" diff --git a/dags/glue/game_rating.py b/dags/glue/game_rating.py index ed44137..ebb09aa 100644 --- a/dags/glue/game_rating.py +++ b/dags/glue/game_rating.py @@ -37,12 +37,13 @@ def upload_rendered_script_to_s3( "owner": "airflow", "depends_on_past": False, "start_date": datetime(2024, 2, 22), - "retries": 0, + "retries": 3, "retry_delay": timedelta(minutes=5), }, + max_active_runs=1, schedule_interval="0 1 * * *", tags=["glue", "Game_Rating"], - catchup=False, + catchup=True, ) as dag: bucket_name = "de-2-1-bucket" From a4ad481693bff52d33c8ac8c83bfd8c71f9c9da3 Mon Sep 17 00:00:00 2001 From: poriz Date: Mon, 26 Feb 2024 17:29:50 +0900 Subject: [PATCH 176/249] [feat] live_viewer template change --- dags/glue/live_viewer.py | 13 ++++++----- dataCollector/glue&athena/glue_template.py | 4 +++- .../glue&athena/live_viewer_template.py | 22 ++++++------------- 3 files changed, 17 insertions(+), 22 deletions(-) diff --git a/dags/glue/live_viewer.py b/dags/glue/live_viewer.py index 2251b54..c524811 100644 --- a/dags/glue/live_viewer.py +++ b/dags/glue/live_viewer.py @@ -36,20 +36,21 @@ def upload_rendered_script_to_s3( default_args={ "owner": "airflow", "depends_on_past": False, - "start_date": datetime(2024, 1, 17), + "start_date": datetime(2024, 2, 26), "retries": 0, "retry_delay": timedelta(minutes=5), }, tags=["glue", "streaming"], schedule_interval="0 * * * *", - catchup=False, + catchup=True, ) as dag: bucket_name = "de-2-1-bucket" - current_time = "{{ data_interval_end.in_timezone('Asia/Seoul').strftime('%Y-%m-%dT%H:%M:%S+00:00') }}" - year = "{{ data_interval_end.in_timezone('Asia/Seoul').year }}" - month = "{{ data_interval_end.in_timezone('Asia/Seoul').month }}" - day = "{{ data_interval_end.in_timezone('Asia/Seoul').day }}" + + current_time = "{{ (data_interval_end - macros.timedelta(hours=1)).in_timezone('Asia/Seoul').strftime('%Y-%m-%dT%H:%M:%S+00:00') }}" + year = "{{ (data_interval_end - macros.timedelta(hours=1)).in_timezone('Asia/Seoul').year }}" + month = "{{ (data_interval_end - macros.timedelta(hours=1)).in_timezone('Asia/Seoul').month }}" + day = "{{ (data_interval_end - macros.timedelta(hours=1)).in_timezone('Asia/Seoul').day }}" hour = "{{ (data_interval_end - macros.timedelta(hours=1)).in_timezone('Asia/Seoul').hour }}" # before 1 hour upload_script = PythonOperator( diff --git a/dataCollector/glue&athena/glue_template.py b/dataCollector/glue&athena/glue_template.py index cff904c..f78f11a 100644 --- a/dataCollector/glue&athena/glue_template.py +++ b/dataCollector/glue&athena/glue_template.py @@ -28,7 +28,9 @@ partitioned_df = result_df.repartition("PLATFORM") # 파티션된 Spark DataFrame을 DynamicFrame으로 변환 -partitioned_dynamic_frame = DynamicFrame.fromDF(partitioned_df, glueContext, "partitioned_dynamic_frame") +partitioned_dynamic_frame = DynamicFrame.fromDF( + partitioned_df, glueContext, "partitioned_dynamic_frame" +) # Parquet으로 변환하여 S3에 저장 diff --git a/dataCollector/glue&athena/live_viewer_template.py b/dataCollector/glue&athena/live_viewer_template.py index 4983604..73b3804 100644 --- a/dataCollector/glue&athena/live_viewer_template.py +++ b/dataCollector/glue&athena/live_viewer_template.py @@ -36,6 +36,7 @@ chzzk_df = chzzk_source.select( col("col.streamer_id").alias("STREAMER_ID"), col("col.content.liveID").alias("BROADCAST_ID"), + col("col.current_time").alias("LIVE_COLLECT_TIME"), col("col.content.liveTitle").alias("BROADCAST_TITLE"), col("col.content.liveCategoryValue").alias("GAME_CODE"), col("col.content.concurrentUserCount").alias("VIEWER_NUM"), @@ -48,6 +49,7 @@ afreeca_df = afreeca_source.select( col("col.streamer_id").alias("STREAMER_ID"), col("col.live_status.BNO").alias("BROADCAST_ID"), + col("col.current_time").alias("LIVE_COLLECT_TIME"), col("col.live_status.TITLE").alias("BROADCAST_TITLE"), col("col.live_status.CATE").alias("GAME_CODE"), col("col.broad_info.broad.current_sum_viewer").alias("VIEWER_NUM"), @@ -55,19 +57,7 @@ afreeca_df = afreeca_df.withColumn("PLATFORM", lit("afreeca")) # afreeca_df.show(truncate=False) - -result_df = chzzk_df.join( - afreeca_df, - [ - "STREAMER_ID", - "BROADCAST_ID", - "BROADCAST_TITLE", - "GAME_CODE", - "PLATFORM", - "VIEWER_NUM", - ], - "outer", -) +result_df = chzzk_df.union(afreeca_df) # 스키마 정보를 로깅 print("Schema Information:") @@ -77,7 +67,9 @@ partitioned_df = result_df.repartition("PLATFORM") # 파티션된 Spark DataFrame을 DynamicFrame으로 변환 -partitioned_dynamic_frame = DynamicFrame.fromDF(partitioned_df, glueContext, "partitioned_dynamic_frame") +partitioned_dynamic_frame = DynamicFrame.fromDF( + partitioned_df, glueContext, "partitioned_dynamic_frame" +) # Parquet으로 변환하여 S3에 저장 @@ -87,4 +79,4 @@ connection_options={"path": "{{ output_path }}"}, format="parquet", transformation_ctx="datasource", -) \ No newline at end of file +) From 0d020394331678d1308cd877acfee67b0408481a Mon Sep 17 00:00:00 2001 From: lyh Date: Tue, 27 Feb 2024 00:25:14 +0900 Subject: [PATCH 177/249] [fix] addig collect_time to ccu DAG --- dags/game/game_ccu_to_s3.py | 14 ++++++++------ .../glue&athena/glue_game_ccu_template.py | 5 +++-- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/dags/game/game_ccu_to_s3.py b/dags/game/game_ccu_to_s3.py index 0a72161..c0b06e5 100644 --- a/dags/game/game_ccu_to_s3.py +++ b/dags/game/game_ccu_to_s3.py @@ -64,8 +64,8 @@ def get_ccu(): # 3. API 응답들이 담긴 리스트를 JSON으로 저장 @task -def save_to_json(data): - data = {"raw_game_ccu": data} +def save_to_json(data, collect_time): + data = {"raw_game_ccu": data, "collect_time": collect_time} result = json.dumps(data, ensure_ascii=False) return result @@ -83,10 +83,7 @@ def save_to_json(data): "on_failure_callback": slack.on_failure_callback, }, ) as dag: - - data = get_ccu() - data_json = save_to_json(data) - + bucket_name = "de-2-1-bucket" current_time = "{{ data_interval_end.in_timezone('Asia/Seoul') }}" @@ -94,8 +91,13 @@ def save_to_json(data): month = "{{ data_interval_end.in_timezone('Asia/Seoul').month }}" day = "{{ data_interval_end.in_timezone('Asia/Seoul').day }}" hour = "{{ data_interval_end.in_timezone('Asia/Seoul').hour }}" + minutes = "{{ data_interval_end.in_timezone('Asia/Seoul').minute}}" table_name = "raw_game_ccu" + data = get_ccu() + collect_time = f"{year}-{month}-{day} {hour}:{minutes}" + data_json = save_to_json(data, collect_time) + task_load_raw_data = S3CreateObjectOperator( task_id="create_object", s3_bucket=bucket_name, diff --git a/dataCollector/glue&athena/glue_game_ccu_template.py b/dataCollector/glue&athena/glue_game_ccu_template.py index ac980e5..c5e73ea 100644 --- a/dataCollector/glue&athena/glue_game_ccu_template.py +++ b/dataCollector/glue&athena/glue_game_ccu_template.py @@ -32,12 +32,13 @@ # 최상위 레벨의 key를 중심으로 explode하기 df = game_ccu_datasource.select( - explode(game_ccu_datasource.raw_game_ccu).alias("raw_game_ccu") + explode(game_ccu_datasource.raw_game_ccu).alias("raw_game_ccu"), + col("current_time").alias("COLLECT_TIME") ) df = df.select( col("raw_game_ccu.game_id").alias("GAME_ID"), - lit("{{ collect_time }}").alias("COLLECT_TIME"), + col("COLLECT_TIME"), col("raw_game_ccu.player_count").alias("GAME_CCU"), ) From 29b8a8f226a323ce46c2a97aea83f540c4f94369 Mon Sep 17 00:00:00 2001 From: lyh Date: Tue, 27 Feb 2024 01:04:23 +0900 Subject: [PATCH 178/249] [fix] correct time difference --- dags/glue/game_ccu.py | 12 ++++++------ dags/glue/game_price.py | 2 +- dags/glue/game_rating.py | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/dags/glue/game_ccu.py b/dags/glue/game_ccu.py index 922a512..78d21ea 100644 --- a/dags/glue/game_ccu.py +++ b/dags/glue/game_ccu.py @@ -36,9 +36,9 @@ def upload_rendered_script_to_s3( default_args={ "owner": "airflow", "depends_on_past": False, - "start_date": datetime(2024, 2, 22), + "start_date": datetime(2024, 2, 27), "retries": 3, - "retry_delay": timedelta(minutes=5), + "retry_delay": timedelta(seconds=15), }, max_active_runs=1, schedule_interval="5 * * * *", @@ -47,10 +47,10 @@ def upload_rendered_script_to_s3( ) as dag: bucket_name = "de-2-1-bucket" - current_time = "{{ data_interval_end.in_timezone('Asia/Seoul').strftime('%Y-%m-%dT%H:%M:%S+00:00') }}" - year = "{{ data_interval_end.in_timezone('Asia/Seoul').year }}" - month = "{{ data_interval_end.in_timezone('Asia/Seoul').month }}" - day = "{{ data_interval_end.in_timezone('Asia/Seoul').day }}" + current_time = "{{ (data_interval_end - macros.timedelta(hours=1)).in_timezone('Asia/Seoul').strftime('%Y-%m-%dT%H:%M:%S+00:00') }}" + year = "{{ (data_interval_end - macros.timedelta(hours=1)).in_timezone('Asia/Seoul').year }}" + month = "{{ (data_interval_end - macros.timedelta(hours=1)).in_timezone('Asia/Seoul').month }}" + day = "{{ (data_interval_end - macros.timedelta(hours=1)).in_timezone('Asia/Seoul').day }}" hour = "{{ (data_interval_end - macros.timedelta(hours=1)).in_timezone('Asia/Seoul').hour }}" # before 1 hour upload_script = PythonOperator( diff --git a/dags/glue/game_price.py b/dags/glue/game_price.py index 30dfebb..3bf752c 100644 --- a/dags/glue/game_price.py +++ b/dags/glue/game_price.py @@ -38,7 +38,7 @@ def upload_rendered_script_to_s3( "depends_on_past": False, "start_date": datetime(2024, 2, 22), "retries": 3, - "retry_delay": timedelta(minutes=5), + "retry_delay": timedelta(seconds=15), }, max_active_runs=1, schedule_interval="0 1 * * *", diff --git a/dags/glue/game_rating.py b/dags/glue/game_rating.py index ebb09aa..797ecd5 100644 --- a/dags/glue/game_rating.py +++ b/dags/glue/game_rating.py @@ -38,7 +38,7 @@ def upload_rendered_script_to_s3( "depends_on_past": False, "start_date": datetime(2024, 2, 22), "retries": 3, - "retry_delay": timedelta(minutes=5), + "retry_delay": timedelta(seconds=15), }, max_active_runs=1, schedule_interval="0 1 * * *", From c352afe2ca8c65f1c71e55ebb7e9988e9a8b16b1 Mon Sep 17 00:00:00 2001 From: lyh Date: Tue, 27 Feb 2024 01:22:15 +0900 Subject: [PATCH 179/249] [fix] hotfix Glue CCU DAG start_date --- dags/glue/game_ccu.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dags/glue/game_ccu.py b/dags/glue/game_ccu.py index 78d21ea..1e8869a 100644 --- a/dags/glue/game_ccu.py +++ b/dags/glue/game_ccu.py @@ -36,7 +36,7 @@ def upload_rendered_script_to_s3( default_args={ "owner": "airflow", "depends_on_past": False, - "start_date": datetime(2024, 2, 27), + "start_date": datetime(2024, 2, 26), "retries": 3, "retry_delay": timedelta(seconds=15), }, From 2aa1706e1a2677477b9252861c03e82c3b4f638f Mon Sep 17 00:00:00 2001 From: lyh Date: Tue, 27 Feb 2024 01:36:39 +0900 Subject: [PATCH 180/249] [fix] hotfix typo error --- dataCollector/glue&athena/glue_game_ccu_template.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dataCollector/glue&athena/glue_game_ccu_template.py b/dataCollector/glue&athena/glue_game_ccu_template.py index c5e73ea..6484935 100644 --- a/dataCollector/glue&athena/glue_game_ccu_template.py +++ b/dataCollector/glue&athena/glue_game_ccu_template.py @@ -33,7 +33,7 @@ # 최상위 레벨의 key를 중심으로 explode하기 df = game_ccu_datasource.select( explode(game_ccu_datasource.raw_game_ccu).alias("raw_game_ccu"), - col("current_time").alias("COLLECT_TIME") + col("collect_time").alias("COLLECT_TIME") ) df = df.select( From ccdecd9d38f7496fac93f2f0b462ff1c57f9388a Mon Sep 17 00:00:00 2001 From: poriz Date: Tue, 27 Feb 2024 10:30:43 +0900 Subject: [PATCH 181/249] [hotfix] follow.py change local_file change, schedule_interval change every 0min > 2min --- dags/streaming/follower.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/dags/streaming/follower.py b/dags/streaming/follower.py index a072f4d..47e5c7e 100644 --- a/dags/streaming/follower.py +++ b/dags/streaming/follower.py @@ -68,7 +68,7 @@ def chzzk_raw(current_time, **kwargs): raise AirflowException(error_msg) - with open(f"./chzzk_{current_time}.json", "w") as f: + with open(f"./chzzk_f_{current_time}.json", "w") as f: json.dump(live_stream_data, f, indent=4) @@ -113,20 +113,20 @@ def get_broad_info(bjid, headers): logging.error((error_msg)) raise AirflowException(error_msg) - with open(f"./afc_{current_time}.json", "w") as f: + with open(f"./afc_f_{current_time}.json", "w") as f: json.dump(live_stream_data, f, indent=4) def merge_json(current_time, local_path, **kwargs): # 파일 읽고 기존 데이터 로드 try: - with open(f"./chzzk_{current_time}.json", "r") as f: + with open(f"./chzzk_f_{current_time}.json", "r") as f: chzzk_data = json.load(f) except FileNotFoundError: chzzk_data = [] try: - with open(f"./afc_{current_time}.json", "r") as f: + with open(f"./afc_f_{current_time}.json", "r") as f: afreeca_data = json.load(f) except FileNotFoundError: afreeca_data = [] @@ -190,7 +190,7 @@ def delete_files(**kwargs): "retries": 1, "retry_delay": timedelta(minutes=5), }, - schedule_interval="0 * * * *", + schedule_interval="2 * * * *", tags=["Streaming", "follower"], catchup=False, ) as dag: @@ -202,7 +202,7 @@ def delete_files(**kwargs): day = "{{ data_interval_end.in_timezone('Asia/Seoul').day }}" hour = "{{ data_interval_end.in_timezone('Asia/Seoul').hour }}" table_name = "followers" - local_name = "local_raw_live" + local_name = "local_followers" local_path = f"./{local_name}_{current_time}.json" task_get_s_list = PythonOperator( From 9708cb356ee31417264541c3962a811d110d5270 Mon Sep 17 00:00:00 2001 From: poriz Date: Tue, 27 Feb 2024 11:38:17 +0900 Subject: [PATCH 182/249] [hotfix] follow.py delete func --- dags/streaming/follower.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dags/streaming/follower.py b/dags/streaming/follower.py index 47e5c7e..736fde4 100644 --- a/dags/streaming/follower.py +++ b/dags/streaming/follower.py @@ -165,12 +165,12 @@ def delete_file(file_path): os.remove(file_path) # print(f"Deleted {file_path}") - +# when change file_names => plz check delete func!! def delete_files(**kwargs): # 플랫폼별로 파일 삭제 platforms = ["afc", "chzzk"] for platform in platforms: - file_path = f"./{platform}_{current_time}.json" + file_path = f"./{platform}_f_{current_time}.json" # this part you will change delete_file(file_path) # local_path를 사용하여 파일 삭제 From b3a3bccddd7b68d417d0834571f547a0b0afeebb Mon Sep 17 00:00:00 2001 From: srlee056 Date: Tue, 27 Feb 2024 15:34:46 +0900 Subject: [PATCH 183/249] [feat] make glue job dag for followers --- .../{glue_airflow.py => glue_followers.py} | 163 +++++++++--------- 1 file changed, 85 insertions(+), 78 deletions(-) rename dags/glue/{glue_airflow.py => glue_followers.py} (56%) diff --git a/dags/glue/glue_airflow.py b/dags/glue/glue_followers.py similarity index 56% rename from dags/glue/glue_airflow.py rename to dags/glue/glue_followers.py index f893557..475938c 100644 --- a/dags/glue/glue_airflow.py +++ b/dags/glue/glue_followers.py @@ -1,78 +1,85 @@ -from datetime import datetime, timedelta - -from airflow import DAG -from airflow.operators.python import PythonOperator -from airflow.providers.amazon.aws.operators.glue import GlueJobOperator -from airflow.providers.amazon.aws.hooks.s3 import S3Hook - -from jinja2 import Template - - -def upload_rendered_script_to_s3( - bucket_name, template_s3_key, rendered_s3_key, aws_conn_id, **kwargs -): - # S3Hook 인스턴스 생성 - s3_hook = S3Hook(aws_conn_id=aws_conn_id) - - # S3에서 Jinja 템플릿 파일 읽기 - template_str = s3_hook.read_key(template_s3_key, bucket_name) - - # Jinja 템플릿 렌더링 - template = Template(template_str) - rendered_script = template.render(**kwargs) - - # 렌더링된 스크립트를 S3에 업로드 - s3_hook.load_string( - string_data=rendered_script, - bucket_name=bucket_name, - key=rendered_s3_key, - replace=True, - ) - - -with DAG( - "glue_test_dag", - default_args={ - "owner": "airflow", - "depends_on_past": False, - "start_date": datetime(2024, 1, 17), - "retries": 0, - "retry_delay": timedelta(minutes=5), - }, - schedule_interval="0 * * * *", - tags=["glue", "streaming"], - catchup=False, -) as dag: - - bucket_name = "de-2-1-bucket" - current_time = "{{ data_interval_end.in_timezone('Asia/Seoul').strftime('%Y-%m-%dT%H:%M:%S+00:00') }}" - year = "{{ data_interval_end.year.in_timezone('Asia/Seoul') }}" - month = "{{ data_interval_end.month.in_timezone('Asia/Seoul') }}" - day = "{{ data_interval_end.day.in_timezone('Asia/Seoul') }}" - hour = "{{ data_interval_end.hour.in_timezone('Asia/Seoul') }}" - - upload_script = PythonOperator( - task_id="upload_script_to_s3", - python_callable=upload_rendered_script_to_s3, - op_kwargs={ - "bucket_name": bucket_name, - "aws_conn_id": "aws_conn_id", - "template_s3_key": "source/script/glue_template.py", - "rendered_s3_key": "source/script/glue_script.py", - # into template - "input_path": f"s3://de-2-1-bucket/source/json/table_name=raw_live_viewer/year={year}/month={month}/day={day}/hour={hour}/", - "output_path": f"s3://de-2-1-bucket/source/parquet/table_name=raw_live_viewer/year={year}/month={month}/day={day}/hour={hour}/", - }, - ) - - run_glue_job = GlueJobOperator( - task_id="run_glue_job", - job_name="DE-2-1-testjob", - script_location="s3://de-2-1-bucket/source/script/glue_script.py", - aws_conn_id="aws_conn_id", - region_name="ap-northeast-2", - iam_role_name="AWSGlueServiceRole-crawler", - dag=dag, - ) - -upload_script >> run_glue_job +from datetime import datetime, timedelta + +from airflow import DAG +from airflow.operators.python import PythonOperator +from airflow.providers.amazon.aws.operators.glue import GlueJobOperator +from airflow.providers.amazon.aws.hooks.s3 import S3Hook +from airflow.providers.amazon.aws.sensors.glue import GlueJobSensor + +from jinja2 import Template + + +def upload_rendered_script_to_s3( + bucket_name, template_s3_key, rendered_s3_key, aws_conn_id, **kwargs +): + # S3Hook 인스턴스 생성 + s3_hook = S3Hook(aws_conn_id=aws_conn_id) + + # S3에서 Jinja 템플릿 파일 읽기 + template_str = s3_hook.read_key(template_s3_key, bucket_name) + + # Jinja 템플릿 렌더링 + template = Template(template_str) + rendered_script = template.render(**kwargs) + + # 렌더링된 스크립트를 S3에 업로드 + s3_hook.load_string( + string_data=rendered_script, + bucket_name=bucket_name, + key=rendered_s3_key, + replace=True, + ) + + +with DAG( + "glue_followers", + default_args={ + "owner": "airflow", + "depends_on_past": False, + "start_date": datetime(2024, 2, 27), + "retries": 0, + "retry_delay": timedelta(minutes=5), + }, + tags=["glue", "streaming"], + schedule_interval="30 16 * * *", # 한국 기준 새벽 1시 30분 + catchup=True, +) as dag: + + bucket_name = "de-2-1-bucket" + + year = "{{ (data_interval_end - macros.timedelta(days=1)).in_timezone('Asia/Seoul').year }}" + month = "{{ (data_interval_end - macros.timedelta(days=1)).in_timezone('Asia/Seoul').month }}" + day = "{{ (data_interval_end - macros.timedelta(days=1)).in_timezone('Asia/Seoul').day }}" + + upload_script = PythonOperator( + task_id="upload_script_to_s3", + python_callable=upload_rendered_script_to_s3, + op_kwargs={ + "bucket_name": bucket_name, + "aws_conn_id": "aws_conn_id", + "template_s3_key": "source/script/glue_followers_template.py", + "rendered_s3_key": "source/script/glue_followers_script.py", + "input_path": f"s3://de-2-1-bucket/source/json/table_name=followers/year={year}/month={month}/day={day}/", + "output_path": f"s3://de-2-1-bucket/source/parquet/table_name=followers/year={year}/month={month}/day={day}/", + }, + ) + + run_glue_job = GlueJobOperator( + task_id="run_glue_job", + job_name="de-2-1_followers", + script_location="s3://de-2-1-bucket/source/script/glue_followers_script.py", + aws_conn_id="aws_conn_id", + region_name="ap-northeast-2", + iam_role_name="AWSGlueServiceRole-crawler", + dag=dag, + ) + wait_for_job = GlueJobSensor( # trigger + task_id="wait_for_job_followers_job", # task_id 직관적으로 알 수 있도록 변경 권장 + job_name="de-2-1_followers", + # Job ID extracted from previous Glue Job Operator task + run_id=run_glue_job.output, + aws_conn_id="aws_conn_id", + ) + + +upload_script >> run_glue_job >> wait_for_job From ff38eecc20d20d23c6cf0ec67b7dabe9169e990e Mon Sep 17 00:00:00 2001 From: lyh Date: Tue, 27 Feb 2024 20:51:07 +0900 Subject: [PATCH 184/249] [fix] variable change & game rating DAG fix --- dags/game/game_ccu_to_s3.py | 4 ++-- dags/game/game_rating_to_s3.py | 18 ++++++++++++++---- dags/streaming/follower.py | 1 + .../glue&athena/glue_game_ccu_template.py | 2 +- .../glue&athena/glue_game_rating_template.py | 2 +- 5 files changed, 19 insertions(+), 8 deletions(-) diff --git a/dags/game/game_ccu_to_s3.py b/dags/game/game_ccu_to_s3.py index c0b06e5..13b852b 100644 --- a/dags/game/game_ccu_to_s3.py +++ b/dags/game/game_ccu_to_s3.py @@ -83,7 +83,7 @@ def save_to_json(data, collect_time): "on_failure_callback": slack.on_failure_callback, }, ) as dag: - + bucket_name = "de-2-1-bucket" current_time = "{{ data_interval_end.in_timezone('Asia/Seoul') }}" @@ -97,7 +97,7 @@ def save_to_json(data, collect_time): data = get_ccu() collect_time = f"{year}-{month}-{day} {hour}:{minutes}" data_json = save_to_json(data, collect_time) - + task_load_raw_data = S3CreateObjectOperator( task_id="create_object", s3_bucket=bucket_name, diff --git a/dags/game/game_rating_to_s3.py b/dags/game/game_rating_to_s3.py index c56b86f..c134304 100644 --- a/dags/game/game_rating_to_s3.py +++ b/dags/game/game_rating_to_s3.py @@ -10,6 +10,7 @@ import re import requests import json +import time def connect_to_mysql(): @@ -23,12 +24,21 @@ def connect_to_mysql(): # Game info 테이블에 있는 Game들의 app_id를 이용해 게임 정량 평가를 가져오는 함수 def get_rating(app_id): url = f"https://store.steampowered.com/app/{app_id}" - response = requests.get(url) - soup = BeautifulSoup(response.text, "html.parser") - reviewdesc_short = soup.find_all("span", {"class": "responsive_reviewdesc_short"}) + for i in range(3): + response = requests.get(url) + soup = BeautifulSoup(response.text, "html.parser") - if reviewdesc_short == []: + reviewdesc_short = soup.find_all( + "span", {"class": "responsive_reviewdesc_short"} + ) + + if reviewdesc_short: + break + + print(f"Retry {i+1} times for {app_id}") + time.sleep(90) + else: return { "game_id": app_id, "all_positive_num": 0, diff --git a/dags/streaming/follower.py b/dags/streaming/follower.py index 736fde4..b16278a 100644 --- a/dags/streaming/follower.py +++ b/dags/streaming/follower.py @@ -165,6 +165,7 @@ def delete_file(file_path): os.remove(file_path) # print(f"Deleted {file_path}") + # when change file_names => plz check delete func!! def delete_files(**kwargs): # 플랫폼별로 파일 삭제 diff --git a/dataCollector/glue&athena/glue_game_ccu_template.py b/dataCollector/glue&athena/glue_game_ccu_template.py index 6484935..f1d9eab 100644 --- a/dataCollector/glue&athena/glue_game_ccu_template.py +++ b/dataCollector/glue&athena/glue_game_ccu_template.py @@ -33,7 +33,7 @@ # 최상위 레벨의 key를 중심으로 explode하기 df = game_ccu_datasource.select( explode(game_ccu_datasource.raw_game_ccu).alias("raw_game_ccu"), - col("collect_time").alias("COLLECT_TIME") + col("collect_time").alias("COLLECT_TIME"), ) df = df.select( diff --git a/dataCollector/glue&athena/glue_game_rating_template.py b/dataCollector/glue&athena/glue_game_rating_template.py index 802d947..dedad9b 100644 --- a/dataCollector/glue&athena/glue_game_rating_template.py +++ b/dataCollector/glue&athena/glue_game_rating_template.py @@ -36,7 +36,7 @@ df = df.select( col("raw_game_rating.game_id").alias("GAME_ID"), - lit("{{ collect_time }}").alias("COLLECT_DATE"), + lit("{{ collect_date }}").alias("COLLECT_DATE"), col("raw_game_rating.recent_positive_num").alias("RECENT_POSITIVE_NUM"), col("raw_game_rating.recent_positive_percent").alias("RECENT_POSITIVE_PERCENT"), col("raw_game_rating.all_positive_num").alias("ALL_POSITIVE_NUM"), From 52a8fc4ed6895484a7c13ace5f89cd4b27302c7d Mon Sep 17 00:00:00 2001 From: lyh Date: Wed, 28 Feb 2024 18:38:56 +0900 Subject: [PATCH 185/249] [feat] passing arguments to Glue job script instead of overwriting existing script --- dags/glue/game_ccu.py | 37 +++++++++++++++++++++---------------- dags/glue/game_price.py | 39 +++++++++++++++++++++++---------------- dags/glue/game_rating.py | 39 +++++++++++++++++++++++---------------- 3 files changed, 67 insertions(+), 48 deletions(-) diff --git a/dags/glue/game_ccu.py b/dags/glue/game_ccu.py index 1e8869a..3588726 100644 --- a/dags/glue/game_ccu.py +++ b/dags/glue/game_ccu.py @@ -1,7 +1,8 @@ from datetime import datetime, timedelta from airflow import DAG -from airflow.operators.python import PythonOperator + +# from airflow.operators.python import PythonOperator from airflow.providers.amazon.aws.operators.glue import GlueJobOperator from airflow.providers.amazon.aws.hooks.s3 import S3Hook @@ -53,20 +54,19 @@ def upload_rendered_script_to_s3( day = "{{ (data_interval_end - macros.timedelta(hours=1)).in_timezone('Asia/Seoul').day }}" hour = "{{ (data_interval_end - macros.timedelta(hours=1)).in_timezone('Asia/Seoul').hour }}" # before 1 hour - upload_script = PythonOperator( - task_id="upload_script_to_s3", - python_callable=upload_rendered_script_to_s3, - op_kwargs={ - "bucket_name": bucket_name, - "aws_conn_id": "aws_conn_id", - "template_s3_key": "source/script/glue_game_ccu_template.py", - "rendered_s3_key": "source/script/glue_game_ccu_script.py", - # into template - "input_path": f"s3://de-2-1-bucket/source/json/table_name=raw_game_ccu/year={year}/month={month}/day={day}/hour={hour}/", - "output_path": f"s3://de-2-1-bucket/source/parquet/table_name=raw_game_ccu/year={year}/month={month}/day={day}/hour={hour}/", - "collect_time": f"{year}-{month}-{day} {hour}:00", - }, - ) + # upload_script = PythonOperator( + # task_id="upload_script_to_s3", + # python_callable=upload_rendered_script_to_s3, + # op_kwargs={ + # "bucket_name": bucket_name, + # "aws_conn_id": "aws_conn_id", + # "template_s3_key": "source/script/glue_game_ccu_template.py", + # "rendered_s3_key": "source/script/glue_game_ccu_script.py", + # # into template + # "input_path": f"s3://de-2-1-bucket/source/json/table_name=raw_game_ccu/year={year}/month={month}/day={day}/hour={hour}/", + # "output_path": f"s3://de-2-1-bucket/source/parquet/table_name=raw_game_ccu/year={year}/month={month}/day={day}/hour={hour}/", + # }, + # ) run_glue_job = GlueJobOperator( task_id="run_glue_job", @@ -76,6 +76,10 @@ def upload_rendered_script_to_s3( region_name="ap-northeast-2", iam_role_name="AWSGlueServiceRole-crawler", dag=dag, + script_args={ # ~script.py에서 사용할 인자들을 정의 + "--input_path": f"s3://de-2-1-bucket/source/json/table_name=raw_game_ccu/year={year}/month={month}/day={day}/hour={hour}/", + "--output_path": f"s3://de-2-1-bucket/source/parquet/table_name=raw_game_ccu/year={year}/month={month}/day={day}/hour={hour}/", + }, ) wait_for_job = GlueJobSensor( # trigger @@ -86,4 +90,5 @@ def upload_rendered_script_to_s3( aws_conn_id="aws_conn_id", ) -upload_script >> run_glue_job >> wait_for_job +# upload_script >> run_glue_job >> wait_for_job +run_glue_job >> wait_for_job diff --git a/dags/glue/game_price.py b/dags/glue/game_price.py index 3bf752c..e67a99d 100644 --- a/dags/glue/game_price.py +++ b/dags/glue/game_price.py @@ -1,7 +1,8 @@ from datetime import datetime, timedelta from airflow import DAG -from airflow.operators.python import PythonOperator + +# from airflow.operators.python import PythonOperator from airflow.providers.amazon.aws.operators.glue import GlueJobOperator from airflow.providers.amazon.aws.hooks.s3 import S3Hook @@ -53,20 +54,20 @@ def upload_rendered_script_to_s3( day = "{{ data_interval_end.in_timezone('Asia/Seoul').day }}" hour = "{{ (data_interval_end - macros.timedelta(hours=1)).in_timezone('Asia/Seoul') }}" # before 1 hour - upload_script = PythonOperator( - task_id="upload_script_to_s3", - python_callable=upload_rendered_script_to_s3, - op_kwargs={ - "bucket_name": bucket_name, - "aws_conn_id": "aws_conn_id", - "template_s3_key": "source/script/glue_game_price_template.py", - "rendered_s3_key": "source/script/glue_game_price_script.py", - # into template - "input_path": f"s3://de-2-1-bucket/source/json/table_name=raw_game_price/year={year}/month={month}/day={day}/", - "output_path": f"s3://de-2-1-bucket/source/parquet/table_name=raw_game_price/year={year}/month={month}/day={day}/", - "collect_date": f"{year}-{month}-{day}", - }, - ) + # upload_script = PythonOperator( + # task_id="upload_script_to_s3", + # python_callable=upload_rendered_script_to_s3, + # op_kwargs={ + # "bucket_name": bucket_name, + # "aws_conn_id": "aws_conn_id", + # "template_s3_key": "source/script/glue_game_price_template.py", + # "rendered_s3_key": "source/script/glue_game_price_script.py", + # # into template + # "input_path": f"s3://de-2-1-bucket/source/json/table_name=raw_game_price/year={year}/month={month}/day={day}/", + # "output_path": f"s3://de-2-1-bucket/source/parquet/table_name=raw_game_price/year={year}/month={month}/day={day}/", + # "collect_date": f"{year}-{month}-{day}", + # }, + # ) run_glue_job = GlueJobOperator( task_id="run_glue_job", @@ -76,6 +77,11 @@ def upload_rendered_script_to_s3( region_name="ap-northeast-2", iam_role_name="AWSGlueServiceRole-crawler", dag=dag, + script_args={ # ~script.py에서 사용할 인자들을 정의 + "--input_path": f"s3://de-2-1-bucket/source/json/table_name=raw_game_price/year={year}/month={month}/day={day}/", + "--output_path": f"s3://de-2-1-bucket/source/parquet/table_name=raw_game_price/year={year}/month={month}/day={day}/", + "--collect_date": f"{year}-{month}-{day}", + }, ) wait_for_job = GlueJobSensor( # trigger @@ -86,4 +92,5 @@ def upload_rendered_script_to_s3( aws_conn_id="aws_conn_id", ) -upload_script >> run_glue_job >> wait_for_job +# upload_script >> run_glue_job >> wait_for_job +run_glue_job >> wait_for_job diff --git a/dags/glue/game_rating.py b/dags/glue/game_rating.py index 797ecd5..a005bbe 100644 --- a/dags/glue/game_rating.py +++ b/dags/glue/game_rating.py @@ -1,7 +1,8 @@ from datetime import datetime, timedelta from airflow import DAG -from airflow.operators.python import PythonOperator + +# from airflow.operators.python import PythonOperator from airflow.providers.amazon.aws.operators.glue import GlueJobOperator from airflow.providers.amazon.aws.hooks.s3 import S3Hook @@ -53,20 +54,20 @@ def upload_rendered_script_to_s3( day = "{{ data_interval_end.in_timezone('Asia/Seoul').day }}" hour = "{{ (data_interval_end - macros.timedelta(hours=1)).in_timezone('Asia/Seoul') }}" # before 1 hour - upload_script = PythonOperator( - task_id="upload_script_to_s3", - python_callable=upload_rendered_script_to_s3, - op_kwargs={ - "bucket_name": bucket_name, - "aws_conn_id": "aws_conn_id", - "template_s3_key": "source/script/glue_game_rating_template.py", - "rendered_s3_key": "source/script/glue_game_rating_script.py", - # into template - "input_path": f"s3://de-2-1-bucket/source/json/table_name=raw_game_rating/year={year}/month={month}/day={day}/", - "output_path": f"s3://de-2-1-bucket/source/parquet/table_name=raw_game_rating/year={year}/month={month}/day={day}/", - "collect_date": f"{year}-{month}-{day}", - }, - ) + # upload_script = PythonOperator( + # task_id="upload_script_to_s3", + # python_callable=upload_rendered_script_to_s3, + # op_kwargs={ + # "bucket_name": bucket_name, + # "aws_conn_id": "aws_conn_id", + # "template_s3_key": "source/script/glue_game_rating_template.py", + # "rendered_s3_key": "source/script/glue_game_rating_script.py", + # # into template + # "input_path": f"s3://de-2-1-bucket/source/json/table_name=raw_game_rating/year={year}/month={month}/day={day}/", + # "output_path": f"s3://de-2-1-bucket/source/parquet/table_name=raw_game_rating/year={year}/month={month}/day={day}/", + # "collect_date": f"{year}-{month}-{day}", + # }, + # ) run_glue_job = GlueJobOperator( task_id="run_glue_job", @@ -76,6 +77,11 @@ def upload_rendered_script_to_s3( region_name="ap-northeast-2", iam_role_name="AWSGlueServiceRole-crawler", dag=dag, + script_args={ # ~script.py에서 사용할 인자들을 정의 + "--input_path": f"s3://de-2-1-bucket/source/json/table_name=raw_game_rating/year={year}/month={month}/day={day}/", + "--output_path": f"s3://de-2-1-bucket/source/parquet/table_name=raw_game_rating/year={year}/month={month}/day={day}/", + "--collect_date": f"{year}-{month}-{day}", + }, ) wait_for_job = GlueJobSensor( # trigger @@ -86,4 +92,5 @@ def upload_rendered_script_to_s3( aws_conn_id="aws_conn_id", ) -upload_script >> run_glue_job >> wait_for_job +# upload_script >> run_glue_job >> wait_for_job +run_glue_job >> wait_for_job From 1145d43abec359bc02b64e79e1f53cd7dd5e165c Mon Sep 17 00:00:00 2001 From: lyh Date: Wed, 28 Feb 2024 20:06:51 +0900 Subject: [PATCH 186/249] [feat] passing arguments to Streaming Glue job script --- dags/glue/glue_followers.py | 34 ++++++++++++++++++++-------------- dags/glue/live_viewer.py | 36 +++++++++++++++++++++--------------- 2 files changed, 41 insertions(+), 29 deletions(-) diff --git a/dags/glue/glue_followers.py b/dags/glue/glue_followers.py index 475938c..daa3bd3 100644 --- a/dags/glue/glue_followers.py +++ b/dags/glue/glue_followers.py @@ -1,7 +1,8 @@ from datetime import datetime, timedelta from airflow import DAG -from airflow.operators.python import PythonOperator + +# from airflow.operators.python import PythonOperator from airflow.providers.amazon.aws.operators.glue import GlueJobOperator from airflow.providers.amazon.aws.hooks.s3 import S3Hook from airflow.providers.amazon.aws.sensors.glue import GlueJobSensor @@ -51,18 +52,18 @@ def upload_rendered_script_to_s3( month = "{{ (data_interval_end - macros.timedelta(days=1)).in_timezone('Asia/Seoul').month }}" day = "{{ (data_interval_end - macros.timedelta(days=1)).in_timezone('Asia/Seoul').day }}" - upload_script = PythonOperator( - task_id="upload_script_to_s3", - python_callable=upload_rendered_script_to_s3, - op_kwargs={ - "bucket_name": bucket_name, - "aws_conn_id": "aws_conn_id", - "template_s3_key": "source/script/glue_followers_template.py", - "rendered_s3_key": "source/script/glue_followers_script.py", - "input_path": f"s3://de-2-1-bucket/source/json/table_name=followers/year={year}/month={month}/day={day}/", - "output_path": f"s3://de-2-1-bucket/source/parquet/table_name=followers/year={year}/month={month}/day={day}/", - }, - ) + # upload_script = PythonOperator( + # task_id="upload_script_to_s3", + # python_callable=upload_rendered_script_to_s3, + # op_kwargs={ + # "bucket_name": bucket_name, + # "aws_conn_id": "aws_conn_id", + # "template_s3_key": "source/script/glue_followers_template.py", + # "rendered_s3_key": "source/script/glue_followers_script.py", + # "input_path": f"s3://de-2-1-bucket/source/json/table_name=followers/year={year}/month={month}/day={day}/", + # "output_path": f"s3://de-2-1-bucket/source/parquet/table_name=followers/year={year}/month={month}/day={day}/", + # }, + # ) run_glue_job = GlueJobOperator( task_id="run_glue_job", @@ -72,7 +73,12 @@ def upload_rendered_script_to_s3( region_name="ap-northeast-2", iam_role_name="AWSGlueServiceRole-crawler", dag=dag, + script_args={ # ~script.py에서 사용할 인자들을 정의 + "--input_path": f"s3://de-2-1-bucket/source/json/table_name=followers/year={year}/month={month}/day={day}/", + "--output_path": f"s3://de-2-1-bucket/source/parquet/table_name=followers/year={year}/month={month}/day={day}/", + }, ) + wait_for_job = GlueJobSensor( # trigger task_id="wait_for_job_followers_job", # task_id 직관적으로 알 수 있도록 변경 권장 job_name="de-2-1_followers", @@ -82,4 +88,4 @@ def upload_rendered_script_to_s3( ) -upload_script >> run_glue_job >> wait_for_job +run_glue_job >> wait_for_job diff --git a/dags/glue/live_viewer.py b/dags/glue/live_viewer.py index c524811..614d5b8 100644 --- a/dags/glue/live_viewer.py +++ b/dags/glue/live_viewer.py @@ -1,7 +1,8 @@ from datetime import datetime, timedelta from airflow import DAG -from airflow.operators.python import PythonOperator + +# from airflow.operators.python import PythonOperator from airflow.providers.amazon.aws.operators.glue import GlueJobOperator from airflow.providers.amazon.aws.hooks.s3 import S3Hook from airflow.providers.amazon.aws.sensors.glue import GlueJobSensor @@ -53,19 +54,19 @@ def upload_rendered_script_to_s3( day = "{{ (data_interval_end - macros.timedelta(hours=1)).in_timezone('Asia/Seoul').day }}" hour = "{{ (data_interval_end - macros.timedelta(hours=1)).in_timezone('Asia/Seoul').hour }}" # before 1 hour - upload_script = PythonOperator( - task_id="upload_script_to_s3", - python_callable=upload_rendered_script_to_s3, - op_kwargs={ - "bucket_name": bucket_name, - "aws_conn_id": "aws_conn_id", - "template_s3_key": "source/script/live_viewer_template.py", - "rendered_s3_key": "source/script/live_viewer_script.py", - # into template - "input_path": f"s3://de-2-1-bucket/source/json/table_name=raw_live_viewer/year={year}/month={month}/day={day}/hour={hour}/", - "output_path": f"s3://de-2-1-bucket/source/parquet/table_name=raw_live_viewer/year={year}/month={month}/day={day}/hour={hour}/", - }, - ) + # upload_script = PythonOperator( + # task_id="upload_script_to_s3", + # python_callable=upload_rendered_script_to_s3, + # op_kwargs={ + # "bucket_name": bucket_name, + # "aws_conn_id": "aws_conn_id", + # "template_s3_key": "source/script/live_viewer_template.py", + # "rendered_s3_key": "source/script/live_viewer_script.py", + # # into template + # "input_path": f"s3://de-2-1-bucket/source/json/table_name=raw_live_viewer/year={year}/month={month}/day={day}/hour={hour}/", + # "output_path": f"s3://de-2-1-bucket/source/parquet/table_name=raw_live_viewer/year={year}/month={month}/day={day}/hour={hour}/", + # }, + # ) run_glue_job = GlueJobOperator( task_id="run_glue_job", @@ -75,7 +76,12 @@ def upload_rendered_script_to_s3( region_name="ap-northeast-2", iam_role_name="AWSGlueServiceRole-crawler", dag=dag, + script_args={ # ~script.py에서 사용할 인자들을 정의 + "--input_path": f"s3://de-2-1-bucket/source/json/table_name=raw_live_viewer/year={year}/month={month}/day={day}/hour={hour}/", + "--output_path": f"s3://de-2-1-bucket/source/parquet/table_name=raw_live_viewer/year={year}/month={month}/day={day}/hour={hour}/", + }, ) + wait_for_job = GlueJobSensor( # trigger task_id="wait_for_job_live_viewer_job", # task_id 직관적으로 알 수 있도록 변경 권장 job_name="de-2-1_live_viewer", @@ -85,4 +91,4 @@ def upload_rendered_script_to_s3( ) -upload_script >> run_glue_job >> wait_for_job +run_glue_job >> wait_for_job From 24672d8a62e5ad62a1188811333a2a8024201fcd Mon Sep 17 00:00:00 2001 From: lyh Date: Thu, 29 Feb 2024 22:37:09 +0900 Subject: [PATCH 187/249] [fix] defend code for region lock game --- dags/game/game_ccu_to_s3.py | 1 + dags/game/game_price_to_s3.py | 16 ++++++++++------ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/dags/game/game_ccu_to_s3.py b/dags/game/game_ccu_to_s3.py index 13b852b..406f7e4 100644 --- a/dags/game/game_ccu_to_s3.py +++ b/dags/game/game_ccu_to_s3.py @@ -53,6 +53,7 @@ def get_ccu(): break else: print(f"Failed to get CCU of {game}!") + temp = {"player_count": 0, "result": 0, "game_id": appid} else: temp["game_id"] = appid data.append(temp) # API 응답을 리스트에 추가 diff --git a/dags/game/game_price_to_s3.py b/dags/game/game_price_to_s3.py index e793ffe..9af6160 100644 --- a/dags/game/game_price_to_s3.py +++ b/dags/game/game_price_to_s3.py @@ -63,14 +63,18 @@ def get_price(): else: print(f"Failed to get price of {appid, name}!") - if not temp: + if not temp or not temp[appid]["success"]: temp = { - appid: { - "success": False, - "data": { - "price_overview": {"final": 999999999, "initial": 999999999} + "success": False, + "data": { + "steam_appid": appid, + "price_overview": { + "final": 999999999, + "initial": 999999999, + "discount_percent": 0, + "final_formatted": "₩ 999,999,999", }, - } + }, } else: temp = temp[appid] From 73d63542bf51739e141e8218e5423bb9742df670 Mon Sep 17 00:00:00 2001 From: lyh Date: Thu, 29 Feb 2024 22:54:51 +0900 Subject: [PATCH 188/249] [fix] appid type hotfix --- dags/game/game_price_to_s3.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dags/game/game_price_to_s3.py b/dags/game/game_price_to_s3.py index 9af6160..b682d5c 100644 --- a/dags/game/game_price_to_s3.py +++ b/dags/game/game_price_to_s3.py @@ -67,7 +67,7 @@ def get_price(): temp = { "success": False, "data": { - "steam_appid": appid, + "steam_appid": int(appid), "price_overview": { "final": 999999999, "initial": 999999999, From 484ab4921a5f5ac9778d4aaa2eb837240bc26a02 Mon Sep 17 00:00:00 2001 From: srlee056 Date: Thu, 29 Feb 2024 22:54:57 +0900 Subject: [PATCH 189/249] [hot-fix]: change follower dag --- dags/streaming/follower.py | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/dags/streaming/follower.py b/dags/streaming/follower.py index b16278a..f7d7e55 100644 --- a/dags/streaming/follower.py +++ b/dags/streaming/follower.py @@ -95,18 +95,15 @@ def get_broad_info(bjid, headers): broad_res = get_broad_info(bjid, headers) try: - broad_info = broad_res.get("broad") - - if broad_info: - combined_res = {"broad_info": broad_res} - - stream_data = { - "streamer_id": s_id, - "afc_s_id": bjid, - "current_time": current_time, - **combined_res, - } - live_stream_data.append(stream_data) + combined_res = {"broad_info": broad_res} + + stream_data = { + "streamer_id": s_id, + "afc_s_id": bjid, + "current_time": current_time, + **combined_res, + } + live_stream_data.append(stream_data) except (AttributeError, TypeError) as e: error_msg = f"Error occurred: {str(e)}" From 06d3fefea72f759a7e9d1cff3f01292e11b1af1d Mon Sep 17 00:00:00 2001 From: srlee056 Date: Thu, 29 Feb 2024 23:07:13 +0900 Subject: [PATCH 190/249] [hot-fix]: change glue job dag start date --- dags/glue/glue_followers.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dags/glue/glue_followers.py b/dags/glue/glue_followers.py index daa3bd3..b2ae909 100644 --- a/dags/glue/glue_followers.py +++ b/dags/glue/glue_followers.py @@ -37,7 +37,7 @@ def upload_rendered_script_to_s3( default_args={ "owner": "airflow", "depends_on_past": False, - "start_date": datetime(2024, 2, 27), + "start_date": datetime(2024, 2, 26), "retries": 0, "retry_delay": timedelta(minutes=5), }, From a756599b4c6204ce8f7ac0ce724ebb1cae0ffd22 Mon Sep 17 00:00:00 2001 From: srlee056 Date: Thu, 29 Feb 2024 23:24:46 +0900 Subject: [PATCH 191/249] [hot-fix]: change glue job dag max dag run --- dags/glue/glue_followers.py | 1 + 1 file changed, 1 insertion(+) diff --git a/dags/glue/glue_followers.py b/dags/glue/glue_followers.py index b2ae909..a51e0ab 100644 --- a/dags/glue/glue_followers.py +++ b/dags/glue/glue_followers.py @@ -41,6 +41,7 @@ def upload_rendered_script_to_s3( "retries": 0, "retry_delay": timedelta(minutes=5), }, + max_active_runs=1, tags=["glue", "streaming"], schedule_interval="30 16 * * *", # 한국 기준 새벽 1시 30분 catchup=True, From 13dfe51f556ccc472ce29aa3ab6b0faf3197ece9 Mon Sep 17 00:00:00 2001 From: mediwind <48349059+mediwind@users.noreply.github.com> Date: Mon, 4 Mar 2024 16:29:58 +0900 Subject: [PATCH 192/249] [feat] ELT_test_DAG --- dags/elt/anal_week_game_viewer.py | 90 +++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 dags/elt/anal_week_game_viewer.py diff --git a/dags/elt/anal_week_game_viewer.py b/dags/elt/anal_week_game_viewer.py new file mode 100644 index 0000000..956e718 --- /dev/null +++ b/dags/elt/anal_week_game_viewer.py @@ -0,0 +1,90 @@ +from airflow import DAG +from airflow.decorators import task +from airflow.providers.postgres.hooks.postgres import PostgresHook + +from datetime import datetime, timedelta +import slack + + +def connect_to_redshift(): + db_hook = PostgresHook(postgres_conn_id="aws_redshift_conn_id") + conn = db_hook.get_conn() + conn.autocommit = True + + return conn.cursor() + + +@task +def elt(): + # 1. GCE의 RDS의 GAME_INFO 테이블에서 게임 리스트 가져오기 + cur = connect_to_redshift() + print("Successfully connected to Redshift") + conn = cur.connection + + try: + # Start a new transaction + conn.autocommit = False + + # analytics.anal_week_game_viewer 테이블의 모든 데이터 삭제 + sql = """ + DELETE FROM analytics.anal_week_game_viewer; + """ + cur.execute(sql) + print("Successfully deleted all data from analytics.anal_week_game_viewer") + + # SELECT 쿼리의 결과를 analytics.anal_week_game_viewer 테이블에 삽입 + sql = """ + INSERT INTO analytics.anal_week_game_viewer + SELECT GAME_NM, CAST(HOUR AS INTEGER), si.streamer_nm as STREAMER_NM, AVG(viewer_num) AS VIEWER_AVG, TO_DATE(TO_CHAR(live_collect_time::DATE, 'YYYY-MM-DD'), 'YYYY-MM-DD') AS CREATED_DATE + FROM ( + SELECT gi.game_nm ,rlv.game_code, rlv.live_collect_time, rlv.viewer_num, rlv.year, rlv.month, rlv.day, CAST(rlv.hour AS INTEGER), rlv.streamer_id + FROM external_raw_data.table_name_raw_live_viewer AS rlv + INNER JOIN external_raw_data.game_info AS gi + ON rlv.game_code = gi.chz_game_code + + UNION + + SELECT gi.game_nm, rlv.game_code, rlv.live_collect_time, rlv.viewer_num, rlv.year, rlv.month, rlv.day, CAST(rlv.hour AS INTEGER), rlv.streamer_id + FROM external_raw_data.table_name_raw_live_viewer AS rlv + INNER JOIN external_raw_data.game_info AS gi + ON rlv.game_code = LPAD(gi.afc_game_code, LENGTH(gi.afc_game_code) + 3, '0') + ) AS subquery + INNER JOIN external_raw_data.streamer_info AS si + ON subquery.streamer_id = si.streamer_id + GROUP BY GAME_NM, CREATED_DATE, HOUR, si.streamer_nm + ORDER BY GAME_NM, CREATED_DATE, HOUR, si.streamer_nm; + """ + cur.execute(sql) + print("Successfully inserted data into analytics.anal_week_game_viewer") + + # 트랜잭션 commit + conn.commit() + print("Successfully committed the transaction") + + except Exception as e: + # Rollback + print("Error occurred. Start to rollback", e) + conn.rollback() + raise + + finally: + # Close the cursor and connection + cur.close() + conn.close() + print("Connection to Redshift is closed") + + +with DAG( + dag_id="ELT_Anal_Week_Game_Viewer", + start_date=datetime(2024, 1, 1), + catchup=False, + tags=["ELT", "analytics", "game_viewer"], + schedule_interval="0 0 * * *", # 매일 자정 + default_args={ + "retries": 3, + "retry_delay": timedelta(minutes=5), + "on_failure_callback": slack.on_failure_callback, + }, +) as dag: + + elt() From 74cf765c11649825ba5b919148fe7777b51100a6 Mon Sep 17 00:00:00 2001 From: mediwind <48349059+mediwind@users.noreply.github.com> Date: Mon, 4 Mar 2024 17:04:21 +0900 Subject: [PATCH 193/249] [fix] hotfix follower_dag_schedule --- dags/glue/glue_followers.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dags/glue/glue_followers.py b/dags/glue/glue_followers.py index a51e0ab..5971720 100644 --- a/dags/glue/glue_followers.py +++ b/dags/glue/glue_followers.py @@ -43,7 +43,7 @@ def upload_rendered_script_to_s3( }, max_active_runs=1, tags=["glue", "streaming"], - schedule_interval="30 16 * * *", # 한국 기준 새벽 1시 30분 + schedule_interval="0 1 * * *", # 한국 기준 오전 10시 catchup=True, ) as dag: From 55ca50df6bb4da7aa871fd902390879d5f01e269 Mon Sep 17 00:00:00 2001 From: poriz Date: Mon, 4 Mar 2024 19:53:45 +0900 Subject: [PATCH 194/249] [hotfix] live_viewer.py max_active_runs=1 --- dags/glue/live_viewer.py | 1 + 1 file changed, 1 insertion(+) diff --git a/dags/glue/live_viewer.py b/dags/glue/live_viewer.py index 614d5b8..5d1657b 100644 --- a/dags/glue/live_viewer.py +++ b/dags/glue/live_viewer.py @@ -44,6 +44,7 @@ def upload_rendered_script_to_s3( tags=["glue", "streaming"], schedule_interval="0 * * * *", catchup=True, + max_active_runs=1 ) as dag: bucket_name = "de-2-1-bucket" From 4c418d86ceee49fc5bab26f8cf63ee5e9a4ebf76 Mon Sep 17 00:00:00 2001 From: lyh Date: Mon, 4 Mar 2024 21:02:14 +0900 Subject: [PATCH 195/249] [fix] hotfix DAG scheduling time fix --- dags/game/game_price_to_s3.py | 2 +- dags/game/game_rating_to_s3.py | 2 +- dags/glue/game_price.py | 2 +- dags/glue/game_rating.py | 2 +- dags/glue/glue_followers.py | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/dags/game/game_price_to_s3.py b/dags/game/game_price_to_s3.py index b682d5c..fe9d918 100644 --- a/dags/game/game_price_to_s3.py +++ b/dags/game/game_price_to_s3.py @@ -100,7 +100,7 @@ def save_to_json(data): start_date=datetime(2024, 1, 1), catchup=False, tags=["Steam_API"], - schedule_interval="0 0 * * *", + schedule_interval="10 15 * * *", default_args={ "retries": 3, "retry_delay": timedelta(seconds=15), diff --git a/dags/game/game_rating_to_s3.py b/dags/game/game_rating_to_s3.py index c134304..0e8abec 100644 --- a/dags/game/game_rating_to_s3.py +++ b/dags/game/game_rating_to_s3.py @@ -126,7 +126,7 @@ def save_to_json(data): start_date=datetime(2024, 1, 1), catchup=False, tags=["Steam_API"], - schedule_interval="0 0 * * *", + schedule_interval="10 15 * * *", default_args={ "retries": 3, "retry_delay": timedelta(minutes=1), diff --git a/dags/glue/game_price.py b/dags/glue/game_price.py index e67a99d..9383eff 100644 --- a/dags/glue/game_price.py +++ b/dags/glue/game_price.py @@ -42,7 +42,7 @@ def upload_rendered_script_to_s3( "retry_delay": timedelta(seconds=15), }, max_active_runs=1, - schedule_interval="0 1 * * *", + schedule_interval="0 16 * * *", tags=["glue", "Game_Price"], catchup=True, ) as dag: diff --git a/dags/glue/game_rating.py b/dags/glue/game_rating.py index a005bbe..d1d91fb 100644 --- a/dags/glue/game_rating.py +++ b/dags/glue/game_rating.py @@ -42,7 +42,7 @@ def upload_rendered_script_to_s3( "retry_delay": timedelta(seconds=15), }, max_active_runs=1, - schedule_interval="0 1 * * *", + schedule_interval="0 16 * * *", tags=["glue", "Game_Rating"], catchup=True, ) as dag: diff --git a/dags/glue/glue_followers.py b/dags/glue/glue_followers.py index 5971720..f15a7ed 100644 --- a/dags/glue/glue_followers.py +++ b/dags/glue/glue_followers.py @@ -43,7 +43,7 @@ def upload_rendered_script_to_s3( }, max_active_runs=1, tags=["glue", "streaming"], - schedule_interval="0 1 * * *", # 한국 기준 오전 10시 + schedule_interval="0 16 * * *", # 한국 기준 오전 10시 catchup=True, ) as dag: From c5d6412bda4942fc3b00c7e40e3d0657cd40d1f0 Mon Sep 17 00:00:00 2001 From: lyh Date: Mon, 4 Mar 2024 21:04:44 +0900 Subject: [PATCH 196/249] [fix] script to explain time difference between Korean time and UTC --- dags/game/game_price_to_s3.py | 2 +- dags/game/game_rating_to_s3.py | 2 +- dags/glue/game_price.py | 2 +- dags/glue/game_rating.py | 2 +- dags/glue/glue_followers.py | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/dags/game/game_price_to_s3.py b/dags/game/game_price_to_s3.py index fe9d918..01e1c41 100644 --- a/dags/game/game_price_to_s3.py +++ b/dags/game/game_price_to_s3.py @@ -100,7 +100,7 @@ def save_to_json(data): start_date=datetime(2024, 1, 1), catchup=False, tags=["Steam_API"], - schedule_interval="10 15 * * *", + schedule_interval="10 15 * * *", # 한국시간 새벽 00시 10분 default_args={ "retries": 3, "retry_delay": timedelta(seconds=15), diff --git a/dags/game/game_rating_to_s3.py b/dags/game/game_rating_to_s3.py index 0e8abec..04ecd01 100644 --- a/dags/game/game_rating_to_s3.py +++ b/dags/game/game_rating_to_s3.py @@ -126,7 +126,7 @@ def save_to_json(data): start_date=datetime(2024, 1, 1), catchup=False, tags=["Steam_API"], - schedule_interval="10 15 * * *", + schedule_interval="10 15 * * *", # 한국시간 새벽 00시 10분 default_args={ "retries": 3, "retry_delay": timedelta(minutes=1), diff --git a/dags/glue/game_price.py b/dags/glue/game_price.py index 9383eff..a7d1836 100644 --- a/dags/glue/game_price.py +++ b/dags/glue/game_price.py @@ -42,7 +42,7 @@ def upload_rendered_script_to_s3( "retry_delay": timedelta(seconds=15), }, max_active_runs=1, - schedule_interval="0 16 * * *", + schedule_interval="0 16 * * *", # 한국시간 새벽 1시 tags=["glue", "Game_Price"], catchup=True, ) as dag: diff --git a/dags/glue/game_rating.py b/dags/glue/game_rating.py index d1d91fb..e76b49d 100644 --- a/dags/glue/game_rating.py +++ b/dags/glue/game_rating.py @@ -42,7 +42,7 @@ def upload_rendered_script_to_s3( "retry_delay": timedelta(seconds=15), }, max_active_runs=1, - schedule_interval="0 16 * * *", + schedule_interval="0 16 * * *", # 한국시간 새벽 1시 tags=["glue", "Game_Rating"], catchup=True, ) as dag: diff --git a/dags/glue/glue_followers.py b/dags/glue/glue_followers.py index f15a7ed..f4ec52f 100644 --- a/dags/glue/glue_followers.py +++ b/dags/glue/glue_followers.py @@ -43,7 +43,7 @@ def upload_rendered_script_to_s3( }, max_active_runs=1, tags=["glue", "streaming"], - schedule_interval="0 16 * * *", # 한국 기준 오전 10시 + schedule_interval="0 16 * * *", # 한국시간 새벽 1시 catchup=True, ) as dag: From dd22ee65d36b54650e93aea716e22a973bb6b2a0 Mon Sep 17 00:00:00 2001 From: danee <9356471@gmail.com> Date: Mon, 4 Mar 2024 21:15:38 +0900 Subject: [PATCH 197/249] [feat] ELT YSD_GAME_CCU --- dags/elt/anal_ysd_game_ccu.py | 84 +++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 dags/elt/anal_ysd_game_ccu.py diff --git a/dags/elt/anal_ysd_game_ccu.py b/dags/elt/anal_ysd_game_ccu.py new file mode 100644 index 0000000..764659b --- /dev/null +++ b/dags/elt/anal_ysd_game_ccu.py @@ -0,0 +1,84 @@ +from airflow import DAG +from airflow.decorators import task +from airflow.providers.postgres.hooks.postgres import PostgresHook + +from datetime import datetime, timedelta +import slack + + +def connect_to_redshift(): + db_hook = PostgresHook(postgres_conn_id="aws_redshift_conn_id") + conn = db_hook.get_conn() + conn.autocommit = True + + return conn.cursor() + + +@task +def elt(): + # 1. reshift external_raw_data 스키마 + cur = connect_to_redshift() + print("Successfully connected to Redshift") + conn = cur.connection + + try: + # Start a new transaction + conn.autocommit = False + + # analytics.ANAL_YSD_GAME_CCU 테이블의 모든 데이터 삭제 + sql = """ + DELETE FROM analytics.ANAL_YSD_GAME_CCU; + """ + cur.execute(sql) + print("Successfully deleted all data from analytics.ANAL_YSD_GAME_CCU") + + # SELECT 쿼리의 결과를 analytics.ANAL_YSD_GAME_CCU 테이블에 삽입 + sql = """ + INSERT INTO analytics.ANAL_YSD_GAME_CCU(GAME_NM, CCU_AVG, created_date) + SELECT + b.game_nm AS GAME_NM, + AVG(a.game_ccu) AS CCU_AVG, + current_date AS CREATED_DATE + FROM (SELECT GAME_ID, GAME_CCU + FROM external_raw_data.table_name_raw_game_ccu + WHERE CAST(collect_time AS timestamp) + BETWEEN GETDATE() - INTERVAL '1 day' + INTERVAL '6 hours' + AND GETDATE() + INTERVAL '6 hours') a + JOIN external_raw_data.game_info b + ON a.GAME_ID = b.GAME_ID + GROUP BY b.GAME_NM; + """ + cur.execute(sql) + print("Successfully inserted data into analytics.ANAL_YSD_GAME_CCU") + + # 트랜잭션 commit + conn.commit() + print("Successfully committed the transaction") + + except Exception as e: + # Rollback + print("Error occurred. Start to rollback", e) + conn.rollback() + raise + + finally: + # Close the cursor and connection + cur.close() + conn.close() + print("Connection to Redshift is closed") + + +with DAG( + dag_id="ELT_Anal_YSD_GAME_CCU", + start_date=datetime(2024, 1, 1), + catchup=False, + tags=["ELT", "analytics", "game_ccu"], + schedule_interval="0 2 * * *", # 매일 11시 + default_args={ + "retries": 3, + "retry_delay": timedelta(minutes=5), + "on_failure_callback": slack.on_failure_callback, + }, +) as dag: + + elt() From 85e31fabcb51460c6d0275d1442a535dee4216bd Mon Sep 17 00:00:00 2001 From: danee <9356471@gmail.com> Date: Mon, 4 Mar 2024 21:42:33 +0900 Subject: [PATCH 198/249] [feat] ELT ysd_game_rating --- dags/elt/anal_ysd_game_rating.py | 81 ++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 dags/elt/anal_ysd_game_rating.py diff --git a/dags/elt/anal_ysd_game_rating.py b/dags/elt/anal_ysd_game_rating.py new file mode 100644 index 0000000..f0f25a2 --- /dev/null +++ b/dags/elt/anal_ysd_game_rating.py @@ -0,0 +1,81 @@ +from airflow import DAG +from airflow.decorators import task +from airflow.providers.postgres.hooks.postgres import PostgresHook + +from datetime import datetime, timedelta +import slack + + +def connect_to_redshift(): + db_hook = PostgresHook(postgres_conn_id="aws_redshift_conn_id") + conn = db_hook.get_conn() + conn.autocommit = True + + return conn.cursor() + + +@task +def elt(): + # 1. reshift external_raw_data 스키마 + cur = connect_to_redshift() + print("Successfully connected to Redshift") + conn = cur.connection + + try: + # Start a new transaction + conn.autocommit = False + + # analytics.ANAL_YSD_GAME_CCU 테이블의 모든 데이터 삭제 + sql = """ + DELETE FROM analytics.ANAL_YSD_GAME_RATING; + """ + cur.execute(sql) + print("Successfully deleted all data from analytics.ANAL_YSD_GAME_RATING") + + # SELECT 쿼리의 결과를 analytics.ANAL_YSD_GAME_CCU 테이블에 삽입 + sql = """ + INSERT INTO analytics.ANAL_YSD_GAME_RATING(GAME_NM, POSITIVE_PERCENT, CREATED_DATE) + SELECT + b.game_nm AS GAME_NM, + (a.all_positive_percent)*0.05 AS POSITIVE_PERCENT, + current_date AS CREATED_DATE + FROM (SELECT game_id, all_positive_percent + FROM external_raw_data.table_name_raw_game_rating + WHERE collect_date = current_date) a + JOIN external_raw_data.game_info b + ON a.game_id = b.game_id ; + """ + cur.execute(sql) + print("Successfully inserted data into analytics.ANAL_YSD_GAME_RATING") + + # 트랜잭션 commit + conn.commit() + print("Successfully committed the transaction") + + except Exception as e: + # Rollback + print("Error occurred. Start to rollback", e) + conn.rollback() + raise + + finally: + # Close the cursor and connection + cur.close() + conn.close() + print("Connection to Redshift is closed") + + +with DAG( + dag_id="ELT_ANAL_YSD_GAME_RATING", + start_date=datetime(2024, 1, 1), + catchup=False, + tags=["ELT", "analytics", "game_rating"], + schedule_interval="0 2 * * *", # 매일 11시 + default_args={ + "retries": 3, + "retry_delay": timedelta(minutes=5), + "on_failure_callback": slack.on_failure_callback, + }, +) as dag: + + elt() From 913b81e58f99893a90891c461f67f45ba4431fb8 Mon Sep 17 00:00:00 2001 From: poriz Date: Mon, 4 Mar 2024 22:36:28 +0900 Subject: [PATCH 199/249] [hotfix] live_viewer.py retries change, add timedelta sensor(wait30s) --- dags/glue/live_viewer.py | 24 +++++++----------------- 1 file changed, 7 insertions(+), 17 deletions(-) diff --git a/dags/glue/live_viewer.py b/dags/glue/live_viewer.py index 5d1657b..476562f 100644 --- a/dags/glue/live_viewer.py +++ b/dags/glue/live_viewer.py @@ -6,6 +6,7 @@ from airflow.providers.amazon.aws.operators.glue import GlueJobOperator from airflow.providers.amazon.aws.hooks.s3 import S3Hook from airflow.providers.amazon.aws.sensors.glue import GlueJobSensor +from airflow.sensors.time_delta_sensor import TimeDeltaSensor from jinja2 import Template @@ -38,7 +39,7 @@ def upload_rendered_script_to_s3( "owner": "airflow", "depends_on_past": False, "start_date": datetime(2024, 2, 26), - "retries": 0, + "retries": 1, "retry_delay": timedelta(minutes=5), }, tags=["glue", "streaming"], @@ -55,20 +56,6 @@ def upload_rendered_script_to_s3( day = "{{ (data_interval_end - macros.timedelta(hours=1)).in_timezone('Asia/Seoul').day }}" hour = "{{ (data_interval_end - macros.timedelta(hours=1)).in_timezone('Asia/Seoul').hour }}" # before 1 hour - # upload_script = PythonOperator( - # task_id="upload_script_to_s3", - # python_callable=upload_rendered_script_to_s3, - # op_kwargs={ - # "bucket_name": bucket_name, - # "aws_conn_id": "aws_conn_id", - # "template_s3_key": "source/script/live_viewer_template.py", - # "rendered_s3_key": "source/script/live_viewer_script.py", - # # into template - # "input_path": f"s3://de-2-1-bucket/source/json/table_name=raw_live_viewer/year={year}/month={month}/day={day}/hour={hour}/", - # "output_path": f"s3://de-2-1-bucket/source/parquet/table_name=raw_live_viewer/year={year}/month={month}/day={day}/hour={hour}/", - # }, - # ) - run_glue_job = GlueJobOperator( task_id="run_glue_job", job_name="de-2-1_live_viewer", # when launch, plz clean&change glue jobs @@ -90,6 +77,9 @@ def upload_rendered_script_to_s3( run_id=run_glue_job.output, aws_conn_id="aws_conn_id", ) + wait_30_seconds = TimeDeltaSensor( + task_id= 'wait_30_seconds', + delta=timedelta(seconds=30), + ) - -run_glue_job >> wait_for_job +run_glue_job >> wait_for_job >> wait_30_seconds From 7bb003802914b5f0c2431b7054deffdeb82bb3f8 Mon Sep 17 00:00:00 2001 From: poriz Date: Tue, 5 Mar 2024 00:10:41 +0900 Subject: [PATCH 200/249] [feat] add anal_broadcast.py, fix-live_viewer_script.py template(x) --- dags/elt/anal_broadcast.py | 120 +++++++++++++ ...ewer_template.py => live_viewer_script.py} | 167 +++++++++--------- 2 files changed, 205 insertions(+), 82 deletions(-) create mode 100644 dags/elt/anal_broadcast.py rename dataCollector/glue&athena/{live_viewer_template.py => live_viewer_script.py} (81%) diff --git a/dags/elt/anal_broadcast.py b/dags/elt/anal_broadcast.py new file mode 100644 index 0000000..5c8bbee --- /dev/null +++ b/dags/elt/anal_broadcast.py @@ -0,0 +1,120 @@ +from airflow import DAG +from airflow.decorators import task +from airflow.providers.postgres.hooks.postgres import PostgresHook + +from datetime import datetime, timedelta +import slack + + +def connect_to_redshift(): + db_hook = PostgresHook(postgres_conn_id="aws_redshift_conn_id") + conn = db_hook.get_conn() + conn.autocommit = True + + return conn.cursor() + + +@task +def elt(): + # 1. reshift external_raw_data 스키마 + cur = connect_to_redshift() + print("Successfully connected to Redshift") + conn = cur.connection + + try: + # Start a new transaction + conn.autocommit = False + + # analytics.ANAL_YSD_GAME_CCU 테이블의 모든 데이터 삭제 + sql = """ + DELETE FROM analytics.ANAL_BROADCAST; + """ + cur.execute(sql) + print("Successfully deleted all data from analytics.ANAL_BROADCAST") + + # SELECT 쿼리의 결과를 analytics.ANAL_YSD_GAME_CCU 테이블에 삽입 + sql = """ + INSERT INTO analytics.ANAL_BROADCAST(STREAMER_NM, BROADCAST_ID, GAME_NM, PLATFORM, AVG_VIEWER_NUM, BROADCAST_START_TIME, BROADCAST_END_TIME, GAME_DURATION, CREATED_DATE) + WITH ParsedData AS ( + SELECT *, live_collect_time::TIMESTAMPTZ AS parsed_time + FROM external_raw_data.table_name_raw_live_viewer + ), + RankedData AS( + SELECT + *, + LAG(parsed_time, 1) OVER ( + PARTITION BY streamer_id, broadcast_id, game_code + ORDER BY parsed_time + ) AS prev_timestamp + FROM ParsedData + ), + GroupedData AS( + SELECT *, + CASE + WHEN parsed_time - INTERVAL '5' MINUTE > prev_timestamp THEN 1 + ELSE 0 + END AS is_new_group, + COALESCE(NULLIF(game_code, ''), 'talk') AS normalized_game_code + FROM RankedData + ), + GroupIDs AS ( + SELECT *, + SUM(is_new_group) OVER ( + PARTITION BY streamer_id, broadcast_id, normalized_game_code + ORDER BY parsed_time + ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW + ) AS group_id, + normalized_game_code AS n_game_code + FROM GroupedData + ) + SELECT + s_info.streamer_nm AS STREAMER_NM, + g_ids.broadcast_id AS BROADCAST_ID, + COALESCE(g_info.game_nm,g_ids.n_game_code) AS GAME_NM, + g_ids.platform AS PLATFORM, + AVG(g_ids.viewer_num)::integer AS AVG_VIEWER_NUM, + MIN(g_ids.parsed_time) AS start_time, + MAX(g_ids.parsed_time) AS end_time, + (EXTRACT(EPOCH FROM MAX(g_ids.parsed_time)) - EXTRACT(EPOCH FROM MIN(g_ids.parsed_time))) / 60 AS GAME_DURATION, + CURRENT_DATE AS created_date + FROM GroupIDs AS g_ids + LEFT JOIN external_raw_data.streamer_info AS s_info ON s_info.streamer_id = g_ids.streamer_id + LEFT JOIN external_raw_data.game_info AS g_info + ON g_ids.n_game_code = g_info.chz_game_code OR LTRIM(g_ids.n_game_code, '0') = g_info.afc_game_code + GROUP BY STREAMER_NM, BROADCAST_ID, GAME_NM, PLATFORM, g_ids.group_id, g_ids.n_game_code + ORDER BY STREAMER_NM, BROADCAST_ID, start_time; + """ + cur.execute(sql) + print("Successfully inserted data into analytics.ANAL_BROADCAST") + + # 트랜잭션 commit + conn.commit() + print("Successfully committed the transaction") + + except Exception as e: + # Rollback + print("Error occurred. Start to rollback", e) + conn.rollback() + raise + + finally: + # Close the cursor and connection + cur.close() + conn.close() + print("Connection to Redshift is closed") + + +with DAG( + dag_id="ELT_ANAL_BROADCAST", + start_date=datetime(2024, 1, 1), + catchup=False, + tags=["ELT", "analytics", "game_ccu"], + schedule_interval="0 2 * * *", # 매일 11시 + default_args={ + "retries": 3, + "retry_delay": timedelta(minutes=5), + "on_failure_callback": slack.on_failure_callback, + }, +) as dag: + + elt() diff --git a/dataCollector/glue&athena/live_viewer_template.py b/dataCollector/glue&athena/live_viewer_script.py similarity index 81% rename from dataCollector/glue&athena/live_viewer_template.py rename to dataCollector/glue&athena/live_viewer_script.py index 73b3804..796c3d3 100644 --- a/dataCollector/glue&athena/live_viewer_template.py +++ b/dataCollector/glue&athena/live_viewer_script.py @@ -1,82 +1,85 @@ -## live_viewer glue script template - -import sys -from awsglue.transforms import * -from awsglue.utils import getResolvedOptions -from pyspark.context import SparkContext -from awsglue.context import GlueContext -from awsglue.job import Job -from pyspark.sql.functions import * -from awsglue.dynamicframe import DynamicFrame - -# SparkContext와 GlueContext 초기화 -sc = SparkContext() -glueContext = GlueContext(sc) -spark = glueContext.spark_session - -# Job 초기화 (Job Bookmark 활성화 포함) -job = Job(glueContext) -args = getResolvedOptions(sys.argv, ["JOB_NAME"]) -job.init(args["JOB_NAME"], args) - -# S3에서 데이터를 읽어오는 부분 -datasource = glueContext.create_dynamic_frame.from_options( - "s3", - {"paths": ["{{ input_path }}"], "recurse": True}, - format="json", - transformation_ctx="datasource", -) -# 데이터 가공 -datasource_df = datasource.toDF() - -chzzk_source = datasource_df.select("stream_data.chzzk").select(explode("chzzk")) -afreeca_source = datasource_df.select("stream_data.afreeca").select(explode("afreeca")) - -# chzzk_source.printSchema() -chzzk_df = chzzk_source.select( - col("col.streamer_id").alias("STREAMER_ID"), - col("col.content.liveID").alias("BROADCAST_ID"), - col("col.current_time").alias("LIVE_COLLECT_TIME"), - col("col.content.liveTitle").alias("BROADCAST_TITLE"), - col("col.content.liveCategoryValue").alias("GAME_CODE"), - col("col.content.concurrentUserCount").alias("VIEWER_NUM"), -) -# add platform -chzzk_df = chzzk_df.withColumn("PLATFORM", lit("chzzk")) -# chzzk_df.show() - -# afreeca_source.printSchema() -afreeca_df = afreeca_source.select( - col("col.streamer_id").alias("STREAMER_ID"), - col("col.live_status.BNO").alias("BROADCAST_ID"), - col("col.current_time").alias("LIVE_COLLECT_TIME"), - col("col.live_status.TITLE").alias("BROADCAST_TITLE"), - col("col.live_status.CATE").alias("GAME_CODE"), - col("col.broad_info.broad.current_sum_viewer").alias("VIEWER_NUM"), -) -afreeca_df = afreeca_df.withColumn("PLATFORM", lit("afreeca")) -# afreeca_df.show(truncate=False) - -result_df = chzzk_df.union(afreeca_df) - -# 스키마 정보를 로깅 -print("Schema Information:") -result_df.printSchema() - -# "PLATFORM" 컬럼을 기준으로 파티션을 구성 -partitioned_df = result_df.repartition("PLATFORM") - -# 파티션된 Spark DataFrame을 DynamicFrame으로 변환 -partitioned_dynamic_frame = DynamicFrame.fromDF( - partitioned_df, glueContext, "partitioned_dynamic_frame" -) - - -# Parquet으로 변환하여 S3에 저장 -glueContext.write_dynamic_frame.from_options( - frame=partitioned_dynamic_frame, - connection_type="s3", - connection_options={"path": "{{ output_path }}"}, - format="parquet", - transformation_ctx="datasource", -) +## live_viewer glue script template + +import sys +from awsglue.transforms import * +from awsglue.utils import getResolvedOptions +from pyspark.context import SparkContext +from awsglue.context import GlueContext +from awsglue.job import Job +from pyspark.sql.functions import * +from awsglue.dynamicframe import DynamicFrame + +# SparkContext와 GlueContext 초기화 +sc = SparkContext() +glueContext = GlueContext(sc) +spark = glueContext.spark_session + +# Job 초기화 (Job Bookmark 활성화 포함) +job = Job(glueContext) +args = getResolvedOptions(sys.argv, ['JOB_NAME', 'input_path', 'output_path']) +job.init(args["JOB_NAME"], args) + +input_path = args['input_path'] +output_path = args['output_path'] + +# S3에서 데이터를 읽어오는 부분 +datasource = glueContext.create_dynamic_frame.from_options( + "s3", + {"paths": [input_path], "recurse": True}, + format="json", + transformation_ctx="datasource", +) +# 데이터 가공 +datasource_df = datasource.toDF() + +chzzk_source = datasource_df.select("stream_data.chzzk").select(explode("chzzk")) +afreeca_source = datasource_df.select("stream_data.afreeca").select(explode("afreeca")) + +# chzzk_source.printSchema() +chzzk_df = chzzk_source.select( + col("col.streamer_id").alias("STREAMER_ID"), + col("col.content.liveID").alias("BROADCAST_ID"), + col("col.current_time").alias("LIVE_COLLECT_TIME"), + col("col.content.liveTitle").alias("BROADCAST_TITLE"), + col("col.content.liveCategoryValue").alias("GAME_CODE"), + col("col.content.concurrentUserCount").alias("VIEWER_NUM"), +) +# add platform +chzzk_df = chzzk_df.withColumn("PLATFORM", lit("chzzk")) +# chzzk_df.show() + +# afreeca_source.printSchema() +afreeca_df = afreeca_source.select( + col("col.streamer_id").alias("STREAMER_ID"), + col("col.live_status.BNO").alias("BROADCAST_ID"), + col("col.current_time").alias("LIVE_COLLECT_TIME"), + col("col.live_status.TITLE").alias("BROADCAST_TITLE"), + col("col.live_status.CATE").alias("GAME_CODE"), + col("col.broad_info.broad.current_sum_viewer").alias("VIEWER_NUM"), +) +afreeca_df = afreeca_df.withColumn("PLATFORM", lit("afreeca")) +# afreeca_df.show(truncate=False) + +result_df = chzzk_df.union(afreeca_df) + +result_df = result_df.withColumn("GAME_CODE", when(col("GAME_CODE").isNull(), lit("talk")).otherwise(col("GAME_CODE"))) + +# 스키마 정보를 로깅 +print("Schema Information:") +result_df.printSchema() + +# "PLATFORM" 컬럼을 기준으로 파티션을 구성 +partitioned_df = result_df.repartition("PLATFORM") + +# 파티션된 Spark DataFrame을 DynamicFrame으로 변환 +partitioned_dynamic_frame = DynamicFrame.fromDF(partitioned_df, glueContext, "partitioned_dynamic_frame") + + +# Parquet으로 변환하여 S3에 저장 +glueContext.write_dynamic_frame.from_options( + frame=partitioned_dynamic_frame, + connection_type="s3", + connection_options={"path": output_path}, + format="parquet", + transformation_ctx="datasource", +) \ No newline at end of file From fe9d71b9164090b8402f29fb8de2c9702a2e7235 Mon Sep 17 00:00:00 2001 From: poriz Date: Tue, 5 Mar 2024 00:12:52 +0900 Subject: [PATCH 201/249] [feat] script change --- .../glue&athena/live_viewer_script.py | 70 +++++++++++-------- 1 file changed, 41 insertions(+), 29 deletions(-) diff --git a/dataCollector/glue&athena/live_viewer_script.py b/dataCollector/glue&athena/live_viewer_script.py index 796c3d3..b968b34 100644 --- a/dataCollector/glue&athena/live_viewer_script.py +++ b/dataCollector/glue&athena/live_viewer_script.py @@ -8,6 +8,7 @@ from awsglue.job import Job from pyspark.sql.functions import * from awsglue.dynamicframe import DynamicFrame +from pyspark.sql.types import StructType, StructField, StringType, IntegerType, TimestampType # SparkContext와 GlueContext 초기화 sc = SparkContext() @@ -29,41 +30,52 @@ format="json", transformation_ctx="datasource", ) + +# 공통 스키마 정의 +common_schema = StructType([ + StructField("STREAMER_ID", StringType(), True), + StructField("BROADCAST_ID", StringType(), True), + StructField("LIVE_COLLECT_TIME", TimestampType(), True), + StructField("BROADCAST_TITLE", StringType(), True), + StructField("GAME_CODE", StringType(), True), + StructField("VIEWER_NUM", IntegerType(), True), + StructField("PLATFORM", StringType(), True), +]) + # 데이터 가공 datasource_df = datasource.toDF() +try: + chzzk_source = datasource_df.select("stream_data.chzzk").select(explode("chzzk")) + # chzzk_source.printSchema() + chzzk_df = chzzk_source.select( + col("col.streamer_id").alias("STREAMER_ID"), + col("col.content.liveID").alias("BROADCAST_ID"), + col("col.current_time").alias("LIVE_COLLECT_TIME"), + col("col.content.liveTitle").alias("BROADCAST_TITLE"), + col("col.content.liveCategoryValue").alias("GAME_CODE"), + col("col.content.concurrentUserCount").alias("VIEWER_NUM"), + ) + chzzk_df = chzzk_df.withColumn("PLATFORM", lit("chzzk")) +except: + chzzk_df = spark.createDataFrame([],schema = common_schema) -chzzk_source = datasource_df.select("stream_data.chzzk").select(explode("chzzk")) -afreeca_source = datasource_df.select("stream_data.afreeca").select(explode("afreeca")) +try: + afreeca_source = datasource_df.select("stream_data.afreeca").select(explode("afreeca")) + afreeca_df = afreeca_source.select( + col("col.streamer_id").alias("STREAMER_ID"), + col("col.live_status.BNO").alias("BROADCAST_ID"), + col("col.current_time").alias("LIVE_COLLECT_TIME"), + col("col.live_status.TITLE").alias("BROADCAST_TITLE"), + col("col.live_status.CATE").alias("GAME_CODE"), + col("col.broad_info.broad.current_sum_viewer").alias("VIEWER_NUM"), + ) + afreeca_df = afreeca_df.withColumn("PLATFORM", lit("afreeca")) +except: + afreeca_df = spark.createDataFrame([], schema=common_schema) -# chzzk_source.printSchema() -chzzk_df = chzzk_source.select( - col("col.streamer_id").alias("STREAMER_ID"), - col("col.content.liveID").alias("BROADCAST_ID"), - col("col.current_time").alias("LIVE_COLLECT_TIME"), - col("col.content.liveTitle").alias("BROADCAST_TITLE"), - col("col.content.liveCategoryValue").alias("GAME_CODE"), - col("col.content.concurrentUserCount").alias("VIEWER_NUM"), -) -# add platform -chzzk_df = chzzk_df.withColumn("PLATFORM", lit("chzzk")) -# chzzk_df.show() - -# afreeca_source.printSchema() -afreeca_df = afreeca_source.select( - col("col.streamer_id").alias("STREAMER_ID"), - col("col.live_status.BNO").alias("BROADCAST_ID"), - col("col.current_time").alias("LIVE_COLLECT_TIME"), - col("col.live_status.TITLE").alias("BROADCAST_TITLE"), - col("col.live_status.CATE").alias("GAME_CODE"), - col("col.broad_info.broad.current_sum_viewer").alias("VIEWER_NUM"), -) -afreeca_df = afreeca_df.withColumn("PLATFORM", lit("afreeca")) -# afreeca_df.show(truncate=False) result_df = chzzk_df.union(afreeca_df) -result_df = result_df.withColumn("GAME_CODE", when(col("GAME_CODE").isNull(), lit("talk")).otherwise(col("GAME_CODE"))) - # 스키마 정보를 로깅 print("Schema Information:") result_df.printSchema() @@ -82,4 +94,4 @@ connection_options={"path": output_path}, format="parquet", transformation_ctx="datasource", -) \ No newline at end of file +) From 3b96c214f2691107ebb63da18a0304f3a1057ced Mon Sep 17 00:00:00 2001 From: poriz Date: Tue, 5 Mar 2024 00:22:36 +0900 Subject: [PATCH 202/249] [feat] script change add 19 filter --- dataCollector/glue&athena/live_viewer_script.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/dataCollector/glue&athena/live_viewer_script.py b/dataCollector/glue&athena/live_viewer_script.py index b968b34..4bfeb0f 100644 --- a/dataCollector/glue&athena/live_viewer_script.py +++ b/dataCollector/glue&athena/live_viewer_script.py @@ -46,8 +46,11 @@ datasource_df = datasource.toDF() try: chzzk_source = datasource_df.select("stream_data.chzzk").select(explode("chzzk")) + + chz_filtered_source = chzzk_source.filter(col("col.content.adult") == 'false') + # chzzk_source.printSchema() - chzzk_df = chzzk_source.select( + chzzk_df = chz_filtered_source.select( col("col.streamer_id").alias("STREAMER_ID"), col("col.content.liveID").alias("BROADCAST_ID"), col("col.current_time").alias("LIVE_COLLECT_TIME"), @@ -61,7 +64,9 @@ try: afreeca_source = datasource_df.select("stream_data.afreeca").select(explode("afreeca")) - afreeca_df = afreeca_source.select( + afc_filtered_source = afreeca_source.filter(col("col.broad_info.broad.broad_grade") < 19) + + afreeca_df = afc_filtered_source.select( col("col.streamer_id").alias("STREAMER_ID"), col("col.live_status.BNO").alias("BROADCAST_ID"), col("col.current_time").alias("LIVE_COLLECT_TIME"), From 7bcad641f7043d7489bb938962a352e189021580 Mon Sep 17 00:00:00 2001 From: poriz Date: Tue, 5 Mar 2024 00:37:10 +0900 Subject: [PATCH 203/249] [hotfix] 30->60s --- dags/glue/live_viewer.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/dags/glue/live_viewer.py b/dags/glue/live_viewer.py index 476562f..4d7ee39 100644 --- a/dags/glue/live_viewer.py +++ b/dags/glue/live_viewer.py @@ -77,9 +77,9 @@ def upload_rendered_script_to_s3( run_id=run_glue_job.output, aws_conn_id="aws_conn_id", ) - wait_30_seconds = TimeDeltaSensor( + wait_60_seconds = TimeDeltaSensor( task_id= 'wait_30_seconds', - delta=timedelta(seconds=30), + delta=timedelta(seconds=60), ) -run_glue_job >> wait_for_job >> wait_30_seconds +run_glue_job >> wait_for_job >> wait_60_seconds From cf2e68da9e0a764a3a1a116b30b716649d54abb6 Mon Sep 17 00:00:00 2001 From: poriz Date: Tue, 5 Mar 2024 00:50:49 +0900 Subject: [PATCH 204/249] [hotfix] timedeltasensor -> sleep method --- dags/glue/live_viewer.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/dags/glue/live_viewer.py b/dags/glue/live_viewer.py index 4d7ee39..56524de 100644 --- a/dags/glue/live_viewer.py +++ b/dags/glue/live_viewer.py @@ -1,8 +1,9 @@ from datetime import datetime, timedelta +import time from airflow import DAG -# from airflow.operators.python import PythonOperator +from airflow.operators.python import PythonOperator from airflow.providers.amazon.aws.operators.glue import GlueJobOperator from airflow.providers.amazon.aws.hooks.s3 import S3Hook from airflow.providers.amazon.aws.sensors.glue import GlueJobSensor @@ -10,6 +11,8 @@ from jinja2 import Template +def sleep_for_60_seconds(): + time.sleep(60) def upload_rendered_script_to_s3( bucket_name, template_s3_key, rendered_s3_key, aws_conn_id, **kwargs @@ -77,9 +80,10 @@ def upload_rendered_script_to_s3( run_id=run_glue_job.output, aws_conn_id="aws_conn_id", ) - wait_60_seconds = TimeDeltaSensor( - task_id= 'wait_30_seconds', - delta=timedelta(seconds=60), + sleep_task = PythonOperator( + task_id='sleep_for_60_seconds', + python_callable=sleep_for_60_seconds, + dag=dag, ) -run_glue_job >> wait_for_job >> wait_60_seconds +run_glue_job >> wait_for_job >> sleep_task From c0c54838b4d755fc8103e91d43e57d3f6d7dcfe1 Mon Sep 17 00:00:00 2001 From: srlee056 Date: Tue, 5 Mar 2024 01:03:38 +0900 Subject: [PATCH 205/249] [feat]: add crawler-operator to dag --- dags/glue/game_ccu.py | 38 ++++++++++++++++++++++---------------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/dags/glue/game_ccu.py b/dags/glue/game_ccu.py index 3588726..279f1bd 100644 --- a/dags/glue/game_ccu.py +++ b/dags/glue/game_ccu.py @@ -1,9 +1,11 @@ from datetime import datetime, timedelta from airflow import DAG +from airflow.models import Variable # from airflow.operators.python import PythonOperator from airflow.providers.amazon.aws.operators.glue import GlueJobOperator +from airflow.providers.amazon.aws.operators.glue_crawler import GlueCrawlerOperator from airflow.providers.amazon.aws.hooks.s3 import S3Hook from airflow.providers.amazon.aws.sensors.glue import GlueJobSensor @@ -44,7 +46,7 @@ def upload_rendered_script_to_s3( max_active_runs=1, schedule_interval="5 * * * *", tags=["glue", "Game_CCU"], - catchup=True, + catchup=False, ) as dag: bucket_name = "de-2-1-bucket" @@ -54,20 +56,6 @@ def upload_rendered_script_to_s3( day = "{{ (data_interval_end - macros.timedelta(hours=1)).in_timezone('Asia/Seoul').day }}" hour = "{{ (data_interval_end - macros.timedelta(hours=1)).in_timezone('Asia/Seoul').hour }}" # before 1 hour - # upload_script = PythonOperator( - # task_id="upload_script_to_s3", - # python_callable=upload_rendered_script_to_s3, - # op_kwargs={ - # "bucket_name": bucket_name, - # "aws_conn_id": "aws_conn_id", - # "template_s3_key": "source/script/glue_game_ccu_template.py", - # "rendered_s3_key": "source/script/glue_game_ccu_script.py", - # # into template - # "input_path": f"s3://de-2-1-bucket/source/json/table_name=raw_game_ccu/year={year}/month={month}/day={day}/hour={hour}/", - # "output_path": f"s3://de-2-1-bucket/source/parquet/table_name=raw_game_ccu/year={year}/month={month}/day={day}/hour={hour}/", - # }, - # ) - run_glue_job = GlueJobOperator( task_id="run_glue_job", job_name="de-2-1_game_ccu", @@ -90,5 +78,23 @@ def upload_rendered_script_to_s3( aws_conn_id="aws_conn_id", ) + glue_crawler_config = { + "Name": "de-2-1-raw_game_ccu", + "Role": Variable.get("glue_crawler_arn"), + "DatabaseName": "de_2_1_glue", + "Targets": { + "S3Targets": [ + { + "Path": "s3://de-2-1-bucket/source/parquet/table_name=raw_live_viewer/" + } + ] + }, + } + + crawl_s3 = GlueCrawlerOperator( + task_id="crawl_s3", + config=glue_crawler_config, + aws_conn_id="aws_conn_id", + ) # upload_script >> run_glue_job >> wait_for_job -run_glue_job >> wait_for_job +run_glue_job >> wait_for_job >> crawl_s3 From 97d808203d2bcfad74d8567146e257dbb01368ea Mon Sep 17 00:00:00 2001 From: srlee056 Date: Tue, 5 Mar 2024 01:09:20 +0900 Subject: [PATCH 206/249] [fix]: catchup false->true --- dags/glue/game_ccu.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dags/glue/game_ccu.py b/dags/glue/game_ccu.py index 279f1bd..44c5884 100644 --- a/dags/glue/game_ccu.py +++ b/dags/glue/game_ccu.py @@ -46,7 +46,7 @@ def upload_rendered_script_to_s3( max_active_runs=1, schedule_interval="5 * * * *", tags=["glue", "Game_CCU"], - catchup=False, + catchup=True, ) as dag: bucket_name = "de-2-1-bucket" From 30e4640840b1c965f0609511848f3f20ebcb4930 Mon Sep 17 00:00:00 2001 From: srlee056 Date: Tue, 5 Mar 2024 01:55:14 +0900 Subject: [PATCH 207/249] [fix]: add variable and rename key --- dags/glue/game_ccu.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dags/glue/game_ccu.py b/dags/glue/game_ccu.py index 44c5884..390f854 100644 --- a/dags/glue/game_ccu.py +++ b/dags/glue/game_ccu.py @@ -80,7 +80,7 @@ def upload_rendered_script_to_s3( glue_crawler_config = { "Name": "de-2-1-raw_game_ccu", - "Role": Variable.get("glue_crawler_arn"), + "Role": Variable.get("glue_crawler_arn_secret"), "DatabaseName": "de_2_1_glue", "Targets": { "S3Targets": [ From 942ae2df5e765f48c168fbca1b5ccdd0c6476045 Mon Sep 17 00:00:00 2001 From: srlee056 Date: Tue, 5 Mar 2024 02:02:40 +0900 Subject: [PATCH 208/249] [fix]: fix variable part --- dags/glue/game_ccu.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dags/glue/game_ccu.py b/dags/glue/game_ccu.py index 390f854..c26e8e0 100644 --- a/dags/glue/game_ccu.py +++ b/dags/glue/game_ccu.py @@ -77,10 +77,10 @@ def upload_rendered_script_to_s3( run_id=run_glue_job.output, aws_conn_id="aws_conn_id", ) - + glue_crawler_arn = Variable.get("glue_crawler_arn_secret") glue_crawler_config = { "Name": "de-2-1-raw_game_ccu", - "Role": Variable.get("glue_crawler_arn_secret"), + "Role": glue_crawler_arn, "DatabaseName": "de_2_1_glue", "Targets": { "S3Targets": [ From 6964eac1f7f4e1b0a472ae6381c90253e219fa5b Mon Sep 17 00:00:00 2001 From: srlee056 Date: Tue, 5 Mar 2024 02:10:03 +0900 Subject: [PATCH 209/249] [feat]: modify test for not checking Variable --- tests/dags/test_dag_integrity.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/tests/dags/test_dag_integrity.py b/tests/dags/test_dag_integrity.py index 70e9163..b4b9b61 100644 --- a/tests/dags/test_dag_integrity.py +++ b/tests/dags/test_dag_integrity.py @@ -3,6 +3,7 @@ import glob import os import pytest +from unittest.mock import patch # from airflow.models import DAG from airflow.models.dagbag import DagBag @@ -21,11 +22,10 @@ def test_dag_integrity(dag_file): Args: dag_file (str): The path to a DAG file to be tested. """ - dag_bag = DagBag(dag_folder=os.path.dirname(dag_file), include_examples=False) + with patch("airflow.models.Variable.get", return_value="dummy_value"): + dag_bag = DagBag(dag_folder=os.path.dirname(dag_file), include_examples=False) + dag_bag.process_file(dag_file, only_if_updated=True) - dag_bag.process_file(dag_file, only_if_updated=True) - - # dag_id, dag in dag_bag.dags.items() - for dag_id, _ in dag_bag.dags.items(): - assert dag_id in dag_bag.dags, "DAG ID not found in dag_bag.dags" - assert not dag_bag.import_errors, "Import errors found in DagBag" + for dag_id, _ in dag_bag.dags.items(): + assert dag_id in dag_bag.dags, "DAG ID not found in dag_bag.dags" + assert not dag_bag.import_errors, "Import errors found in DagBag" From 67c11a4725fccc0565d395c31e9fdf67ea590bcb Mon Sep 17 00:00:00 2001 From: srlee056 Date: Tue, 5 Mar 2024 02:23:23 +0900 Subject: [PATCH 210/249] [hotfix]: fix s3 path of crawler --- dags/glue/game_ccu.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/dags/glue/game_ccu.py b/dags/glue/game_ccu.py index c26e8e0..9d12d35 100644 --- a/dags/glue/game_ccu.py +++ b/dags/glue/game_ccu.py @@ -44,7 +44,7 @@ def upload_rendered_script_to_s3( "retry_delay": timedelta(seconds=15), }, max_active_runs=1, - schedule_interval="5 * * * *", + schedule="5 * * * *", tags=["glue", "Game_CCU"], catchup=True, ) as dag: @@ -84,9 +84,7 @@ def upload_rendered_script_to_s3( "DatabaseName": "de_2_1_glue", "Targets": { "S3Targets": [ - { - "Path": "s3://de-2-1-bucket/source/parquet/table_name=raw_live_viewer/" - } + {"Path": "s3://de-2-1-bucket/source/parquet/table_name=raw_game_ccu/"} ] }, } From 699e869cd0f78ef4daaf44f82fc10e11bebfb424 Mon Sep 17 00:00:00 2001 From: Lee Sarah Date: Tue, 5 Mar 2024 12:31:46 +0900 Subject: [PATCH 211/249] [feat]: Update crawler task to glue game_price dag --- dags/glue/game_price.py | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/dags/glue/game_price.py b/dags/glue/game_price.py index a7d1836..23497a3 100644 --- a/dags/glue/game_price.py +++ b/dags/glue/game_price.py @@ -1,9 +1,11 @@ from datetime import datetime, timedelta from airflow import DAG +from airflow.models import Variable # from airflow.operators.python import PythonOperator from airflow.providers.amazon.aws.operators.glue import GlueJobOperator +from airflow.providers.amazon.aws.operators.glue_crawler import GlueCrawlerOperator from airflow.providers.amazon.aws.hooks.s3 import S3Hook from airflow.providers.amazon.aws.sensors.glue import GlueJobSensor @@ -42,7 +44,7 @@ def upload_rendered_script_to_s3( "retry_delay": timedelta(seconds=15), }, max_active_runs=1, - schedule_interval="0 16 * * *", # 한국시간 새벽 1시 + schedule_interval="0 16 * * *", # 한국시간 새벽 1시 tags=["glue", "Game_Price"], catchup=True, ) as dag: @@ -91,6 +93,22 @@ def upload_rendered_script_to_s3( run_id=run_glue_job.output, aws_conn_id="aws_conn_id", ) + glue_crawler_arn = Variable.get("glue_crawler_arn_secret") + glue_crawler_config = { + "Name": "de-2-1-raw_game_price", + "Role": glue_crawler_arn, + "DatabaseName": "de_2_1_glue", + "Targets": { + "S3Targets": [ + {"Path": "s3://de-2-1-bucket/source/parquet/table_name=raw_game_price/"} + ] + }, + } + crawl_s3 = GlueCrawlerOperator( + task_id="crawl_s3", + config=glue_crawler_config, + aws_conn_id="aws_conn_id", + ) # upload_script >> run_glue_job >> wait_for_job -run_glue_job >> wait_for_job +run_glue_job >> wait_for_job >> crawl_s3 From 9da29898f5f3d167ad582c3e1c1b48095d7232fb Mon Sep 17 00:00:00 2001 From: Lee Sarah Date: Tue, 5 Mar 2024 12:34:11 +0900 Subject: [PATCH 212/249] [feat]: Update crawler task to glue game_rating dag --- dags/glue/game_price.py | 3 ++- dags/glue/game_rating.py | 42 +++++++++++++++++++++++----------------- 2 files changed, 26 insertions(+), 19 deletions(-) diff --git a/dags/glue/game_price.py b/dags/glue/game_price.py index 23497a3..d27201b 100644 --- a/dags/glue/game_price.py +++ b/dags/glue/game_price.py @@ -93,6 +93,7 @@ def upload_rendered_script_to_s3( run_id=run_glue_job.output, aws_conn_id="aws_conn_id", ) + glue_crawler_arn = Variable.get("glue_crawler_arn_secret") glue_crawler_config = { "Name": "de-2-1-raw_game_price", @@ -110,5 +111,5 @@ def upload_rendered_script_to_s3( config=glue_crawler_config, aws_conn_id="aws_conn_id", ) -# upload_script >> run_glue_job >> wait_for_job + run_glue_job >> wait_for_job >> crawl_s3 diff --git a/dags/glue/game_rating.py b/dags/glue/game_rating.py index e76b49d..78781a0 100644 --- a/dags/glue/game_rating.py +++ b/dags/glue/game_rating.py @@ -1,9 +1,11 @@ from datetime import datetime, timedelta from airflow import DAG +from airflow.models import Variable # from airflow.operators.python import PythonOperator from airflow.providers.amazon.aws.operators.glue import GlueJobOperator +from airflow.providers.amazon.aws.operators.glue_crawler import GlueCrawlerOperator from airflow.providers.amazon.aws.hooks.s3 import S3Hook from airflow.providers.amazon.aws.sensors.glue import GlueJobSensor @@ -42,7 +44,7 @@ def upload_rendered_script_to_s3( "retry_delay": timedelta(seconds=15), }, max_active_runs=1, - schedule_interval="0 16 * * *", # 한국시간 새벽 1시 + schedule_interval="0 16 * * *", # 한국시간 새벽 1시 tags=["glue", "Game_Rating"], catchup=True, ) as dag: @@ -54,21 +56,6 @@ def upload_rendered_script_to_s3( day = "{{ data_interval_end.in_timezone('Asia/Seoul').day }}" hour = "{{ (data_interval_end - macros.timedelta(hours=1)).in_timezone('Asia/Seoul') }}" # before 1 hour - # upload_script = PythonOperator( - # task_id="upload_script_to_s3", - # python_callable=upload_rendered_script_to_s3, - # op_kwargs={ - # "bucket_name": bucket_name, - # "aws_conn_id": "aws_conn_id", - # "template_s3_key": "source/script/glue_game_rating_template.py", - # "rendered_s3_key": "source/script/glue_game_rating_script.py", - # # into template - # "input_path": f"s3://de-2-1-bucket/source/json/table_name=raw_game_rating/year={year}/month={month}/day={day}/", - # "output_path": f"s3://de-2-1-bucket/source/parquet/table_name=raw_game_rating/year={year}/month={month}/day={day}/", - # "collect_date": f"{year}-{month}-{day}", - # }, - # ) - run_glue_job = GlueJobOperator( task_id="run_glue_job", job_name="de-2-1_game_rating", @@ -92,5 +79,24 @@ def upload_rendered_script_to_s3( aws_conn_id="aws_conn_id", ) -# upload_script >> run_glue_job >> wait_for_job -run_glue_job >> wait_for_job + glue_crawler_arn = Variable.get("glue_crawler_arn_secret") + glue_crawler_config = { + "Name": "de-2-1-raw_game_rating", + "Role": glue_crawler_arn, + "DatabaseName": "de_2_1_glue", + "Targets": { + "S3Targets": [ + { + "Path": "s3://de-2-1-bucket/source/parquet/table_name=raw_game_rating/" + } + ] + }, + } + + crawl_s3 = GlueCrawlerOperator( + task_id="crawl_s3", + config=glue_crawler_config, + aws_conn_id="aws_conn_id", + ) + +run_glue_job >> wait_for_job >> crawl_s3 From 452a83e8d61fea2a00090883d7af9386fb691788 Mon Sep 17 00:00:00 2001 From: Lee Sarah Date: Tue, 5 Mar 2024 12:35:38 +0900 Subject: [PATCH 213/249] [feat]: Update crawler task to glue followers dag --- dags/glue/glue_followers.py | 36 +++++++++++++++++++++--------------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/dags/glue/glue_followers.py b/dags/glue/glue_followers.py index f4ec52f..75c7b06 100644 --- a/dags/glue/glue_followers.py +++ b/dags/glue/glue_followers.py @@ -1,9 +1,11 @@ from datetime import datetime, timedelta from airflow import DAG +from airflow.models import Variable # from airflow.operators.python import PythonOperator from airflow.providers.amazon.aws.operators.glue import GlueJobOperator +from airflow.providers.amazon.aws.operators.glue_crawler import GlueCrawlerOperator from airflow.providers.amazon.aws.hooks.s3 import S3Hook from airflow.providers.amazon.aws.sensors.glue import GlueJobSensor @@ -43,7 +45,7 @@ def upload_rendered_script_to_s3( }, max_active_runs=1, tags=["glue", "streaming"], - schedule_interval="0 16 * * *", # 한국시간 새벽 1시 + schedule_interval="0 16 * * *", # 한국시간 새벽 1시 catchup=True, ) as dag: @@ -53,19 +55,6 @@ def upload_rendered_script_to_s3( month = "{{ (data_interval_end - macros.timedelta(days=1)).in_timezone('Asia/Seoul').month }}" day = "{{ (data_interval_end - macros.timedelta(days=1)).in_timezone('Asia/Seoul').day }}" - # upload_script = PythonOperator( - # task_id="upload_script_to_s3", - # python_callable=upload_rendered_script_to_s3, - # op_kwargs={ - # "bucket_name": bucket_name, - # "aws_conn_id": "aws_conn_id", - # "template_s3_key": "source/script/glue_followers_template.py", - # "rendered_s3_key": "source/script/glue_followers_script.py", - # "input_path": f"s3://de-2-1-bucket/source/json/table_name=followers/year={year}/month={month}/day={day}/", - # "output_path": f"s3://de-2-1-bucket/source/parquet/table_name=followers/year={year}/month={month}/day={day}/", - # }, - # ) - run_glue_job = GlueJobOperator( task_id="run_glue_job", job_name="de-2-1_followers", @@ -88,5 +77,22 @@ def upload_rendered_script_to_s3( aws_conn_id="aws_conn_id", ) + glue_crawler_arn = Variable.get("glue_crawler_arn_secret") + glue_crawler_config = { + "Name": "de-2-1-followers", + "Role": glue_crawler_arn, + "DatabaseName": "de_2_1_glue", + "Targets": { + "S3Targets": [ + {"Path": "s3://de-2-1-bucket/source/parquet/table_name=followers/"} + ] + }, + } + + crawl_s3 = GlueCrawlerOperator( + task_id="crawl_s3", + config=glue_crawler_config, + aws_conn_id="aws_conn_id", + ) -run_glue_job >> wait_for_job +run_glue_job >> wait_for_job >> crawl_s3 From 76581454e1009b89c8f7f44bac14aaf68c71ad9d Mon Sep 17 00:00:00 2001 From: Lee Sarah Date: Tue, 5 Mar 2024 12:38:15 +0900 Subject: [PATCH 214/249] [feat]: Update crawler task to glue live_viewer dag --- dags/glue/live_viewer.py | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/dags/glue/live_viewer.py b/dags/glue/live_viewer.py index 476562f..3a7b2b0 100644 --- a/dags/glue/live_viewer.py +++ b/dags/glue/live_viewer.py @@ -1,12 +1,13 @@ from datetime import datetime, timedelta from airflow import DAG +from airflow.models import Variable # from airflow.operators.python import PythonOperator from airflow.providers.amazon.aws.operators.glue import GlueJobOperator +from airflow.providers.amazon.aws.operators.glue_crawler import GlueCrawlerOperator from airflow.providers.amazon.aws.hooks.s3 import S3Hook from airflow.providers.amazon.aws.sensors.glue import GlueJobSensor -from airflow.sensors.time_delta_sensor import TimeDeltaSensor from jinja2 import Template @@ -45,7 +46,7 @@ def upload_rendered_script_to_s3( tags=["glue", "streaming"], schedule_interval="0 * * * *", catchup=True, - max_active_runs=1 + max_active_runs=1, ) as dag: bucket_name = "de-2-1-bucket" @@ -77,9 +78,25 @@ def upload_rendered_script_to_s3( run_id=run_glue_job.output, aws_conn_id="aws_conn_id", ) - wait_30_seconds = TimeDeltaSensor( - task_id= 'wait_30_seconds', - delta=timedelta(seconds=30), + + glue_crawler_arn = Variable.get("glue_crawler_arn_secret") + glue_crawler_config = { + "Name": "de-2-1-raw_live_viewer", + "Role": glue_crawler_arn, + "DatabaseName": "de_2_1_glue", + "Targets": { + "S3Targets": [ + { + "Path": "s3://de-2-1-bucket/source/parquet/table_name=raw_live_viewer/" + } + ] + }, + } + + crawl_s3 = GlueCrawlerOperator( + task_id="crawl_s3", + config=glue_crawler_config, + aws_conn_id="aws_conn_id", ) -run_glue_job >> wait_for_job >> wait_30_seconds +run_glue_job >> wait_for_job >> crawl_s3 From de86b075032e5e3c88c1a76dba8865b52a99196c Mon Sep 17 00:00:00 2001 From: poriz Date: Tue, 5 Mar 2024 13:35:40 +0900 Subject: [PATCH 215/249] [feat] analytics table add --- dags/elt/anal_broadcast.py | 5 +- dags/elt/anal_week_broadcast_duration.py | 79 +++++++++++++++++++++++ dags/elt/anal_week_broadcast_freq.py | 80 ++++++++++++++++++++++++ 3 files changed, 162 insertions(+), 2 deletions(-) create mode 100644 dags/elt/anal_week_broadcast_duration.py create mode 100644 dags/elt/anal_week_broadcast_freq.py diff --git a/dags/elt/anal_broadcast.py b/dags/elt/anal_broadcast.py index 5c8bbee..198ed27 100644 --- a/dags/elt/anal_broadcast.py +++ b/dags/elt/anal_broadcast.py @@ -81,6 +81,7 @@ def elt(): LEFT JOIN external_raw_data.streamer_info AS s_info ON s_info.streamer_id = g_ids.streamer_id LEFT JOIN external_raw_data.game_info AS g_info ON g_ids.n_game_code = g_info.chz_game_code OR LTRIM(g_ids.n_game_code, '0') = g_info.afc_game_code + WHERE g_ids.broadcast_id IS NOT NULL AND g_ids.parsed_time::DATE - 1 >= (CURRENT_DATE - 8) GROUP BY STREAMER_NM, BROADCAST_ID, GAME_NM, PLATFORM, g_ids.group_id, g_ids.n_game_code ORDER BY STREAMER_NM, BROADCAST_ID, start_time; """ @@ -108,8 +109,8 @@ def elt(): dag_id="ELT_ANAL_BROADCAST", start_date=datetime(2024, 1, 1), catchup=False, - tags=["ELT", "analytics", "game_ccu"], - schedule_interval="0 2 * * *", # 매일 11시 + tags=["ELT", "analytics", "broadcast"], + schedule_interval="0 22 * * *", # 매일 11시 default_args={ "retries": 3, "retry_delay": timedelta(minutes=5), diff --git a/dags/elt/anal_week_broadcast_duration.py b/dags/elt/anal_week_broadcast_duration.py new file mode 100644 index 0000000..991833e --- /dev/null +++ b/dags/elt/anal_week_broadcast_duration.py @@ -0,0 +1,79 @@ +from airflow import DAG +from airflow.decorators import task +from airflow.providers.postgres.hooks.postgres import PostgresHook + +from datetime import datetime, timedelta +import slack + + +def connect_to_redshift(): + db_hook = PostgresHook(postgres_conn_id="aws_redshift_conn_id") + conn = db_hook.get_conn() + conn.autocommit = True + + return conn.cursor() + + +@task +def elt(): + # 1. GCE의 RDS의 GAME_INFO 테이블에서 게임 리스트 가져오기 + cur = connect_to_redshift() + print("Successfully connected to Redshift") + conn = cur.connection + + try: + # Start a new transaction + conn.autocommit = False + + # analytics.anal_week_game_viewer 테이블의 모든 데이터 삭제 + sql = """ + DELETE FROM analytics.anal_week_broadcast_duration; + """ + cur.execute(sql) + print("Successfully deleted all data from analytics.anal_week_broadcast_duration") + + # SELECT 쿼리의 결과를 analytics.anal_week_game_viewer 테이블에 삽입 + sql = """ + INSERT INTO analytics.anal_week_broadcast_duration(GAME_NM, STREAMER_NM, BROADCAST_DURATION, CREATED_DATE) + select + game_nm AS GAME_NM, + streamer_nm AS STREAMER_NM, + SUM(game_duration) AS BROADCAST_DURATION, + current_date as created_date + from dev.analytics.anal_broadcast + group by 1,2; + """ + cur.execute(sql) + print("Successfully inserted data into analytics.anal_week_broadcast_duration") + + # 트랜잭션 commit + conn.commit() + print("Successfully committed the transaction") + + except Exception as e: + # Rollback + print("Error occurred. Start to rollback", e) + conn.rollback() + raise + + finally: + # Close the cursor and connection + cur.close() + conn.close() + print("Connection to Redshift is closed") + + +with DAG( + dag_id="ELT_Anal_Week_Broadcast_Duration", + start_date=datetime(2024, 1, 1), + catchup=False, + tags=["ELT", "analytics", "broadcast"], + schedule_interval="0 2 * * *", # 11:00(KST) + default_args={ + "retries": 3, + "retry_delay": timedelta(minutes=5), + "on_failure_callback": slack.on_failure_callback, + }, +) as dag: + + elt() diff --git a/dags/elt/anal_week_broadcast_freq.py b/dags/elt/anal_week_broadcast_freq.py new file mode 100644 index 0000000..a167acb --- /dev/null +++ b/dags/elt/anal_week_broadcast_freq.py @@ -0,0 +1,80 @@ +from airflow import DAG +from airflow.decorators import task +from airflow.providers.postgres.hooks.postgres import PostgresHook + +from datetime import datetime, timedelta +import slack + + +def connect_to_redshift(): + db_hook = PostgresHook(postgres_conn_id="aws_redshift_conn_id") + conn = db_hook.get_conn() + conn.autocommit = True + + return conn.cursor() + + +@task +def elt(): + # 1. GCE의 RDS의 GAME_INFO 테이블에서 게임 리스트 가져오기 + cur = connect_to_redshift() + print("Successfully connected to Redshift") + conn = cur.connection + + try: + # Start a new transaction + conn.autocommit = False + + # analytics.anal_week_game_viewer 테이블의 모든 데이터 삭제 + sql = """ + DELETE FROM analytics.anal_week_broadcast_freq; + """ + cur.execute(sql) + print("Successfully deleted all data from analytics.anal_week_broadcast_freq") + + # SELECT 쿼리의 결과를 analytics.anal_week_game_viewer 테이블에 삽입 + sql = """ + INSERT INTO analytics.anal_week_broadcast_freq(GAME_NM, STREAMER_NM, BROADCAST_FREQ, CREATED_DATE) + select + game_nm AS GAME_NM, + streamer_nm AS STREAMER_NM, + COUNT(distinct broadcast_id) AS BROADCAST_FREQ, + current_date as created_date + from dev.analytics.anal_broadcast + group by 1,2 + order by 4 DESC; + """ + cur.execute(sql) + print("Successfully inserted data into analytics.anal_week_broadcast_freq") + + # 트랜잭션 commit + conn.commit() + print("Successfully committed the transaction") + + except Exception as e: + # Rollback + print("Error occurred. Start to rollback", e) + conn.rollback() + raise + + finally: + # Close the cursor and connection + cur.close() + conn.close() + print("Connection to Redshift is closed") + + +with DAG( + dag_id="ELT_Anal_Week_Broadcast_Freq", + start_date=datetime(2024, 1, 1), + catchup=False, + tags=["ELT", "analytics", "broadcast"], + schedule_interval="0 2 * * *", # 11:00(KST) + default_args={ + "retries": 3, + "retry_delay": timedelta(minutes=5), + "on_failure_callback": slack.on_failure_callback, + }, +) as dag: + + elt() From 5e60b005654f78c9fbcf9c5ec6751e6bbc1382ef Mon Sep 17 00:00:00 2001 From: poriz Date: Tue, 5 Mar 2024 13:55:34 +0900 Subject: [PATCH 216/249] [feat] change analytics time --- dags/elt/anal_broadcast.py | 6 ++++-- dags/elt/anal_week_broadcast_duration.py | 2 +- dags/elt/anal_week_broadcast_freq.py | 2 +- dags/elt/anal_week_game_viewer.py | 2 +- 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/dags/elt/anal_broadcast.py b/dags/elt/anal_broadcast.py index 198ed27..e707f09 100644 --- a/dags/elt/anal_broadcast.py +++ b/dags/elt/anal_broadcast.py @@ -81,7 +81,9 @@ def elt(): LEFT JOIN external_raw_data.streamer_info AS s_info ON s_info.streamer_id = g_ids.streamer_id LEFT JOIN external_raw_data.game_info AS g_info ON g_ids.n_game_code = g_info.chz_game_code OR LTRIM(g_ids.n_game_code, '0') = g_info.afc_game_code - WHERE g_ids.broadcast_id IS NOT NULL AND g_ids.parsed_time::DATE - 1 >= (CURRENT_DATE - 8) + WHERE g_ids.broadcast_id IS NOT NULL + AND g_ids.parsed_time >= (CURRENT_DATE - INTERVAL '7 days' + INTERVAL '6 hours') + AND g_ids.parsed_time < (CURRENT_DATE + INTERVAL '6 hours') GROUP BY STREAMER_NM, BROADCAST_ID, GAME_NM, PLATFORM, g_ids.group_id, g_ids.n_game_code ORDER BY STREAMER_NM, BROADCAST_ID, start_time; """ @@ -110,7 +112,7 @@ def elt(): start_date=datetime(2024, 1, 1), catchup=False, tags=["ELT", "analytics", "broadcast"], - schedule_interval="0 22 * * *", # 매일 11시 + schedule_interval="0 22 * * *", # 매일 07시 default_args={ "retries": 3, "retry_delay": timedelta(minutes=5), diff --git a/dags/elt/anal_week_broadcast_duration.py b/dags/elt/anal_week_broadcast_duration.py index 991833e..93fa2e2 100644 --- a/dags/elt/anal_week_broadcast_duration.py +++ b/dags/elt/anal_week_broadcast_duration.py @@ -68,7 +68,7 @@ def elt(): start_date=datetime(2024, 1, 1), catchup=False, tags=["ELT", "analytics", "broadcast"], - schedule_interval="0 2 * * *", # 11:00(KST) + schedule_interval="0 23 * * *", # 08:00(KST) default_args={ "retries": 3, "retry_delay": timedelta(minutes=5), diff --git a/dags/elt/anal_week_broadcast_freq.py b/dags/elt/anal_week_broadcast_freq.py index a167acb..6199732 100644 --- a/dags/elt/anal_week_broadcast_freq.py +++ b/dags/elt/anal_week_broadcast_freq.py @@ -69,7 +69,7 @@ def elt(): start_date=datetime(2024, 1, 1), catchup=False, tags=["ELT", "analytics", "broadcast"], - schedule_interval="0 2 * * *", # 11:00(KST) + schedule_interval="0 23 * * *", # 08:00(KST) default_args={ "retries": 3, "retry_delay": timedelta(minutes=5), diff --git a/dags/elt/anal_week_game_viewer.py b/dags/elt/anal_week_game_viewer.py index 956e718..eb1dfdf 100644 --- a/dags/elt/anal_week_game_viewer.py +++ b/dags/elt/anal_week_game_viewer.py @@ -79,7 +79,7 @@ def elt(): start_date=datetime(2024, 1, 1), catchup=False, tags=["ELT", "analytics", "game_viewer"], - schedule_interval="0 0 * * *", # 매일 자정 + schedule_interval="0 23 * * *", # 매일 08시 default_args={ "retries": 3, "retry_delay": timedelta(minutes=5), From 0fc08ec3306d6e73136450200e5727edf3b01644 Mon Sep 17 00:00:00 2001 From: lyh Date: Tue, 5 Mar 2024 13:59:10 +0900 Subject: [PATCH 217/249] [fix] hotfix DAG time schedule fix --- dags/elt/anal_week_game_viewer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dags/elt/anal_week_game_viewer.py b/dags/elt/anal_week_game_viewer.py index 956e718..c99786e 100644 --- a/dags/elt/anal_week_game_viewer.py +++ b/dags/elt/anal_week_game_viewer.py @@ -79,7 +79,7 @@ def elt(): start_date=datetime(2024, 1, 1), catchup=False, tags=["ELT", "analytics", "game_viewer"], - schedule_interval="0 0 * * *", # 매일 자정 + schedule_interval="0 23 * * *", # 매일 자정 default_args={ "retries": 3, "retry_delay": timedelta(minutes=5), From 60e2cd937f598afc2e9eaa4438096e258423b39c Mon Sep 17 00:00:00 2001 From: danee <9356471@gmail.com> Date: Tue, 5 Mar 2024 14:03:32 +0900 Subject: [PATCH 218/249] [fix] edit analytics DAG schedule --- dags/elt/anal_ysd_game_ccu.py | 2 +- dags/elt/anal_ysd_game_rating.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dags/elt/anal_ysd_game_ccu.py b/dags/elt/anal_ysd_game_ccu.py index 764659b..5a11178 100644 --- a/dags/elt/anal_ysd_game_ccu.py +++ b/dags/elt/anal_ysd_game_ccu.py @@ -73,7 +73,7 @@ def elt(): start_date=datetime(2024, 1, 1), catchup=False, tags=["ELT", "analytics", "game_ccu"], - schedule_interval="0 2 * * *", # 매일 11시 + schedule_interval="0 22 * * *", # 매일 7시 default_args={ "retries": 3, "retry_delay": timedelta(minutes=5), diff --git a/dags/elt/anal_ysd_game_rating.py b/dags/elt/anal_ysd_game_rating.py index f0f25a2..50cd80d 100644 --- a/dags/elt/anal_ysd_game_rating.py +++ b/dags/elt/anal_ysd_game_rating.py @@ -70,7 +70,7 @@ def elt(): start_date=datetime(2024, 1, 1), catchup=False, tags=["ELT", "analytics", "game_rating"], - schedule_interval="0 2 * * *", # 매일 11시 + schedule_interval="0 22 * * *", # 매일 7시 default_args={ "retries": 3, "retry_delay": timedelta(minutes=5), From ae99443e31438e12f9b9237080be404d48606a44 Mon Sep 17 00:00:00 2001 From: poriz Date: Tue, 5 Mar 2024 14:56:37 +0900 Subject: [PATCH 219/249] [hotfix] chzzk - requests --- dags/streaming/stream_data_raw.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/dags/streaming/stream_data_raw.py b/dags/streaming/stream_data_raw.py index a2833e1..fb12cb2 100644 --- a/dags/streaming/stream_data_raw.py +++ b/dags/streaming/stream_data_raw.py @@ -48,18 +48,21 @@ def get_s_list(**kwargs): def chzzk_raw(current_time, **kwargs): chzzk_ids = kwargs["ti"].xcom_pull(key="chzzk", task_ids="get_s_list_task") live_stream_data = [] + headers = { + 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'} for s_id, id in chzzk_ids: res = requests.get( - f"https://api.chzzk.naver.com/service/v2/channels/{id}/live-detail" - ) + f"https://api.chzzk.naver.com/service/v1/channels/{id}",headers=headers + ).json() - if res.status_code == 200: - live_data = res.json() + if res['content']['openLive'] != 'false': + live_data = requests.get( + f"https://api.chzzk.naver.com/service/v2/channels/{id}/live-detail",headers=headers).json() if not live_data["content"]["liveId"]: time.sleep(5) live_data = requests.get( - f"https://api.chzzk.naver.com/service/v2/channels/{id}/live-detail" + f"https://api.chzzk.naver.com/service/v2/channels/{id}/live-detail",headers=headers ).json() try: live = live_data["content"]["status"] From 52c31371272c7bd090ae3ffbe30adf0e8104d71d Mon Sep 17 00:00:00 2001 From: lyh Date: Tue, 5 Mar 2024 15:15:13 +0900 Subject: [PATCH 220/249] [fix] fix anal_week_game_viewer --- dags/elt/anal_broadcast.py | 6 +-- dags/elt/anal_week_broadcast_duration.py | 6 ++- dags/elt/anal_week_broadcast_freq.py | 2 +- dags/elt/anal_week_game_viewer.py | 8 +-- dags/elt/anal_ysd_game_ccu.py | 2 +- dags/elt/anal_ysd_game_rating.py | 2 +- dags/game/game_price_to_s3.py | 2 +- dags/game/game_rating_to_s3.py | 2 +- dags/glue/live_viewer.py | 3 +- .../glue&athena/live_viewer_script.py | 50 ++++++++++++------- 10 files changed, 51 insertions(+), 32 deletions(-) diff --git a/dags/elt/anal_broadcast.py b/dags/elt/anal_broadcast.py index e707f09..3b66490 100644 --- a/dags/elt/anal_broadcast.py +++ b/dags/elt/anal_broadcast.py @@ -40,7 +40,7 @@ def elt(): FROM external_raw_data.table_name_raw_live_viewer ), RankedData AS( - SELECT + SELECT *, LAG(parsed_time, 1) OVER ( PARTITION BY streamer_id, broadcast_id, game_code @@ -83,9 +83,9 @@ def elt(): ON g_ids.n_game_code = g_info.chz_game_code OR LTRIM(g_ids.n_game_code, '0') = g_info.afc_game_code WHERE g_ids.broadcast_id IS NOT NULL AND g_ids.parsed_time >= (CURRENT_DATE - INTERVAL '7 days' + INTERVAL '6 hours') - AND g_ids.parsed_time < (CURRENT_DATE + INTERVAL '6 hours') + AND g_ids.parsed_time < (CURRENT_DATE + INTERVAL '6 hours') GROUP BY STREAMER_NM, BROADCAST_ID, GAME_NM, PLATFORM, g_ids.group_id, g_ids.n_game_code - ORDER BY STREAMER_NM, BROADCAST_ID, start_time; + ORDER BY STREAMER_NM, BROADCAST_ID, start_time; """ cur.execute(sql) print("Successfully inserted data into analytics.ANAL_BROADCAST") diff --git a/dags/elt/anal_week_broadcast_duration.py b/dags/elt/anal_week_broadcast_duration.py index 93fa2e2..76edda4 100644 --- a/dags/elt/anal_week_broadcast_duration.py +++ b/dags/elt/anal_week_broadcast_duration.py @@ -30,12 +30,14 @@ def elt(): DELETE FROM analytics.anal_week_broadcast_duration; """ cur.execute(sql) - print("Successfully deleted all data from analytics.anal_week_broadcast_duration") + print( + "Successfully deleted all data from analytics.anal_week_broadcast_duration" + ) # SELECT 쿼리의 결과를 analytics.anal_week_game_viewer 테이블에 삽입 sql = """ INSERT INTO analytics.anal_week_broadcast_duration(GAME_NM, STREAMER_NM, BROADCAST_DURATION, CREATED_DATE) - select + select game_nm AS GAME_NM, streamer_nm AS STREAMER_NM, SUM(game_duration) AS BROADCAST_DURATION, diff --git a/dags/elt/anal_week_broadcast_freq.py b/dags/elt/anal_week_broadcast_freq.py index 6199732..9dce0df 100644 --- a/dags/elt/anal_week_broadcast_freq.py +++ b/dags/elt/anal_week_broadcast_freq.py @@ -35,7 +35,7 @@ def elt(): # SELECT 쿼리의 결과를 analytics.anal_week_game_viewer 테이블에 삽입 sql = """ INSERT INTO analytics.anal_week_broadcast_freq(GAME_NM, STREAMER_NM, BROADCAST_FREQ, CREATED_DATE) - select + select game_nm AS GAME_NM, streamer_nm AS STREAMER_NM, COUNT(distinct broadcast_id) AS BROADCAST_FREQ, diff --git a/dags/elt/anal_week_game_viewer.py b/dags/elt/anal_week_game_viewer.py index eb1dfdf..a0bc67d 100644 --- a/dags/elt/anal_week_game_viewer.py +++ b/dags/elt/anal_week_game_viewer.py @@ -35,19 +35,21 @@ def elt(): # SELECT 쿼리의 결과를 analytics.anal_week_game_viewer 테이블에 삽입 sql = """ INSERT INTO analytics.anal_week_game_viewer - SELECT GAME_NM, CAST(HOUR AS INTEGER), si.streamer_nm as STREAMER_NM, AVG(viewer_num) AS VIEWER_AVG, TO_DATE(TO_CHAR(live_collect_time::DATE, 'YYYY-MM-DD'), 'YYYY-MM-DD') AS CREATED_DATE + SELECT GAME_NM, HOUR, si.streamer_nm as STREAMER_NM, AVG(viewer_num) AS VIEWER_AVG, TO_CHAR(live_collect_time::DATE, 'YYYY-MM-DD') AS CREATED_DATE FROM ( - SELECT gi.game_nm ,rlv.game_code, rlv.live_collect_time, rlv.viewer_num, rlv.year, rlv.month, rlv.day, CAST(rlv.hour AS INTEGER), rlv.streamer_id + SELECT gi.game_nm ,rlv.game_code, rlv.live_collect_time, rlv.viewer_num, rlv.year, rlv.month, rlv.day, rlv.hour, rlv.streamer_id FROM external_raw_data.table_name_raw_live_viewer AS rlv INNER JOIN external_raw_data.game_info AS gi ON rlv.game_code = gi.chz_game_code + WHERE gi.chz_game_code <> '' UNION - SELECT gi.game_nm, rlv.game_code, rlv.live_collect_time, rlv.viewer_num, rlv.year, rlv.month, rlv.day, CAST(rlv.hour AS INTEGER), rlv.streamer_id + SELECT gi.game_nm, rlv.game_code, rlv.live_collect_time, rlv.viewer_num, rlv.year, rlv.month, rlv.day, rlv.hour, rlv.streamer_id FROM external_raw_data.table_name_raw_live_viewer AS rlv INNER JOIN external_raw_data.game_info AS gi ON rlv.game_code = LPAD(gi.afc_game_code, LENGTH(gi.afc_game_code) + 3, '0') + WHERE gi.afc_game_code <> '' ) AS subquery INNER JOIN external_raw_data.streamer_info AS si ON subquery.streamer_id = si.streamer_id diff --git a/dags/elt/anal_ysd_game_ccu.py b/dags/elt/anal_ysd_game_ccu.py index 5a11178..990a1d1 100644 --- a/dags/elt/anal_ysd_game_ccu.py +++ b/dags/elt/anal_ysd_game_ccu.py @@ -41,7 +41,7 @@ def elt(): current_date AS CREATED_DATE FROM (SELECT GAME_ID, GAME_CCU FROM external_raw_data.table_name_raw_game_ccu - WHERE CAST(collect_time AS timestamp) + WHERE CAST(collect_time AS timestamp) BETWEEN GETDATE() - INTERVAL '1 day' + INTERVAL '6 hours' AND GETDATE() + INTERVAL '6 hours') a JOIN external_raw_data.game_info b diff --git a/dags/elt/anal_ysd_game_rating.py b/dags/elt/anal_ysd_game_rating.py index 50cd80d..a86c949 100644 --- a/dags/elt/anal_ysd_game_rating.py +++ b/dags/elt/anal_ysd_game_rating.py @@ -35,7 +35,7 @@ def elt(): # SELECT 쿼리의 결과를 analytics.ANAL_YSD_GAME_CCU 테이블에 삽입 sql = """ INSERT INTO analytics.ANAL_YSD_GAME_RATING(GAME_NM, POSITIVE_PERCENT, CREATED_DATE) - SELECT + SELECT b.game_nm AS GAME_NM, (a.all_positive_percent)*0.05 AS POSITIVE_PERCENT, current_date AS CREATED_DATE diff --git a/dags/game/game_price_to_s3.py b/dags/game/game_price_to_s3.py index 01e1c41..635c7e7 100644 --- a/dags/game/game_price_to_s3.py +++ b/dags/game/game_price_to_s3.py @@ -100,7 +100,7 @@ def save_to_json(data): start_date=datetime(2024, 1, 1), catchup=False, tags=["Steam_API"], - schedule_interval="10 15 * * *", # 한국시간 새벽 00시 10분 + schedule_interval="10 15 * * *", # 한국시간 새벽 00시 10분 default_args={ "retries": 3, "retry_delay": timedelta(seconds=15), diff --git a/dags/game/game_rating_to_s3.py b/dags/game/game_rating_to_s3.py index 04ecd01..803e77a 100644 --- a/dags/game/game_rating_to_s3.py +++ b/dags/game/game_rating_to_s3.py @@ -126,7 +126,7 @@ def save_to_json(data): start_date=datetime(2024, 1, 1), catchup=False, tags=["Steam_API"], - schedule_interval="10 15 * * *", # 한국시간 새벽 00시 10분 + schedule_interval="10 15 * * *", # 한국시간 새벽 00시 10분 default_args={ "retries": 3, "retry_delay": timedelta(minutes=1), diff --git a/dags/glue/live_viewer.py b/dags/glue/live_viewer.py index a966cb9..c15b095 100644 --- a/dags/glue/live_viewer.py +++ b/dags/glue/live_viewer.py @@ -4,7 +4,6 @@ from airflow import DAG from airflow.models import Variable -from airflow.operators.python import PythonOperator from airflow.providers.amazon.aws.operators.glue import GlueJobOperator from airflow.providers.amazon.aws.operators.glue_crawler import GlueCrawlerOperator from airflow.providers.amazon.aws.hooks.s3 import S3Hook @@ -12,9 +11,11 @@ from jinja2 import Template + def sleep_for_60_seconds(): time.sleep(60) + def upload_rendered_script_to_s3( bucket_name, template_s3_key, rendered_s3_key, aws_conn_id, **kwargs ): diff --git a/dataCollector/glue&athena/live_viewer_script.py b/dataCollector/glue&athena/live_viewer_script.py index 4bfeb0f..a808ca2 100644 --- a/dataCollector/glue&athena/live_viewer_script.py +++ b/dataCollector/glue&athena/live_viewer_script.py @@ -8,7 +8,13 @@ from awsglue.job import Job from pyspark.sql.functions import * from awsglue.dynamicframe import DynamicFrame -from pyspark.sql.types import StructType, StructField, StringType, IntegerType, TimestampType +from pyspark.sql.types import ( + StructType, + StructField, + StringType, + IntegerType, + TimestampType, +) # SparkContext와 GlueContext 초기화 sc = SparkContext() @@ -17,11 +23,11 @@ # Job 초기화 (Job Bookmark 활성화 포함) job = Job(glueContext) -args = getResolvedOptions(sys.argv, ['JOB_NAME', 'input_path', 'output_path']) +args = getResolvedOptions(sys.argv, ["JOB_NAME", "input_path", "output_path"]) job.init(args["JOB_NAME"], args) -input_path = args['input_path'] -output_path = args['output_path'] +input_path = args["input_path"] +output_path = args["output_path"] # S3에서 데이터를 읽어오는 부분 datasource = glueContext.create_dynamic_frame.from_options( @@ -32,22 +38,24 @@ ) # 공통 스키마 정의 -common_schema = StructType([ - StructField("STREAMER_ID", StringType(), True), - StructField("BROADCAST_ID", StringType(), True), - StructField("LIVE_COLLECT_TIME", TimestampType(), True), - StructField("BROADCAST_TITLE", StringType(), True), - StructField("GAME_CODE", StringType(), True), - StructField("VIEWER_NUM", IntegerType(), True), - StructField("PLATFORM", StringType(), True), -]) +common_schema = StructType( + [ + StructField("STREAMER_ID", StringType(), True), + StructField("BROADCAST_ID", StringType(), True), + StructField("LIVE_COLLECT_TIME", TimestampType(), True), + StructField("BROADCAST_TITLE", StringType(), True), + StructField("GAME_CODE", StringType(), True), + StructField("VIEWER_NUM", IntegerType(), True), + StructField("PLATFORM", StringType(), True), + ] +) # 데이터 가공 datasource_df = datasource.toDF() try: chzzk_source = datasource_df.select("stream_data.chzzk").select(explode("chzzk")) - chz_filtered_source = chzzk_source.filter(col("col.content.adult") == 'false') + chz_filtered_source = chzzk_source.filter(col("col.content.adult") == "false") # chzzk_source.printSchema() chzzk_df = chz_filtered_source.select( @@ -60,11 +68,15 @@ ) chzzk_df = chzzk_df.withColumn("PLATFORM", lit("chzzk")) except: - chzzk_df = spark.createDataFrame([],schema = common_schema) + chzzk_df = spark.createDataFrame([], schema=common_schema) try: - afreeca_source = datasource_df.select("stream_data.afreeca").select(explode("afreeca")) - afc_filtered_source = afreeca_source.filter(col("col.broad_info.broad.broad_grade") < 19) + afreeca_source = datasource_df.select("stream_data.afreeca").select( + explode("afreeca") + ) + afc_filtered_source = afreeca_source.filter( + col("col.broad_info.broad.broad_grade") < 19 + ) afreeca_df = afc_filtered_source.select( col("col.streamer_id").alias("STREAMER_ID"), @@ -89,7 +101,9 @@ partitioned_df = result_df.repartition("PLATFORM") # 파티션된 Spark DataFrame을 DynamicFrame으로 변환 -partitioned_dynamic_frame = DynamicFrame.fromDF(partitioned_df, glueContext, "partitioned_dynamic_frame") +partitioned_dynamic_frame = DynamicFrame.fromDF( + partitioned_df, glueContext, "partitioned_dynamic_frame" +) # Parquet으로 변환하여 S3에 저장 From fd50ca31b2206c39a8307a18360f15838b5af227 Mon Sep 17 00:00:00 2001 From: lyh Date: Tue, 5 Mar 2024 15:22:13 +0900 Subject: [PATCH 221/249] [fix] cast for column type --- dags/elt/anal_week_game_viewer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dags/elt/anal_week_game_viewer.py b/dags/elt/anal_week_game_viewer.py index a0bc67d..787dfbb 100644 --- a/dags/elt/anal_week_game_viewer.py +++ b/dags/elt/anal_week_game_viewer.py @@ -35,7 +35,7 @@ def elt(): # SELECT 쿼리의 결과를 analytics.anal_week_game_viewer 테이블에 삽입 sql = """ INSERT INTO analytics.anal_week_game_viewer - SELECT GAME_NM, HOUR, si.streamer_nm as STREAMER_NM, AVG(viewer_num) AS VIEWER_AVG, TO_CHAR(live_collect_time::DATE, 'YYYY-MM-DD') AS CREATED_DATE + SELECT GAME_NM, CAST(HOUR AS INTEGER), si.streamer_nm as STREAMER_NM, AVG(viewer_num) AS VIEWER_AVG, TO_DATE(TO_CHAR(live_collect_time::DATE, 'YYYY-MM-DD'), 'YYYY-MM-DD') AS CREATED_DATE FROM ( SELECT gi.game_nm ,rlv.game_code, rlv.live_collect_time, rlv.viewer_num, rlv.year, rlv.month, rlv.day, rlv.hour, rlv.streamer_id FROM external_raw_data.table_name_raw_live_viewer AS rlv From 69e3f83e51a6816b8b9fbc33607c405fc9bc4665 Mon Sep 17 00:00:00 2001 From: lyh Date: Tue, 5 Mar 2024 15:28:19 +0900 Subject: [PATCH 222/249] [fix] fix DAG anal_week_game_viewer --- dags/elt/anal_week_game_viewer.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dags/elt/anal_week_game_viewer.py b/dags/elt/anal_week_game_viewer.py index 787dfbb..15cec25 100644 --- a/dags/elt/anal_week_game_viewer.py +++ b/dags/elt/anal_week_game_viewer.py @@ -37,7 +37,7 @@ def elt(): INSERT INTO analytics.anal_week_game_viewer SELECT GAME_NM, CAST(HOUR AS INTEGER), si.streamer_nm as STREAMER_NM, AVG(viewer_num) AS VIEWER_AVG, TO_DATE(TO_CHAR(live_collect_time::DATE, 'YYYY-MM-DD'), 'YYYY-MM-DD') AS CREATED_DATE FROM ( - SELECT gi.game_nm ,rlv.game_code, rlv.live_collect_time, rlv.viewer_num, rlv.year, rlv.month, rlv.day, rlv.hour, rlv.streamer_id + SELECT gi.game_nm ,rlv.game_code, rlv.live_collect_time, rlv.viewer_num, rlv.year, rlv.month, rlv.day, CAST(rlv.hour AS INTEGER), rlv.streamer_id FROM external_raw_data.table_name_raw_live_viewer AS rlv INNER JOIN external_raw_data.game_info AS gi ON rlv.game_code = gi.chz_game_code @@ -45,7 +45,7 @@ def elt(): UNION - SELECT gi.game_nm, rlv.game_code, rlv.live_collect_time, rlv.viewer_num, rlv.year, rlv.month, rlv.day, rlv.hour, rlv.streamer_id + SELECT gi.game_nm, rlv.game_code, rlv.live_collect_time, rlv.viewer_num, rlv.year, rlv.month, rlv.day, CAST(rlv.hour AS INTEGER), rlv.streamer_id FROM external_raw_data.table_name_raw_live_viewer AS rlv INNER JOIN external_raw_data.game_info AS gi ON rlv.game_code = LPAD(gi.afc_game_code, LENGTH(gi.afc_game_code) + 3, '0') From b037fcdace52dccbe2d602dd043d2b031a779921 Mon Sep 17 00:00:00 2001 From: poriz Date: Tue, 5 Mar 2024 17:21:51 +0900 Subject: [PATCH 223/249] [hotfix] change_anal_broadcast --- dags/elt/anal_broadcast.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/dags/elt/anal_broadcast.py b/dags/elt/anal_broadcast.py index 3b66490..8465441 100644 --- a/dags/elt/anal_broadcast.py +++ b/dags/elt/anal_broadcast.py @@ -34,7 +34,7 @@ def elt(): # SELECT 쿼리의 결과를 analytics.ANAL_YSD_GAME_CCU 테이블에 삽입 sql = """ - INSERT INTO analytics.ANAL_BROADCAST(STREAMER_NM, BROADCAST_ID, GAME_NM, PLATFORM, AVG_VIEWER_NUM, BROADCAST_START_TIME, BROADCAST_END_TIME, GAME_DURATION, CREATED_DATE) + INSERT INTO analytics.ANAL_BROADCAST(STREAMER_NM, BROADCAST_ID, GAME_NM, PLATFORM, BROADCAST_TITLE, MAX_VIEWER_NUM, AVG_VIEWER_NUM, BROADCAST_START_TIME, BROADCAST_END_TIME, GAME_DURATION, CREATED_DATE) WITH ParsedData AS ( SELECT *, live_collect_time::TIMESTAMPTZ AS parsed_time FROM external_raw_data.table_name_raw_live_viewer @@ -72,6 +72,8 @@ def elt(): g_ids.broadcast_id AS BROADCAST_ID, COALESCE(g_info.game_nm,g_ids.n_game_code) AS GAME_NM, g_ids.platform AS PLATFORM, + MIN(g_ids.broadcast_title) AS BROADCAST_TITLE, + MAX(g_ids.viewer_num)::integer AS MAX_VIEWER_NUM, AVG(g_ids.viewer_num)::integer AS AVG_VIEWER_NUM, MIN(g_ids.parsed_time) AS start_time, MAX(g_ids.parsed_time) AS end_time, From fe4021a1d4cfa2aa92ac5139045554bf4afcbe11 Mon Sep 17 00:00:00 2001 From: danee <9356471@gmail.com> Date: Tue, 5 Mar 2024 17:25:45 +0900 Subject: [PATCH 224/249] [fix] ysd_game_rating to tdy_game_rating --- ...anal_ysd_game_rating.py => anal_tdy_game_rating.py} | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) rename dags/elt/{anal_ysd_game_rating.py => anal_tdy_game_rating.py} (89%) diff --git a/dags/elt/anal_ysd_game_rating.py b/dags/elt/anal_tdy_game_rating.py similarity index 89% rename from dags/elt/anal_ysd_game_rating.py rename to dags/elt/anal_tdy_game_rating.py index a86c949..2a97555 100644 --- a/dags/elt/anal_ysd_game_rating.py +++ b/dags/elt/anal_tdy_game_rating.py @@ -27,14 +27,14 @@ def elt(): # analytics.ANAL_YSD_GAME_CCU 테이블의 모든 데이터 삭제 sql = """ - DELETE FROM analytics.ANAL_YSD_GAME_RATING; + DELETE FROM analytics.ANAL_TDY_GAME_RATING; """ cur.execute(sql) - print("Successfully deleted all data from analytics.ANAL_YSD_GAME_RATING") + print("Successfully deleted all data from analytics.ANAL_TDY_GAME_RATING") # SELECT 쿼리의 결과를 analytics.ANAL_YSD_GAME_CCU 테이블에 삽입 sql = """ - INSERT INTO analytics.ANAL_YSD_GAME_RATING(GAME_NM, POSITIVE_PERCENT, CREATED_DATE) + INSERT INTO analytics.ANAL_TDY_GAME_RATING(GAME_NM, POSITIVE_PERCENT, CREATED_DATE) SELECT b.game_nm AS GAME_NM, (a.all_positive_percent)*0.05 AS POSITIVE_PERCENT, @@ -46,7 +46,7 @@ def elt(): ON a.game_id = b.game_id ; """ cur.execute(sql) - print("Successfully inserted data into analytics.ANAL_YSD_GAME_RATING") + print("Successfully inserted data into analytics.ANAL_TDY_GAME_RATING") # 트랜잭션 commit conn.commit() @@ -66,7 +66,7 @@ def elt(): with DAG( - dag_id="ELT_ANAL_YSD_GAME_RATING", + dag_id="ELT_ANAL_TDY_GAME_RATING", start_date=datetime(2024, 1, 1), catchup=False, tags=["ELT", "analytics", "game_rating"], From 3f1a54631f658d35c867f214e4d84314b450b650 Mon Sep 17 00:00:00 2001 From: lyh Date: Tue, 5 Mar 2024 19:56:30 +0900 Subject: [PATCH 225/249] [feat] anal_game_price --- dags/elt/anal_game_price.py | 92 +++++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 dags/elt/anal_game_price.py diff --git a/dags/elt/anal_game_price.py b/dags/elt/anal_game_price.py new file mode 100644 index 0000000..1584f64 --- /dev/null +++ b/dags/elt/anal_game_price.py @@ -0,0 +1,92 @@ +from airflow import DAG +from airflow.decorators import task +from airflow.providers.postgres.hooks.postgres import PostgresHook + +from datetime import datetime, timedelta +import slack + + +def connect_to_redshift(): + db_hook = PostgresHook(postgres_conn_id="aws_redshift_conn_id") + conn = db_hook.get_conn() + conn.autocommit = True + + return conn.cursor() + + +@task +def elt(): + # 1. GCE의 RDS의 GAME_INFO 테이블에서 게임 리스트 가져오기 + cur = connect_to_redshift() + print("Successfully connected to Redshift") + conn = cur.connection + + try: + # Start a new transaction + conn.autocommit = False + + # analytics.anal_game_price 테이블의 모든 데이터 삭제 + sql = """ + DELETE FROM analytics.anal_game_price; + """ + cur.execute(sql) + print("Successfully deleted all data from analytics.anal_game_price") + + # SELECT 쿼리의 결과를 analytics.anal_game_price 테이블에 삽입 + sql = """ + INSERT INTO analytics.anal_game_price + WITH price_changes AS ( + SELECT + game_nm, + price, + collect_date, + current_price, + LAG(current_price) OVER (PARTITION BY game_nm ORDER BY collect_date) AS prev_price + FROM external_raw_data.table_name_raw_game_price tnrgp + JOIN external_raw_data.game_info gi + ON tnrgp.game_id = gi.game_id + GROUP BY collect_date, game_nm, price, current_price + ) + SELECT + game_nm, + collect_date as modified_date, + current_price + FROM price_changes + WHERE (current_price < price AND (prev_price = price OR prev_price IS NULL)) + OR (current_price = price AND prev_price < price) + ORDER BY game_nm, collect_date; + """ + cur.execute(sql) + print("Successfully inserted data into analytics.anal_game_price") + + # 트랜잭션 commit + conn.commit() + print("Successfully committed the transaction") + + except Exception as e: + # Rollback + print("Error occurred. Start to rollback", e) + conn.rollback() + raise + + finally: + # Close the cursor and connection + cur.close() + conn.close() + print("Connection to Redshift is closed") + + +with DAG( + dag_id="ELT_Anal_Game_Price", + start_date=datetime(2024, 1, 1), + catchup=False, + tags=["ELT", "analytics", "game_price"], + schedule_interval="0 22 * * *", # KST 07:00 + default_args={ + "retries": 3, + "retry_delay": timedelta(minutes=5), + "on_failure_callback": slack.on_failure_callback, + }, +) as dag: + + elt() From 0c50ff4a57db75e1a236f7796e602b24bb3d48d4 Mon Sep 17 00:00:00 2001 From: lyh Date: Tue, 5 Mar 2024 20:15:39 +0900 Subject: [PATCH 226/249] [fix] hotfix script fix --- dags/elt/anal_game_price.py | 2 +- dags/elt/anal_week_game_viewer.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dags/elt/anal_game_price.py b/dags/elt/anal_game_price.py index 1584f64..80d1af7 100644 --- a/dags/elt/anal_game_price.py +++ b/dags/elt/anal_game_price.py @@ -16,7 +16,7 @@ def connect_to_redshift(): @task def elt(): - # 1. GCE의 RDS의 GAME_INFO 테이블에서 게임 리스트 가져오기 + # Redshift에 연결 cur = connect_to_redshift() print("Successfully connected to Redshift") conn = cur.connection diff --git a/dags/elt/anal_week_game_viewer.py b/dags/elt/anal_week_game_viewer.py index 15cec25..e3bfd15 100644 --- a/dags/elt/anal_week_game_viewer.py +++ b/dags/elt/anal_week_game_viewer.py @@ -16,7 +16,7 @@ def connect_to_redshift(): @task def elt(): - # 1. GCE의 RDS의 GAME_INFO 테이블에서 게임 리스트 가져오기 + # # Redshift에 연결 cur = connect_to_redshift() print("Successfully connected to Redshift") conn = cur.connection From 830377d88faa96a2d66bb90c381b716c2a1e817a Mon Sep 17 00:00:00 2001 From: poriz Date: Wed, 6 Mar 2024 09:34:40 +0900 Subject: [PATCH 227/249] [hotfix] follower add header --- dags/streaming/follower.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/dags/streaming/follower.py b/dags/streaming/follower.py index f7d7e55..2deecf9 100644 --- a/dags/streaming/follower.py +++ b/dags/streaming/follower.py @@ -48,9 +48,11 @@ def get_s_list(**kwargs): def chzzk_raw(current_time, **kwargs): chzzk_ids = kwargs["ti"].xcom_pull(key="chzzk", task_ids="get_s_list_task") live_stream_data = [] + headers = { + 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'} for s_id, id in chzzk_ids: - res = requests.get(f"https://api.chzzk.naver.com/service/v1/channels/{id}") + res = requests.get(f"https://api.chzzk.naver.com/service/v1/channels/{id}",headers=headers) if res.status_code == 200: live_data = res.json() From 643eaf057c55d48254752cb7afacb7455ab9905c Mon Sep 17 00:00:00 2001 From: poriz Date: Wed, 6 Mar 2024 09:39:35 +0900 Subject: [PATCH 228/249] Revert "[hotfix] follower add header" This reverts commit 830377d88faa96a2d66bb90c381b716c2a1e817a. --- dags/streaming/follower.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/dags/streaming/follower.py b/dags/streaming/follower.py index 2deecf9..f7d7e55 100644 --- a/dags/streaming/follower.py +++ b/dags/streaming/follower.py @@ -48,11 +48,9 @@ def get_s_list(**kwargs): def chzzk_raw(current_time, **kwargs): chzzk_ids = kwargs["ti"].xcom_pull(key="chzzk", task_ids="get_s_list_task") live_stream_data = [] - headers = { - 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'} for s_id, id in chzzk_ids: - res = requests.get(f"https://api.chzzk.naver.com/service/v1/channels/{id}",headers=headers) + res = requests.get(f"https://api.chzzk.naver.com/service/v1/channels/{id}") if res.status_code == 200: live_data = res.json() From 4322a2bac30a74e537331bfac37d65b2cb16330c Mon Sep 17 00:00:00 2001 From: poriz Date: Wed, 6 Mar 2024 09:43:55 +0900 Subject: [PATCH 229/249] [hotfix] follower add header 2 --- dags/streaming/follower.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/dags/streaming/follower.py b/dags/streaming/follower.py index f7d7e55..2deecf9 100644 --- a/dags/streaming/follower.py +++ b/dags/streaming/follower.py @@ -48,9 +48,11 @@ def get_s_list(**kwargs): def chzzk_raw(current_time, **kwargs): chzzk_ids = kwargs["ti"].xcom_pull(key="chzzk", task_ids="get_s_list_task") live_stream_data = [] + headers = { + 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'} for s_id, id in chzzk_ids: - res = requests.get(f"https://api.chzzk.naver.com/service/v1/channels/{id}") + res = requests.get(f"https://api.chzzk.naver.com/service/v1/channels/{id}",headers=headers) if res.status_code == 200: live_data = res.json() From 15d2879d159162ab8c91fbfa437af671f16d36fd Mon Sep 17 00:00:00 2001 From: poriz Date: Wed, 6 Mar 2024 16:47:48 +0900 Subject: [PATCH 230/249] [feat] anal_broadcast_incremental --- dags/elt/anal_broadcast_incremental.py | 158 +++++++++++++++++++++++++ 1 file changed, 158 insertions(+) create mode 100644 dags/elt/anal_broadcast_incremental.py diff --git a/dags/elt/anal_broadcast_incremental.py b/dags/elt/anal_broadcast_incremental.py new file mode 100644 index 0000000..7b666f6 --- /dev/null +++ b/dags/elt/anal_broadcast_incremental.py @@ -0,0 +1,158 @@ +from airflow import DAG +from airflow.decorators import task +from airflow.providers.postgres.hooks.postgres import PostgresHook + +from datetime import datetime, timedelta +import slack + + +def connect_to_redshift(): + db_hook = PostgresHook(postgres_conn_id="aws_redshift_conn_id") + conn = db_hook.get_conn() + conn.autocommit = True + + return conn.cursor() + + +@task +def elt(): + # 1. reshift external_raw_data 스키마 + cur = connect_to_redshift() + print("Successfully connected to Redshift") + conn = cur.connection + + try: + # Start a new transaction + conn.autocommit = False + + # SELECT 쿼리의 결과를 analytics.ANAL_YSD_GAME_CCU 테이블에 삽입 + sql =""" + CREATE TEMP TABLE NewData AS + WITH ParsedData AS ( + SELECT *, live_collect_time::TIMESTAMPTZ AS parsed_time + FROM external_raw_data.table_name_raw_live_viewer + ), + RankedData AS ( + SELECT + *, + LAG(parsed_time, 1) OVER ( + PARTITION BY streamer_id, broadcast_id, game_code + ORDER BY parsed_time + ) AS prev_timestamp + FROM ParsedData + ), + GroupedData AS ( + SELECT *, + CASE + WHEN parsed_time - INTERVAL '5' MINUTE > prev_timestamp THEN 1 + ELSE 0 + END AS is_new_group, + COALESCE(NULLIF(game_code, ''), 'talk') AS normalized_game_code + FROM RankedData + ), + GroupIDs AS ( + SELECT *, + SUM(is_new_group) OVER ( + PARTITION BY streamer_id, broadcast_id, normalized_game_code + ORDER BY parsed_time + ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW + ) AS group_id, + normalized_game_code AS n_game_code + FROM GroupedData + ) + SELECT + s_info.streamer_nm AS streamer_nm, + g_ids.broadcast_id AS BROADCAST_ID, + MIN(g_ids.n_game_code) AS game_nm, + g_ids.platform, + MIN(g_ids.broadcast_title) AS broadcast_title, + MAX(g_ids.viewer_num)::integer AS max_viewer_num, + AVG(g_ids.viewer_num)::integer AS avg_viewer_num, + MIN(g_ids.parsed_time) AS broadcast_start_time, + MAX(g_ids.parsed_time) AS broadcast_end_time, + (EXTRACT(EPOCH FROM MAX(g_ids.parsed_time)) - EXTRACT(EPOCH FROM MIN(g_ids.parsed_time))) / 60 AS game_duration, + CURRENT_DATE AS created_date + FROM + GroupIDs AS g_ids + LEFT JOIN + external_raw_data.streamer_info AS s_info ON s_info.streamer_id = g_ids.streamer_id + LEFT JOIN + external_raw_data.game_info AS g_info ON g_ids.n_game_code = g_info.chz_game_code OR LTRIM(g_ids.n_game_code, '0') = g_info.afc_game_code + WHERE + g_ids.broadcast_id IS NOT NULL + AND + g_ids.parsed_time > CURRENT_DATE - INTERVAL '1 day' + INTERVAL '6 hours' + AND + g_ids.parsed_time < CURRENT_DATE + INTERVAL '6 hours' + GROUP BY + streamer_nm, broadcast_id, game_nm, platform; + """ + cur.execute(sql) + print("make temp table") + + sql_insert = """ + INSERT INTO analytics.ANAL_BROADCAST ( + streamer_nm, + broadcast_id, + game_nm, + platform, + broadcast_title, + max_viewer_num, + avg_viewer_num, + broadcast_start_time, + broadcast_end_time, + game_duration, + created_date + ) + SELECT + streamer_nm, + broadcast_id, + game_nm, + platform, + broadcast_title, + max_viewer_num, + avg_viewer_num, + broadcast_start_time, + broadcast_end_time, + game_duration, + created_date + FROM + NewData; + """ + + # 데이터 삽입 실행 + cur.execute(sql_insert) + print("Successfully inserted new data into analytics.ANAL_BROADCAST") + + + # 트랜잭션 commit + conn.commit() + print("Successfully committed the transaction") + + except Exception as e: + # Rollback + print("Error occurred. Start to rollback", e) + conn.rollback() + raise + + finally: + # Close the cursor and connection + cur.close() + conn.close() + print("Connection to Redshift is closed") + + +with DAG( + dag_id="ELT_ANAL_BROADCAST_I", + start_date=datetime(2024, 1, 1), + catchup=False, + tags=["ELT", "analytics", "broadcast","incre"], + schedule_interval="0 22 * * *", # 매일 07시 + default_args={ + "retries": 3, + "retry_delay": timedelta(minutes=5), + "on_failure_callback": slack.on_failure_callback, + }, +) as dag: + + elt() From 862b088d0577e306368a57ee8beb4ed8b4dfae60 Mon Sep 17 00:00:00 2001 From: poriz Date: Wed, 6 Mar 2024 16:58:40 +0900 Subject: [PATCH 231/249] [feat] full-refresh_ all data --- dags/elt/anal_broadcast.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/dags/elt/anal_broadcast.py b/dags/elt/anal_broadcast.py index 8465441..1ec62e6 100644 --- a/dags/elt/anal_broadcast.py +++ b/dags/elt/anal_broadcast.py @@ -84,8 +84,6 @@ def elt(): LEFT JOIN external_raw_data.game_info AS g_info ON g_ids.n_game_code = g_info.chz_game_code OR LTRIM(g_ids.n_game_code, '0') = g_info.afc_game_code WHERE g_ids.broadcast_id IS NOT NULL - AND g_ids.parsed_time >= (CURRENT_DATE - INTERVAL '7 days' + INTERVAL '6 hours') - AND g_ids.parsed_time < (CURRENT_DATE + INTERVAL '6 hours') GROUP BY STREAMER_NM, BROADCAST_ID, GAME_NM, PLATFORM, g_ids.group_id, g_ids.n_game_code ORDER BY STREAMER_NM, BROADCAST_ID, start_time; """ From e08e7f6b86ee795248cb68ea5eaade9013d4158c Mon Sep 17 00:00:00 2001 From: danee <9356471@gmail.com> Date: Thu, 7 Mar 2024 12:35:16 +0900 Subject: [PATCH 232/249] [feat] ELT rank table --- dags/elt/anal_streamer_count_rank.py | 91 +++++++++++++++++++++++++ dags/elt/anal_streamer_duration_rank.py | 91 +++++++++++++++++++++++++ 2 files changed, 182 insertions(+) create mode 100644 dags/elt/anal_streamer_count_rank.py create mode 100644 dags/elt/anal_streamer_duration_rank.py diff --git a/dags/elt/anal_streamer_count_rank.py b/dags/elt/anal_streamer_count_rank.py new file mode 100644 index 0000000..4a79d2b --- /dev/null +++ b/dags/elt/anal_streamer_count_rank.py @@ -0,0 +1,91 @@ +from airflow import DAG +from airflow.decorators import task +from airflow.providers.postgres.hooks.postgres import PostgresHook + +from datetime import datetime, timedelta +import slack + + +def connect_to_redshift(): + db_hook = PostgresHook(postgres_conn_id="aws_redshift_conn_id") + conn = db_hook.get_conn() + conn.autocommit = True + + return conn.cursor() + + +@task +def elt(): + # 1. reshift external_raw_data 스키마 + cur = connect_to_redshift() + print("Successfully connected to Redshift") + conn = cur.connection + + try: + # Start a new transaction + conn.autocommit = False + + # analytics.ANAL_STREAMER_COUNT_RANK 테이블의 모든 데이터 삭제 + sql = """ + DELETE FROM analytics.ANAL_STREAMER_COUNT_RANK; + """ + cur.execute(sql) + print("Successfully deleted all data from analytics.ANAL_STREAMER_COUNT_RANK") + + # SELECT 쿼리의 결과를 analytics.ANAL_STREAMER_COUNT_RANK 테이블에 삽입 + sql = """ + INSERT INTO analytics.ANAL_STREAMER_COUNT_RANK(STEAMER_NM, GAME_NM, PLATFORM, COUNT_RANK, TOTAL_BROADCAST_COUNT, GAME_BANNER_URL, CREATED_DATE) + WITH DURATION_COUNT_TABLE AS ( + SELECT + streamer_nm, + game_nm, + platform, + ROW_NUMBER() OVER (PARTITION BY streamer_nm, platform ORDER BY COUNT(game_nm) DESC) as COUNT_RANK, + COUNT(game_nm) AS TOTAL_BROADCAST_COUNT + FROM analytics.anal_broadcast + WHERE game_nm NOT IN ('talk', '-', 'Virtual', '종합 게임') + GROUP BY 1, 2, 3 + ) + SELECT + rg.*, + gi.game_banner_url, + current_date AS CREATED_TIME + FROM DURATION_COUNT_TABLE rg + INNER JOIN external_raw_data.game_info gi + ON rg.game_nm=gi.game_nm + WHERE rg.COUNT_RANK < 4; + """ + cur.execute(sql) + print("Successfully inserted data into analytics.ANAL_STREAMER_COUNT_RANK") + + # 트랜잭션 commit + conn.commit() + print("Successfully committed the transaction") + + except Exception as e: + # Rollback + print("Error occurred. Start to rollback", e) + conn.rollback() + raise + + finally: + # Close the cursor and connection + cur.close() + conn.close() + print("Connection to Redshift is closed") + + +with DAG( + dag_id="ELT_ANAL_STREAMER_COUNT_RANK", + start_date=datetime(2024, 1, 1), + catchup=False, + tags=["ELT", "analytics", "streamer_count_rank"], + schedule_interval="0 23 * * *", # 매일 8시 + default_args={ + "retries": 3, + "retry_delay": timedelta(minutes=5), + "on_failure_callback": slack.on_failure_callback, + }, +) as dag: + + elt() diff --git a/dags/elt/anal_streamer_duration_rank.py b/dags/elt/anal_streamer_duration_rank.py new file mode 100644 index 0000000..206134c --- /dev/null +++ b/dags/elt/anal_streamer_duration_rank.py @@ -0,0 +1,91 @@ +from airflow import DAG +from airflow.decorators import task +from airflow.providers.postgres.hooks.postgres import PostgresHook + +from datetime import datetime, timedelta +import slack + + +def connect_to_redshift(): + db_hook = PostgresHook(postgres_conn_id="aws_redshift_conn_id") + conn = db_hook.get_conn() + conn.autocommit = True + + return conn.cursor() + + +@task +def elt(): + # 1. reshift external_raw_data 스키마 + cur = connect_to_redshift() + print("Successfully connected to Redshift") + conn = cur.connection + + try: + # Start a new transaction + conn.autocommit = False + + # analytics.ANAL_YSD_GAME_CCU 테이블의 모든 데이터 삭제 + sql = """ + DELETE FROM analytics.ANAL_STREAMER_DURATION_RANK; + """ + cur.execute(sql) + print("Successfully deleted all data from analytics.ANAL_STREAMER_DURATION_RANK") + + # SELECT 쿼리의 결과를 analytics.ANAL_YSD_GAME_CCU 테이블에 삽입 + sql = """ + INSERT INTO analytics.ANAL_STREAMER_DURATION_RANK(STEAMER_NM, GAME_NM, PLATFORM, DURATION_RANK, TOTAL_BROADCAST_DURATION, GAME_BANNER_URL, CREATED_DATE) + WITH DURATION_RANK_TABLE AS ( + SELECT + streamer_nm, + game_nm, + platform, + ROW_NUMBER() OVER (PARTITION BY streamer_nm, platform ORDER BY SUM(game_duration) DESC) as DURATION_RANK, + SUM(game_duration) AS TOTAL_BROADCAST_DURATION + FROM analytics.anal_broadcast + WHERE game_nm NOT IN ('talk', '-', 'Virtual', '종합 게임') + GROUP BY 1, 2, 3 + ) + SELECT + rg.*, + gi.game_banner_url, + current_date AS CREATED_TIME + FROM DURATION_RANK_TABLE rg + INNER JOIN external_raw_data.game_info gi + ON rg.game_nm=gi.game_nm + WHERE rg.DURATION_RANK < 4; + """ + cur.execute(sql) + print("Successfully inserted data into analytics.ANAL_STREAMER_DURATION_RANK") + + # 트랜잭션 commit + conn.commit() + print("Successfully committed the transaction") + + except Exception as e: + # Rollback + print("Error occurred. Start to rollback", e) + conn.rollback() + raise + + finally: + # Close the cursor and connection + cur.close() + conn.close() + print("Connection to Redshift is closed") + + +with DAG( + dag_id="ELT_ANAL_STREAMER_DURATION_RANK", + start_date=datetime(2024, 1, 1), + catchup=False, + tags=["ELT", "analytics", "duration_rank"], + schedule_interval="0 23 * * *", # 매일 8시 + default_args={ + "retries": 3, + "retry_delay": timedelta(minutes=5), + "on_failure_callback": slack.on_failure_callback, + }, +) as dag: + + elt() From 8a2749db8a438fb6cb6db321bc4ab0c3b6261eda Mon Sep 17 00:00:00 2001 From: danee <9356471@gmail.com> Date: Thu, 7 Mar 2024 13:30:22 +0900 Subject: [PATCH 233/249] [feat] ELT rader chart --- dags/elt/anal_streamer_game_rader.py | 85 ++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 dags/elt/anal_streamer_game_rader.py diff --git a/dags/elt/anal_streamer_game_rader.py b/dags/elt/anal_streamer_game_rader.py new file mode 100644 index 0000000..38bbb6c --- /dev/null +++ b/dags/elt/anal_streamer_game_rader.py @@ -0,0 +1,85 @@ +from airflow import DAG +from airflow.decorators import task +from airflow.providers.postgres.hooks.postgres import PostgresHook + +from datetime import datetime, timedelta +import slack + + +def connect_to_redshift(): + db_hook = PostgresHook(postgres_conn_id="aws_redshift_conn_id") + conn = db_hook.get_conn() + conn.autocommit = True + + return conn.cursor() + + +@task +def elt(): + # 1. reshift external_raw_data 스키마 + cur = connect_to_redshift() + print("Successfully connected to Redshift") + conn = cur.connection + + try: + # Start a new transaction + conn.autocommit = False + + # analytics.ANAL_STREAMER_GAME_RADER 테이블의 모든 데이터 삭제 + sql = """ + DELETE FROM analytics.ANAL_STREAMER_GAME_RADER; + """ + cur.execute(sql) + print("Successfully deleted all data from analytics.ANAL_STREAMER_GAME_RADER") + + # SELECT 쿼리의 결과를 analytics.ANAL_STREAMER_GAME_RADER 테이블에 삽입 + sql = """ + INSERT INTO analytics.ANAL_STREAMER_GAME_RADER(STEAMER_NM, GAME_NM, AVG_VIEWER_NUM, MAX_VIEWER_NUM, TOTAL_BROADCAST_COUNT, AVG_BROADCAST_DURATION, MAX_BROADCAST_DURATION, MIN_BROADCAST_DURATION, CREATED_DATE) + SELECT + streamer_nm, + game_nm, + AVG(avg_viewer_num) AS AVG_VIEWER_NUM, + MAX(max_viewer_num) AS MAX_VIEWER_NUM, + COUNT(broadcast_id) AS TOTAL_BROADCAST_COUNT, + AVG(game_duration) AS AVG_BROADCAST_DURATION, + MAX(game_duration) AS MAX_BROADCAST_DURATION, + MIN(game_duration) AS MIN_BROADCAST_DURATION, + current_date AS CREATED_TIME + FROM analytics.anal_broadcast + WHERE game_nm NOT IN ('talk', '-', 'Virtual', '종합 게임') + GROUP BY 1, 2; + """ + cur.execute(sql) + print("Successfully inserted data into analytics.ANAL_STREAMER_GAME_RADER") + + # 트랜잭션 commit + conn.commit() + print("Successfully committed the transaction") + + except Exception as e: + # Rollback + print("Error occurred. Start to rollback", e) + conn.rollback() + raise + + finally: + # Close the cursor and connection + cur.close() + conn.close() + print("Connection to Redshift is closed") + + +with DAG( + dag_id="ELT_ANAL_STREAMER_GAME_RADER", + start_date=datetime(2024, 1, 1), + catchup=False, + tags=["ELT", "analytics", "rader_chart"], + schedule_interval="0 23 * * *", # 매일 8시 + default_args={ + "retries": 3, + "retry_delay": timedelta(minutes=5), + "on_failure_callback": slack.on_failure_callback, + }, +) as dag: + + elt() From fa7000daf60758d28ed7b326078a988e7dc0f1d6 Mon Sep 17 00:00:00 2001 From: poriz Date: Thu, 7 Mar 2024 13:53:49 +0900 Subject: [PATCH 234/249] [hotfix] game_code -> game_nm --- dags/elt/anal_broadcast_incremental.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dags/elt/anal_broadcast_incremental.py b/dags/elt/anal_broadcast_incremental.py index 7b666f6..0467a19 100644 --- a/dags/elt/anal_broadcast_incremental.py +++ b/dags/elt/anal_broadcast_incremental.py @@ -63,7 +63,7 @@ def elt(): SELECT s_info.streamer_nm AS streamer_nm, g_ids.broadcast_id AS BROADCAST_ID, - MIN(g_ids.n_game_code) AS game_nm, + MIN(g_info.game_nm) AS game_nm, g_ids.platform, MIN(g_ids.broadcast_title) AS broadcast_title, MAX(g_ids.viewer_num)::integer AS max_viewer_num, From 0f898b27092b9f1d300a846769d2baa432b8f43d Mon Sep 17 00:00:00 2001 From: poriz Date: Thu, 7 Mar 2024 13:57:31 +0900 Subject: [PATCH 235/249] [hotfix] game_code -> game_nm & not null --- dags/elt/anal_broadcast_incremental.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dags/elt/anal_broadcast_incremental.py b/dags/elt/anal_broadcast_incremental.py index 0467a19..741c1f8 100644 --- a/dags/elt/anal_broadcast_incremental.py +++ b/dags/elt/anal_broadcast_incremental.py @@ -63,7 +63,7 @@ def elt(): SELECT s_info.streamer_nm AS streamer_nm, g_ids.broadcast_id AS BROADCAST_ID, - MIN(g_info.game_nm) AS game_nm, + COALESCE(g_info.game_nm,g_ids.n_game_code) AS game_nm, g_ids.platform, MIN(g_ids.broadcast_title) AS broadcast_title, MAX(g_ids.viewer_num)::integer AS max_viewer_num, From 36f42b8be5a8e37f0c8e108ff31554562da31261 Mon Sep 17 00:00:00 2001 From: poriz Date: Thu, 7 Mar 2024 17:47:41 +0900 Subject: [PATCH 236/249] [feat] raw_data.raw_game_ccu incremental_update --- dags/game/game_raw_incre.py | 86 +++++++++++++++++++++++++++++++++++++ dags/glue/game_ccu.py | 13 ++++-- 2 files changed, 96 insertions(+), 3 deletions(-) create mode 100644 dags/game/game_raw_incre.py diff --git a/dags/game/game_raw_incre.py b/dags/game/game_raw_incre.py new file mode 100644 index 0000000..8689710 --- /dev/null +++ b/dags/game/game_raw_incre.py @@ -0,0 +1,86 @@ +from airflow import DAG +from airflow.operators.python_operator import PythonOperator +from airflow.providers.postgres.hooks.postgres import PostgresHook +from datetime import datetime, timedelta +import slack + +default_args = { + "owner": "airflow", + "retries": 3, + "retry_delay": timedelta(minutes=5), + "on_failure_callback": slack.on_failure_callback, +} + +def connect_to_redshift(): + db_hook = PostgresHook(postgres_conn_id="aws_redshift_conn_id") + conn = db_hook.get_conn() + conn.autocommit = True + return conn.cursor() + +def add_ccu(**kwargs): + cur = connect_to_redshift() + print("Successfully connected to Redshift") + conn = cur.connection + + try: + conn.autocommit = False + + sql = """ + CREATE TEMP TABLE newCCU AS + SELECT * + FROM dev.external_raw_data.table_name_raw_game_ccu + WHERE collect_time > (SELECT MAX(collect_time) FROM dev.raw_data.raw_game_ccu); + """ + cur.execute(sql) + print("Make temp table newCCU") + + sql_insert = """ + INSERT INTO raw_data.raw_game_ccu( + game_id, + collect_time, + game_ccu, + year, + month, + day, + hour + ) + SELECT + game_id, + collect_time, + game_ccu, + year, + month, + day, + hour + FROM + newCCU; + """ + cur.execute(sql_insert) + print("Successfully inserted new data into raw_data.raw_game_ccu") + conn.commit() + print("Successfully committed the transaction") + + except Exception as e: + print("Error occurred. Start to rollback", e) + conn.rollback() + raise + + finally: + cur.close() + conn.close() + print("Connection to Redshift is closed") + +with DAG( + dag_id="raw_data_game_CCU_I", + start_date=datetime(2024, 3, 7), + catchup=False, + tags=["ETL", "raw_data", "GAME", "incre"], + schedule_interval=None, # 이 DAG는 명시적으로 트리거될 때만 실행되도록 설정됩니다. + default_args=default_args, +) as dag: + + add_ccu_task = PythonOperator( + task_id='add_ccu', + python_callable=add_ccu, + provide_context=True, + ) diff --git a/dags/glue/game_ccu.py b/dags/glue/game_ccu.py index 9d12d35..695a165 100644 --- a/dags/glue/game_ccu.py +++ b/dags/glue/game_ccu.py @@ -7,8 +7,10 @@ from airflow.providers.amazon.aws.operators.glue import GlueJobOperator from airflow.providers.amazon.aws.operators.glue_crawler import GlueCrawlerOperator from airflow.providers.amazon.aws.hooks.s3 import S3Hook - from airflow.providers.amazon.aws.sensors.glue import GlueJobSensor + +from airflow.operators.dagrun_operator import TriggerDagRunOperator + from jinja2 import Template @@ -46,7 +48,7 @@ def upload_rendered_script_to_s3( max_active_runs=1, schedule="5 * * * *", tags=["glue", "Game_CCU"], - catchup=True, + catchup=True, #check ) as dag: bucket_name = "de-2-1-bucket" @@ -94,5 +96,10 @@ def upload_rendered_script_to_s3( config=glue_crawler_config, aws_conn_id="aws_conn_id", ) + + trigger_dag = TriggerDagRunOperator( + task_id='trigger_dag', + trigger_dag_id='raw_data_game_CCU_I', # 여기에 트리거하려는 DAG의 ID를 입력하세요. + ) # upload_script >> run_glue_job >> wait_for_job -run_glue_job >> wait_for_job >> crawl_s3 +run_glue_job >> wait_for_job >> crawl_s3 >> trigger_dag From ff050b737a413b6a1c1f1aeed9fccc6d7a81dadd Mon Sep 17 00:00:00 2001 From: danee <9356471@gmail.com> Date: Thu, 7 Mar 2024 17:51:24 +0900 Subject: [PATCH 237/249] [fix] steamer -> streamer --- dags/elt/anal_streamer_count_rank.py | 2 +- dags/elt/anal_streamer_duration_rank.py | 2 +- dags/elt/anal_streamer_game_rader.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/dags/elt/anal_streamer_count_rank.py b/dags/elt/anal_streamer_count_rank.py index 4a79d2b..4fd3815 100644 --- a/dags/elt/anal_streamer_count_rank.py +++ b/dags/elt/anal_streamer_count_rank.py @@ -34,7 +34,7 @@ def elt(): # SELECT 쿼리의 결과를 analytics.ANAL_STREAMER_COUNT_RANK 테이블에 삽입 sql = """ - INSERT INTO analytics.ANAL_STREAMER_COUNT_RANK(STEAMER_NM, GAME_NM, PLATFORM, COUNT_RANK, TOTAL_BROADCAST_COUNT, GAME_BANNER_URL, CREATED_DATE) + INSERT INTO analytics.ANAL_STREAMER_COUNT_RANK(STREAMER_NM, GAME_NM, PLATFORM, COUNT_RANK, TOTAL_BROADCAST_COUNT, GAME_BANNER_URL, CREATED_DATE) WITH DURATION_COUNT_TABLE AS ( SELECT streamer_nm, diff --git a/dags/elt/anal_streamer_duration_rank.py b/dags/elt/anal_streamer_duration_rank.py index 206134c..7a44b1c 100644 --- a/dags/elt/anal_streamer_duration_rank.py +++ b/dags/elt/anal_streamer_duration_rank.py @@ -34,7 +34,7 @@ def elt(): # SELECT 쿼리의 결과를 analytics.ANAL_YSD_GAME_CCU 테이블에 삽입 sql = """ - INSERT INTO analytics.ANAL_STREAMER_DURATION_RANK(STEAMER_NM, GAME_NM, PLATFORM, DURATION_RANK, TOTAL_BROADCAST_DURATION, GAME_BANNER_URL, CREATED_DATE) + INSERT INTO analytics.ANAL_STREAMER_DURATION_RANK(STREAMER_NM, GAME_NM, PLATFORM, DURATION_RANK, TOTAL_BROADCAST_DURATION, GAME_BANNER_URL, CREATED_DATE) WITH DURATION_RANK_TABLE AS ( SELECT streamer_nm, diff --git a/dags/elt/anal_streamer_game_rader.py b/dags/elt/anal_streamer_game_rader.py index 38bbb6c..39cf7a8 100644 --- a/dags/elt/anal_streamer_game_rader.py +++ b/dags/elt/anal_streamer_game_rader.py @@ -34,7 +34,7 @@ def elt(): # SELECT 쿼리의 결과를 analytics.ANAL_STREAMER_GAME_RADER 테이블에 삽입 sql = """ - INSERT INTO analytics.ANAL_STREAMER_GAME_RADER(STEAMER_NM, GAME_NM, AVG_VIEWER_NUM, MAX_VIEWER_NUM, TOTAL_BROADCAST_COUNT, AVG_BROADCAST_DURATION, MAX_BROADCAST_DURATION, MIN_BROADCAST_DURATION, CREATED_DATE) + INSERT INTO analytics.ANAL_STREAMER_GAME_RADER(STREAMER_NM, GAME_NM, AVG_VIEWER_NUM, MAX_VIEWER_NUM, TOTAL_BROADCAST_COUNT, AVG_BROADCAST_DURATION, MAX_BROADCAST_DURATION, MIN_BROADCAST_DURATION, CREATED_DATE) SELECT streamer_nm, game_nm, From 4fe7f91d67360c1c1b8473d4b50c056234034e9d Mon Sep 17 00:00:00 2001 From: danee <9356471@gmail.com> Date: Thu, 7 Mar 2024 17:55:21 +0900 Subject: [PATCH 238/249] [feat] ELT streamer follower --- dags/elt/anal_streamer_follower_info.py | 89 +++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 dags/elt/anal_streamer_follower_info.py diff --git a/dags/elt/anal_streamer_follower_info.py b/dags/elt/anal_streamer_follower_info.py new file mode 100644 index 0000000..78875b3 --- /dev/null +++ b/dags/elt/anal_streamer_follower_info.py @@ -0,0 +1,89 @@ +from airflow import DAG +from airflow.decorators import task +from airflow.providers.postgres.hooks.postgres import PostgresHook + +from datetime import datetime, timedelta +import slack + + +def connect_to_redshift(): + db_hook = PostgresHook(postgres_conn_id="aws_redshift_conn_id") + conn = db_hook.get_conn() + conn.autocommit = True + + return conn.cursor() + + +@task +def elt(): + # # Redshift에 연결 + cur = connect_to_redshift() + print("Successfully connected to Redshift") + conn = cur.connection + + try: + # Start a new transaction + conn.autocommit = False + + # analytics.ANAL_STREAMER_FOLLOWER_INFO 테이블의 모든 데이터 삭제 + sql = """ + DELETE FROM analytics.ANAL_STREAMER_FOLLOWER_INFO; + """ + cur.execute(sql) + print("Successfully deleted all data from analytics.ANAL_STREAMER_FOLLOWER_INFO") + + # SELECT 쿼리의 결과를 analytics.ANAL_STREAMER_FOLLOWER_INFO 테이블에 삽입 + sql = """ + INSERT INTO analytics.ANAL_STREAMER_FOLLOWER_INFO (STREAMER_NM, CHZ_BANNER_URL, AFC_BANNER_URL, CHZ_FOLLOWER_NUM, AFC_FOLLOWER_NUM, CREATED_DATE) + WITH RankedRecords AS( + SELECT + *, + ROW_NUMBER() OVER (PARTITION BY streamer_id ORDER BY collect_time DESC) AS rn + from external_raw_data.table_name_followers + ) + SELECT + si.streamer_nm, + si.chz_banner_url, + si.afc_banner_url, + round(1.0*rr.chz_follower_num/10000,2) as chz_follower_num, + round(1.0*rr.afc_follower_num/10000,2) as afc_follower_num, + current_date AS CREATED_TIME + FROM RankedRecords rr + JOIN external_raw_data.streamer_info si + ON si.streamer_id = rr.streamer_id + where rr.rn=1; + """ + cur.execute(sql) + print("Successfully inserted data into analytics.ANAL_STREAMER_FOLLOWER_INFO") + + # 트랜잭션 commit + conn.commit() + print("Successfully committed the transaction") + + except Exception as e: + # Rollback + print("Error occurred. Start to rollback", e) + conn.rollback() + raise + + finally: + # Close the cursor and connection + cur.close() + conn.close() + print("Connection to Redshift is closed") + + +with DAG( + dag_id="ELT_ANAL_STREAMER_FOLLOWER_INFO", + start_date=datetime(2024, 1, 1), + catchup=False, + tags=["ELT", "analytics", "follower_info"], + schedule_interval="0 23 * * *", # 매일 08시 + default_args={ + "retries": 3, + "retry_delay": timedelta(minutes=5), + "on_failure_callback": slack.on_failure_callback, + }, +) as dag: + + elt() From 4265708c41b0591f70ba1037b53dfa350e95e05a Mon Sep 17 00:00:00 2001 From: danee <9356471@gmail.com> Date: Thu, 7 Mar 2024 19:01:32 +0900 Subject: [PATCH 239/249] [feat] ELT ysd game top5 --- dags/elt/anal_ysd_game_rank.py | 93 ++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 dags/elt/anal_ysd_game_rank.py diff --git a/dags/elt/anal_ysd_game_rank.py b/dags/elt/anal_ysd_game_rank.py new file mode 100644 index 0000000..bc6042c --- /dev/null +++ b/dags/elt/anal_ysd_game_rank.py @@ -0,0 +1,93 @@ +from airflow import DAG +from airflow.decorators import task +from airflow.providers.postgres.hooks.postgres import PostgresHook + +from datetime import datetime, timedelta +import slack + + +def connect_to_redshift(): + db_hook = PostgresHook(postgres_conn_id="aws_redshift_conn_id") + conn = db_hook.get_conn() + conn.autocommit = True + + return conn.cursor() + + +@task +def elt(): + # # Redshift에 연결 + cur = connect_to_redshift() + print("Successfully connected to Redshift") + conn = cur.connection + + try: + # Start a new transaction + conn.autocommit = False + + # analytics.ANAL_YSD_GAME_RANK 테이블의 모든 데이터 삭제 + sql = """ + DELETE FROM analytics.ANAL_YSD_GAME_RANK; + """ + cur.execute(sql) + print("Successfully deleted all data from analytics.ANAL_YSD_GAME_RANK") + + # SELECT 쿼리의 결과를 analytics.ANAL_YSD_GAME_RANK 테이블에 삽입 + sql = """ + INSERT INTO analytics.ANAL_YSD_GAME_RANK(GAME_NM, GAME_BANNER_URL, TOTAL_VIEWER_AVG, CREATED_DATE) + SELECT + sq.game_nm AS GAME_NM, + gi.game_banner_url AS GAME_BANNER_URL, + sq.total_avg_viewer AS TOTAL_VIEWER_AVG, + current_date AS CREATED_TIME + FROM ( + SELECT + game_nm, + SUM(avg_viewer_num) AS total_avg_viewer + FROM + analytics.anal_broadcast + WHERE + game_nm NOT IN ('talk', '종합 게임') + AND broadcast_start_time >= CONVERT_TIMEZONE('Asia/Tokyo','UTC', (CURRENT_DATE - INTERVAL '18 hours')) + AND broadcast_start_time < CONVERT_TIMEZONE('Asia/Tokyo','UTC',(CURRENT_DATE + INTERVAL '6 hours')) + GROUP BY game_nm + ORDER BY total_avg_viewer DESC + ) AS sq + INNER JOIN external_raw_data.game_info gi ON sq.game_nm = gi.game_nm + ORDER BY sq.total_avg_viewer DESC + limit 5; + """ + cur.execute(sql) + print("Successfully inserted data into analytics.ANAL_YSD_GAME_RANK") + + # 트랜잭션 commit + conn.commit() + print("Successfully committed the transaction") + + except Exception as e: + # Rollback + print("Error occurred. Start to rollback", e) + conn.rollback() + raise + + finally: + # Close the cursor and connection + cur.close() + conn.close() + print("Connection to Redshift is closed") + + +with DAG( + dag_id="ELT_ANAL_YSD_GAME_RANK", + start_date=datetime(2024, 1, 1), + catchup=False, + tags=["ELT", "analytics", "game_rank"], + schedule_interval="0 23 * * *", # 매일 08시 + default_args={ + "retries": 3, + "retry_delay": timedelta(minutes=5), + "on_failure_callback": slack.on_failure_callback, + }, +) as dag: + + elt() From 09934defa8da77d0bb6d30d17e3fef12c21f40f7 Mon Sep 17 00:00:00 2001 From: danee <9356471@gmail.com> Date: Thu, 7 Mar 2024 20:56:53 +0900 Subject: [PATCH 240/249] [fix] fix rader chart SQL --- dags/elt/anal_streamer_game_rader.py | 1 + 1 file changed, 1 insertion(+) diff --git a/dags/elt/anal_streamer_game_rader.py b/dags/elt/anal_streamer_game_rader.py index 39cf7a8..4515600 100644 --- a/dags/elt/anal_streamer_game_rader.py +++ b/dags/elt/anal_streamer_game_rader.py @@ -47,6 +47,7 @@ def elt(): current_date AS CREATED_TIME FROM analytics.anal_broadcast WHERE game_nm NOT IN ('talk', '-', 'Virtual', '종합 게임') + AND game_duration != 0 GROUP BY 1, 2; """ cur.execute(sql) From 7ed59af35c439f3dd94b271800c19f7f53c6ed9d Mon Sep 17 00:00:00 2001 From: danee <9356471@gmail.com> Date: Thu, 7 Mar 2024 23:08:51 +0900 Subject: [PATCH 241/249] [fix] rank table INNER -> LEFT JOIN --- dags/elt/anal_streamer_count_rank.py | 2 +- dags/elt/anal_streamer_duration_rank.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dags/elt/anal_streamer_count_rank.py b/dags/elt/anal_streamer_count_rank.py index 4fd3815..ee12fac 100644 --- a/dags/elt/anal_streamer_count_rank.py +++ b/dags/elt/anal_streamer_count_rank.py @@ -51,7 +51,7 @@ def elt(): gi.game_banner_url, current_date AS CREATED_TIME FROM DURATION_COUNT_TABLE rg - INNER JOIN external_raw_data.game_info gi + LEFT JOIN external_raw_data.game_info gi ON rg.game_nm=gi.game_nm WHERE rg.COUNT_RANK < 4; """ diff --git a/dags/elt/anal_streamer_duration_rank.py b/dags/elt/anal_streamer_duration_rank.py index 7a44b1c..0625da2 100644 --- a/dags/elt/anal_streamer_duration_rank.py +++ b/dags/elt/anal_streamer_duration_rank.py @@ -51,7 +51,7 @@ def elt(): gi.game_banner_url, current_date AS CREATED_TIME FROM DURATION_RANK_TABLE rg - INNER JOIN external_raw_data.game_info gi + LEFT JOIN external_raw_data.game_info gi ON rg.game_nm=gi.game_nm WHERE rg.DURATION_RANK < 4; """ From c368a3ead08a865485033708dbbfab3c69c12a40 Mon Sep 17 00:00:00 2001 From: poriz Date: Fri, 8 Mar 2024 09:47:32 +0900 Subject: [PATCH 242/249] [hotfix] n_game_code error --- dags/elt/anal_broadcast_incremental.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dags/elt/anal_broadcast_incremental.py b/dags/elt/anal_broadcast_incremental.py index 741c1f8..9232797 100644 --- a/dags/elt/anal_broadcast_incremental.py +++ b/dags/elt/anal_broadcast_incremental.py @@ -63,7 +63,7 @@ def elt(): SELECT s_info.streamer_nm AS streamer_nm, g_ids.broadcast_id AS BROADCAST_ID, - COALESCE(g_info.game_nm,g_ids.n_game_code) AS game_nm, + COALESCE(g_info.game_nm,MAX(g_ids.n_game_code)) AS game_nm, g_ids.platform, MIN(g_ids.broadcast_title) AS broadcast_title, MAX(g_ids.viewer_num)::integer AS max_viewer_num, From e1d930811b920bb70b724ce0f8807f193f941b5d Mon Sep 17 00:00:00 2001 From: poriz Date: Sat, 9 Mar 2024 20:30:15 +0900 Subject: [PATCH 243/249] [hotfix] current_date tz change --- dags/elt/anal_broadcast_incremental.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dags/elt/anal_broadcast_incremental.py b/dags/elt/anal_broadcast_incremental.py index 9232797..89ba9ce 100644 --- a/dags/elt/anal_broadcast_incremental.py +++ b/dags/elt/anal_broadcast_incremental.py @@ -81,9 +81,9 @@ def elt(): WHERE g_ids.broadcast_id IS NOT NULL AND - g_ids.parsed_time > CURRENT_DATE - INTERVAL '1 day' + INTERVAL '6 hours' + g_ids.parsed_time > (GETDATE() AT TIME ZONE 'Asia/Seoul')::date - INTERVAL '1 day' + INTERVAL '6 hours' AND - g_ids.parsed_time < CURRENT_DATE + INTERVAL '6 hours' + g_ids.parsed_time < (GETDATE() AT TIME ZONE 'Asia/Seoul')::date + INTERVAL '6 hours' GROUP BY streamer_nm, broadcast_id, game_nm, platform; """ From 12ae175bbd8e6a3c82c21b6a068991b75a347956 Mon Sep 17 00:00:00 2001 From: poriz Date: Sat, 9 Mar 2024 20:30:39 +0900 Subject: [PATCH 244/249] [hotfix] current_date tz change --- dags/elt/anal_broadcast_incremental.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dags/elt/anal_broadcast_incremental.py b/dags/elt/anal_broadcast_incremental.py index 89ba9ce..25368f2 100644 --- a/dags/elt/anal_broadcast_incremental.py +++ b/dags/elt/anal_broadcast_incremental.py @@ -71,7 +71,7 @@ def elt(): MIN(g_ids.parsed_time) AS broadcast_start_time, MAX(g_ids.parsed_time) AS broadcast_end_time, (EXTRACT(EPOCH FROM MAX(g_ids.parsed_time)) - EXTRACT(EPOCH FROM MIN(g_ids.parsed_time))) / 60 AS game_duration, - CURRENT_DATE AS created_date + (GETDATE() AT TIME ZONE 'Asia/Seoul')::date AS created_date FROM GroupIDs AS g_ids LEFT JOIN From 88c39d8ba91815daa01731643589ae2308488f4a Mon Sep 17 00:00:00 2001 From: poriz Date: Thu, 14 Mar 2024 09:25:57 +0900 Subject: [PATCH 245/249] [feat] add README.md & glue scripts --- README.md | 60 +++++++++++++- glue_scripts/de-2-1_followers.py | 88 ++++++++++++++++++++ glue_scripts/glue_game_ccu_script.py | 71 +++++++++++++++++ glue_scripts/glue_game_price_script.py | 88 ++++++++++++++++++++ glue_scripts/glue_game_rating_script.py | 63 +++++++++++++++ glue_scripts/live_viewer_script.py | 102 ++++++++++++++++++++++++ img/architecture.png | Bin 0 -> 229943 bytes img/dags.png | Bin 0 -> 198059 bytes img/dashboard1.png | Bin 0 -> 847848 bytes img/dashboard2.png | Bin 0 -> 395994 bytes img/dashboard3.png | Bin 0 -> 386105 bytes img/dataflow.png | Bin 0 -> 124915 bytes 12 files changed, 471 insertions(+), 1 deletion(-) create mode 100644 glue_scripts/de-2-1_followers.py create mode 100644 glue_scripts/glue_game_ccu_script.py create mode 100644 glue_scripts/glue_game_price_script.py create mode 100644 glue_scripts/glue_game_rating_script.py create mode 100644 glue_scripts/live_viewer_script.py create mode 100644 img/architecture.png create mode 100644 img/dags.png create mode 100644 img/dashboard1.png create mode 100644 img/dashboard2.png create mode 100644 img/dashboard3.png create mode 100644 img/dataflow.png diff --git a/README.md b/README.md index 39cdd0d..549401c 100644 --- a/README.md +++ b/README.md @@ -1 +1,59 @@ -- +# 스트리머의 게임 방송과 게임 흥행 사이의 관계 + +## 주제 +실시간으로 스트리머의 게임 방송 데이터를 수집하여 스트리머가 게임 흥행에 미치는 파급력을 확인 + +## 활용 데이터 +| source | data | link | +|-----------|---------------------------------------------------------|------| +| Chzzk | liveTitle, status, concurrentUserCount | https://chzzk.naver.com/ | +| AfreecaTV | broadcastNo, title, category, currentSumViewer | https://www.afreecatv.com/ | +| Steam | gameName, playerCount, discountPercent, positiveNum ... | https://partner.steamgames.com/doc/home | + + +## 활용 기술 및 프레임 워크 +| 분류 | 기술 | +| --- | --- | +| 사용 언어 (Programming Language) | Python, SQL | +| 클라우드 서비스 (Cloud Service) | GCP, AWS (Terraform) | +| 데이터 베이스 (Database) | AWS S3, AWS Redshift, AWS RDS(MySQL) | +| 프로세싱 (Data Processing) | Airflow, AWS Glue(Spark), AWS Athena, AWS Lambda | +| 시각화 (Visualization) | Grafana(dashboard service) | +| 협업 도구 (Collaborative Software) | GitHub, Notion, Slack | +![architecture](/img/architecture.png) + +## 프로젝트 보고서 +- https://poriz98.notion.site/f49a712bdfa547308bb8516e0c278b5e?pvs=4 + +## 프로젝트 세부 결과 +### Infra +- 시간과 추후 데이터 파이프라인의 규모를 고려하여, 제한된 리소스 내에서도 분산 환경을 고려한 Airflow 환경을 추가로 성공적으로 구축하였습니다. +### Dashboard +![home](/img/dashboard1.png) +![streamer](/img/dashboard2.png) +![game](/img/dashboard3.png) + +### 결론 +- 이 프로젝트는 스트리밍 플랫폼의 스트리머와 게임에 대한 실시간 통계를 제공하기 위해 효율적인 데이터 수집, 변환, 분석 인프라를 구축하였다. 이를 위해 AWS와 같은 클라우드 서비스를 활용하였고, Airflow, Redshift, Athena 등의 다양한 데이터 엔지니어링 도구를 사용하였다. +- 이 프로젝트를 통해 수집된 데이터는 스트리머의 활동 패턴, 게임의 인기도 및 시청자 수와 같은 다양한 요소를 파악하는 데 도움이 되며, 스트리밍 플랫폼의 현재 상황을 실시간으로 파악하고, 스트리밍 산업의 트렌드를 이해하는 데 기여할 수 있다. +- 데이터 분석 결과는 대시보드를 통해 시각화되어 제공되며, 스트리머, 게임, 전체 플랫폼에 대한 다양한 정보를 포함하고 있다. +사용자는 이 대시보드를 통해 스트리머와 게임의 동향을 쉽게 이해하고 분석할 수 있다. 이러한 정보는 플랫폼 운영자나 스트리머, 게임 제작사 등에게 유용한 인사이트를 제공하며, 비즈니스 전략 수립에 도움이 될 수 있다. + +## 개선점 & 회고 +- **Liked** 좋았던 점 + - 여러가지 AWS 리소스를 사용해보고, 익숙해질 수 있었다. + - 데이터 파이프라인을 자동화 하는 과정을 심도 있게 고민하고 여러가지 기술을 사용해서 구현에 성공한 것 + - 시간 및 리소스 제한을 고려하여 GCP를 사용하기로 빠르게 결정한 것 +- **Learned** 배운 점 + - 데이터 엔지니어링에 유효한 AWS 서비스들을 직접 사용해본 것 + - 데이터 처리 과정에 있어서 ERD 및 S3구조 등 사전 설계의 중요성 + - Github에 대한 여러가지 기능(Pull Request, Action, Issue, …) 사용 +- **Lacked** 부족했던 점 + - 코드 리뷰 및 리팩토링에 대해 고민하고 작성한 시간이 부족 + - raw data compaction에 대한 DAG 개발 미진행 + - 스트리머와 게임 데이터의 크기가 작아서 빅데이터 처리까지 진행 불가 +- **Longed for** 갈망했던 점 (하고 싶었으나 하지 못한 것) + - 사용 가능한 리소스가 너무 부족 + - Airflow 컴포넌트 분리 등, 필요한 개발 환경을 조성하는데 너무 많은 시간을 소요 + - 프로젝트에 취지에 맞는 실시간성 데이터를 확보하지 못함 + - 데브코스 과정에서 학습한 기술들을 전반적으로 복습 및 활용함과 동시에 실시간성을 갖춘 데이터를 찾기 힘들었음 \ No newline at end of file diff --git a/glue_scripts/de-2-1_followers.py b/glue_scripts/de-2-1_followers.py new file mode 100644 index 0000000..67017b2 --- /dev/null +++ b/glue_scripts/de-2-1_followers.py @@ -0,0 +1,88 @@ +## live_viewer glue script template + +import sys +from awsglue.transforms import * +from awsglue.utils import getResolvedOptions +from pyspark.context import SparkContext +from awsglue.context import GlueContext +from awsglue.job import Job +from pyspark.sql.functions import * +from awsglue.dynamicframe import DynamicFrame + +# SparkContext와 GlueContext 초기화 +sc = SparkContext() +glueContext = GlueContext(sc) +spark = glueContext.spark_session + +# Job 초기화 (Job Bookmark 활성화 포함) +job = Job(glueContext) +args = getResolvedOptions(sys.argv, ['JOB_NAME', 'input_path', 'output_path']) +job.init(args["JOB_NAME"], args) + +input_path = args['input_path'] +output_path = args['output_path'] + +# S3에서 데이터를 읽어오는 부분 +datasource = glueContext.create_dynamic_frame.from_options( + "s3", + {"paths": [input_path], "recurse": True}, + format="json", + transformation_ctx="datasource", +) +# 데이터 가공 +datasource_df = datasource.toDF() + +chzzk_source = datasource_df.select("stream_data.chzzk").select(explode("chzzk")) +afreeca_source = datasource_df.select("stream_data.afreeca").select(explode("afreeca")) + +# chzzk_source.printSchema() +chzzk_df = chzzk_source.select( + col("col.streamer_id").alias("STREAMER_ID"), + col("col.current_time").alias("COLLECT_TIME_CHZZK"), + col("col.content.followerCount").alias("CHZ_FOLLOWER_NUM"), +) + +# afreeca_source.printSchema() +afreeca_df = afreeca_source.select( + col("col.streamer_id").alias("STREAMER_ID"), + col("col.current_time").alias("COLLECT_TIME_AFREECA"), + col("col.broad_info.station.upd.fan_cnt").alias("AFC_FOLLOWER_NUM"), +) + +# Perform the outer join +result_df = chzzk_df.join(afreeca_df, on='STREAMER_ID', how='outer') + +# Use when() and otherwise() to select the appropriate COLLECT_TIME +result_df = result_df.withColumn( + "COLLECT_TIME", + when( + col("COLLECT_TIME_CHZZK") != "", col("COLLECT_TIME_CHZZK") + ).otherwise( + col("COLLECT_TIME_AFREECA") + ) +).select( + col("STREAMER_ID"), + col("COLLECT_TIME"), + col("CHZ_FOLLOWER_NUM"), + col("AFC_FOLLOWER_NUM") +) + + +# 스키마 정보를 로깅 +print("Schema Information:") +result_df.printSchema() + +coalesce_df = result_df.coalesce(1) + +# 파티션된 Spark DataFrame을 DynamicFrame으로 변환 +dynamic_frame = DynamicFrame.fromDF(coalesce_df, glueContext, "dynamic_frame") + + +# Parquet으로 변환하여 S3에 저장 +glueContext.write_dynamic_frame.from_options( + frame=dynamic_frame, + connection_type="s3", + connection_options={"path": output_path}, + format="parquet", + transformation_ctx="dynamic_frame", +) \ No newline at end of file diff --git a/glue_scripts/glue_game_ccu_script.py b/glue_scripts/glue_game_ccu_script.py new file mode 100644 index 0000000..c8da28a --- /dev/null +++ b/glue_scripts/glue_game_ccu_script.py @@ -0,0 +1,71 @@ +import sys + +from pyspark.context import SparkContext +from pyspark.sql.functions import * +from pyspark.sql.types import StringType + +from awsglue.context import GlueContext +from awsglue.dynamicframe import DynamicFrame +from awsglue.job import Job +from awsglue.utils import getResolvedOptions + +# SparkContext와 GlueContext 초기화 +sc = SparkContext() +glueContext = GlueContext(sc) +spark = glueContext.spark_session + +# Job 초기화 (Job Bookmark 활성화 포함) +job = Job(glueContext) +args = getResolvedOptions(sys.argv, ['JOB_NAME', 'input_path', 'output_path']) +job.init(args['JOB_NAME'], args) + +input_path = args['input_path'] +output_path = args['output_path'] + +# S3에서 데이터를 읽어오는 부분 +datasource = glueContext.create_dynamic_frame.from_options( + "s3", + {"paths": [input_path], "recurse": True}, + format="json", + transformation_ctx="datasource", +) + +# 전처리를 위해 DF로 변환하기 +game_ccu_datasource = datasource.toDF() + +# 최상위 레벨의 key를 중심으로 explode하기 +df = game_ccu_datasource.select( + explode(game_ccu_datasource.raw_game_ccu).alias("raw_game_ccu"), + col("collect_time").alias("COLLECT_TIME"), +) + +df = df.select( + col("raw_game_ccu.game_id").cast("string").alias("GAME_ID"), + col("COLLECT_TIME"), + col("raw_game_ccu.player_count").alias("GAME_CCU"), +) + +# 한국 시간대로 타임존을 출력하기 위해 하드코딩. +# spark에 시간대를 지정하고 'Z'를 사용하는 방식도 존재함 +df = df.withColumn( + "COLLECT_TIME", + date_format( + to_timestamp("COLLECT_TIME", "yyyy-M-d H:m"), + "yyyy-MM-dd'T'HH:mm:ss'+09:00'" + ) +) + +dynamic_frame = DynamicFrame.fromDF(df, glueContext, "dynamic_frame") + +# Parquet으로 변환하여 S3에 저장 +glueContext.write_dynamic_frame.from_options( + frame=dynamic_frame, + connection_type="s3", + connection_options={"path": output_path}, + format="parquet", + transformation_ctx="dynamic_frame", +) + + +# Job Bookmark의 상태를 최종적으로 커밋 +job.commit() diff --git a/glue_scripts/glue_game_price_script.py b/glue_scripts/glue_game_price_script.py new file mode 100644 index 0000000..9e17a6a --- /dev/null +++ b/glue_scripts/glue_game_price_script.py @@ -0,0 +1,88 @@ +import sys + +from pyspark.context import SparkContext +from pyspark.sql.functions import * +from pyspark.sql.types import StringType + +from awsglue.context import GlueContext +from awsglue.dynamicframe import DynamicFrame +from awsglue.job import Job +from awsglue.utils import getResolvedOptions + + +def remove_krw(price): + if price is None: + return 0 + return int(price.replace("₩", "").replace(",", "").strip()) + + +# SparkContext와 GlueContext 초기화 +sc = SparkContext() +glueContext = GlueContext(sc) +spark = glueContext.spark_session + +# Job 초기화 (Job Bookmark 활성화 포함) +job = Job(glueContext) +args = getResolvedOptions(sys.argv, ['JOB_NAME', 'input_path', 'output_path', 'collect_date']) +job.init(args['JOB_NAME'], args) + +input_path = args['input_path'] +output_path = args['output_path'] +collect_date = args['collect_date'] + +# S3에서 데이터를 읽어오는 부분 +datasource = glueContext.create_dynamic_frame.from_options( + "s3", + {"paths": [input_path], "recurse": True}, + format="json", + transformation_ctx="datasource", +) + +# 전처리를 위해 DF로 변환하기 +game_price_datasource = datasource.toDF() + +# 최상위 레벨의 key를 중심으로 explode하기 +df = game_price_datasource.select( + explode(game_price_datasource.raw_game_price).alias("raw_game_price") +) + +# 게임 가격을 전처리하는 udf 정의하기 +remove_krw_udf = udf(remove_krw, StringType()) + +# 이제 nested된 필드(key)들에 접근할 수 있음 +df = df.select( + col("raw_game_price.data.steam_appid").cast("string").alias("GAME_ID"), + to_date(lit(collect_date), "yyyy-M-d").alias("COLLECT_DATE"), + when(col("raw_game_price.data.price_overview").isNull(), 0) + .otherwise( + when( + col("raw_game_price.data.price_overview.final_formatted").isNull(), 0 + ).otherwise( + remove_krw_udf(col("raw_game_price.data.price_overview.final_formatted")).cast("int") + ) + ) + .alias("CURRENT_PRICE"), + when(col("raw_game_price.data.price_overview").isNull(), False) + .otherwise( + when( + col("raw_game_price.data.price_overview.discount_percent") == 0, False + ).otherwise(True) + ) + .alias("IS_DISCOUNT"), +) + + +dynamic_frame = DynamicFrame.fromDF(df, glueContext, "dynamic_frame") + +# Parquet으로 변환하여 S3에 저장 +glueContext.write_dynamic_frame.from_options( + frame=dynamic_frame, + connection_type="s3", + connection_options={"path": output_path}, + format="parquet", + transformation_ctx="dynamic_frame", +) + + +# Job Bookmark의 상태를 최종적으로 커밋 +job.commit() \ No newline at end of file diff --git a/glue_scripts/glue_game_rating_script.py b/glue_scripts/glue_game_rating_script.py new file mode 100644 index 0000000..c72f351 --- /dev/null +++ b/glue_scripts/glue_game_rating_script.py @@ -0,0 +1,63 @@ +import sys + +from pyspark.context import SparkContext +from pyspark.sql.functions import * + +from awsglue.context import GlueContext +from awsglue.dynamicframe import DynamicFrame +from awsglue.job import Job +from awsglue.utils import getResolvedOptions + +# SparkContext와 GlueContext 초기화 +sc = SparkContext() +glueContext = GlueContext(sc) +spark = glueContext.spark_session + +# Job 초기화 (Job Bookmark 활성화 포함) +job = Job(glueContext) +args = getResolvedOptions(sys.argv, ['JOB_NAME', 'input_path', 'output_path', 'collect_date']) +job.init(args['JOB_NAME'], args) + +input_path = args['input_path'] +output_path = args['output_path'] +collect_date = args['collect_date'] + +# S3에서 데이터를 읽어오는 부분 +datasource = glueContext.create_dynamic_frame.from_options( + "s3", + {"paths": [input_path], "recurse": True}, + format="json", + transformation_ctx="datasource", +) + +# 전처리를 위해 DF로 변환하기 +game_rating_datasource = datasource.toDF() + +# 최상위 레벨의 key를 중심으로 explode하기 +df = game_rating_datasource.select( + explode(game_rating_datasource.raw_game_rating).alias("raw_game_rating") +) + +df = df.select( + col("raw_game_rating.game_id").cast("string").alias("GAME_ID"), + to_date(lit(collect_date), "yyyy-M-d").alias("COLLECT_DATE"), + col("raw_game_rating.recent_positive_num").alias("RECENT_POSITIVE_NUM"), + col("raw_game_rating.recent_positive_percent").alias("RECENT_POSITIVE_PERCENT"), + col("raw_game_rating.all_positive_num").alias("ALL_POSITIVE_NUM"), + col("raw_game_rating.all_positive_percent").alias("ALL_POSITIVE_PERCENT"), +) + +dynamic_frame = DynamicFrame.fromDF(df, glueContext, "dynamic_frame") + +# Parquet으로 변환하여 S3에 저장 +glueContext.write_dynamic_frame.from_options( + frame=dynamic_frame, + connection_type="s3", + connection_options={"path": output_path}, + format="parquet", + transformation_ctx="dynamic_frame", +) + + +# Job Bookmark의 상태를 최종적으로 커밋 +job.commit() \ No newline at end of file diff --git a/glue_scripts/live_viewer_script.py b/glue_scripts/live_viewer_script.py new file mode 100644 index 0000000..a4e8e59 --- /dev/null +++ b/glue_scripts/live_viewer_script.py @@ -0,0 +1,102 @@ +## live_viewer glue script template + +import sys +from awsglue.transforms import * +from awsglue.utils import getResolvedOptions +from pyspark.context import SparkContext +from awsglue.context import GlueContext +from awsglue.job import Job +from pyspark.sql.functions import * +from awsglue.dynamicframe import DynamicFrame +from pyspark.sql.types import StructType, StructField, StringType, IntegerType, TimestampType + +# SparkContext와 GlueContext 초기화 +sc = SparkContext() +glueContext = GlueContext(sc) +spark = glueContext.spark_session + +# Job 초기화 (Job Bookmark 활성화 포함) +job = Job(glueContext) +args = getResolvedOptions(sys.argv, ['JOB_NAME', 'input_path', 'output_path']) +job.init(args["JOB_NAME"], args) + +input_path = args['input_path'] +output_path = args['output_path'] + +# S3에서 데이터를 읽어오는 부분 +datasource = glueContext.create_dynamic_frame.from_options( + "s3", + {"paths": [input_path], "recurse": True}, + format="json", + transformation_ctx="datasource", +) + +# 공통 스키마 정의 +common_schema = StructType([ + StructField("STREAMER_ID", StringType(), True), + StructField("BROADCAST_ID", StringType(), True), + StructField("LIVE_COLLECT_TIME", TimestampType(), True), + StructField("BROADCAST_TITLE", StringType(), True), + StructField("GAME_CODE", StringType(), True), + StructField("VIEWER_NUM", IntegerType(), True), + StructField("PLATFORM", StringType(), True), +]) + +# 데이터 가공 +datasource_df = datasource.toDF() +try: + chzzk_source = datasource_df.select("stream_data.chzzk").select(explode("chzzk")) + + chz_filtered_source = chzzk_source.filter(col("col.content.adult") == 'false') + + # chzzk_source.printSchema() + chzzk_df = chz_filtered_source.select( + col("col.streamer_id").alias("STREAMER_ID"), + col("col.content.liveID").alias("BROADCAST_ID"), + col("col.current_time").alias("LIVE_COLLECT_TIME"), + col("col.content.liveTitle").alias("BROADCAST_TITLE"), + col("col.content.liveCategoryValue").alias("GAME_CODE"), + col("col.content.concurrentUserCount").alias("VIEWER_NUM"), + ) + chzzk_df = chzzk_df.withColumn("PLATFORM", lit("chzzk")) +except: + chzzk_df = spark.createDataFrame([],schema = common_schema) + +try: + afreeca_source = datasource_df.select("stream_data.afreeca").select(explode("afreeca")) + afc_filtered_source = afreeca_source.filter(col("col.broad_info.broad.broad_grade") < 19) + + afreeca_df = afc_filtered_source.select( + col("col.streamer_id").alias("STREAMER_ID"), + col("col.live_status.BNO").alias("BROADCAST_ID"), + col("col.current_time").alias("LIVE_COLLECT_TIME"), + col("col.live_status.TITLE").alias("BROADCAST_TITLE"), + col("col.live_status.CATE").alias("GAME_CODE"), + col("col.broad_info.broad.current_sum_viewer").alias("VIEWER_NUM"), + ) + afreeca_df = afreeca_df.withColumn("PLATFORM", lit("afreeca")) +except: + afreeca_df = spark.createDataFrame([], schema=common_schema) + + +result_df = chzzk_df.union(afreeca_df) + +# 스키마 정보를 로깅 +print("Schema Information:") +result_df.printSchema() + +# "PLATFORM" 컬럼을 기준으로 파티션을 구성 +partitioned_df = result_df.repartition("PLATFORM") + +# 파티션된 Spark DataFrame을 DynamicFrame으로 변환 +partitioned_dynamic_frame = DynamicFrame.fromDF(partitioned_df, glueContext, "partitioned_dynamic_frame") + + +# Parquet으로 변환하여 S3에 저장 +glueContext.write_dynamic_frame.from_options( + frame=partitioned_dynamic_frame, + connection_type="s3", + connection_options={"path": output_path}, + format="parquet", + transformation_ctx="datasource", +) diff --git a/img/architecture.png b/img/architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..1c25eefac035810ee5d2631ff379011219ca1e38 GIT binary patch literal 229943 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ⅈw7u3)oq1Ei*04X7YKT1gL$1#{Hrl+rejEPp5 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

PvnomA6 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 literal 0 HcmV?d00001 diff --git a/img/dags.png b/img/dags.png new file mode 100644 index 0000000000000000000000000000000000000000..436112ca9d404c219c239c4015c54ab6accc91ac GIT binary patch literal 198059 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

    OxBpDzppfZeAG5NN_U_(?-PO+ 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�!>c3oq|vJeZ(qAak{ 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%0A!*b>}@KdYa-=BP39{BSE^3AIsls8vyknXi_ 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%0DfmyYDzu|Hgy} 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≥cG#Z;^P?f(!AwxwNs?sRDUV^i_gYdOA zc+0D3(_k(?bsbx0*RcH9HGJ+vPvfmI4{uI3aHx3&M+TSi&{P|R2n!?O;4dfg<*k9E zu^M9h0?&LRK_U=pB1L7;m4a2uLPA^vev&uVxoZ*8@v2dI6Xpyl2&a4Nu#uxcvto~& z86k{Bp=~QX8q3{g6Fn&o-kTy~7=343N8OT+;<4FcW?ZOaodQ}@@2CW{eMy7C)On@N z9HOjmsUeNBC!HjgLJwd*cn5*SzU=<`$r)5_Y`7WS5x(Jt*$Surk;UWTERwr19KsI2(c(;ySU zdW5+OsxwD3?lgeKGOBJPDk?#F*9pOk@ke|>I^Du&ub;tsqe=w=q}>dGyJKggMaWwN z3i2p_$K!Ft+?ai@4zNTlgQMidyNgRW7@tBml4eHt-B+?3ajpIJ2_(FrX77`#Yi+a% zdbPcTg2>SH!-}QGe0z%%gHtxyEJy+q@v#6kC6WOv4XkTWRs1MJR=`6xrA$2DjlSV; zff~p}ME(}=)IifPL^(jTWq@4`P zP%WUrU-D9EH-JC;$Z4#vT(k65Unc8ReUuFn+mf3e`P*g}t5R4#la|c9RyVFx+W6UD z`#t>Hulx$Ou3tAfrh2w`MrBi}eK4+fey2c4fXvEGc^j16m7HYE{7&_3Ue#lDB)Q?& zx>YVK#bz7Hv+kKyUe&3gJSryHV@#7}wR69Cua@NpRt6i$HyW|n6_WomL36tL&u=`^ z4Ik;L2K>I~TV9FR-kC*t`!WGAX+s@8wDvsP=9N?vrcu=2#KR|&c-f2ZVtrHAG2Ipo zojQShi+WmPaDyQgGL>?GZGmu{<%sZ^pW-cv|CKtQ4@N)s-QT!VM`o0K8jI@u#VC@l zgF-rv*{Mk!nwi3}=^~C!<#Bi>hl3MI9LU8npLQ{spivn0Y};g)m`W2rqTwFmlq->- zhGmHbw2C|uLtO(l&4zWv_q#QCUIUR>)XvK>eh`t7CUwSHw^<`S_(mRAEh<(5CAHkOK` z+Vk+#$`)3x5uaXOBR+O;gyl^M7%*KO%Bxk<58rnOUj6d>sPki}*6QSl09-f1a?n$r zC4^jwYZ}bpbiPQ#dlKzt8&6+dN2@!;#N-0Htf%emO-vC#JiKrK3%R`d37Cuqs+m7x zBdx^LR-SRk!Qq7>3R&0W&DbkXz623=^kqL2=DnW!e|qBk@iz>qYUWkAdGyG>x$*z# zopgbmeXn~}zdd98yw_v^rK@M|A> z98Yc4iDMlkiRo+|1@%rMokgY8#AcZ^773%?(8Qz`+O$11BU*ISqkz*Yvj$~dHl4!3 zxk+o+)mj5x;>m0(hDyJR)y-YAld`Tl6ljys2J)hmp_K9cp0-dM+E!g1;!MeT(d~ft zhW7ebrPN91jWTJAHpnF9VNXHI*7e-*5x{3$n#(aM3Z(GSDEW-~)5Bjr7hNSlv>F&a= zhYvrtjrae_HT=b6d)VAlXQ!}am)|J#c>7*IzFVD@>6S<1^eqp3;eT`UJ9U!X(AlGK zx{kL`i<0*XnXC;^t4}~U*6Vwe3AEj2XK?h;A#J$6I9DGkZ=mQ3KJmvu(9Kz3gm% zas$i4N1E8BZKdMGRI>Agu`9Hfx62jUz2tN1Cyx@b+7Dy5t+NHGvxqaL*QjP#5KZQ# zJwV*vBIs&%)$vJv#k6c98fiz9Ewo}kAMRrz8N+-sfkHe%y%54K%e_TkWuEHPd9`pC z!PFdOY!>0hB@8>ev|}?E9D6nJ>bD?#=UoV89nwe@Va6SzjvUZ-mhF$Y&VFgI-YBz# z%{A~P9T%b;rOejKG_8yq^mJw2(W?#y%%|UXz#pn@J~aHy`t(;)_;^_D=+gp&DICM! z>c>v6Ej+*L2@{NX!2IaFod2EfgeRz*bk8u>55aVeHig%p_0_(6A>1HOnkSuz?rld1 zhi#XQB0~A(u#Ln+8sMGEIB=>hoPMT_&6oo;-Q&?D6=fFVwSSi=MCl8 zCMi*lYc*xP*+GriBx<~<=tum-uu8|z+b9v^19@NW`sLS+Qnburc4-OU^$)%iQ`rhmhJr=?|o-#Ip*@@+!}Kr~1*B)cQ@JZtt}^rc*1SJRqj!<4#wr%#=Ze({`hM zOij<=?B}0Eix|hw$_h|^FlxzT{bktL|L}Xh14mwTzn?#4QI3Iht1<}Vm`t#%`ZU-c z0ovUH_f8tY_zc3idE&~f>0J<$YgIS}7VA%KBpJo_l04Ol*`Ys3DLiH?des_?d)Oi7 zt5wj{>RNP=ok}AYk0Y9h;>g@A!qmsY%O!uS5ZJ z4?167-t?o#yz}eLrvUzmE*ZpXo-$p7VE#Z@)Xv-u5_g82I6`g`!ToKTzicPY+IP?6 zbl`2juS3jqpk5P&u#2Vi1ah$?30kwrgSH>)UZZV?C$BVjQSFqFcXPJfKTKoi;>tx_ zTt1I$tJhK49-_PxMXl1pz-y72$^WqcrivjHrwEE@T*q56xUH}aG$pDFNLHs2>Cq@w ze^oyUZS@uyYO9C{4Y~@!TOXgi*u|rtYg2g;`YId&ju#1`Lk88J$~svn93`M+{B{@s zIV?y+uGtS_n~b%~5K?F|X?OX1mBMC&VH%QReSt!XXbL)0ITRKW2?FO5_+olcAdxjG z933+oZyu?_4DdscHv7+DruHu-+kpf<6Sy&8=1*w(EBS8$%W)kZ3kj}YFzDy zeO@Pe)l3`XZ+jq)V!ZR!u5 zQxbHFIJY*yGiT4D(i!5B$1b6|(?UoCFDe@S^t6i?omxUXkt7(TQOQ5ewPMb(G@oK# zDW%AF>M%5LB%sK0f9AXO5?aeB) zZCIo*HCt3o#B|j`p*)S98A;5iTGXmaGMDLVdH!UvfT@YRtr(b^C}4J~h=rL6EX)?M zI6sAhbJI9T`B}_om~TI?g4S<;!`*n*sT6kBE~4&*(Q=RB6IarB->2*NgFjowCqBJ_ zt<45pwqvZbj0cb9Fg-hK_0eRTHfwdNM;d_j7(Q^;#UDJ{$L~Bg#2Wr;uk_d#LZN+IB-h8baz6 z)AmL!>P}DRO_1+hhx(cHY1=`Nhr%+V$TR9h6~@uwzhonlum&C|lW64i2uyS~N0Uz~ zG_(?glA0tHk4CXwsbOtrkKYavi-joDVhB){?KP^@`{Y~l|Fzv3o?b8G^wl-2(YTz> z$1s(Q69X~Nl!x~on!|U!_HKOpYfs_$Vjd0VztJT=qMUb#WuugTkuVKo{-ubk>n!jy zmshY;Y2e&u375BbQAj&Du{eoFzm4--TSzD3xNB~Xbtf4ZwKIeyA9^fD&+8(}N}Xc6 zq~Zk4#(%67UL`*yO@+ry80r~ii&l7Ra+PGu`1y04|F!>ayb{)8*7uT;(ha=PU)&Ab zB!O5=Q?nR~GA*ptO?<8iMw-SP97Yi9hfySM*T9X=h%IE}ND>&vUE;J%ign5QYIJet z!gXA@vVq;*J+`}W6yu}bk?zozbwOg$V<+cu{N5wz#iZXtc;jpC$2Wb$YvHBBxUjW} z2-8mHTzLA1GB@i)5o&gD<-!U!b}Pj8ZKl;B9XhmwVu-TsI*k_U#A8F&sc?LjIQ~E~ z#X1Y3#(X3bAxvpIM(Wf$^+|&|L^yu0(?OkeM6$K*v~=EzXq6@x?S~=bhHW*ddXb)2 z$9j3EiP|19BR{GUM{0Ewv%udSRBA07kcxI&c+;yM!aLsnHq6Y-lWx>G$2QjP3~X0T zUa-y+wJ@7X9bNnGg>(J{7xEl2f+h)S<&x|lZTD>}Vn_og@3|8Xzx2gsBV0ar9@X7l zVyr&4H@E0FQ7M&212SrBb)Hd@@watuF^(~|7`yQ^yC)Io3<;aWqG!S?3ePDRwkR4c<$E3EsBkVbRL)0GuuS(WP1kLUJ0ftd8ZXnCEE2n%uBi5MN0!tgCIJr+X`ji zdK1`c(PpHKkc8FXl@yr=jd_uLVH{POyPY#4;)AEfaK{q zye8?8A}UNE?NWWFhty9LU@4}bqFzm~-L#@PJn(lqVeLalCkS|}HdTY7albxMISYOMDrlgltd!kCyccXBA z9Qrv*Yu~-VPVFsU|UPZTz?mhp;o4k z-|0UiOWC;cqAQ=ae6LK(`TcUDH91k2QH1t5i{@e%LFQu~RCcsg<4M zgyn7)_t|dr+=8*rUh$?k;XQBv8Vn}Wm`>zb=PD1&sd7m+%BE$Rjo(IpibT(3gPWcs zUXiTruzZ6?g?#TPVl|}bD9bdF;OdntW;+|Wp@2~;+A%B2vi{Jwyd7`+roV5me2FYK zF3j^gK~Z5z?W_@q(#Bc`RD6K~9BXJA~OL>Q|6n z3Q(rkt7W6V2yN`b%nT;d1x!v&VQzXBPA^2-kPg046O4ymeG052t!TDEC$*u@9c@(+ zjmMFSC6SE85TdLTnONp^A(j>G>3nO$^2%SgN%`K#=RS2Ezx&bmxQc*D9Lkf#**hS89 zkV%u7iwVSOP!9P{9d>&Z;Fl=`*LogmOiv5bH<^!R8vEC2__dj%U@*>HMxf=k>O7RJ zvW)6R0!VqJ&=6B=P^3}YqVc!ReC^QlzFR`I(=^4TCH6rYvXSxtvCA!FFL;RTuy_HM zmgSB`2$rK=BnalyG+wneod!dWFF4q)HL*)Xs1DpV^ViWCAOfAr57U(rlb{sHmzPN? z!^M`{Du@IhpQ}10+vRmHsb;@N%EEUPv=WXZL1i+J-%FwEiEVGAG#K2U<>o6@Q#kxi z=gnvv7fnnJ5iG0oz!R1X5n!^cnr%4@Qed(Uy9A~^)~f)gR*_K;P$AK{VC11*A92Q+ zbYixpjR|3T%^cGbXfu+S`vH{`TN^FXMT2#?$M)WIqPP-I;1ZR<`9cw&pPj)I3x{#~ z&=EYjbR1_7pTNbXlUO-;8&(%iVs&~R8`C-LWs_*cq9i%Cy#|1~8jxZ+DBOeXGKQ^9 zwCh*VFI`1oYaP9f4MYg4{XKA5DJ+vf5ls@S3$4bWwlo?Ek+wY2!PC2|G~oO#(fX{& z_1YfR8YNsKkDYDq;9PA3?M?&nn1j3%$6_>#$#{zO9z?7kMJ$}8f@J)xgS5l=_ubza zC;Ab$*v$Xs({sMOp=^@qk_?%jP9c?{ObKYEmfu-NQAD}i#HT-d z1*_|uewkU1>Hug_#x$uXw2yR$`L;dxDWi2bv{p7~Hk`JDtmeclaX5INYVLA+; z6-N54uQYilb9NzW1B~-VUQKs(crtiiF&W7--zw=T2!AG9NA3m~-|NP<0 zc>gC>P~GbitPgQ?CWJd~KSD7`z^$48jgGCXsI`Om{SThTdw=8o`1N1^WBdxQfA|M~ zg5CA&mX_~)ee+l4Zr0`K!M^(&cZU}yabzx!BQqHsBL137M^SVGNQa1Xf*$c<9}eY^ zbf^Xj0>p-7cH2T?(9`U5ZPi15p?s*-8i46X`rTPY&sIcj5|Vpi!$DrFmOCZjMla@bA-bx69xuA%2wwY&7vV+soy-W1>or`il(0+u)}g+odNEr?^(I-R^ZnEjO9n769TrPaFEc=Cw}p07 zo$o`+SMo_Ggia%fwbc^VHY;fH+kUN#UVR%YE7xd?kp9R&hC`_nZG{K#B^T`sK+-{9 z+XL;p7tCo^vgC~IqQLf$6PDA~h{6rG-E|6Y`g?E2|?JdW=JZn9o|_A;P-F-TK_`)Ti9jJ$X<;jYUasI@_#4`CK3F!gDA)G{Zm2 z{8A=JR*YBI3xDX_8+N3UGtd8YrBmL>()N=f%-e5z{-gAwgyHwflYZ+zeWSr1>pYX} zwil#*@{l?JbLk9{$rOs&JTj@Yt@^rl`7&zc|8BdDR;yv>pyl#8)Ejl%86a#Ek^EIn zk~2(!bw&-r_!L&1f_7doz4%3G>t1>BGv#0WVo`P)&SdWCscNj=tizOXYdb^X%Jyi$ zNp&pVZc(P`d^okX&U2HTsj@Bi8cozR(U5uS+xH>*FxvEc-5_?^Ank$r9W-vEx{{vq zto~bG01e88wsoK?gM3F>FR#^3>Q_;Ct*q0^Oxp^O@0vyKSIoak)qcrOy; z1G8t$-=t@Mpvr%yIOTMI!}&z?tT3ZTbm9eh|DEcUH=}p^?uByW34sGm;^~vmwkY3P z>QfuoIo~?-yFr>?Ap^E3pHh(sYTFxl;@mRMtZ947lx;!#qJxxMy&-DkN40CMBRh>W zKzd3N4@m~u*}TF?yw^EA8Z?%S5RFK_X?2y(uQfVrl8?n}=7?8_3Bsgx;RD<8L$qpM zl*R8AhiFUE(&%<9qxqf*NZtq=DvpRIACP}!*F}gqlM^|-_Mw*`)u23PJ$Pi25c7BO z>{B>*j(XwJd0bz)h>g{&SigP^+m$_3h=&^W7O_i<ELSm?9vtn{g zg;)8-caovI+uPKGw8h1Tj7K{LDX(k+e9u?C7T@p#@3B=i!sl{YJ*6z(XofFv3g?H_ zY8|$c^6Xlf^!8A9wR;gQwA6YIp7DqCZ zvDL5Y)AjQ%InVkfed)Z?u&#lK$xm&!+UpMR_=nHogPTv|*qyiY3+ga_YC2P%b?@sh z#x|vd+9?7J^?^YIDHhSM0fx&$&U6Dn0QWHU^dq8@VzJu*O-9K74x zqk$hJ*hrysnZW5O0_J50FF*Nayz#-W#_R5RJ6>_>4S40=2}hIcPw)XneK8Xbi$AYn2gM zv`J&JO=j-4DYR&e2WhZtA7NV>Nu{H0pCn8)vq#%rRIQ{e2ep9+K}^@Dr+hGBF9l%x zToUL7DKKmsJ^nOB!g~oIUAz2RrklRWW@l;4FAxkLq#-+nTs&v9@)M~Ha!wJ2U>?~( zPIFdi|0Nhx1TlWRNTGE+nZfaF8fhw=A%UqIrJzd$aK3yU4X2GrdVqvOgLdGeyVF3g zLF2gIfJeomYlptAnFLfa+S;z&ZZK2!&zzKignx*_EkvU{LPZ;;*USo&{B*ae;_RLGrrlWEa6+8ET^@M;u#{5{b5GW8DAY_UWHqQfc$Uk$N-19=+58Et*o?jhgu zFxm8Qs8+?%$_9?f*EeyrwvO9cTX>+hiHAyCxVO29Ir>U@6OB+6t%!tl08t8X)s4rp z>2O&UPD)Q2U50}SKotQmNCgt4faiOy%3~q;DvokAfpsU2wNwh1CbD>DCXc5MEa1tx zJMq-vyKv?N{hfE=iBtFD%(3IRGPi)W{2WTjDfHNWkw6ChNE~e%T^i`pAXt!eB{K09 zPJ}cqBS|zO6GVokdL_a*x4nWDD&BS^K-vmmDxSn-TC;tla8<`tT2h2MyG)9y)U0B= zQzGCG5X8G^v$!Nu+jcL=^sDWrwa>o$%5^^Pj+jz3rWq~-Wdbig&=dG0z|+0>;4gKG zhq6#eY80pL#3Pz@sWa$w){|he&Nz#tLpXLkf(P%8;wASxyasXCkuFXyws6~G4@Vc8 zIC5x+lSe54Za|U0OLxn5D7*OYxxhvsQqNTyfyamLKa7bq@5qM&duDWoVz|5&!lyp= zahAO>&#RR z^K(Vqes~eZY=W_?dIb`h#(;W|`bhFsGo^-_p~U?AdHxd4GV15k3=|p~+A2`(yT5rikx3#QrGW%u z7q5qzac$V|c@T$E_o<-0Yy#38F#X(yU9Jn<0+Z zDySZDfa*>wH&?eySlO+iN}dd9n-F5%ZOZRZB1}A*piE@FM2Ty?0oue~&ANveWqpj8 zJ*Y`Dj60Qfaof>(9GJ;b&Zzu4AH~IkcOIcESU}umW+iW#t|kdQACF0@`4f@+dxc?B z;rP-lUia`R%;r=2++HqHZk{+aW82^Pyw5fw4TOk&)n@9Xl}(|JfJ7{e!;5psXA;P1 zD->Z^)`>do8_gE3TwO(JuMC}i)L{*2?}4~x4paU{SiiHR!$KyGihcW9&Z5RDMq$!=)YQL0p|V?UF0 zFqw^`kV|2*5J!>p5T(vZ&`%Nzrb&6>o;ol>s4>nf)hezunyAa-Fq)?Yz-wfLT{Xkj zR^CQ5an3`O>1DD>blL%IZ&z6_tP|FcR&Htb?&d}Z7p|01?(%trwn(ReGp9d=KmW)F z?7Tru&eBR~ZM~*W3TDf$!l#*B4$}*BtowcUf;nLYwx@W-c!N%}@wG9}UH9LOul>5O z#oWv^EtPHILTXv zBmbGy6V_l*RPy=)T#-nt^T|n3NS-^RcI!x+%s zR41mQNYVz^L;#%^GR94cTjxAUW-(@y>HZ*7hRcLDi#PNK%pA%NmpV4i{8p)RY7AH7)uXJ@ zPBdC&Rg62Brwp4W9*-A^F{fha$EFcwU1&mZZ}~jDjrU<#e*~f0GJ@$D^zV5ayt`h4 z-jsv>6zTU=8i@zu^g(2g_mDb7ddxf4IqI^G5|n`{)=8GSpy&iJoylT?`Y}lv9i(jP z>%5u1$2uk5uziiFjVM@odZw!!uVY#o)5GY^^SW_|tKE-i$^YfIsp615VoCXrM`?{{ za6~76c`EzvuiFi&>(vxPVxj&Tu^#_Pwgs}JuY(E17NbZ`N0D`d$Wvx5rXpCNPR<27 zSUZ0nXRcLnW;KhIpo2T6qQne6)HOq$ZEV{w(*;5Uo1CKcz^#^VuLy&TDMM5znu#%t zb{f%67z1Ld7Uh5+f;f?06GFqpR*|R+hxV-C>OXpFDFK+Z&tMDwik&dnnf`=nzx)v@2DM`JpUnQI=>s=|VbzX=1p^ zR17o3Ka<2-+UnX*z%P@}P0!<)?s!KI$t`h-lS$*-zyG^&_tc!d)9UTMFeJm8=x1FD zyV=ejtXtKWWF?u(WMa3x?VlaTvS^a1rL3U5*94dz@s7@^)Mmdaqyd0-G3Lp z{U3ifBFT)OH~mL%eI9DZFH#H!u&^fLDUmg)s88KlYLqSAn}b(Ok1}3;oNZ!ftte8# zBmshytzF_w*{|9$!E4pg>eevK#4tN^5b=;}vRFDX$UFxlF*s35J?a+QmW~#PM=972 zYFDJB(TS(N0jAxlG*B5th_7SRIn)!(6Nv|jY!-3R5!+t%Cw*f(S81|`XpZd|54*&$ znm|jNiu8E;w?B;VkvZg&Y0{MR7-?1Cu?>8krFg6&_T3BU#O?d;d7PGWIx@1HD0bRS zTyK_8BI`(=(0(PLiJ(Ixd~49eTCa%;1zvzaDO{uRzDu*K9KuYzfP=YdDu8*+rl&EJ zC}Ju$MIaJElwR9ZhygVwpaXF=`!Y%cUZcldrlrG<+XP}I8fukl-3&kNSzN8OY|tsi zI8rW!T! z$-^mTFvukl$kDi+EZX6BCj6mI*n9!(gP@ThV?7yo(dsG9IPw~Bn1Gh*Mw!0h^b5ii?b!Haj+@zSjgymW)t?M=LFZyOJi&hBqjaBp)D2YXe5 zVhUDmEl02|;9sYaQ)i`WoBLFYX_6ka)r1CY?2u*VIYQwdr;+b6&ruBoh5P75I;5xu zl|sj6SlbLS4N9p4ig69XJv7;1HG+zbcns@Quq!lXo|&4&*|}LfdEfv(d-y0mbNeYg zb@FapJ8}nB7nV>BQi(Hto%J;Em=78DtdjsO1=Yu}tB$iip4hsIv-M3jH~~Ku#lY<& z6^+`x*JvTh@+~C_IFg-0oCUbGM?;|Nj+m?Rha1Vy1?pXAy?NPE3Y=u7^S zpE~57Ht#!>b=@uv=Smxop1#0uG*~3`^@YyF2vbrA?aLlI%HQM<8o&BpgC$-djZc5> z5;m64Sx9}+V3D4@ykRSqG|PS*ODYq=9Vh0I&rk7}&%Xj>S%N?31G)SY)xd3X_ z4s}M!4?BwE=GCt^ofYt&Z~JQe%Flc+-un~ZhF|^3Z^f_w^ta+yf9joh@4xz1K6@vA z^=G~lzxr?9P@O)HWReja?*We6!H6i_Vy|B zQ(BPRdeo=dR%yDBK|DaLQ>mh}dCgXKXjPP(%-X8@cBM?&!VJVyCSycrlAZcq{6P*P z?UMG$6M>*dIlvnsXPTybe7kj=su?jT+kCh0bb zzq&)@QyHX)BW#7{khqgfS84XJS8t-$YKxWq?3)h3?0w1Nv4uOUn0^Og6X#L4*_ zu>%o{20}b_Gzy~;Ur?rLU`exTL(H_cX4$LPaOTP~&aJH38EQe|AH$m=;vbzKWOcyO zv0{a%%S><3@dx9y4U#gW&WL-DE#Q?eI*EKXVReyCIC%Mehw+wI++lT2&BJO_1?erT zhLt(?R#&%p{}~XYA$^cI`_#b#atY>xpX*@zI}Xny7mu)wr89hESVlLilTJEKGKTtr z@}tL!&Ezvcr)k?OI#HK$r-P?iUmt($Nqqj9E4FQ&W{FPH$0_Ifg16LJ849yBX--># zfBO72eE#xvq;pxsScl!d4gznW!TO6ZznYz_NkiIdN?W67%PMV!S7&=E{=_%JSyQo?v57D-XGEQy9qm>jp)Qih&6<)Opg*F$<-C%uc(pNr7 zoXL3YaBG%DacTQM(M>j+$FY;Q;r<66#C`WYpbFo2FObuqk0#UTY@P^h?J8-jT&v>9 zsS|kHJH8sJSPV~p?lkSd^JvxUCUr15ZQp0-R1&9(+jggMDul+WsB^<^cA znhBUJcn%H~jgO_N$p!t-aAr^P-f)cgpMP=^FA8(xiQ;8G_YO9}d$dsx9z1}1@4FkRRFd*im~*^3Op}ws{O#MWiA2J@>Q1(% z@_B0=%d5j#6MXC$?KFEfif7!R%m=h98OCwxWzPp~<$Q}eqRqHl>XV@SC{q_~R%_TO zSFl;Bp;T{CH~8nVR4H>bAXRPDQDwNDMjxvc51aKKs@jRAAEr*A%wW5zqg?Q~LoCD09Od zVo}O>)+GfIZDQ)$P6u)3F3Yx?O{FlC%_2h?7i1VsFz~m%RlWOOJKPAzj|YQ9O}g5I zF=1Y|(b$ij-K*_Jzn|OTdNZs~gZ6Xu$U1fz%kky zE0{FcYg@G$-X)`r1{I#`Zjd{jw!_?7Ucp~{;KO+I)1SuKix+IAq^-(S>V4Kthp2_J zTW5>v%**Lw8Vfn{7q172-4=@(%w!V8MzT-ol;+rf5$C^A8otx-NHmT&eDzo1pw0_r z9)wwjsxOwK&$`og(nFS2^3Tq3qh3<&1&B+UHb4gAsoE$uUmr;SXyv8wuy#DrN+XIa z)+KFLroJ#Wg|GRxcOo;V2{Pivo4h>A}m;{WHQA5%Wtl(WsXcp;<`g@7Y#xw4Ui}1an=q`MMdQAhJX7d_b>(0^Y%+ zgy>1~QBYWCFNJiM@wOkT4H z8RfoHbP|vHEy1m;@+Ki@2`PZ`pgJ(mH{>^4Z8F~cG{vZ%FIkVem zdxj9D&~!+DErRH9H_oP0d6+)4?9%W#>BVtZO~6~7I;2%Lff)+Sfxmqt!9I<9q7n0^ z7+KeL#)<^E_B`#;Skt*(3>g}B2;ix>Sw1an4f86R5$GHcxVIw&?esMoB|8Mm*K!kB zpDdu-reU|a!|!M~DqiMAl_(Hmg9EhuFHjLYy|ap*whbgeh_D_9Oz(QVge`Qi6Q)7Y ztzorM!Wyp^8@uGQrpv}C|=_|TLDG>Vw#$HM9ZA%68yL7*xTu1 zc~jf1esQOFiuHlJkK*nV(`GQ6{Lqz5y}j4NqmO)s#y=U}oFCiSYh{#6E&JHcHX?sT z2>g#P3~~7I5x))?RB}&;ORE#dSWtq3&((3#thH?Rnw&2a$IdUO+_A&+c+G={DG%0A zoETzmK8*Q=02U7ha9}ZjgNMR6d?boPha)(&6vpDAAdVi5@VgL>ErpOP2FS@iz}8kq z8qBw|v79u5(F}oQ8e#HnB&nJGU&`H*M-@*p)}Hao-v)-&1}dY1@ReqSsq;iz0rY!* zhmlrU>0Y1O7BKowy_^iII`V&OP&|zF(g4@4U9kwA6b+Ik~x0$JKKeEFmi& zowgD6X9xour7GHuj?EG)6qCpl3$|r$k2E4(9c=I5TVHzsKl~jp$B%yJ%ke}1;LW)G z)NQ6ueY4+>XWxBgxd<_lP7IP!q-NFtuvYj+s7JM8L_8X>RmkK@(xQ3MwQv{dlvogIhk=P}E6-Lk& zW*zEO8FZ3i;+>GmH0oo<<1&+4K@-q6d&&>#zpp`db%K#!w3U=P5C=pDEz)#Vvt?;P zYfCeo*CAYKhY~YfqusKV0c0-Av&BRi+VQj{bPu&QzhRszmg+<2`<%bFg(uEl!`4;_ z3zJ#gxipQuRw$9D2)ofCPU&iui?X9ZCFP&r>r5uq(QdhhopQx^UWiu{j)bMdOvGh* zq6A3lOl}cR>};1%-rcj#zlp2{Qo#D^!e!mxedr(#&rBHh(K+zBgo|SfQ?|WbBqaWq zyjK1Ae(bDcj^Fse(w9{dGSNsF1x@gZyELrXrmX9!Vh&3OXYHG2dt6Wc>H_6OvRt*M zZKs;7FV)**HifKaaj|U$hIH2DD(mV3>#f|R&TwLgMO++Y9;Y=ihd5K`=S2rmRLdQ# zRGL`pc<|VU(UgPsplbs=8q_P-t7hwH^^iIrG?7Ui_F84o?ozHYeZkX6pZOFmF&jbJ z3EHlY%?OWmtw~=IuS*-mLxQ%%%ybb^mpGJhc9>rcVzpWS;Xu^Rp%Fe5oVFG5Y)6$_ z6ZxXFT{M}b-KMtf1(8q3$qpg3C|_f-IMQi#T7|Gx?&8eVJ*?GR=xZVYai(ajR%f^f zkWZ;2T%9-(IMJw`Z8I}Bi^au796f%Vy6ZUN@uaQH+jlRV)1a|GXcVTc(?PrM;n2|| z_}+i~18lDuTt0UeSI(S8b$bu3X3KcOjgr=BZx;#$q-cw%V@X><>HHDlHIlI3ktew% z0;L<XR3fTRLmbA#V>zt6eSS z6jLy)b=LA$PMvz%x`=P>p0D}8e*1R#*ePee_w!`Wlt;6-eW%~Dr$XT<5^vRuX$i}4#?)mF-f4R}bt`57~Q)D~E7B5r*N63qVg@9OZ=2#$ZYpmyAlOp37m zgsU_Ny-S_6$9B~~leTx3Ez3_S>$Q!%WM7xEpv(FXV2iA}S?e=AQ0@e5a7pEsyqC#$NQLcD&Wu zbCzjLV~SNVi6+PGsdO|EM0#6m(^O~U@cZtCal&qtYSs@koFFmHQGZT3=uxls60}|8 znq)#QkX*_VW4f{hfoWoa7#|ms5o9|pY+S#JbF_1An|F~Rztoyq)hzw1Yaf*cbw1M) zHHeoauZ$u@kNQViNM_V87%KnPj9UZx$`zq5eaI%>zx&(XiKTn*9A#Gj>6@`k(EtA3^Est6 zmKW-+)s9f5Rvm2eaZIK&bXE1M4aRbURqOLV>pxw{A)C(AMj)<|{$N=L#QxP*!}=rA z%xi=9w(}9c^H;_CI=~mwT6s!hq)gI4r%fcCoW$`{_u$0*ZAe8Eem(I|-?JtVVp|uo zIV4zzl1XY0N^#aXbqbxb7p6RSw3CwTDCV{q#KnNWIUa57@Zi_=rU4GFwyJPtL}Q3C}sl9i75-v)cg zvV5*3p%TKS3c+5jZ5?xA+OpOGB5+8-T&=0|Q_RY^BtZDjX50?LW}prT2(<@%ifJw7 zgLus$;M-n&6b~K9B25F-Y0-Gpex8(}>Ri*FoQ%oxquG(n2!$%c2;A~_jKWRcX46s# zHisc>x0<+IuVA~r$2fXOr=qqmzU=OSr$H~eTLh(l&u0>%^fqfpqRAfGYdZbbm0#=q zND`TG!h2gbtN2)8DFt%`uNIHpvJQBa!K}Dsq^mem0RjbjuU~$L1k1r>ISAO{kOQcyU z>O@k`IyS3c36KoflBz9+jqr!V@FAK$p&r|_Lp>m+H!iFIhriTc^(dNbA|x4%4afxegXiQqkFr2P&6jB#A7Qx+_Z~!n)XZe@C2P2x*eE8qnY@ zX+!+&?>$d1M)H~RztJ&Hk-lbq(RlPUCEWOj>5t3_Fy^a8&1Fxx>tlD(RkKGDrcm6MR{62iw5>g>; zeZ@Kue+#5Boq>7-qcma?4uWy&8JB#>JWJk$H9N`C0Ja8h==~OA%aGT@TE$Bst)!@c zLh&4;ZVXw*ZE5hCK&{-U6sE^)^&88szH*6u=>?L9 zb!usrdxUaB`;yBjFk^zcTjvBUZ?#ab_%qOKbrcPRJ_VVhdJr9`y)7aA$DAo{yQkMS z5l(DG7wU+TA;tP9O?kuz@kkRzcL$ls9tzGj4Lc9J6)CY%To%v1`$}_t9b`_KB0jf$ z)7joK>YMG3tsbeW4(XQ8pg*7`~@-B}tbZtxnNkLoi~U4SkQESK)_H zm_9<;!H>zkd`6}rS=t~iZ@Y{m=%#33rYIvKD0M=%rCGK6|7Y(%04>YT@=W+W_vCbQ zs2sbivpT6;IU|uVm|$#-F}C>~e$RM3j2RmYHZ~sHKOO@kFk!I4Ho=G>K!6Y+WC;Zn zJ65Oa?uxhS=5TU8^FH6cx4R`HeguNnh+0+q?tOMx@muc~)>_|6sqMUu-3P1zTJFrm zX7H<Z%#Z>rJks616vF&H2*Z#UIxBTG3>f5#vYdvLK4 zKP%jt#&1>|;Vx#jVg-DD#&pBvh`uo_r%WlUO0}elWhn;X)4ieYI54aGU3XKapuTm2 zo%TpqTRrU<5A#z~nwgn)J@(YHeAP8y*jU@q`fev&B}YAlEXYa+^AqPKR+%x_=QeCFffU+1-C6Jw-M9PVxwv*$w#2M z`$xyRL#y3ar;E{MLX(p@%Y}~L_rf6VcXzfrdg|P^p1Ep%Wm%9}u^7ZggN!!oU9D}_ z-DYid8jWzLNL@lh=oPe2v)R@Y=bqN1k3X*Smy?MG*TahxOatg(tTJMg_cJ%$q<{7= z|Ai{^Q~JFR{GJ|v_z^WWHq~<<=wP%ncEab`V4m64=;82F2AtsgNI$rp4A*duo3L+u zih&#-tkU7&I>X^>22R4mhClPIME5hjpkI&69rZIlCi=!^v=>~Awn7fYTM2vKCHg1& zQj+F#!EuEuXnNn*Q#mXl#1Y>muSL2M$it`PdA|&N!=MP#FfK|NEJy zLOTio0RQw!L_t(q4#W+ArChQc)Hl{$*7@_#YGrj<2bT_LVPQV%s?T7I%g%rj`fsb% zGS6`T#U-pUi$Nx2Y~H2rSxv=0eRUtPIsev{YP-AcuWj=9&QJ;4y&xuw&n+q@t~FCzFJm<1O=- z4OKf#f;FbJHY}?f^Xrc&*S)H;+q{sfSuS>-jk#U(!W6F0GL!ypD!hB7@p$8yaS30t z;+(M_&m`ln?{?A!m!qPx>%3|l95fr+y>itV?&`$hLppQgX-!U5ohRf+m&ruvtR*zC zN0-nMfp!U+@PmEYcpjl(C*s67>R&nnl^t%_F`i6Y$dOG)Bmbvth22N zz3~R?XO=lx$=o#$uhlIt_;=7qe7%ob{$)^vdYEW8UCsr)u)4j~H5TsCXR?}{AJCBx z@&rv0;~xElw+@KPfixg$&QR;8(ip$?@5I@EV#P9X(l`7i9*?Ijvn~~LnleUU3&8f3 zcN%^AJQZ6RSXP@qxTLwsNtKEP z*X@M)@kZF|DC?oSkL%0-$`|V!zUi;%EAM`pj##c8npa@g1CwL>1AkK}7F|9p1H|n_ zk;kwzSRQ8eR54#w+2>NW923WAGuksfHLba+xx`(pKg>7};eiJEJC3pWMb2283tPqJ z#cQfgPH1s)G3Ydf0mA81Z~OG{hu78h@TVRA01Cby2p4uX_3X}uo^EXEd~a6|tz6K5 zzx23PEGXm*uoV;e6iT?2$>Ok}dcUEy9Sg=2Ep;=f(e7F9w2i(6v+<^Cqo!IGSo#y2 z#+8OsKoPg%IIhItQ!YK_&PfMBtn6T4R|eN0?u0Cnj~R$Y)SMYWcDiRlZlvvwLBlP0 z`;8f$K2g-d=}Db9gL^V}P7C5Fc^n#AfUhvd8C(X+IQaz33^^#q{t2KCCjeTu3AMoMG!qPA)sw5u^*|l71hg^k=|ZEf z9X8pv(AT$syJ0Ccoo2u#!4H6cU$Ba_e2)hJX)r0k#<#d1PXR5TVO}t@WHy`+-sK

    +q^A%{Qb}FM0FdewxyVJN&szxe(|(-l%HJcr07Tc zm*sP4oH(xV8QE=ZE&IcQ!a$S~HCd-QVtW`(Xv{!A63{SvUTH&*i~iz8U`$zo=yRxB zaepn$kRJTUCPIjHru~}Re6QWs-TtzVe>MZ=p#;d{8$7NTmDyEJK3RFqZHL^;5uvUv z3Fy6VzzYou;ZmGslzirqr_GlYeaOhk1GttS%-@nE*u zga~r>7xng7=sZ-g<`dcJ6(AL+UCvkNy%fiES>9RQOo3(v0Q&uO4i}RwjiW+3W*z13 z9Q?6O;~YzXzlQ7I`&iy2>3D=qWwQH|Qfv>^&la=l6`Ah7m`trAg3D>P^hk*4C~#%P z>-wU#3h&Xyoa{;K**q9UY*WqkPm&TbC-JP~qz);Cy?N8pS5%O{C_qieps0ECYX}bK zOdK{?cHjRF9bXc9N;&Tc|A+@5-Ab2p4d{JwLbeE;;v(?q;c7M~09$LKvFj{%XDbI? zK@%u$4jXUL4m150|G0RH2J`Z5vKTkPRFwP3e6WOEYUP7SUmzY@*aB7y_Ryb45n%2} z_&=-nKQ0)vUB>v9lv+GWq!xf{U~dplANcnlgdGPzrV6g!Mql%b(75f zC?S57v!gax3yMX>=EQD53rnnv#+s*Z_doMi@o*d-J^RS1oMSwAbhpOizcqsg^4=fX zE5+C`;eUYy14Q{zMv{)L8@&C0wvY!p01x7FO{&Ym-|TFSd0kO)=Q@-u0D$cO2%z8U zBBFZE!qePM*s&rj3ML3gBtwT>@spV6kh>Km&ve3zg18`ajBm6)Yb&&5#pc*EX%+IP zmgwrMrf^lwp|z~S1fby1XBGR9UZ$bBQV`-(jR<~);~!|y_{hFp&h~5(>Q-lrZ0%l9 zY!KxN?cLfAGA7plt*-}->#i*A`s=UEh4Jz2HE~6JoD1zMNYEY+qW|$5A`q}_D>I1= z8^vbGXXyFO+vJ6_7%@Za7425R=MxT+@7uX_o|bsUG~+rU zSlvr*D+b(49HFkYBeQbFi<6i?sg!Wk)N@E>Jq4q=*DJZUyyuDP?tVFd|D7kOD4wNz zmrevV-XN7LZy$6)*0O`GcV72?g)CUhTyHksuqOr@;Z%tTc`=zidoi}hEf3v*GP)bA z<&JOTxT~?gZGMM{(V{*<;^nx>SNCSR^_@DsN0T|Nq!}hRbAIf|eLC5^Ml9f1DH_s* ze(Anx{kxO8T~KmCxE6yCj9O4&Wj;r-$kB{EMS!B1BQd;dqk?`d_3VAdTC*7SN{U{T>cqpvOP9y_+#KC_Zk}c^`=4-nnbg@KvZKD)MiN ziSML}Eso@Qg|UThF!+Yei1VX8n)%P_Tp^A979!r00Nc5%=k8E=^jx*|WR30Eiw&I_ zwbS08E}g75W-%k~6L|M}x>~ZT0f6*NX-yHWQhocEgyusRWKLQY6*F@vESR;<$+moy zm89{xhJBWuK@1Nqj-?32iFJuEhFg>^-jlxa(~568#@YR4dF%8(u2K`VeSdJ6M2HL|AW=`2AsqrGQ-z~n3_sSBd_VeRW zSrVZ*6I^hnZtI@FN~}|{FrxF0){2<%nAV3JlWu%&FL9wM#NJueZQ=Lgl%PLyXtZbN#I{48Y2AYzC^dH z)R&|>%~67K4BZf5x8I)bA_q%jlQZx=NvIFxzz#z<*__!QQMlqyXu2EbAzt(d zVpsB#4;6nSWhgWGrsw|sM|0qYDx3RsJ=US(R#lr48vEt;nM|b1cwwq*4>#LSZomqRaa;vCE^G89q!?%tu?Ug_ zuRqb#eeB$GJAJmFtW z$ouB%^O3H}VTy`uY)y%=w@}-BL<*c< zi){!BUMIAEc{EE2b}mxy4`dyvlRdLQm+3FO6xYi zbJn@7YLrU%rMyYGiXSmln?MEfoCP=RqXhd?SffAUfpr@ER10K^<}<3!8JxQ_eghdu z_FdvZ}~UEE^+G#xq4Cco1a-K@t`Ah)>yEwP;$?%PCU-=%c>>?PGPCZKId*<;(Xnbq;FDpTl2pRFb6otL!>+F&3v} zbXvKjtkLgS+%;%Utth#2s$@E=NS|Bq>s(>KRcU zOCkKXw**^lJKT9U?u(GKCXX)yrfD|^l-VT4g?z*3aJk8!%!?36Q<<5Q$vWFfw~TwC zA&^*@$D2Rpv(g6A>{t1s;uwsf2{|csG8B!N_YX zKfh|zV$3&YKc&<8$GCeEOZ+lMl=5R*pl8z_)I%;ye5*ctFPDAKqs!0$vk!266tNE5 z+)h)yb%rC^pV>b5UYGb{?ytx`cyJmHvHP&!~{<@4+mxJ(#-HhITAq zW&}a%=B{*_p3p_QD>i*SoA+{`zq=;vT$iHrzg@1`Im?V#r+Q_5x!CO-CperP#?2A? zXTN->LHi$0ypaemxD%K)E_D8fDQScMY=E@}IpdUB0~$-dJeYQYjiO<h{xMr!E2^MP{39^ z&Et_p(&p5D`D!TL***JP>iw8ah2eJ5>KHRnHR2NnyPU$h!OGQ}iwLrG|ItN@V=|@_ zgumzlym1;+d>NAwp6|-(KkyyPIWBVce462YUrBsJkDlh z0yKP2FnUXvegj{b5%;{imvVb(Xal?=SvdMUN4%=rv`(KmA@iD@oe|??yH(Pqy#4OJ zh&U*|A_vf*g>8X@cphI5wV*J~LBzGN&#}3{g45vgNv!z>OZkh+uU?CwH9;z{f`nvF4dh5!T>Bqk!Nq(o2%#5>p z6!>bZx)ws>T>?o^odOIVOMx$*t2yZQo4>r(G@%RVL5wTJBTF7v2Lp~ z=B+##e`(zIFI+cUMvUbMZ;%qrFDa17N!PqH_=U@mnDso*<}8@Gs6nBa%rIlaCX-ln zul_`5hTVPQYdJBo?-!8;wFZ)+busoD+f+xD+#A2Eg-{;DvlFq6!4kj0;}qwyE0wDb zG(xVVZO4%R^OB_A{=&{gVw;E1O}qGc7DxFl;YivRH4B2Uqk+lX+Q)Rb&$y4L46rt` zw<1~DtYtQ3X#ZUQ$Ck25lpR3Xuu;9Z`bYD{45bOPl<^t=?hwT3x&CJteuA_2Cr{1> zJjPwFFAfze$KtZ*kc6p*2uzT*wz(`@NXx%=t5zemO#hk9CKkn%7Ymv(!)Ehd)w_Kc zdQ+}xsDjA^J*MCW{W0GpnEnC6HM`slAbt3&{Ba{pHwmJ`UFIq)*`^e@5Ne;QX-wx+k7fd&c631}AfveUoVxT{Rc$BPwlzLP8ncW~H7eFw>OI2L;qp z;{g~pgSBFmDw?zBQFk<(?!*B+Z5L+o_rKBa1N|^vb-1i_;1kWiQYcg32%tl${g{U{ zZlcevZL_8YM?bUcs_=})DLojHpT4!P=30-_1HsT9+aj3L#IfisP%KZ%k$W^6GW zoCmuZZE7yIsozm6@2>_;xOTGhMO_U+x)dm?O(>j)!pOP*=j)6vm=w^^9Z%`z;-$;_ z-r>g1yQ?YTL|Bo2h_iB%s@Pp~$<~Z%=X(E$%@4gL<(x{Wp(Ntw_k)y$^qmLkX&d&g z{Zjl_O}SgUXgf|(*KRTB)#}AqG?BO|jl6k`STuzB%$v^N+O<$))cGyrTi~J>m9Jgw z$&i}3=-B0uxqp7)-7WBHd)&AnUfU?b@_f-9lPx8|9*Kt^v-BjMKB81<#7W+L#|gy~$)W}cR4H7K1aPk>gb5ghY!cze({GhOT!*X&b!jj zLUffHev?IHmu$#EYTmBZr8?uUzl>pAv7zIIevj+oV{*Dz&E{D{WFwOWGnCoYX~L<> zdlF@+Qw7B0H-o;h-w9-_ON4Dc-W0uQXk%a&XZLUU8mASL|EybzU+Sjhil?^+UNC;S z5tXCA@AwkXwa@3fOH3CHUA?h!q#KPHZBE#~vb*ARxqWJ$^gGSV6MRwXp@-3sTK+BRBAN&YTKwLw5AP#?6K{JW3Qan0jmyd9=2>KFAEGR%|Uc$f{G zkjmup18f{;iY766=2`Faes*DM5XBE~znLVW(db23bT5tU6<1mulh~cHp~d zlH+m~n0)!pJ_ zm-r1$Ulrk_qh5CoUE9~=wU|x7dLR9g>VVgDTlr)aNzF(Kt%@`fkOT7`4)TI72Ps`@ zN6Cws)gW$L)C4c@I&dfr749yqj(LLaTa6!2u1{)-`m*RLe)#HedF_OroXtv-ICaV~ zsV*vhMLeH$Cbp+D-zcggj9Kl(^B25LOTW1`L(2=?X`gHscq&_F!ut3H(yaEpi@g-J zgvV$_I4?h>XIpOwt4Lf@I5hUI*YweOx^eRQe%V;L{4%!Sp3h#Ws5V+z+S&Hl63^J8 znrAY5Nx?D+>9RItiprXfC9ucNZvK8Iqxn8F1IEp3^t1Ze^sX{_Trp4W^a8|fz18y8 zGQY%EonU0Irprex!*PmBb3bg&uAUPG-H6BDCuoa`IHTDGd+XR#In;%G@X>YAO$Cc$ zqIEBiaY96rLVK;o*+|p9i>L5fg7L53qj^P%)4H4A2YQ*>;m=bI4)_KuZE~oTUivsD zcWBHBPHIaS@xq`XQxt9*l@Oh_u=2V~&$r`97T zo=%B_V-(&6`qqt_)1bzK%j8v5I4gmD z4xO_24BBl%m^6J8aHyX_DX>u1WcgXTzXqG}1LOyt&s{AA+x6DQ*+sFuoQ?uZ8M1ty z?~J`w7X_L=X7Kr(12+Fj-^($NX>UDh-Olh-K9(@GOl5gS)*R;~s8oXkaZ3c5|`kKQv@*N94hGeAVay!hf zsBlb)XFT8#e`^ooNmZzY$5`$cF}9}*3ot_5MKEj8md2r-ete*CJ@(;cYhHJX*rExQ zq5q4$8Vqr=>^=GGZMqcuwAZlStH#YfJc#@zj*?~3X>=14{@#knHyfOKJYN?IrOR2h z5$cRrtL@0R#4iYacTw>EY**0Ky%&DDl~}*uPd}(G*0^h%#BXMNTbSX4!`Ker=J&pZ zxO4(z@+$?@wmjlKU7q^TT|gCV{WB`kr38lw*|T=`{@JKtr)iqhb?KFenRsss@@-os zq`<8gjrH^2f8x^7Z4FzdR)IWKM44XnN87MGwS0mQNQ;KbkT6IG4?fio7RZ$;Z^V50 zx0QpUqa4ge49CK6Aci7_hH8HNb!pvv@yT{cFX4>%`ER*I!&{lPd*y9cbd&C_A1MnU zi?{|;eGBqf+%`yk%MmIGd)|1z-~p=KQWjE-$;6demF>(Tu32zInP%gHpO;b9Z)0H+ z3J+iehi6$m9d7woB2NsnFre9U^?UkW7>y0NU;VSuuybsH-pJEe9-twjGqBZIJi&pt zrj2{cSQg{K&i2Z?IYt{NDMY^HCr*!ighn+~tR_X#q@5eCylY+b`-)=URu`>WQ4x9j zd@{SNOf{Z7+_MHwor|F(&^m7GHXfXUJQ}safDK`pP~z-4 z=g3NC^v;`i68N z&y?ygp3)JT&M2Pft=s48p=fA2!ItlZKC&)R5dIq34jaFx^Z9Ca@}#z_{!$=!a&IpF z(~Zt)5NR;8um_$)PRwjSfT}DK)oa1)r;^%cZ3%EaPkYZyLY_gO?zvX~pnJ*+$z`)s zR+op05qqlWwV!j>^eXf5NSiaxjolJ~&6sZ;p;Nw(S-peJ>T2p{+r$PJaSp28Q3a=(=lq{D9iIDR zDhi!kA|d(Y4GfBzbn3@y!L*^{___EKap(-lQ-4N&%ZcDOaECYaKk}+)ZMsRezRNMI zD_2+yJS7O=8A%9px1> zSnm*r>}dKDUypL|ifLc)+u)?wI=DHdRQ#Dv)J~C{_>!*zT(hudQm*cP3O7Vr%dIdO zLx@lHR`JSpGXyh7{~F*S7m%1?Sko(RBk-V!Uf9CrziCR{%C=}gI3aXT+LTmQ<)$5~ z7L520+{rf~F7H6DIKEz!3!7orJ+-VgoqbOLI*gMxk1|N7Ekg43H-v+`7}n*`lT(hF z6zjY%z%aw(v_XkvKkDea1<84yVbGV8Jx|g-lP=VB@k@+xK&vR*IqE$?7PP7EYNto3dFdz0v*<@(+E(#yntT`kYpDMb%N3^d?R<>BZ z*VA`$84FV4D{uYwX$i_XT;T24494GcCQeUQvXZ_WGvDkWiMB@60|$-1k*9Xw63Ca@k=s zsN8<8Pw-mLe7Awzc9@wbpYK!ZTSi6IA>3}1+19X6WjI>B!PGoHWql{>-@w+s ziOJ2HZ&eelyMG+^Mv^qGglXgJ?q5i~55oe08USpq2hp+seUD=2mvH+*?kqMcD$NyW zdhH;5`;o{=LwEl4f~X<(e5jb^leXYKDx7)UEIyM?!k7YueYYYwP&2@|1lnfW$!2to zQ(1-WxCI!>d|$Q?&HL#9r>@E=}aQC-{3?qAQGkkqwh$^M+xvx&JuZ zf`rY|eUa-FN2ifAJpG;TV4t`>X1zvMishvcy)nz9m#3PiO4xgt)INc2wZeBTNDz)br zZg!xyIcr?T#H?W$4(17R9hUdBFze^2^9%GU*cv7SPnR`@7mHd8{|RL_>zK1?d0Hfa z;@9Ew2mJ@<6Wp1T5k9e>E>I&iL!+6h5&tF4*!n)`x@_xi?vuQJK0*yDrg9qu zsMPHWX4u7Z$Wwhvz>b;?-<+yK_!E)$JG*dX{<7J#6 zyy!REr81q)+#ng#93BdEY~^b^`LKi7s*+6>@pO_?&@^i1yAQrE?s-l+A0ei5T`3Dd zHk%*f99AxAxE3mu`040LiWbjrKFitNE3FFZop1}plM;LN0Q#7!)c)ne80CArEwG;>MC2yFJI#V%<$j^Onam|>_Q}L_$cn&&iBiIlwDXXLN-CG))Q2BW&td#bQ z!*%EDA-oRmleAObdh6BiOB>BlDd1~X$f&#iU;6u5&e(6yW4e9H^1xr+CLb*X4X(S7 z>->eTBK2ZP#mtry7TCuV3z%ft$90vMvDNPFS&5`?rWv(ieHH!jlR;Ly{xG`D?W&xj z-}A*dUVcnjhakly^wL3Q12Op)G&5IF;NU@!YcAkQOqZfa=Z(Y2@9joFLN_n+Yo!-_ znd&`N7$cv8oWW2V+%21CbmCqV(R8&EB($%RGSKZCTgzcg*$eLQ5Xj~BIKRh%N$sb= zCki%yn8G$+1op?}R;+V`fBTFG(BPyGd0b4zvimb#0|;v7C|Zzx^t(3@yxpLR;QmG( zqg{d)dTsDkg?T#6p^I(K{yQN&w71%Wz7yHyXI)p$s52_!UKr<~z*vLHvf|Xx$LPH= zuCrsd7p-Oql5KL^zlcDX!?odfRBSsfJos?y?G`yV;w81XLv)av`QZ$eR2izskVEI% z<1Pe5)ga>h8>64-{4t)pWw`H^_yw}pbM#8?V>~$uu|7o*ui*4R>Bs5n{iy7SP*Mkp zpuHt0Hx7E*^Lk!yXqIxO3vhePdA=7Hc$@t5rq{#BfKK?!y|S7K`I8ke&p09@O&adA z+RgvzP6cl+(hjxhunGCAhQ!Eg0d??CqA3#QZ|g_L7tj969lT+CIphad?RQET;s~hZ zb?s(P77zZRjGjQu!0 zM!6+UkeMsYun>kR`aO~Bf5{=v=lWtKnJ-ab)Gl046T%Hn^VsJA4wLB9IWi;`s+VQ%Kv>BxBUOBBL4kG?$H0a z+W!(v{QXESarr;7+5eWh{P_sNo%?5>B-pfaUBpa@FzkzQ8nq-X`W%lO48Y``D3B>6 zz#=(*zVk(2>3O(!_>27=R4Zlf+nBu><|5bCe@FiB-`Y@5S`Tl|2&Wh?xC$}QVv6u} zTi#w@zR(qslo&$&w=w_U1H_WtuMk72_5ZHM~g22w!rc0eG2zgln*D8BgpV#)!6B zg*(3+%%;+MHvO8TKiH>#=l>GO{5z1!-LCyVs#=l`LuD|gA5nAK_V2BGsj{5}oA5#v z6vDFW5xIQ3-_3P>S`+Qx;bQX89M{T)8Np-Y|1-~W&6|6o>3`)M8aaDGllqK|cyR0+ z^l`d^>yo?RUkFs`likeD4`KK#Vf%0Ns4nL6jn9ue%)$~go|j>zx^xoiRD5RT(y5Sa zTn|6?+*-s)@c!p2|4OSA{>++rva}cL0#9kXuOz~KI1_Oq-mxz>-HIF-=Xy7yhSg)bQXs*C?#vIgMal40KXmCHVF3TD6DJ$@tUkNi|1aIXEJXDX*Dp_yx? zyJ8p_r^MJD^CDzR^H^2{&vgio4iZy3z+Q2U?ZH=nhGCa)TTpX54$z|lpZA=r9V_=H zd%?2pvl1HAlis1x*-qv$`R-*6ZIosDxtj&Bujx&p%ok@{3$rN|UKuvxBx>V%}Jju+`s% zl3EpBi9vo$de|FRa4aia1+jg>yE@Rb(WYZRoJ2X)s53eJ&{^5p&b<&jwEo&pKbRU;L#`3B?sl`DDAAKYt&&Up`}9{xaf5 zfPoQG_kX;F*TW=gWujy0H0ICJSe=AYnAP;Iohxxd`8Z=&bR_CvA8hnT+J`}Ry$L~vrI0*;37F&C! zpR+C^X1}4TTfQ6Yp3uE3GP;lkS^7B{2n_E6t`4*h1jTo|KeAx6`VR)|$6iK$ZGX{7%e;C7yKYDs$rNP;x4-H?y)rO>{Pz24T| z^iSCEIs~+=bIn>`on6nuPO_{r)#A0+0R|Jm^|3Q49=|T=Ve$1F<7MhCfY>n32%>zu zp(yk4hvv4zJRn+wrTln{G zr9Lzb7YObR-<{?8VbUuc-GyZmq=K^?LMbr>rPR@Vj0ZIj2~{|H887rBxp5Brh;9v+ zdSlW9hlIt9X5DEj1NkF;m1N1Ik&$!K=l7>tKEc_D5NQ+(RgPaN=Rjhkf&^B18qalQ z>*Yr=*9SisdpsrbRl`6p)!T;+8KW${2iW1yiO#e|rQ%|AS7XoK8wIXa3(?WMIII@J zzH}?jTr)Q#GUsA`))US~LB&8&AtbN*{+N&w*G*lt?EW`kOW*T#O;8qRriM_8?8s43 z0KCjC$V_6i-0jluUgbTHo$>cI7PmNLf7}3)ktCIR<=A+X{ZZmE*(kHmdw3AVe?L<#$q0*O9pQ^a8N&8B9ASkahV9VB{3WOVaV zZ<%Ht0=(4jzZN$l3tLl76@w{qI|(_i5(L(QM_BnlYkalhhOl)23Z>KPbT#7#0*HU~`+`TZjq(2$(DS=QQ^34^p_eEqm6#^OKn)>XL}&3~SdT(kp{BML&|5ob_z~e_W){;24?d_ycW;Y9DpGhx zhqM|Qzd7)*KmzZNovAU5S_f8z_Z2gz+Dcf-k}~xlB{%mGBw2dbn$sESl==1PVNsQ& z={oQzEb+L3H%5=;1TpXn^ZHB%HMcH}#0~2D$roYcSuIn+%#&SUha!sp zWZm&fRj{>}TzOX)h^r;ZgP)v%4F7tX^$u5fgWNlGz8aUjj2ABg8Th(ea@y#`jMeV2 z{#l40#=b*NuzzRhF!vHzcz+Z8)tzD5(noHa+Xh>F#^hXNL`fw(Ka?XW^JIn%vZWi< z5Fw#4#fZZmfE{pjJ+m(?6W(j>VK?Wdl~qvBRTWIA$jFG-ykVbG=TpiP`&j+3akgS z26wuw{x1^>fj(b+2;naPWBz|xE=^MP_ zxA~nsoALL1cq_K4w@EG=o_f7D5$`Cs0{SP}J~_6|_()6X2u_pt<@e@%vBY~dbFQ-(K&jZRoT*Ih0O*U0Q8^?#Gn|ru!xNTytz;M zq7mw#{v)7d+gkGhHuZF4|EJ#5sRV`M7>mF}xMH{5GYNjyK1SN*J5luFpa3SEaQ0ZM zB=fO9-Did%KP#T1>c6)8cErpB!ee9#`j8&X^>3}Vk5jw|~n zr4YyWa7S7TBYkL@2fhmQk==C!)#DIO1|$J{kCGQJG6tcN3UlYTEADs`E`2olSEP6DbB~a zH3x?ntA6@&${(&Wv1Hf>gGt%JD2{E%rc8cJ+K*|fcPGi9RhZ4~QWzla^6Y*l+T2fd)m$7M zxFJ*=gPE_RMgt?*r$cpGxIW|5wcV!LxCdVAE9sua$X?v2jT=pbbv1!xYA^EU`7ybE zL7-!W<-GJ5ru`9~INt|?H_UTyuYNy07`#tr1i_uI7Q=c)O8xj@0@OeL7}HV0?rTT2 zcutDMdSKGF&_A6TyAPDE)mz8K{8^bhj#|Wv#MvVC560|Y9N~j1fzz*=|2eA?zm{h7 zUHk^LIZ&5~3ljgf3GfM+1(Zbr;vvR!BLycJc!(MOwe5mA_ zlNpZt(y@0pFbSAHoOxXN>QDxaQ+eLV$_=lURa<<4!K??^_AxElAJ*#^jT57V^|aUD z12)9u$`?)vQa~imRRLtFFe1@C=@KA$U4ZaiUb0Gifg*s|ATiXwj;bt+^I#_GJ-_wa zB-Pha(*`9RZ9&vq@$gCEdD5EgADvUij~DRol-QvkpxCBg0s-2ZV_1DyB(;jv78fw{ z!N*l0DQkh{;ZK-T0*|`LpM4s+&zuuz)Piu3!UU-z;6!FxshcaZ)1B(1t8?V?`=yX| zXg0Bt#Zmr|5heQ|RO9A@C~{|&qlP0omwzDfRNbo3FFdw~-23ojjk*Ll_JWmpgR+e^^H5D9 zwz|FV`KrP^bt&D=Hs(0y$1(^uT%tRYz3Nx4Q(xh)RzP-sc+mwmgt4PIKAg(5eGr{_ z5z;1Ryo1c|0>V=_>5rZq&PpRK{9x2qY!G%ayP?6a1!&$xqs!hy{_`B`I7F~kh6iW- zh{F#|+PiDOIQP;$UTo29DP?Lu=q{($&7kB<)xmm={$_kEPob2SuF9M+9}xsqwU$0Y<9a_CRU zJ|5fA@_?QAZ?u5DR%w2r0ELuVH>L>^c|q8Gq>RZx$dZ%gdr3o5r-EOE+A-*X1-S82 zbzKR_WOoL5T^(~0&W?&cVUWWF7t!TcQRNeIhl+?}c(*;3%CxMnHLT|Qsyn}_JA;+ACN$y;)7tsbvg?Td)EE}jW$ zkJ^ugcZy?vfxyVpR!@Ud9$Ox?6W*6vg`23DlNEwHN%{H7c@@+gPo>};=i);>$CbOT zqVpW^ao%?05Z1PHm%Gh{R4Od;g{flO*W1&^6v3DF&ctP2ml^yTx+XLE&66#e{QefE zfA@oKub_x0K2*=DN+Q{A1EW#HWAb#+YiUy|r=g=> zC#*%Sgu3)Gj{*7>-dsGBlnbZkI1>KPDcWnrVAR(FzlpsZpwWwK>E{>NFJ;?GA@b%7 zi|llD)$b)fR{$yB@T`xZXr937fep^^NFOXX#W5{cHOGOJamAQRv>P6iS6TgV;ZH48=eHkVXU8>6*Rn#ZB%=@eP}XWIYc&#)ieu45F1u3TS&dtn+wc^5Co50rH%)X zLslGzPxH06M&RW+p46uQ)Vw&oo15nUQr+jBKsDMBVzul1oGY36sWJhh5(i@qZkf>I zXX|1z)&8H!M%pj)d07EfXyyFZbX37c`N`Uu(vChrfO&Shj5K}Mn|!-h$685WTYF+F zG>i6&3MXKOf=h&pUAF#N!W#z9;mt$OYp(D_XIh$zU;B&~Z7ezS%cIPzQhw|tt7bM{-*ZXB83J0qB^viiBvPWB%%bL|*+eTyV#n76bKmtnbOjKXN}z zeEMD@QOVPqJG_li%ZGR3J+!5YLEHOqA?_<7jI0gg2!AeO<@dSDb)fbA#t zrZ4R)Eh*FTxh*do`w41JCdEuRPNZ>P(b_cobxJ%~%uuyM%X(qB5?md~J1w~<=hkRd zB2O$>g5SjAE8qQFGm~HI?;RyRleS*RH+LI68`f>}79+7lH1hi&k??P<(%TNC@%oD# z+tHD&i_hg~ri-R$+)}nWjawMG=%J3p3DtQzeY`Gr#WzO~rHVJBV)6Kz#MMLlTH7uA zUAFBxTWBLnJEe6Sf*a~Gr>>+G9DQmSCYHZEdaGi#uH-UXU~VJBWv%kzG7qp-L2vyW zSFxa)t-1SC%k$+D2f^Pb(kbt%H?Mg5GH6NOn z7RIdWKwe!q-V>I&Qg`~aAIgBwIZnW$eS%9`n-vSx#-c1bv^G+;U}yVIWqw%rkqIme zsZRp=uwr%oc?%r!({w!N;34S~iQUh?xz;1Gpo|a!iBHLEk&N}F)NMTrPJ!`0rpRJ zJX8TEcofN!M+5;DzI_k16mY1_uhL)TIiujM_T9*I-w=7 z&u^v>tG5r9<$XN|$rn3Fl1y+Xqm*|sd-Hz) zG1*JTudBQ2Byo;noFK1nP&W#zmc+pv?QJZZA`xUOh!JDo6nlpoD(Q6b!+X|HE!`hm z_@aZz%3o(gRo+J!e;vU9y&@giGJp@0@#LsHrElM*#zF(Z^&8^_)w5?p{mDCgV7R=I z7P%Rq^(DJ>XMwk@{gHWVMTs()_F4XsJhK_)oog+Gqe3TCJrV#ZrTde{oM6=x-4heC zhY0!^->8K+V)wqFhPV!%4dfpX)^koNAIX076b5(OAk?qlAUYqk9`BVOCHRs-$BNQW zdVE)hoW~EmsVdrcdgO7{snC}54zIwL9_xx;`nf;uD%VMS-OqHCq%q_C;j3k1oz9v1 zOE21&fjttRAbA8Hw=--fNT~q}EJ0eALj)2(4}tGPmFdwQ0va#uBzP{{Qy1K$-+xRm zo_1UaY8XsOk3K78WUb^GA}@M5Y?>h6>rtLrwFY{3wwq0CI9+rJx16N+5Y_O_Lwu9 zh;#Y9z7(O0;ZFP8#PVOqaOBr1H~!XRLSAu-jJ74LY(Eo9YNs8he!Kb(nu3cH$fJ+g^<@6?!qe*9%g}Rz65Q?00*KbF8rlV`DhSb!qbHu7{<1 zl@X1aJCM2LpyD?2^VBBIs*oD$RIhe!AqAB8vFZyS$pK`xm$Oi9ap1E3}pm&Rq|K{Yfu1r!AStq=EGL6-nCzRIh~H; zAjUPXo5aUKmmLD?GqRNac&1O%L$X^OG$l1QUCA$g^J|$-;dX|07!q{)>S>9q%H&b{ zmJ!a9l^P6=Texo$0T1Wj8kK?CWb|u@j@}Iru5MRPhneL%LQm(aCVg|;5PRA#a zRG*DiHC9lAt3)#Vr1x-zkk#JjeLJ29*cv#mvyRl?2X0oQga=$V`i{EQ7EYv;W>b)% zjkDH@dNWq)>NZ<^uVd0)6>tq+y={CNC(3eax(A#t}!N84MVq`qC zRiNPj3y)wz&_R{I7RWnj^Q6UQeltnC6b=V)X|lNw1RXnP-K8>f-G4_CRSHpJ!bQ& z#jwOu@z0mPlvCB(Cp-&O1p7fmml>KGsGW5LQob9#=P<*B$T-?j2T#^z2XIj6Mo|ei+Wvx zm@mERI6*tegjzCmt0C86MPd*(xl#fy5f6W(-;S9&`o8`0A_#$?mG@`E*O{^a#e#}< zjYv+)RT7_zr!{^HV8@EEnaa7nz=3NxF|SBFFQD3kCE=B%BA^d8Sleg3{<`M_X6Eff zzbd(zL!Fs6E&+oC_T3dW-aB>7CQpphIPC<;pOn@_(Jb?&&nAM55<}8FaLu-lZMl=W zBS1;4E{iqGO7!y?PKj^Y7oZpnxt*2P_3& zff}YqT>4tvL`(f&UyMn_Y!SSWZVoT9dz1X8-q!7*xAhXAwf`3{3z(ZPq~nw@0@5yX ztR}~i7)hjI19)Nn8r zExxhc+Z!=vk3Txwi`O9aP(0wl?a7d{)eUAfcy3V0(kZ2i?7FzLiQDjcg2#F_+h^4Y zTki7;M=7kd2@kQmby)&g*Be4!Exo}08ahuX_g3T!PdM*oblJZIjsYVto->~|c5THO z*biO}J^MOWU2_gY&gpxFR30qe3Veox4jLjvJ#VjZRs(~jjM>N~TF{(Sbq^YJJWIHh z8O*Xl^vgc|YnlGNiaw`apESi=kKV#Wz<~2Dw9ItnsW+fxxmDN0;jBmWRBW#dv+`;7 zS{=<|;yEIDJzuhUZWo`5ix94+KOFL_o6Q>aF}@+Z`eO+mJhKQl{#x0y0b0YOm2RZDYg`mIF>X!MO>6bs5BY4&J-V{-ihd@N#sge!S=*}!t|jbe>fi>v zTTp%JEUAyDdFgm=XTd5!aDs=sWJYvavo>AjQ*n=f|6!*#y$EN4-Bye!o= z`80lW1}ReMGkQ#AIhQ#<6$yurLz}xbB$bj7dwSMd*gs!9WZU^vGfZn~9epjWRtz&3 zCwwD{_DIH~nd>QB@cE!7VIj}IXa1l*$T;JOlYW7->gD{d|I0yU&b=*4Zre1z;lL~6 zBIU)#4Et;0(%g1uQBw2pcOAD;!BcT`Q(+;chnir}75e3LE%Uu@trblfe^ z{VV2`mTq4RdAfFwA0WU6er2aJFNw}zrYb_os(yf3z^uE=y} zFMSb`LwCNN5RQPv?L%^85u4O!nE$Vd z@*JOU(%Jo0*LA3Me8Av*kBx}!DB(c0QOIE-SW6cnCvr#29^1RhOJ#5;3q{dar^All zgA$ak9puLcTF>5zp;erQq3|BpWUIiS%)>U!0{%37cn(~$HTq4AbawI!*@ zLpceUZ-s|v;7hzSvsP|l!%)cHEbqB_@E-w8p>TL|u<{eu;rt`~lR+F0ObhYMlSWQ=+bAQipMk(jlR#PY3Q1b- zJHmdjOCUwaKb8C_vk+Q9Tg@!&{)fft^MdCRVa>=3_HCW^h9KD4N%}ahx{gu%c)qJu zxW#M=)r^z!jIu|8ryMx{{ImI`d83U7?y-38m7lKts?eP3Sc9i$OlljvZ**E7iDPfa zfLyvw(=8YGbqhQB>Te=NZ&KAujbr42au;4C5hh=7#V+pGmWw=3*AL^o%0$`yN;Qev&TpKe@_->Pu9uy zL~Lk9HQym+`-l@xpEI_s7zF_{tmA$9U&{ZF(kUc(yyBvGDym+RM#4!c;@8Z%9o2=L zs|nXc21xiv@{jH?$aFs&LKaBFH6;5PJC2+rb@MJ8{@Pf6sh}ncoRj5M!0PJ#6mX9B z!ZVUEzA*PZnRee{RhJAo@p_$!Ykl)ziOnzQ2GKv&>NFqjmAii90#)~MqGDPI1}z=1>^uUD< z!r@8ln)vkws5?DgDaNQ{?A=w~4k!Ou2j&LO`$@Zg>iCZ0SH+do> z53M$~mj<@cHJ|zPb4$}tW__;?2(Ivk(?5usdPFXE9w?7B37b^^w4aq=Qem#%isZ>3 z10rUVr!?-3J)67X;T$J+KE1y!1j?ueM0;qie92m)%uEyux}@FEyLhnTAvVS*H9eOM zu3CEHbPhm_ec=e(u!?nl-hF{k*$VFS8~_cr2Z(!84l}%X+@2t4rSbwbHDSFgYnrSo zk@_VgdHZqlb?#9|ymzA`H2T1eO*#PZgX5%!9G4%W#@*tQ86<5VQrMX9bAhg1Z_I)a zj7~SYR&w< zBJh*ub|3CQkAsi=SsdS%lKO^jnX;Cw4;F@0`zEGqU%aoA9LRw%75sX^=;+N}ZkEUQF#PLEk9~N^YG>-TAm(?(@E?eiulNa} zg28%z-@`{1*XlnCcH%FUVGPq46RLBDGFZXlH9Jb;KdxAv{l?r06SI7inHU9rF!1ootyoaY(wn4I zvDjQv%piQA{TK|XVVo``QExwE^r^0|&j<#U*VCtprdi$E9&M1$t)*c!+^ZV=m)>{U zb0iMa&E4u7lD~uDSQI&*Dap^`-0ou^t%U(Y9`nsw}5@_BC<`B)4DH$J6zE4}y&rH#NI<+_kWw#?Q~&`*C+ zh(D~Klv`lW8=Lmgw)e~7Uqf==`cfZqCRWG}f#UoG=lA3(`7ay->~auhvKg`ockV{) z$rIhDwWOWwc=Uia7F>0vEo?dR0g8+e+uns^NFtco4+Qt!uTJCv6Dz^Y1C_?m`@nZj zCS%Jt5NzT+`7%E{uc}>TPjG@gF)z$ScFjBaOV-av4!{Sr^0;|J{wWfK5fdn21<|IX zuZJwF;dQw)=I4gnNYK)cU4LTAoJ`ZIrVyV5Wrrm!VEpR9D8BAul;r(SLb9j2>K@B} zkir~^Q6*dFmYI_+bDwp^I14w8T4b!jOQ_p2BN7HKzB zZF`Pe`T2g3q}O<}?+!0I!+u0+(`(LVkgp+Q(Pm{k>UMLr8>V&Vb25b?gOy{;oa7 zZl&^@J;}uwH1qJN2W~3fmL;!3EY@fgX&iWrXY?tW9jabdZNE>*SgGAD7|o7Jl!hzd z$vmYN#Z7OE8~w!x^N)ri@g-k%Uw#)Wwq+E@E1vwz#H;^P4OIegPLLC)bGpHcZb5Xj z-trD1?}i@J6wCzbD6ON3KVF)7mOh+gUKgUh>O}=;-{B6Dvr!lFOMh2OSmm`*aD?yi z-ZQ~(g47-~_gmDLm`adbf>MQD5@+mE`lZHtiFeQ6H~O0mllDJfjhCZQ-2lqh))U{6 zT*19AYSjTu_DfM%8$0vnM3Ben@V^Jayz|A(6NjBPXF^j16}sy~HlBI}w+ka0L0=1( zL^Cw4G-51mZ#}CP9kBx+1`s=?hup2tR~UuQJx|sowme%6)>C^-^syD*gsIA8?ZzAb4BVY$ zn+|Tj@VY0xhIjW`=siA8dvuhX>>5h29|f+m*_YMBMmH)0u=oju-u{c2x1gQ8diTyy z>0Q$f(yboW31_As6)X>}SvS4R5bB<;CRsFjtd3F@7IX!3;YPd)d^fbYqlm(^o*!V} zdFtKl3tw9R&UG^*^nKd>k=-BQ9Al3;|73Az7S2ER(5j#t+ASy@eqU@XIIKzD#6oZJ zLsZz|P$5h7MPu6RAx`sV{i%awT=&A&am_Tl4BEhM%TO&{TP>^!NsMm;Xb9jK5sQl4 zYwYz4h{DqE*u#oMA%_g&xK-D%M^j!(v$C0ve#8)mA|S*{gDmL{)uj-bPo{0&#wwny zJB>dt|3%5Ivyk@3OY$8OhlCk`6nBwj2TL6Hml>AoV41%G1u~Nb!WTrX5B%tewXt%o zY@lg{a^ez_i^;tefKchjn;~bu>{SYe%S!M$ZnXP8eYRQ)JHsnvGUHmrc1P9@mQ{}q zOSFDiL?W|>eE^wB1PRCK%*tmgA;pI>o(-hDUba0w=y?i1|=+v!iop<}hE= zb3<8-Tu7ID=%v#3S(7r{?$ECZx<*rEt6}?S-EtlRy=rPM`0}2yQ%bBVue|zTI1j?EBO`4-l@8RJYK8S1e7)PlUYSkd~WJrpVgn^$Fk@p;z!{@n~|6x+wPbGTJ6F zKgB1Z@aZ4|->8p#$D1KmbZ*s({pi~0Eu(E6S--qQ}=GTDcK7vANsi?dB%#Zpg@^Z zKj~He)`@#qhYg>!ktoUUK!=LuUmN(gemr%Gh5CKfM7Zokvlv`nwsp3Xnl@}7gEaK2 ze^0X<-qw*#TxrN;6XS_;kE3or4W{0-G zy_>Mz;!=UvBcjM(j<7-s5BBzii2GhQtBjF|v9FzFQ>(g)RN38cvMGp%dbdTXYq1w4 zCas6ZVd7?%fA&~q=uB(#R>Y%r*zEiAH`ImKx_AbMS>7E@Jlo4By+`6X>3sW9xZb>g z+5gqB*9U5dWkM>N1AY%Zc5uYHJoKn@`PF&qrkLD_(yU?^=sHu;TY6U8sSg90Zy>FY;ZKwIU4(pa;T{y!y4 z6DLT@JRj6U4i0np*n)E&mG>1LgA=MU7a?m8#EQL0nrb+@kjWp#I3l+KDQ2>`gEGBFbs5AZRs?SdV1q&!1qHl3>K89xst^`}ij{KrG#!=PL>9+x)|jr}t6fIN1s@9gaTeJK>^G@! z#(rmSykfqxstpo+JZa1!Zh#E!R(>KsdM9nd*FWtuK9kbv8(l6ag+WDpg@@F}Pj_{H z?)x@09T>T>n&God0+B9mUc~%UGp#?YP?se-{GTZQX?T!&p#%;3htC}8x383 z(T8gN2%Bmhqrx?FN10#2vmM2tp^uUZfVBf3Raw^h7BhYtS89KmS=oh|D2i+^n{ub@ zXd$=)ri5M(Qh{Gn5DN02f8tapX5&Ri9ko(x4+6fFs1ZH3U9^%fxuLw4cw*1w@04Mk@@EI_}%Np+C zIRie|kmb)7O;6BeZk7NGZS#-y@E63 zR+(FM$Qn>le2{TD$rZL-cp_Z9xz7toSzA`+|SsKZdE4f7~cE4d-%ty5K`> zN6mM5n0-G954Z1?_imum;QrC084DNvmX7!DFUks(=EoJQE-1Nsg|D_@!K3G#i2O`* z*IWVSN{C%)l51uEW?2s5V3`46{)Z}dfHoFUw?}?KNDi_(?&knGT=~Jv{ouidH?tfs zlxzm&=<=Xv@6u|YA(OUtO;)l3Pdmc}Mk6I{)$(B{3QZU7Bl(xirtd^v(c*Ewg{4gC znp52T&HFlS7|)>w`*tuYSkf~7T6lx-0I9rVnz@taxt|^7y_YSVVSF|rR$1WK*`Gh& zfbeQ^63pDW?_h0>o`>M}7L#L-o9>;i3o!pC6SZ2hw{HtXFL>)PJkL3Ln(nH6pVr+$ zZ1M@4>nyYARGnQt_N76T-)A@=T+sbHEA7VtSoqy=@OGB=ti4DqpLma}?%rkRCgsRJ zv`D{C9#+FX653RY3hAQcYl)wkIxxDzj>a3WH>VyN#Y!6i+P0#i4q80XX{-D7MMTZ} z1p7^$byI%KmMbzyB;rmFQk_^*-4dQTSNZ7BCT$)maQ8{w$|@Q0+UVh+vvFPHN- zK8$%03OvW)VI&F%-mCzY);j!ZJh z1ZM6j{t63Vy)kuyf5vlA^qM^0lY;I`ywS2#0j7YW^f`%v$^j#|`t6zg`fru(+JDW% zMhH`sT!QrFYpCf$Zq3Jlv~(qMTR~Q1necR2=vM63j}A46jD6rM-E*nm*YA@&rz2_( zH6kDmpRy)V^eX~mtIwtqgi0@wHq4Q^!S{t-o2^gZTv0S90!GyaSvaS=3Q}SsBy{)1 zSDk24Og_#|qc7)9vppxQAx&{$$QfxO-70KkVRDir!<;0tR5ShN_Z<1-yUi)`%IY$1Vyif`JP$D zH~f}XF@dcJJO_GnXtZuboMA`>;X18z@?#k!GjGmpjQjG@1s|ccmIYvx<*RO5rlsRg z&~@4Hc|vX|jH2ZX*AlaQBbLsP+STJnX9a&aTh>D0nL@S{AJ(hj2E{DNB0Cy>J_WMm z*YBk7R`+0N1tyfGb|;PWrVON3!j8J1P5CRbt^__ZDk#uBwV>*7s$u`rQ=(Ch8aVy% zBPl>-E*BbrZ?L6I`|^n@J9?E>VQzRuw=|5r$q?T?7WN&*ro7l;^+8YvGUY#v+sCAP;6#xz?(l&p%;2WC7>C#vkw{s@{#ti#D;|OWs(Ax zzP%NDi-Ll*Oz4FHZc-fl4#H8Heza zw%C458d5#3xizMkkNM%@zQ)YrZRvG+z&xpp%tBZX!#Him18asgm1*`I&nG$JSH@sA zF_{+y5T4+_1&F&*_gCWvil2Ehyk&Bt^8UI|C+vFqj6oQy(WLf%STL-2Pc%FYFyDHn zZ4gvNPmy>=s`iXHV)mz!>TbplUcjd{FKC;5d#R|iK8*AI`&Q!r6xJ(z_^6s3jAC`K zOYK*QxeU{MRfPxd^U{uTw8o1w{w$9*0}e4i_0U$pbwYSSI75_Ggi9RMq2;j?wZcquDADbHJJx?Xb!bq zecW{E^CcI4^Ww*RU~_=2AF16nx?VMV7lus^lJqFC+sf8` zP1z^A!G$LztR;tu^g1R_2pR;%S$SqCW97i5B5OiMdT4V=O_khFZ5@M_8HX*cA?!bg zJ`jX6pV+`1I~I}+7$AnRly6-_RDLAUXq!c*N7hIN|8IOA9o#y?EmdTN>)%_&=@wt;5t?8=M>F?9t^E9?ON2XG*`BLHI zm8Eg0+am3;p|U?>A!zHUxzKz;Y`cdessp!5%iz({W~)*5g45mOKd-&{%K&<5$TG(7gpf>q@SmmhUlo?+eW!&>zA>ctRI(6P8m&LL3;hgS<%A6- zrZ?!x;I`Bu6IrLL>5j~$xfvi6pS{?Aq|Iir;Oh33NqUb?tF4;JEM8ENC4Uqg8V-Lj zS=`#N38j@EfvIyplF+2Fq={2TnPrMQxH}Y)JZ{sqxH^QRNV&FR)s{#O)e~6IOpr-3 zQ}2Sx$YB$EC~cCd?{=5*elGNG!h{#TqZfxsrq1;@BciyaHFD7?4C^2UH;_#Pa{tun zjI9|wwJp8z-Ifmw^+WZ@-aYO@{3*gq2uVXF()ggM1=&yhS<#xb&?6xs!L=4MR#FS+ zcHACMGMLOBC*_{K*=L<8``5`=euEhD0=5h)Iw#2U&#;Ui>AmZuWCXY&^QOn_8>~>r zqLn192oTVNOUFG6CcGwkh)H-1O9F1FtK5bz?hPC3&H%BxC6p=k18Qe`<)nna7FR!4hIZ-s>HzC0C|j?=%0T#cCtMEjWt-=_6WzQ>H(>6DR1_%{!_ zQwx_(se4-qazc?6fe9y87e=3J(f4qH$721(^*g5^;RJ0KG>g9XFATrt_Z#^|`OoPd zH7%O$I2$u3VR_kw=&B-g`+IqysK8x2aFDhkahk$dcDU*``^oV;w0rZS-#>n(X50A8 zM!ED?Xg|UG$dzlOF|QRex+Xqv*wCF97+>n`ncEBU)YCqyx!3PYE4DXPv%m6RlcPEz z2G!Sah_IL_Ta#K-Mmfff4sN8OIC7ezb_}bY#4wn z-ziuFIbcjf5#k%_KN#*D1(&@Jugvf@5|1GFym(3lsV?Y!%~SgF!27^+8+3a?a*gEA z>yH8DQz%7k^xWr_!>$d0MiJ$WVS`6-W|ebD^lcEeuVN~0yW!aR%{58QI&JdFU$yrg z1oD%Ag+CSOuUQfEihG}r-)<1)Q;5#Uo8Q_hyLbPrL|L8=U*;Z z+G2`J40WGLtglhK;}`HRM=8d*diiogYIux3RzH9k0kG5pCBJB{4Rij`y3t|REFl8C zBQ;kPPcUg(OoT-3tskw;wn2)%!yiCEf$;gDXLFEwnnit}@dNJlzm9oLk? z1OQU~DO0eGfMa)Bluus+W$IM{g%0^A!9OhHC2wELc1uUGm#hcr{RG?)&p5WI2kTyb zpJdo1Lf|*X_57HAoZe8_s*5)cRR2iOkIN;V(W~h4-Q!iI<&TOfOvJfvN_=E}tGqHF z6viq!CMe)+)|B(?l=Je%1o9SCM(=qqbFiZXdbsh!1zxoUKuB99us#Y&FYFs)%60j@ zD&ne`S^ms7y4NcjcwCs;V+tAU^7+k{!Nzci=Tsop}+dxbBCFOzl3-osQR1GnKJK&-}6 zB>i|<5uzDwoGB{BSoD0&MzqIqR~5TA7)RX;sYaf#9v z^nA9nd!0-FtXX-q;yz*ay)m1bE2E{n$@XTVF-(2|GHWSj>0oUO2g{lab(w7FciBUO z;x7>_@Ns5y{>+KG&IbePb0^8y6J1L)1}t`N%elgs1#0Wh1){Uzs?5-@6@X(x4k|l1 zgnN`JdGDn$bjNmXee_-cNsiV?zm3V3D(85j%hT&u&1(6Uky1gf7Pk@G)XLzumV1uk z5$OXPBF{p4VJFQs@Po*_YR<2JKF<%$Z+}OEGPa{q-d=Z6uK$8e!GtB#ft~58?RXMP z%NRB&*m3!e>Hqch{{Pw6t8_jb32=2lvH&F+Z((>U0^Qx1c3(u74W92!ai*L-yc$XsE7xpB{%4z*vdaoE&@q1W zPghub{X_hyuIrU81~LhHhv4zan%_~B*_H{kz&a{G``AOmsIJf7qr@A8RP=~oK1G?O zri`Lehroe{8Y~85g2@)af7!1ord_GLB#9~bu-f|YJxYc@g&D(wUodG`vT;6m=uduo zFA7$XkzenpPflu27Lh2#UC)-$fnOYLKQO|zgQA&j?)N{cY>hj%Q^#<0$W1(nzY%*2 z!`y@JmQv2$YF>}xBhffvswGsL{zZW6-}M-qSEt8Ai7uD89Uc3 zQah|3!N)8>?&(h7T<1c180NL*aT~Q?>;khT&0L7zACTaDChQE!e_JiuWaiM%Z>zAG zr0yw8wbM60+uYYo`GA-?RP(K;$(^$Upz1a@^y4$&T|z?dg8&v9p)- zP<}jO(ced=ZYkDn^o2n|!<}mWxx|gY6&t-Yz4(3A6Ihk+73^F|-wj>_7m|`gL`etI zj?vb1dT$24$_Q)r-4?PKZC=C?B$)n&@*~FL1YKMLE)f~WmuhOm5p-`iK9-KjR$Ee2 zpknPlN4gk=KzoHEF0{&td*|zo&Aqh& zaZvHalWCwk>)0mB|HH>dyVYPcQD?Bgpk`~F>xtqO0dCtdGU;i-!0?w=9BI|L26~dC z)8(}_XbKJpOfa{a6s0v=gq|`%w?mre(Z%0}>#uHc2R!j+T$QW_ovKoAA}}6AESE;>0T?&iaPG;@cvSJ?`*TFCj4RgJ~McY@R9XN zV#Wr?0pQj?*1HSta(RUiYoHW4yS@>TNr3miKqb{{x3tg(GI%W0bv3kxMYO37(`sS0 z(?;Pp*W=+lKoi^nMWQ~qaC<^_YFcNrsA=&W;qOT?i#T#DiXQ4Tw%tggG}__t^7NoS z0GM8J_(x!<>I$v*#`}8pZYrhF{}@`x5lHO==~c!VCjUO7H>3MjqeqN4CAB?wY}GK0_fFgs`gRvz0a_$ zV8-LuDa76%EwNy(_*EoUG;2F6W+zGD!`rNF^Qip53ysBFEVy(sk*4m> zf8*A&IsH7?RO!Sa%K>-FOf zbqFB!XB3Y9!7|S_PrWS>c}V2V(4L1&uqU&iORpsAEOE~p7FiO(d6rl>ek|f>!8>}C zKX(X?=Ma_PjkgF`mKw_LwqS<@Nd}E0Ltw40gxj|7gLbqK$1e`#TiPqx<}E$g8)y1& z^vi&4qiTu9Oz{*#*WbVx8VnBjbI9;grqB4fD)0B(XN%;*)dFKc_lYjRrQC<3c=1xK z2{EMFJ{2JH+4$_j`0`u3D4EDb?3sMmg)XY`of)Wy=Js*>70p%pdLxb#TJAxHPHdBg zhzd&=%vx%#$6gY|pZZ@`dyj^vA3C;hL&kJ2a0d!dEpu{S{Nl@wrIbzV)lak>J53)C z2A962fQiiW!2Bwtws7g&D6H^4l=>E^+Dc`Z!uhEq6%tI8j0UDS#7~d~GpU|{j1zGO zZCbdhKl|($O_}2dqLVNF#gA@zEx;lj`GVzxgtfhnm-A5DW%218y>$EXo&WHrviBJ6 zWG=XPreg8&(7AoBk<%dP`-)V&IV03$u&hvUKg^lr%vxS-xhhI{^m8IEKI zI3pu@G?o19erS{$lRsU}Gl5lKb;2GtQvNG#Krz949YMUqx2$>kyh^?^!E_m!6(Am5 zp$)Y+Pmu#>bgEkU9_xV}W`e#g7F>O*3iEp6>cK1^A>bj;bT?^6@a^%e@AGPTe5&BW zINV2vM2W1UMlgMn48}cZHR$zv3`T47>V!VMKWu)mpki>>{S~Gp0Yr6@NY0Y6(mq6q z$2S~oE_V{tx%!})Abst#JH)SBbq)8I{34d5MF#S`VnWK}_eYi6NGf%?-g#h!ggth} zVec+eRm+W90mGMzQdyeiSwF7Dz~Npi-x;lX_jN{p0+?!@|Fd0UplJ)aW<9x0xEj-WQX zgKd(6Hj^bP9Tl>6*ExeEfQfguF>&nKWmBrn^nJRf-T6TV$5 z#e7Gc`rVnEx-Mx`FYacOB>c2=g+TaP(*0fG)+ zCz9l$_)m7$9+#bs-*^?~vxIpMWhN5@-95?W>GCR!2uyH2a7v=zcxNBbsI_!bp8Zv& zZ7aUkZJDxW+&h09R|pM{h&H65_l94rYG<9*XVUQBik8lH$z%4@visx3m?Amuf(-EK zDilDzAI1O;tQ(W39SL?)O;10hn43N%BcSMfEYn@-jkjt^i({EoM_lcl*PkIL z^!D1bq7Hc4#my4BHILKhM9`T}1N_-G0eJn_Z^(}kol^f)8ow|@_fJ}1>}BEv>ZV_3 z{?!1RXWB2QS}A6jape$;P+vTKFUdM+8OZ>O)~N*-L=fTO-JZTukktyN7cV_TXENIo zTH)RAibhrlSDE|Nnk!u1`3Z=AcK7bnf?m_FEXumWz|Bv^3zU6zKq|OQfaNt8Vcl5nW1bxx2%phO#D&W9KNex#%>{>dQ%#k8(#H;s6;o`T%Y zRo)zzTcIPfl$H@-VdenVJU^4%h>4&sj6mZG(_NR|2;uX+=7J;6WTTvT#0@Q9!u_Io zCRzVvUh&$_B1sljd*peWq5$~t(Xgd;WS}$0*!P&ShZ}><(E`*GOoL(EgTn7}-QvyF;_X2>a=S zda>mId8^4B+zIt|uHqM`SV$n|3na=<^TmN5tU@i?w}1I`D1POyGH{fxUH`e`OmFLG zz-4qSnacY4;0TI4jrV6$RS83`f{}F~*u>Mm>p&p6R+YJs1b^bXO~H`~vDQb?t$r=M zi3KJ1Y;F?WVBQs7`{TE%1fbWVqhY82n^d9LC3ixZY%it3lcMxkF4f=Q2}abc7luO6 zsxq}8_Eg0$_!ZaN6MRQWa~ui;#Lai|s(Ji8vwA*xH$r<;Nbk4tC%bjR=iLAO*^xnW z-N8KDC+Stc<(tZRf&jk^--o{aXe=HzC7y?Ye*xks4@PuuPx*SoCOTq6>;C?{DsOi> z^!Y_AefS`4O8uJAet6%7z+&l!0*YGe?<{HKIGc4O+Y$SS&j-WY*T-^M4?Mw>KDeHHO3BpMNNEETIW4ei`DR4VW@g{Bir+iPjv_#O;{wO;xVPZAh-QPr zhZJ>h47NNtY1%R@m3Dl$*ymrS&)>m4&^hRs0gWS(>0SAz(0P1O?gZ=osvbe*UZ<=z z0hglEWLAEj5XPJp>Qf|^v?;JgsGC;LS!=1_NOqI>R&jBe6P>AVp)+n&7mQ;=AQ+GF zDPRM^?`*3s{|Hy3N|qJ1fFE`C;PjiP7ot#NT{;+x|&H18*mSRC-rlXass zL7M6$^Vg*_SepZ8Wz32Oi*n9p(=$zZwiXTK+9pCMUpv;^cSqS7#)0&~hsNxVp$``t1=>~KeeI!iOHwqJgsSc!k zSoDNZ$Ij?R(zo4*19+ew6@J7rb_rf*pW~q=u&<#VWYFJ;(h4V0te*=LK@$50E_M4 zV9Q&Qrpk032(F@LVy46YAnLf-Ld3Lcrkmlk^pZPc)2^G<%vZSP zt(`Upbp46`ak7DY8Km#q#Ln)!cA@eN)4vVNxQ#b)h95TxQ(m5)vTfdzSn9h}JavWs zI4L>YLy%SmXUGC5+$V$vgCtfjMyok>?vyAucT?=^5uA|u{Ak<~3f&R0FWJ-yk!ahQ zWC# zK>|0#5KPv<*lP$dg5!99V8 zM{VJDt4Eus@GKjPp;jlh4ROs${qw87hG!Y~x>W7OeLlM^U65 z#i!=B0EuH_C1hCRRV9n`gZ! z$rRfGE7}ZuK^$S1p&R`rdNMiwldQAloVuA`WM`LVlH`7{j*oFT|J@nXqcVYo=0VV#Ij|L z!ZBft;MrSDgW&)%gZOZ<(`1jUoF>HDZHz>K2A25{gzaOQnmRe)^&$W%&*Hw=FlGP zTyNOrl_aKYDNaZ-F<>WMmIeNQVBON8{MbC|2^?aON^h)f8KH=hPtZj;`kNGD@~F9! z@-r+OcP4R;@vp4YaI{Pwfabg2;Au#3*dM=_h~r~-yqAuia=gPavsEd@StRAT8Bs`w zryEakjJg`bH_2OiMqli`WTRf!No&mOl|c_bJZSwlohx|B%(YQ&BhXB98Xc@(x1`|F zmcIv91GqGNrS?+zKd1Q1&weTLN{5wAsMEA?gpW&`Chv0dw{ zP6|~oxEmq!xB(uaZ{2AOI&RzZI#pG$>4lp9oIB6ZAgyC5)AX0RF{=iz0)~5;QrT6z1zAJ|r>RfSfp^bo>x_p>*%rgUj zpFpakoSsA)VTN%namYI*c;YMLYXSC`Mu&Nem(u2>yFPwCWd@}oC(}jj}y>(R6EW^ z8Pf+y={5E2Hubc6Z_-EJSseBxy#}O@yNK*FfJ~EK-P0BqY}AB#08d_aG6S zD62>B(L!|5i5h~{%j&B}?`73kcGXqx=KFif+&j-RbMMUk<2f_?hncg-nRE7h&gb(k zuUA5I-`cs>9G27fUv!Am4d<`%H&c{Vfj##nJU1^`WDFv^JymsZiKEG0Op#v7v+73@ zOElEtJaMk?>5vJr-{RoT`u@7IzioY`E-5J}gDaWM&>2gg9}>8LQr#Y06ZT&cApqm3 zNPI4m$%3vZc|f%RTYO=KZR%k(0tm%+FuZFeb@jX0xF`!_bH$M#jbHDh!xELT)fwUG zZAVTxSJ_C{^>>~?6$dB?Ogk%JxaGjt=N1t$y zr$LhMk8&!!<2YIUro+ZRxW2WfeGYY&o|6$BauMmhP7J<|Z0(;j<5{QtacL=q%n%FT zSp&HI0Z-OS>WNaIEABl$v1+=gY5F5xH5YAVJ`I=<&ADQd3H0)fL2Os2Yl{SE;Sf?^ zcbTPN`Jx8S41U{K3h52QWvPrt^zuPvtL6K!s9Dp~ZDI*jNZ<9Bl*1tL^P$G#3ScT7 z)=^SlUn9$~ZDVq5LjRA7pE_$DdmgTLV;%!uU01I?c+_Eh+#M(7-fi|1P#v|0>rI%W z^@5BpLiGrXO9U*Ae+h|<7i2LvL~M}33N&{##YlJl2R(&_1_qJeU}p)*DqysP)o5&x zmh_T^ZtW4rxkZ_Rty~A`->r#f##6Y0?^LO~A*&4B2khZ8fz@Btdo)ddmu8i?Nf2F| zGn5H^9A+?G6~MLV;NxN8V%Pc)%7>OZo;TP$VcRO8-~-pfy*D^C1I6RB2{#Wvc%}n8 za4py^w`B=wU0v{FDP-4vQ!7RM5-cu3p4lAZu``5zsS|fdXlySt3k2oVM<14-xbUAx zqvkxBZ6w?_z1F$@db1Tcj2`za9@OXa9avCZ$bxIE+HoSeuv{sZ0&y7*OKecNf~r09 z?FmyTrN3$(eLNkwKAi*$n(nSKHcwhRLZH56!LYepEN1sHHtaMQ&5WR_31^SBrTx-7 z=gr;0!^iN4yFgXY!4y}=(q86m_CCt9CYw&P#X~|LZYV4&$;^&W3Ch$9F&$>Vr*Imi z5BgIl^o(yW6x+8z6-W`lA~jXG^dWuke)vWd_+w*Vcuu|1madNd`BVrv~iQxQ7p4=*E4VZBHc?n}#V}zWze;i!^s?lfs7( z7HVpb`vfozYG(}7n-)6?Cz7Pi>$+8ZnJpdxyk09FBXY&`bn;ljKGZSr904CxPhHo7 zhPS=VpB&OkvSavXI0I66>D-R3#54&8NiDj~EHL>{2aC9h@bGG?SFXN5HV-4^72#Rq9JGwJ3R+G3MO?A-Hs<$)U{m{LWpyalhtZ0E z>m{kA!lw@n%)UE!LvII*Y2)n>vw@E}k+#M(NZTg?jA2oJ+&mvU!XFP}GbQ!|`MvcK zL$Zdyo$t4PJ`|p6U%~n1F3$4FVgQnX84Out+*7*2oEP}tTq$=dYl{Gn+HCFlXKd`s7h|o)>9}cD@$(ag_oPe{p z+h2sWvwEII#>zZM9N54y$bOyMe?XHwRB+fJ)JHV;UdE{&lRVpVZ42XV z1~O5TIAcvJB|Cw5JYMm($cMCZmdn&Aatc>Z>44CvL#O+Dy-&9V;z@6&`rLt7lyJ&CV5ZQ#&yBM;3DF5$b6oxF8Bd?xl zwFcyu;LzgVJ<;#Bu{(DWw+OKJMl0)EN0Dt7q5heG)|~nNnSTDCPMG|p4OW1WbZsb? zk$Y`u@wY}oE{zaD@XJ)ao@m8}1Zy&N-E~5)WUtNv?0@<<_K5y>QNzE#{^Q2^kLzR$ zuOWfpL$pf6nDytEy}k4q&f|;NZw&FS-vB*Yq6d_H!f8t8E`zZm8|-?E{=YFO|LX|Y z1C0w{tuQslI1Hnj4l)Du*&6H3a|SNrEVZk&4A>LvEvhBtqW#a_sYL&q?{?59I9NP2 zwXSVG*2O8Hgq@HYfoek^(Hhy+5*F1vp8e-^`6&LE*TAYt2AcbY8tXlBt$W_%5pLxz z3w5^k(BM6m)#6jao(E;Pm3`;`^6C#!tP>W#?{&EDYU<{Qh!6L&D6RMw`=2YLLiRtU zMgI=by=KSoA3&;pwHL1B-4SAEgwUx(ek^?Ob5_~Vi~?3>PoM*a92=J&|HldAD9yn} ztdWtZ2n$vZR?NCcyP`c2&F2SKR8`8T!!aH4fIhQ=khY1@&=*GEme7h-d+Ls4&TG|np~Do zy;_gJ847k@Z>C=AYu1|RP^JXorOGd)vRaXF1BgTOUP zuCG{3f&^dvHwd=qD48&kV5TscookmLC@} zt%QVn?X>qcNe(e69aBpVx%mYlyj1Z3Wj<%oUU6jhx$|*T*(;wleyN`lnr`UqEyT>g zHpe~bE`|k>fBg5ww#aUDA7;<)ds_Qwtc|Nr_*chX;lW)pdY(zH%Vg~t^@I#>8Uu7j zY2xU5LYyjyzvx42H-vi3SkSo;#@FD2px3QEVJYmZyjG&~4?Vodk{P^1%(5UB1=u07 z?)o|E@o`Vvj-IdYTD;nfc&ukEwm>jNdVecvTe#{{q&+xmXQ)x@pd+|eF4uuLqt`wL zJKJ$vBfFx;Xj8^&=PG@3mDs@QUWR|}o{8iPVRa^fS-XFISFX$; zR(TfkKW=O$!*(c5H&h5HLCm4`v;Uj$`thJBQp8goJt!6(j;f7S2>oWVq5u4xSVwZb z`o%ag?RAKsCg9}*YfvAtD*gb1GttyLaz++-jD18eGAw) zt6%IHw&qCNsotqwIs{ZuI; z&+xI$Q{B$dU#(+Gm08S{WpIkdk8P9hQw~G!EQ5Z_{S1KE5kJN-hNch>SiW|M#FdD( z31fL3IbRwwYdN0^2LQBnrhe&FwAf}Aqzj diFoPx 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 z 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 G3Hm>by=*uD literal 0 HcmV?d00001 diff --git a/img/dashboard2.png b/img/dashboard2.png new file mode 100644 index 0000000000000000000000000000000000000000..8742fc0c80abb73e13811a6bcf746e8e74f76aee GIT binary patch literal 395994 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.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

    lPz>{=!(Zt{z*Pn$gs}gZ?>t`kS`xz_Mj4Y#&sa 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�~%Go2uh~uwTBl$y68LCJD=;2U{*4 z;QhTPs8!*q9*4!Ux#{=$yE+XA?sh5*VFoy{L~ny9r7QDCkh>-%?nD*vJ)$s+0_tXl zHdajY+uUKhf^Z*j(3eZT6?xcCC7&`_km8#WaMi3Nt&c6=|EBOcN>HWnSt0%dZ9^*f z7|}Q`GqzvtpG>9*7wp-CyJIy*;u4?kz2-hDABq=k#3$lED#w?I-w)3+rX_j4X%^olOa1q%GDnQ5xz znQ#)0yha|4eP#q-ve-%X=7uQQ@^wgAiH1!-9mfg>HAwC8Z+bmD5-+~IF|767(`-%; z^Hp<`@AF5eCVeW2=M#3a8!b

    5!%l{@ghC)4FXP+^lno_G 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 literal 0 HcmV?d00001 diff --git a/img/dashboard3.png b/img/dashboard3.png new file mode 100644 index 0000000000000000000000000000000000000000..7fa016a7ed7fac43e8b3b6e67b19d566bad9c483 GIT binary patch literal 386105 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
  1. qVid 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 z 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

    @cNC=jylax?h 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 OHZwz880VwTg#8UnUa#>0 literal 0 HcmV?d00001 diff --git a/img/dataflow.png b/img/dataflow.png new file mode 100644 index 0000000000000000000000000000000000000000..4dfdc0cfae4a30acf15401a17ec6d3dae52ae04c GIT binary patch literal 124915 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 literal 0 HcmV?d00001 From 47bdd4e6419567b13e00e0e02aae77316cdbefed Mon Sep 17 00:00:00 2001 From: poriz <36216087+poriz@users.noreply.github.com> Date: Thu, 14 Mar 2024 09:27:29 +0900 Subject: [PATCH 246/249] Update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 549401c..dc46460 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,7 @@ | 프로세싱 (Data Processing) | Airflow, AWS Glue(Spark), AWS Athena, AWS Lambda | | 시각화 (Visualization) | Grafana(dashboard service) | | 협업 도구 (Collaborative Software) | GitHub, Notion, Slack | + ![architecture](/img/architecture.png) ## 프로젝트 보고서 @@ -56,4 +57,4 @@ - 사용 가능한 리소스가 너무 부족 - Airflow 컴포넌트 분리 등, 필요한 개발 환경을 조성하는데 너무 많은 시간을 소요 - 프로젝트에 취지에 맞는 실시간성 데이터를 확보하지 못함 - - 데브코스 과정에서 학습한 기술들을 전반적으로 복습 및 활용함과 동시에 실시간성을 갖춘 데이터를 찾기 힘들었음 \ No newline at end of file + - 데브코스 과정에서 학습한 기술들을 전반적으로 복습 및 활용함과 동시에 실시간성을 갖춘 데이터를 찾기 힘들었음 From e1c26654b382a9082b19bab7f37193fd9cceb4ed Mon Sep 17 00:00:00 2001 From: Lee Sarah Date: Thu, 14 Mar 2024 09:30:21 +0900 Subject: [PATCH 247/249] images for readme --- img/AWS Lambda.svg | 1 + img/AWS.svg | 1 + img/Amazon AWS.svg | 1 + img/Amazon RDS.svg | 1 + img/Amazon Redshift.svg | 1 + img/Amazon S3.svg | 1 + img/Apache Airflow.svg | 1 + img/Apache Spark.svg | 1 + img/GCP.svg | 1 + img/Google Cloud Platform.svg | 1 + img/Notion.svg | 1 + img/Slack.svg | 1 + img/github.svg | 1 + img/grafana.svg | 1 + img/python-3.11.svg | 1 + 15 files changed, 15 insertions(+) create mode 100644 img/AWS Lambda.svg create mode 100644 img/AWS.svg create mode 100644 img/Amazon AWS.svg create mode 100644 img/Amazon RDS.svg create mode 100644 img/Amazon Redshift.svg create mode 100644 img/Amazon S3.svg create mode 100644 img/Apache Airflow.svg create mode 100644 img/Apache Spark.svg create mode 100644 img/GCP.svg create mode 100644 img/Google Cloud Platform.svg create mode 100644 img/Notion.svg create mode 100644 img/Slack.svg create mode 100644 img/github.svg create mode 100644 img/grafana.svg create mode 100644 img/python-3.11.svg diff --git a/img/AWS Lambda.svg b/img/AWS Lambda.svg new file mode 100644 index 0000000..fb6d27a --- /dev/null +++ b/img/AWS Lambda.svg @@ -0,0 +1 @@ +AWS LambdaAWS Lambda \ No newline at end of file diff --git a/img/AWS.svg b/img/AWS.svg new file mode 100644 index 0000000..e345725 --- /dev/null +++ b/img/AWS.svg @@ -0,0 +1 @@ +AWSAWS \ No newline at end of file diff --git a/img/Amazon AWS.svg b/img/Amazon AWS.svg new file mode 100644 index 0000000..253f5de --- /dev/null +++ b/img/Amazon AWS.svg @@ -0,0 +1 @@ +Amazon AWSAmazon AWS \ No newline at end of file diff --git a/img/Amazon RDS.svg b/img/Amazon RDS.svg new file mode 100644 index 0000000..5c572a2 --- /dev/null +++ b/img/Amazon RDS.svg @@ -0,0 +1 @@ +Amazon RDSAmazon RDS \ No newline at end of file diff --git a/img/Amazon Redshift.svg b/img/Amazon Redshift.svg new file mode 100644 index 0000000..6743dd1 --- /dev/null +++ b/img/Amazon Redshift.svg @@ -0,0 +1 @@ +Amazon RedshiftAmazon Redshift \ No newline at end of file diff --git a/img/Amazon S3.svg b/img/Amazon S3.svg new file mode 100644 index 0000000..5276526 --- /dev/null +++ b/img/Amazon S3.svg @@ -0,0 +1 @@ +Amazon S3Amazon S3 \ No newline at end of file diff --git a/img/Apache Airflow.svg b/img/Apache Airflow.svg new file mode 100644 index 0000000..1d73971 --- /dev/null +++ b/img/Apache Airflow.svg @@ -0,0 +1 @@ +Apache Airflow: 2.7.2Apache Airflow2.7.2 \ No newline at end of file diff --git a/img/Apache Spark.svg b/img/Apache Spark.svg new file mode 100644 index 0000000..716c034 --- /dev/null +++ b/img/Apache Spark.svg @@ -0,0 +1 @@ +Apache SparkApache Spark \ No newline at end of file diff --git a/img/GCP.svg b/img/GCP.svg new file mode 100644 index 0000000..ff2c049 --- /dev/null +++ b/img/GCP.svg @@ -0,0 +1 @@ +GCPGCP \ No newline at end of file diff --git a/img/Google Cloud Platform.svg b/img/Google Cloud Platform.svg new file mode 100644 index 0000000..f66b785 --- /dev/null +++ b/img/Google Cloud Platform.svg @@ -0,0 +1 @@ +Google Cloud PlatformGoogle Cloud Platform \ No newline at end of file diff --git a/img/Notion.svg b/img/Notion.svg new file mode 100644 index 0000000..e0c7cf0 --- /dev/null +++ b/img/Notion.svg @@ -0,0 +1 @@ +NotionNotion \ No newline at end of file diff --git a/img/Slack.svg b/img/Slack.svg new file mode 100644 index 0000000..ba867ed --- /dev/null +++ b/img/Slack.svg @@ -0,0 +1 @@ +SlackSlack \ No newline at end of file diff --git a/img/github.svg b/img/github.svg new file mode 100644 index 0000000..b2957b1 --- /dev/null +++ b/img/github.svg @@ -0,0 +1 @@ +GitHubGitHub \ No newline at end of file diff --git a/img/grafana.svg b/img/grafana.svg new file mode 100644 index 0000000..23ece54 --- /dev/null +++ b/img/grafana.svg @@ -0,0 +1 @@ +Grafana: 10.3.3Grafana10.3.3 \ No newline at end of file diff --git a/img/python-3.11.svg b/img/python-3.11.svg new file mode 100644 index 0000000..612fdbf --- /dev/null +++ b/img/python-3.11.svg @@ -0,0 +1 @@ +Python: 3.11Python3.11 \ No newline at end of file From 5529bf2daea9c4759e5b3b44b09f66c1c32a2bbf Mon Sep 17 00:00:00 2001 From: Lee Sarah Date: Thu, 14 Mar 2024 09:47:33 +0900 Subject: [PATCH 248/249] images for readme --- img/Amazon Athena.svg | 1 + img/Amazon Glue.svg | 1 + img/MySQL.svg | 1 + img/Terraform.svg | 1 + 4 files changed, 4 insertions(+) create mode 100644 img/Amazon Athena.svg create mode 100644 img/Amazon Glue.svg create mode 100644 img/MySQL.svg create mode 100644 img/Terraform.svg diff --git a/img/Amazon Athena.svg b/img/Amazon Athena.svg new file mode 100644 index 0000000..70ca648 --- /dev/null +++ b/img/Amazon Athena.svg @@ -0,0 +1 @@ +Amazon AthenaAmazon Athena \ No newline at end of file diff --git a/img/Amazon Glue.svg b/img/Amazon Glue.svg new file mode 100644 index 0000000..6016b35 --- /dev/null +++ b/img/Amazon Glue.svg @@ -0,0 +1 @@ +Amazon GlueAmazon Glue \ No newline at end of file diff --git a/img/MySQL.svg b/img/MySQL.svg new file mode 100644 index 0000000..e71cc21 --- /dev/null +++ b/img/MySQL.svg @@ -0,0 +1 @@ +MySQLMySQL \ No newline at end of file diff --git a/img/Terraform.svg b/img/Terraform.svg new file mode 100644 index 0000000..0cc2465 --- /dev/null +++ b/img/Terraform.svg @@ -0,0 +1 @@ +TerraformTerraform \ No newline at end of file From d437ea8fba31ca350de879372fac7d03dfcfa4b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=84=9C=EB=A6=BC?= <40015447+srlee056@users.noreply.github.com> Date: Thu, 14 Mar 2024 09:52:30 +0900 Subject: [PATCH 249/249] Update README.md --- README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index dc46460..64a5c80 100644 --- a/README.md +++ b/README.md @@ -14,12 +14,12 @@ ## 활용 기술 및 프레임 워크 | 분류 | 기술 | | --- | --- | -| 사용 언어 (Programming Language) | Python, SQL | -| 클라우드 서비스 (Cloud Service) | GCP, AWS (Terraform) | -| 데이터 베이스 (Database) | AWS S3, AWS Redshift, AWS RDS(MySQL) | -| 프로세싱 (Data Processing) | Airflow, AWS Glue(Spark), AWS Athena, AWS Lambda | -| 시각화 (Visualization) | Grafana(dashboard service) | -| 협업 도구 (Collaborative Software) | GitHub, Notion, Slack | +| 사용 언어 (Programming Language) | ![Python](/img/python-3.11.svg) ![SQL](/img/MySQL.svg) | +| 클라우드 서비스 (Cloud Service) | ![GCP](/img/GCP.svg) ![AWS](/img/AWS.svg) ![Terraform](/img/Terraform.svg) | +| 데이터 베이스 (Database) | ![AWS S3](/img/Amazon%20S3.svg) ![AWS Redshift](/img/Amazon%20Redshift.svg) ![AWS RDS(MySQL)](/img/Amazon%20RDS.svg)| +| 프로세싱 (Data Processing) | ![Airflow](/img/Apache%20Airflow.svg) ![Spark](/img/Apache%20Spark.svg) ![AWS Glue](/img/Amazon%20Glue.svg) ![AWS Athena](/img/Amazon%20Athena.svg) ![AWS Lambda](/img/AWS%20Lambda.svg) | +| 시각화 (Visualization) | ![Grafana](/img/grafana.svg)| +| 협업 도구 (Collaborative Software) | ![GitHub](/img/github.svg) ![Notion](/img/Notion.svg) ![Slack](/img/Slack.svg) | ![architecture](/img/architecture.png)

  2. %@S< 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 lHQ0N*6bBWb;3h-OeJ= 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