رفع خطاهای اسکریپت ارسال مقالات و تصاویر به وردپرس
در تهران
در وبسایت کارلنسر(چند ساعت پیش)
دورکاری
اطلاعات شغل:
امکان دورکاری و کار در منزل: دارد
نوع همکاری: پروژهای
مهارتهای مورد نیاز:
برنامه نویسی
rest api
وردپرس
پایتون
برنامه نویسی وب
برنامه نویسی php
کد نویسی
python
بازه حقوق:از 100,000 تا 200,000 تومان
نحوه پرداخت:پروژهای
متن کامل آگهی:
سلام،
من یک اسکریپت پایتون نوشتهام که مقالات و تصاویر را از فولدر خاصی به وردپرس ارسال میکند. این اسکریپت به کمک API وردپرس مقالات را با متاتایتلها، توضیحات و تصاویر ارسال میکند، اما در حال حاضر با مشکلاتی در بخش احراز هویت و ارسال تصاویر مواجه هستم که نمیتوانم رفع کنم.
وظایف مورد نیاز:
رفع مشکل احراز هویت برای ارسال دادهها به REST API وردپرس با استفاده از روشهای مناسب (مثل Basic Authentication یا روشهای دیگر).
بررسی و رفع خطاهای موجود در اسکریپت، به ویژه در ارسال تصاویر به وردپرس و برخورد با خطای "INVALID_USERNAME".
بهینهسازی کد برای اطمینان از عملکرد درست و بیخطا.
آزمایش و اطمینان از ارسال موفق مقالات و تصاویر به وردپرس.
==========
این کد به طور کلی برای ارسال مقالات و تصاویر به وردپرس از طریق REST API نوشته شده است. در اینجا، وظایف دقیق و عملکرد کد توضیح داده شده است:
وظایف کد:
خواندن اطلاعات مقاله از فایلهای Word (docx):
کد از فولدری به نام article تمام فایلهای .docx را که نام آنها به جز "alt.docx" است، شناسایی میکند.
برای هر فایل، اطلاعات مختلفی مانند meta_title، H1، meta_desc، keyword و url را از یک جدول در فایل Word استخراج میکند.
متن مقاله را به صورت پاراگرافها خوانده و اگر در ابتدا بخش H2 وجود داشته باشد، آن را جداگانه شناسایی کرده و قالببندی میکند.
خواندن متنهای ALT برای تصاویر:
کد به دنبال فایلی به نام alt.docx میگردد و متنهای ALT مربوط به تصاویر مقاله را از آن استخراج میکند. این متنها برای نمایش تصاویر در وردپرس استفاده میشود.
ارسال تصاویر به وردپرس:
تصاویر موجود در فولدر image به ترتیب بارگذاری شده و به وردپرس ارسال میشوند.
برای هر تصویر، کد ابتدا آن را به وردپرس ارسال میکند (با استفاده از API Media وردپرس).
پس از آپلود موفق تصویر، یک شناسه (ID) رسانهای دریافت میشود که به مقاله اضافه میشود.
متن ALT هر تصویر از فایل alt.docx یا از متاتایتل مقاله استفاده میشود
ارسال مقاله به وردپرس:
پس از پردازش متن و تصاویر، کد مقاله را به وردپرس ارسال میکند.
مقاله با اطلاعاتی مثل عنوان (meta_title)، محتوا (شامل متن مقاله و تصاویر) و متا دیتا (توضیحات و کلمات کلیدی) به وردپرس ارسال میشود.
مقاله به صورت فوری منتشر میشود.
=============
import os
import requests
import json
from docx import Document
from requests.auth import HTTPBasicAuth
WP_URL = "https://sample.ir/wp-json/wp/v2/posts"
WP_MEDIA_URL = "https://sample.ir/wp-json/wp/v2/media"
USERNAME = "sample-editorial-team"
PASSWORD = "****************"
BASE_DIR = r"C:\Users\modern computer\Desktop\article" # آدرس ثابت فولدر مقاله
IMAGE_DIR = os.path.join(BASE_DIR, "image")
docx_files = [f for f in os.listdir(BASE_DIR) if f.endswith(".docx") and f != "alt.docx"]
def read_alt_texts():
alt_texts = []
alt_path = os.path.join(BASE_DIR, "alt.docx")
if os.path.exists(alt_path):
doc = Document(alt_path)
alt_texts = [para.text.strip() for para in doc.paragraphs if para.text.strip()]
return alt_texts
alt_texts = read_alt_texts()
def upload_image(image_path, alt_text):
headers = {
"Authorization": f"Basic {USERNAME}:{PASSWORD}",
"Content-Disposition": f"attachment; filename={os.path.basename(image_path)}",
}
files = {'file': open(image_path, 'rb')}
response = requests.post(WP_MEDIA_URL, headers=headers, files=files)
if response.status_code == 201:
media_id = response.json()["id"]
return media_id
else:
print(f"خطا در آپلود {image_path}: {response.content}")
return None
for docx_file in docx_files:
doc_path = os.path.join(BASE_DIR, docx_file)
doc = Document(doc_path)
table = doc.tables[0]
meta_title = table.cell(0, 1).text.strip()
h1 = table.cell(1, 1).text.strip()
meta_desc = table.cell(2, 1).text.strip()
keyword = table.cell(3, 1).text.strip()
url = table.cell(4, 1).text.strip() # استخراج آدرس مقاله (url)
# استخراج متن مقاله
article_text = []
h2_found = False
for para in doc.paragraphs:
text = para.text.strip()
if text:
if not h2_found and text.startswith("##"): # تشخیص اولین H2
h2_found = True
article_text.append(f"
{text.replace('##', '').strip()}
")
else:
article_text.append(f"
{text}
")
# اضافه کردن تصاویر بعد از H2
image_files = sorted([f for f in os.listdir(IMAGE_DIR) if f.endswith((".jpg", ".png"))])
for i, image_file in enumerate(image_files):
image_path = os.path.join(IMAGE_DIR, image_file)
alt_text = alt_texts[i] if i < len(alt_texts) else meta_title # استفاده از alt یا متاتایتل
media_id = upload_image(image_path, alt_text)
if media_id:
article_text.append(f'{alt_text}')
# ارسال مقاله به وردپرس
post_data = {
"title": meta_title,
"content": "\n".join(article_text),
"status": "publish", # انتشار فوری مقاله
"meta": {
"meta_description": meta_desc,
"keywords": keyword
}
}
headers = {"Authorization": f"Basic {USERNAME}:{PASSWORD}", "Content-Type": "application/json"}
response = requests.post(WP_URL, headers=headers, data=json.dumps(post_data))
if response.status_code == 201:
print(f"✅ مقاله '{meta_title}' با موفقیت منتشر شد.")
else:
print(f"❌ خطا در انتشار مقاله '{meta_title}': {response.content}")
این آگهی از وبسایت کارلنسر پیدا شده، با زدن دکمهی تماس با کارفرما، به وبسایت کارلنسر برین و از اونجا برای این شغل اقدام کنین.
هشدار
توجه داشته باشید که دریافت هزینه از کارجو برای استخدام با هر عنوانی غیرقانونی است. در صورت مواجهه با موارد مشکوک، با کلیک بر روی «گزارش مشکل آگهی» به ما در پیگیری تخلفات کمک کنید.