from woocommerce import API
import pandas as pd
import ezodf
import requests
import pprint

wcapi = API(
    url="https://lescreationsdemissbleue.local",
    consumer_key="ck_604e9b7b5d290cce72346efade6b31cb9a1ff28e",
    consumer_secret="cs_563974c7e59532c1ae1d0f8bbf61f0500d6bc768",
    wp_api=True,
    version="wc/v3",
    verify_ssl=False # Désactive la vérification SSL pour le développement
)


"""
'images': [
            {'src':'https://lescreationsdemissbleue.local/wp-content/uploads/2025/02/chope-citron-meringue-face.jpg'},
            {'src':'https://lescreationsdemissbleue.local/wp-content/uploads/2025/02/chope-citron-meringue-haut.jpg'},
            ]
{'alt': '',
              'date_created': '2025-01-16T17:22:38',
              'date_created_gmt': '2025-01-16T16:22:38',
              'date_modified': '2025-01-16T17:22:38',
              'date_modified_gmt': '2025-01-16T16:22:38',
              'name': 'Chope citron meringué (3)',
              'src': 'https://lescreationsdemissbleue.local/wp-content/uploads/2025/02/chope-citron-meringue-dos.jpg'}"""

"""import requests

url = "https://lescreationsdemissbleue.local/wp-json/wp/v2/media?media_type=image"
response = requests.get(url, verify=False)  # note: verify=False pour bypasser le certificat auto-signé en local
images = response.json()
print(images)
pprint.pprint(response.json())

"""

"""data = {
    'images' : [
        {'id':610},#,'src':'https://lescreationsdemissbleue.local/wp-content/uploads/2025/02/chope-citron-meringue-face.jpg'},
        {'id':609},#'src':'https://lescreationsdemissbleue.local/wp-content/uploads/2025/02/chope-citron-meringue-haut.jpg'},
        {'id':608},
    ],
}"""

"""data = {
    'description': ""La  Chope au parfum citron meringué est une véritable œuvre d'art, entièrement fabriquée à la main avec soin et précision, tant par le verre qui a été réalisé par un artisan verrier à Montauroux dans le Sud de la France, que par la bougie elle-même qui est faite avec passion par mes soins. 
        Cette bougie offre une expérience olfactive unique, combinant les notes sophistiquées des parfums de Grasse avec la fraîcheur acidulée du citron meringué. Parfaite pour créer une ambiance chaleureuse et accueillante, elle diffuse un parfum délicat et fruité qui enveloppera votre intérieur. Que ce soit pour une soirée relaxante ou pour ajouter une touche originale à votre décoration, cette bougie  est un choix raffiné qui séduira vos sens et émerveillera vos invités. 
        La couleur jaune est associée à la joie, à la gaieté et à la fête. Elle est la couleur de l'amitié, des relations sociales ou encore de la fraternité. Le jaune peut aussi faire référence à la douceur et à la fraîcheur. Il est associé au bien-être et à la bonne humeur et transmet un côté ludique et rafraîchissant.
        Si vous souhaitez apporter une touche ensoleillée et acidulée à votre intérieur cette chope est faite pour vous.
        Parfum de Grasse 
        Sans CMR
        Sans phtalates
        Non testé sur des animaux

        Mèche en coton"",
        'regular_price': '36.00',
        'price': '36.00',
        'stock_quantity':1,
        'weight':'0.895'
}"""

data = {
    "meta_data": [
        {
            "key": "conseil_utilisation",
            "value": """- Allumez la bougie et laissez un puits se creuser autour de la mèche afin que l'odeur se diffuse. Ne dépassez pas les 3h continues de brûlage. 
                - La cire de soja se nettoie facilement avec de l’eau chaude, vous pourrez ainsi récupérer le contenant après avoir consumé toute la bougie,
                - Toutes les bougies disposent d’étiquettes de sécurité, merci d’en prendre connaissance avant d’allumer le produit.
                - La bougie brûlera environ 38 heures."""
        }
    ]
}

response = wcapi.get("products/199")
if response.status_code == 200:
    #wcapi.put("products/categories/199", data).json()
    #wcapi.put("products/199", data)
    #pprint.pprint(response.json())
    #response = wcapi.put("products/199", data)
    #pprint.pprint(response.json())
    pass
else:
    print("Erreur lors de la connexion :", response.text)

#print(wcapi.get("categorie/bougie-chope-de-biere/").json())

