برمجةحماية الدفعالتفاصيل
- التعديلات ضمن الباقة مجانية.
- إذا لم تردّ خلال 3 أيام من التسليم، يُقبل العمل تلقائيًا.
يُحجز المبلغ عند الدفع ولا يُحوَّل إلا بعد قبولك العمل.

مثال على النتيجة
دمج ملفات المبيعات الشهرية لـ 9 متاجر في تقرير Excel واحد
طريقة التشغيل
python merge_sales.py --month 2026-10
2026-11-02 09:14:03 INFO المجلد: sales/2026-10، عُثر على 9 ملفات
2026-11-02 09:14:03 INFO shop-01.csv: 1,284 صفًا
2026-11-02 09:14:04 INFO shop-02.xlsx: 967 صفًا
2026-11-02 09:14:04 WARN shop-07.csv: تُخطّيت 3 صفوف بلا سعر (الأسطر 88، 412، 913)
2026-11-02 09:14:05 INFO تم: 10,412 صفًا -> report-2026-10.xlsx (الورقتان «المبيعات» و«الإجماليات»)
إعدادات لا كود
أسماء أعمدة كل متجر موجودة في settings.ini، فالمتجر الجديد أو العمود الذي تغيّر اسمه يعني سطرًا واحدًا هناك:
[columns]
date = التاريخ, تاريخ البيع, اليوم
product = المنتج, الصنف, الاسم
quantity = الكمية, العدد, قطع
price = السعر, سعر الوحدة
جزء من الكود
def read_shop_file(path: Path, columns: dict[str, list[str]]) -> pd.DataFrame:
"""يقرأ ملف متجر واحد ويمنح أعمدته أسماء أعمدة التقرير."""
table = pd.read_excel(path) if path.suffix == ".xlsx" else pd.read_csv(path, encoding="utf-8-sig")
renamed = {}
for name, variants in columns.items():
found = next((c for c in table.columns if c.strip() in variants), None)
if found is None:
raise ReportError(f"{path.name}: لا يوجد عمود لـ «{name}» (جرى البحث عن: {', '.join(variants)})")
renamed[found] = name
table = table.rename(columns=renamed)[list(columns)]
table["shop"] = path.stem
return table
الملفات: أرشيف ZIP يضم merge_sales.py (310 أسطر)، وsettings.ini، وrequirements.txt، وملف README يشرح تثبيت Python وتشغيل السكربت ومعنى كل رسالة في السجل. يشغّله العميل على كمبيوتره الخاص.
العميل: سلسلة صغيرة من 9 متاجر للأدوات المكتبية؛ يرسل كل متجر مبيعاته الشهرية في ملف CSV أو Excel، بأسماء أعمدة تختلف قليلًا من متجر إلى آخر. المهمة: سكربت واحد يقرأ كل ملف في مجلد، ويوحّد الأعمدة في شكل واحد، ويكتب تقرير Excel واحدًا يضم كل المبيعات وورقة بالإجماليات حسب المتجر.
العميل وجميع التفاصيل افتراضية.
عن هذه الخدمة
بعد نقل موقع أو تغيير عناوينه أو التحول إلى https، يجب أن تقود الروابط القديمة إلى الصفحات الجديدة الصحيحة، وفحص المئات منها في المتصفح بطيء. يقرأ سكربت Python هذا قائمة عناوينك (CSV أو Excel أو نص) ويفحص كلًّا منها: رمز الحالة (200، 301، 404، 500)، والعنوان النهائي الذي ينتهي إليه، وبدءًا من الباقة القياسية كل خطوة في سلسلة التحويل. إن أضفت عمودًا بالعنوان الذي يجب أن يقود إليه كل منها، يميّز كل عدم تطابق. وفي الباقة المميزة يميّز الحلقات والسلاسل الأطول مما تسمح به. يقرأ الصفحات المفتوحة فقط، بوتيرة مهذبة تحددها، ولا يسجّل الدخول أبدًا. تشغّله على جهازك وتصلح التحويلات في إعدادات موقعك بنفسك؛ وهو يكتفي بالإبلاغ عمّا يراه.
ما المشمول
- ما الذي تحصل عليهأرشيف ZIP يضم سكربت Python وملف README بتعليمات خطوة بخطوة، ومن الباقة القياسية ملف إعدادات بالوتيرة ومهلات الانتظار؛ ويُعرض الكود أيضًا في صفحة الطلب.
- حالة كل عنوان200 و301 و302 و404 و500 وغيرها
- كل خطوة تحويلبدءًا من الباقة القياسية، السلسلة الكاملة حتى الصفحة النهائية
- فحص الوجهة المتوقعةتمييز حالات عدم التطابق حين تقدم العنوان الذي يجب الوصول إليه
- وتيرة مهذبةتوقف بين الطلبات تحدده أنت
- كود مقروءمع تعليقات، ليسهل إضافة عمود لاحقًا
كيف يعمل
- 1المهمةترسل عينة من قائمة عناوينك
- 2الكودنكتب السكربت ودليل تشغيله
- 3جرّبهتشغّله على جزء من القائمة، ثم عليها كلها
- 4التعديلاتتطلب التعديلات ضمن باقتك وترسل أي رسالة خطأ
ما نحتاجه منك
عينة من قائمتك: 10-20 عنوانًا بصيغة CSV أو Excel أو نص، وإن وُجد، العمود الذي يحمل العنوان الذي يجب أن يقود إليه كل منها (خريطة التحويلات من عملية النقل). العدد الإجمالي التقريبي للعناوين وهل هي في موقعك أم عدة مواقع. السرعة المسموح بها، والتقرير الذي تريده (CSV أو Excel)، ونظامك: Windows أو macOS أو Linux.
سنسألك:
- ما الغرض من القائمة؟
- هل لديك العناوين التي يجب أن تقود إليها؟
- ما التقرير الذي تحتاجه؟
- أين سيعمل؟
قارن بين الباقات
| الباقات | الأساسيةحالة قائمة16 US$ | القياسيةفحص التحويلات مع الإعدادات33 US$ | المميزةأداة التحويلات67 US$ |
|---|---|---|---|
| مدة التنفيذ | 1 يوم | 2 يوم | 3 أيام |
| التعديلات | 1 | 2 | 3 |
| الكود | حتى 150 سطرًا | حتى 400 سطر | حتى 1,000 سطر |
| ملفات الكود | 1 | حتى 3 | حتى 8 |
| ملف الإعدادات | لا | نعم | نعم |
| رسائل خطأ واضحة وسجل | لا | نعم | نعم |
| خيارات التشغيل ودليل لتشغيله وفق جدول زمني | لا | لا | نعم |
| دليل التثبيت والتشغيل (README) | نعم | نعم | نعم |
| اللغة | Python | Python | Python |
| اطلب الأساسية | اطلب القياسية | اطلب المميزة |
حماية الدفع
تدفع عند الطلب، لكن المبلغ لا يُحوَّل إلا مقابل عمل قبلته.
- سعر ثابتلا يتغير سعر الباقة بعد الدفع.
- المبلغ محجوزعند الدفع، يُحجز المبلغ فقط. ولا يُحوَّل إلى Dleex إلا بعد قبولك العمل.
- فحص قبل التسليمتخضع كل نتيجة لفحص الجودة قبل أن تصل إليك، وتراها في صفحة الطلب قبل قبولها.
- تعديلات مجانيةاطلب تعديلات ضمن متطلبات طلبك بالعدد الذي تسمح به الباقة.
- القبول بعد 3 أيامإذا لم تقبل العمل ولم تطلب تعديلات خلال 3 أيام من التسليم، يُقبل تلقائيًا. وإذا كتبت في محادثة الطلب بعد التسليم، يبقى الطلب قيد الانتظار؛ وبعد ردّنا، قد نعيد بدء مهلة 3 أيام وسنُعلمك بذلك في المحادثة.
- إعادة التنفيذ أو استرداد المبلغ كاملًاإذا لم تطابق النتيجة متطلبات طلبك ولم تُصلحها التعديلات، أو استغرق العمل أكثر من ضعف مدة التنفيذ، فاكتب في محادثة الطلب: سنعيد تنفيذ العمل أو نردّ إليك المبلغ كاملًا.
الأسئلة والأجوبة
هل يمكنه فحص نقل موقع؟
نعم، هذا استخدامه الرئيسي. أعطه العناوين القديمة والعنوان الجديد الذي يجب أن يصل إليه كل منها، فيميّز كل عنوان ينتهي في مكان آخر أو يعطي خطأ أو يستغرق خطوات كثيرة.
هل سيُعدّ التحويلات بدلًا مني؟
لا. يكتفي بالفحص. تُضبط التحويلات في منصة موقعك أو في إضافة أو في إعدادات الخادم، وتُجري تلك التغييرات بنفسك.
لماذا تظهر صفحة برمز 403 مع أنها تعمل في متصفحي؟
بعض المواقع ترفض الطلبات التي لا تأتي من متصفح. تُميَّز هذه النتائج لتتحقق منها يدويًا؛ ولا يحاول السكربت تجاوز الحظر.
كم عنوانًا يمكنه فحصه؟
بقدر ما لديك؛ والوتيرة تحدد الوقت. بمعدل عنوان في الثانية، تستغرق 3,600 عنوان نحو ساعة.
لم تجد إجابتك؟


