콘텐츠로 이동

미세먼지 표시하기

실행 준비

!pip install openai
!pip install gradio

위도와 경도 정보로 미세먼지 정보 알아오기

import requests

# 1. API 키와 도시 설정
API_KEY = "3924e8dd1e62418eb9c72516252506"  # 예: '1234567890abcdef'
CITY = "35.1595,126.8526"

# 2. API URL 구성
url = f"http://api.weatherapi.com/v1/current.json?key={API_KEY}&q={CITY}&lang=ko&aqi=yes"

# 3. API 요청
response = requests.get(url)
data = response.json()

# 4. 데이터 출력
if response.status_code == 200:
    location = data['location']['name']
    country = data['location']['country']
    temp_c = data['current']['temp_c']
    condition = data['current']['condition']['text']
    feelslike = data['current']['feelslike_c']
    humidity = data['current']['humidity']
    wind_kph = data['current']['wind_kph']

    co = data['current']['air_quality']['co']
    no2 = data['current']['air_quality']['no2']
    o3 = data['current']['air_quality']['o3']
    so2 = data['current']['air_quality']['so2']
    pm2_5 = data['current']['air_quality']['pm2_5']
    pm10 = data['current']['air_quality']['pm10']

    print(f"📍 {location}, {country} 현재 미세먼지:")
    print(f"- 일산화탄소: {co}μg/m3")
    print(f"- 이산화질소: {no2}μg/m3")
    print(f"- 오존: {o3}μg/m3")
    print(f"- 이산화황: {so2}μg/m3")
    print(f"- 초미세먼지 (지름 ≤ 2.5㎛): {pm2_5}μg/m3")
    print(f"- 미세먼지 (지름 ≤ 10㎛): {pm10}μg/m3")
else:
    print("⛔ 미세먼지 정보를 불러올 수 없습니다.")
    print("오류 코드:", response.status_code)

미세먼지 정보를 문자열로 정리하기

import requests

# 1. API 키와 도시 설정
API_KEY = "3924e8dd1e62418eb9c72516252506"
CITY = "35.1595,126.8526"

# 2. API URL 구성
url = f"http://api.weatherapi.com/v1/current.json?key={API_KEY}&q={CITY}&lang=ko&aqi=yes"

# 3. API 요청
response = requests.get(url)
data = response.json()


weather = ""


# 4. 데이터 출력
if response.status_code == 200:
    location = data['location']['name']
    country = data['location']['country']
    temp_c = data['current']['temp_c']
    condition = data['current']['condition']['text']
    feelslike = data['current']['feelslike_c']
    humidity = data['current']['humidity']
    wind_kph = data['current']['wind_kph']

    co = data['current']['air_quality']['co']
    no2 = data['current']['air_quality']['no2']
    o3 = data['current']['air_quality']['o3']
    so2 = data['current']['air_quality']['so2']
    pm2_5 = data['current']['air_quality']['pm2_5']
    pm10 = data['current']['air_quality']['pm10']

    weather = f"📍 {location}, {country} 현재 미세먼지:\n"
    weather += f"- 일산화탄소: {co}μg/m3\n"
    weather += f"- 이산화질소: {no2}μg/m3\n"
    weather += f"- 오존: {o3}μg/m3\n"
    weather += f"- 이산화황: {so2}μg/m3\n"
    weather += f"- 초미세먼지 (지름 ≤ 2.5㎛): {pm2_5}μg/m3\n"
    weather += f"- 미세먼지 (지름 ≤ 10㎛): {pm10}μg/m3"

else:
    weather = "⛔ 미세먼지 정보를 불러올 수 없습니다.\n"
    weather += "오류 코드:", response.status_code   

print(weather)

미세먼지 정보를 리턴하는 함수 만들기

import requests

def get_air(city, lat, lng):        

    # 1. API 키와 도시 설정
    API_KEY = "3924e8dd1e62418eb9c72516252506"
    CITY = f"{lat},{lng}"

    # 2. API URL 구성
    url = f"http://api.weatherapi.com/v1/current.json?key={API_KEY}&q={CITY}&lang=ko&aqi=yes"

    # 3. API 요청
    response = requests.get(url)
    data = response.json()

    weather = ""

    # 4. 데이터 출력
    if response.status_code == 200:
        location = data['location']['name']
        country = data['location']['country']
        temp_c = data['current']['temp_c']
        condition = data['current']['condition']['text']
        feelslike = data['current']['feelslike_c']
        humidity = data['current']['humidity']
        wind_kph = data['current']['wind_kph']

        co = data['current']['air_quality']['co']
        no2 = data['current']['air_quality']['no2']
        o3 = data['current']['air_quality']['o3']
        so2 = data['current']['air_quality']['so2']
        pm2_5 = data['current']['air_quality']['pm2_5']
        pm10 = data['current']['air_quality']['pm10']

        weather = f"📍 {city}의 미세먼지 정보입니다.\n"
        weather += f"- 일산화탄소: {co}μg/m3\n"
        weather += f"- 이산화질소: {no2}μg/m3\n"
        weather += f"- 오존: {o3}μg/m3\n"
        weather += f"- 이산화황: {so2}μg/m3\n"
        weather += f"- 초미세먼지 (지름 ≤ 2.5㎛): {pm2_5}μg/m3\n"
        weather += f"- 미세먼지 (지름 ≤ 10㎛): {pm10}μg/m3"

    else:
        weather = "⛔ 미세먼지 정보를 불러올 수 없습니다.\n"
        weather += "오류 코드:", response.status_code   

    return weather


air = get_air('서울', "35.1595", "126.8526")

print(air)