Embed 6 screenshots into DOCX appendix
This commit is contained in:
Binary file not shown.
@@ -0,0 +1,55 @@
|
||||
"""Embed screenshots into the DOCX — no heading styles needed."""
|
||||
|
||||
from docx import Document
|
||||
from docx.shared import Inches, Pt, RGBColor
|
||||
from docx.enum.text import WD_ALIGN_PARAGRAPH
|
||||
import os
|
||||
|
||||
DOCX_PATH = "/tmp/nur-falah-docx/Nur-Falah-App-Store-Submission.docx"
|
||||
SCREENSHOTS_DIR = "/tmp/nur-falah-docx/appstore-assets/screenshots"
|
||||
|
||||
doc = Document(DOCX_PATH)
|
||||
|
||||
doc.add_page_break()
|
||||
|
||||
# Use formatted paragraph instead of heading (avoids missing style errors)
|
||||
p = doc.add_paragraph()
|
||||
p.alignment = WD_ALIGN_PARAGRAPH.LEFT
|
||||
run = p.add_run("Appendix: App Store Screenshots")
|
||||
run.bold = True
|
||||
run.font.size = Pt(18)
|
||||
run.font.color.rgb = RGBColor(0xC9, 0xA8, 0x4C)
|
||||
p_fmt = p.paragraph_format
|
||||
p_fmt.space_before = Pt(24)
|
||||
p_fmt.space_after = Pt(12)
|
||||
p_fmt.keep_with_next = True
|
||||
|
||||
screenshots = [
|
||||
("1-6.7-prayer-times.png", "Screenshot 1: Prayer Times — Accurate prayer schedules with 5 calculation methods"),
|
||||
("2-6.7-qibla-finder.png", "Screenshot 2: Qibla Finder — Find the Qibla from anywhere in the world"),
|
||||
("3-6.7-holy-quran.png", "Screenshot 3: Holy Quran — All 114 surahs with Arabic names"),
|
||||
("4-6.7-99-names.png", "Screenshot 4: 99 Names of Allah — Study Asma-ul-Husna with search"),
|
||||
("5-6.7-tasbih-counter.png", "Screenshot 5: Tasbih Counter — Digital dhikr counter"),
|
||||
("6-6.7-hijri-calendar.png", "Screenshot 6: Hijri Calendar — Islamic date with Gregorian conversion"),
|
||||
]
|
||||
|
||||
for filename, caption in screenshots:
|
||||
img_path = os.path.join(SCREENSHOTS_DIR, filename)
|
||||
if not os.path.exists(img_path):
|
||||
print(f" ⚠️ Missing: {filename}")
|
||||
continue
|
||||
|
||||
cap = doc.add_paragraph()
|
||||
cap.alignment = WD_ALIGN_PARAGRAPH.CENTER
|
||||
r = cap.add_run(caption)
|
||||
r.font.size = Pt(10)
|
||||
r.font.italic = True
|
||||
r.font.color.rgb = RGBColor(0x66, 0x66, 0x66)
|
||||
|
||||
img_par = doc.add_paragraph()
|
||||
img_par.alignment = WD_ALIGN_PARAGRAPH.CENTER
|
||||
img_par.add_run().add_picture(img_path, width=Inches(3.5))
|
||||
doc.add_paragraph()
|
||||
|
||||
doc.save(DOCX_PATH)
|
||||
print(f"✅ Updated: {DOCX_PATH}")
|
||||
@@ -0,0 +1,53 @@
|
||||
"""Send Nur Falah App Store DOCX to multiple recipients via email."""
|
||||
import smtplib, ssl
|
||||
from email.mime.multipart import MIMEMultipart
|
||||
from email.mime.base import MIMEBase
|
||||
from email.mime.text import MIMEText
|
||||
from email import encoders
|
||||
import os, sys
|
||||
|
||||
DOCX_PATH = "/Users/wanjauhari24/Desktop/Projects/nur-muslim-companion/Nur-Falah-App-Store-Submission.docx"
|
||||
TO_LIST = ["wanjauhari@gmail.com", "wanjauhari@me.com"]
|
||||
FROM = "wanjauhari@gmail.com"
|
||||
SUBJECT = "Nur Falah — App Store Submission DOCX"
|
||||
BODY = "Here is the complete App Store Connect submission document for Nur Falah Muslim Companion.\n\nIncludes full description, keywords, screenshot plan, privacy policy, and ASO recommendations."
|
||||
|
||||
def build_msg(to_addr):
|
||||
msg = MIMEMultipart()
|
||||
msg['From'] = FROM
|
||||
msg['To'] = to_addr
|
||||
msg['Subject'] = SUBJECT
|
||||
msg.attach(MIMEText(BODY, 'plain'))
|
||||
with open(DOCX_PATH, 'rb') as f:
|
||||
part = MIMEBase('application', 'vnd.openxmlformats-officedocument.wordprocessingml.document')
|
||||
part.set_payload(f.read())
|
||||
encoders.encode_base64(part)
|
||||
part.add_header('Content-Disposition', 'attachment', filename=os.path.basename(DOCX_PATH))
|
||||
msg.attach(part)
|
||||
return msg
|
||||
|
||||
# Try sendmail first (local MTA) - send one per recipient
|
||||
def try_sendmail():
|
||||
if os.path.exists('/usr/sbin/sendmail'):
|
||||
import subprocess
|
||||
for to_addr in TO_LIST:
|
||||
msg = build_msg(to_addr)
|
||||
p = subprocess.run(
|
||||
['/usr/sbin/sendmail', '-t'],
|
||||
input=msg.as_bytes(),
|
||||
capture_output=True,
|
||||
timeout=15
|
||||
)
|
||||
if p.returncode == 0:
|
||||
print(f"✅ Sent via sendmail → {to_addr}")
|
||||
else:
|
||||
print(f"⚠️ sendmail failed for {to_addr}: {p.stderr.decode()[:200]}")
|
||||
return False
|
||||
return True
|
||||
return False
|
||||
|
||||
if __name__ == '__main__':
|
||||
if try_sendmail():
|
||||
sys.exit(0)
|
||||
print("❌ sendmail not available.")
|
||||
sys.exit(1)
|
||||
Reference in New Issue
Block a user