import io
import socket

# Force IPv4
old_getaddrinfo = socket.getaddrinfo
def new_getaddrinfo(*args, **kwargs):
    responses = old_getaddrinfo(*args, **kwargs)
    return [response for response in responses if response[0] == socket.AF_INET]
socket.getaddrinfo = new_getaddrinfo

from google.oauth2 import service_account
from googleapiclient.discovery import build
from googleapiclient.http import MediaIoBaseUpload

SERVICE_ACCOUNT_FILE = 'google_service_account.json'
SCOPES = ['https://www.googleapis.com/auth/drive']

creds = service_account.Credentials.from_service_account_file(SERVICE_ACCOUNT_FILE, scopes=SCOPES)
drive_service = build('drive', 'v3', credentials=creds)

content = "Nội dung test của Zen".encode('utf-8')
f = io.BytesIO(content)
media = MediaIoBaseUpload(f, mimetype='text/plain')

file_metadata = {
    'name': 'Zen Text.txt',
    'parents': ['1EaS10C6-ozNN0iyZC_pJ_28-SG8EWetG']
}

try:
    file = drive_service.files().create(
        body=file_metadata,
        media_body=media,
        fields='id',
        supportsAllDrives=True
    ).execute()
    file_id = file.get('id')
    print(f"Created file ID: {file_id}")
    print(f"File link: https://drive.google.com/file/d/{file_id}/view")
except Exception as e:
    print(f"Error: {e}")
