File size: 1,479 Bytes
312b9eb
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import pandas as pd
import streamlit as st
from google.oauth2.service_account import Credentials
from googleapiclient.discovery import build
from googleapiclient.http import MediaIoBaseDownload
import io

# Google Drive ๋ฐ Sheets API ์ธ์ฆ
scope = [
    "https://www.googleapis.com/auth/drive.readonly"
]
credentials = Credentials.from_service_account_info(st.secrets["google"], scopes=scope)
file_id = st.secrets["drive"]["file_id"]

drive_service = build('drive', 'v3', credentials=credentials)

@st.cache_data(show_spinner=False)
def load_data():
    request = drive_service.files().get_media(fileId=file_id)

    file_buffer = io.BytesIO()

    downloader = MediaIoBaseDownload(file_buffer, request)
    done = False

    progress_bar = st.sidebar.progress(0)
    progress_text = st.sidebar.empty()
    progress_text.text("๋ฐ์ดํ„ฐ ๋ถˆ๋Ÿฌ์˜ค๋Š” ์ค‘...")

    while not done:
        status, done = downloader.next_chunk()
        progress = int(status.progress() * 100)
        progress_bar.progress(progress)
        progress_text.text(f"๋ฐ์ดํ„ฐ ๋ถˆ๋Ÿฌ์˜ค๋Š” ์ค‘...({progress}%)")

    file_buffer.seek(0)
    df = pd.read_csv(file_buffer)

    df['ru_svc_lat_val'] = df['ru_svc_lat_val'].astype(float)
    df['ru_svc_lng_val'] = df['ru_svc_lng_val'].astype(float)

    df_map = df.drop_duplicates(subset=['ru_svc_lat_val', 'ru_svc_lng_val'])

    progress_bar.empty()
    progress_text.empty()
    st.sidebar.success("๋ฐ์ดํ„ฐ ๋กœ๋“œ ์™„๋ฃŒ!")

    return df, df_map