from pathlib import Path
src = Path("/mnt/data/Pasted text(10).txt")
text = src.read_text(encoding="utf-8")
# Update price
text = text.replace("19,99 $ + tx", "39,99 $ + tx")
# Add image CSS after the universal box-sizing block if not already present
needle = """ .adv-offer * {
box-sizing: border-box;
}
"""
css = """
/* IMAGE PRINCIPALE */
.adv-offer-image {
text-align: center;
margin: 0 auto 22px;
}
.adv-offer-image img {
display: block;
width: 100%;
max-width: 430px;
aspect-ratio: 1 / 1;
object-fit: cover;
margin: 0 auto;
border-radius: 12px;
}
"""
if "/* IMAGE PRINCIPALE */" not in text:
text = text.replace(needle, needle + css, 1)
# Add mobile tweak inside existing media query
mobile_needle = """ @media (max-width: 700px) {
"""
mobile_css = """ @media (max-width: 700px) {
.adv-offer-image {
margin-bottom: 18px;
}
.adv-offer-image img {
max-width: 340px;
border-radius: 10px;
}
"""
if mobile_needle in text and ".adv-offer-image img {\n max-width: 340px;" not in text:
text = text.replace(mobile_needle, mobile_css, 1)
# Insert image HTML after main wrapper opening
html_needle = """
"""
image_html = """
"""
if "guides-vip-ventes-marketing.webp" not in text:
text = text.replace(html_needle, image_html, 1)
out = Path("/mnt/data/offre-guides-vip-ventes-marketing.html")
out.write_text(text, encoding="utf-8")
print(f"Créé: {out}")

- Client
- Paiement
Vos informations

Modifier
Modifier
Informations de paiement
Traitement...



- Paiement total
- 1xguides-vip-ventes-marketing-promoC$48.98-+
- Remise
- LivraisonC$0
- TVAC$0
- Total
- Le paiement d'aujourd'hui
- guides-vip-ventes-marketing-promoC$0
- Remise
- LivraisonC$0
- TVAC$0
- Total
- Les paiements à venir
- guides-vip-ventes-marketing-promoC$48.98
- RemiseC$0
- LivraisonC$0
- TVAC$0
- Montant futur
C$0 - Le paiement d'aujourd'hui :
C$0 - Le paiement d'aujourd'hui
-
C$0
Les prix sont en CAD
UNE FOIS COMMANDÉ :
100 % NON REMBOURSABLE
100 % NON ÉCHANGEABLE
Politique de paiement :
Toute commande est finale. Les formations numériques sont livrées immédiatement et aucun remboursement ni échange n’est possible. Toute tentative de rétrofacturation sera contestée avec preuves et transmise en recouvrement, incluant des frais additionnels à votre charge.
Conditions générales https://academiedevoyage.ca/termes-et-conditions-generales/