"""category_data = {
    "name": "Bougies Parfumées",
    "description": "Collection de bougies artisanales aux parfums uniques.",
    "parent": 0,
    "image": {"src": "C:\\Users\\beren\\OneDrive\\Documents\\nextcloud\\beren\\site_missbleue\\photos\\pyramide_olfactive.png"},
            "alt":"Bougie parfumées artisanale",
            "name":"Bougie parfumées artisanale",

}"""

import base64

# ✅ Générer l'authentification Basic en Base64 avec `consumer_key` et `consumer_secret`
auth_str = wcapi.consumer_key
auth_bytes = auth_str.encode("utf-8")
auth_base64 = base64.b64encode(auth_bytes).decode("utf-8")

# ✅ URL de l'API WooCommerce pour les médias
media_api_url = "https://lescreationsdemissbleue.local/wp-json/wp/v2/media"
products_api_url = "https://lescreationsdemissbleue.local/wp-json/wc/v3/products"
headers = {
    "Authorization": f"Basic {base64.b64encode(f'{wcapi.consumer_key}:{wcapi.consumer_secret}'.encode()).decode()}",
    "Content-Type": "application/json"
}

# API category

categories_api_url = "https://lescreationsdemissbleue.local/wp-json/wp/v2/product_cat"

def create_category(categories_api_url, headers, name, description, image_id=None, parent_id=None):
    """Crée une catégorie WooCommerce (principale ou sous-catégorie)"""
    category_data = {
        "name": name,
        "description": description,
        "image" : 
            {
                "id":image_id
            },
        "parent": parent_id if parent_id else 0, 
    }

    response = requests.post(categories_api_url, headers=headers, json=category_data)

    if response.status_code == 201:
        category = response.json()
        print(f"✅ Catégorie '{name}' créée avec succès ! ID : {category['id']}")
        return category["id"]
    else:
        print(f"❌ Erreur lors de la création de '{name}' : {response.status_code} {response.text}")
        return None

# ✅ Exécuter la création automatique
"""category_parent_id = create_category("Gamme prestige", "Catégorie principale pour organiser la gamme prestige")
if category_parent_id:
    subcategory_id = create_category("Chopes", "Sous-catégorie de la gamme prestige", category_parent_id)
"""





# ✅ Récupérer les produits
"""response = requests.get(products_api_url, headers=headers, params={"per_page": 100}, verify=False)  # Limite à 100 produits

if response.status_code == 200:
    products = response.json()

    # 📌 Extraire les ID et noms des produits ainsi que leurs catégories associées
    for product in products:
        product_id = product["id"]
        product_name = product["name"]
        categories = [cat["name"] for cat in product["categories"]]  # Récupérer les noms des catégories

        print(f"📌 Produit ID: {product_id} - Nom: {product_name} - Catégories: {', '.join(categories) if categories else 'Aucune'}")
else:
    print(f"❌ Erreur : {response.status_code} {response.text}")"""

"""response_create_category = wcapi.post("products/categories/", category_data)
if response_create_category.status_code == 201:
    #wcapi.put("products/categories/199", data).json()
    #wcapi.put("products/199", data)
    #pprint.pprint(response.json())
    #response = wcapi.put("products/199", data)
    category = response_create_category.json()
    category_id = category["id"]
    pprint.pprint(response_create_category.json())
    print(f"category_id = {category_id}")
else:
    print("Erreur lors de la connexion :", response.text)"""

import pandas as pd
import ezodf

# Charger le fichier ODS
ezodf.config.set_table_expand_strategy('all')
doc = ezodf.opendoc("C:\\Users\\beren\\OneDrive\\Documents\\nextcloud\\beren\\site_missbleue\\infos_site.ods")

# Sélectionner la première feuille
sheet = doc.sheets[0]

# Convertir la feuille en DataFrame
data = []
for row in sheet.rows():
    data.append([cell.value for cell in row])
import json
# Convertir en DataFrame Pandas
df = pd.DataFrame(data)

# Vérifier que la première ligne contient bien les noms des colonnes
df.columns = df.iloc[0]  # Définit la première ligne comme noms des colonnes
df = df[1:].reset_index(drop=True)  # Supprime la première ligne et réindexe correctement
df = df.dropna(how='all')  # Supprime les lignes entièrement vides

# Convertir en JSON (clé = noms des colonnes)
json_data = df.to_dict(orient="records")

# Afficher le JSON formaté
#print(json.dumps(json_data, indent=4, ensure_ascii=False))
for row in json_data:
    print(row['Photo'])
#get_data = json.dumps(json_data, indent=4, ensure_ascii=False)


