import io
from google.oauth2 import service_account
from googleapiclient.discovery import build
from googleapiclient.http import MediaIoBaseUpload


import fitz  # PyMuPDF
from PIL import Image
import os


def upload_to_drive(file_obj, filename):
    SERVICE_ACCOUNT_FILE = 'credentials/drive_service_account.json'
    SCOPES = ['https://www.googleapis.com/auth/drive']
    FOLDER_ID = '19pH19iCJ8hNr9OF0TwyWwMiKeR-_iecS'  # Ganti sesuai kebutuhan

    credentials = service_account.Credentials.from_service_account_file(
        SERVICE_ACCOUNT_FILE, scopes=SCOPES)

    service = build('drive', 'v3', credentials=credentials)

    file_metadata = {
        'name': filename,
        'parents': [FOLDER_ID]
    }

    media = MediaIoBaseUpload(file_obj, mimetype='application/pdf')

    file = service.files().create(
        body=file_metadata,
        media_body=media,
        fields='id, webViewLink'
    ).execute()

    return file.get('webViewLink')


from django.conf import settings

def convert_to_images(pdf_path, output_folder):
    """
    Konversi file PDF ke gambar JPG per halaman dan kembalikan URL.
    """
    if not os.path.exists(output_folder):
        os.makedirs(output_folder)

    doc = fitz.open(pdf_path)
    image_urls = []

    # bikin path relatif dari MEDIA_ROOT supaya bisa jadi URL
    rel_folder = os.path.relpath(output_folder, settings.MEDIA_ROOT)

    for i, page in enumerate(doc):
        pix = page.get_pixmap(matrix=fitz.Matrix(2, 2))
        filename = f"page_{i+1}.jpg"
        img_path = os.path.join(output_folder, filename)
        pix.save(img_path)

        # URL browser
        img_url = f"{settings.MEDIA_URL}{rel_folder}/{filename}"
        image_urls.append(img_url)

    doc.close()
    return image_urls