أتمتة نقل المقالات من Microsoft Word إلى Geektimes


أحب الكتابة في Geektimes ، ولكن هناك إزعاج واحد. هذه هي الحاجة إلى استخدام ترميز مخصص في نمط habra ونقل الصور يدويًا إلى habrastorage.org . أكتب مقالات في MS Word ضمن Windows . قضيت بصراحة حوالي ساعة للعثور على حلول جاهزة لهذه المشكلة. أفضل ما تم العثور عليه هو تحليل واجهة برمجة تطبيقات habrastorage لأتمتة تحميل الصور ، ولكن يبدو أنه قديم. كان هناك ذكر لمحول معين ، ولكن مع وجود ارتباط معطل.


جوهر الأتمتة المقترحة هو جعل النص جاهزًا للنسخ إلى نافذة محرر Geektimes بنقرة زر واحدة في Word . وبعد النسخ ، تظهر الصور تلقائيًا هناك. التكنولوجيا بسيطة للغاية. قد تحتوي MS Word ، كما تعلم ، على رمز مضمن في Visual Basic . هذه لهجة Visual Basic خاصة تسمى VBA ( Visual Basic for Applications).

) في VBA ، يمكنك كتابة نصوص معقدة للغاية لتحويل المستندات إلى Word. تسمى الإجراءات المكتوبة في VBA وحدات الماكرو. يمكن استدعاء وحدات الماكرو في Word بشكل صريح من قائمة خاصة ، أو يمكنك تعيين مكالمة لتنفيذها إلى زر معين على شريط الأدوات.
صور Geektimes يضخ لنفسه. لكي يتمكن من التنزيل من مكان ما ، يحتاج إلى وضع الصور في مكان ما على الإنترنت. لكي لا أستغرق وقتي في تطوير وتحليل واجهات برمجة تطبيقات مختلفة لمواقع استضافة الصور المجانية مثل photos.google.com ، قررت أن أنتقل إلى FTP القديم الجيد . نشتري أو نستقبل بأي شكل من الأشكال خدمة استضافة مواقع الويب مع تنزيل محتوى FTP . سام مايكروسوفت وورد VBAليس لديها أدوات للعمل مع FTP ، لكنها تتفاعل بشكل جيد مع كائنات COM (أي ملفات dll الخاصة ). للعمل على FTP ، تم استخدام وحدة COM من مشروع WinSCP . يستبدل ماكرو VBA الذي
كتبته أولاً الأنماط المحددة من مستند Word بترميز النص ، ثم يحول مستند Word إلى مستند HTML . تمثيل HTML نفسه ليس ضروريًا بالنسبة لنا. نتيجة للتحويل ، يقوم Word بإنشاء دليل فرعي يحتوي على كافة الصور من المستند بالتنسيق. png. يتم نقل الصور بكميات كبيرة إلى خادم FTP معين . بعد ذلك ، يقوم الماكرو بحذف الصور الموجودة في المستند والبدائل في روابط مكانهم إلى الموقع حيث تم تحميل هذه الصور للتو. يبقى في نافذة مستند Word لتحديد كل النص ونسخه إلى نافذة المحرر في Geektimes . انقر فوق زر في Geektimes لحفظه كمسودة. ثم انقر مرة أخرى على التحرير وتأكد من أن Geektimes قد قام بالفعل بتنزيل الصور واستبدالها بروابط إلى habrastorage . تم إنجاز المهمة.

قم بتثبيت WinSCP


قم بتنزيل الملف . NET تجميع / مكتبة COM وفكها في دليل يمكن الوصول إليه.
في هذا الدليل ، قم بتشغيل سطر الأوامر: ٪ WINDIR٪ \ Microsoft.NET \ Framework64 \ v4.0.30319 \ RegAsm.exe WinSCPnet.dll / codebase /tlb:WinSCPnet64.tlb
هذا كل شيء.

كيفية إنشاء مقال عن هذه التكنولوجيا.


لتبسيط الأمور ، تم إنشاء ملف قالب ، Article_GT.dotm ، يحتوي على ماكرو VBA الضروري ومؤشر للاتصال بكائن WinSCP .
لإلقاء نظرة على الماكرو والتحقق من قابلية تشغيل كائن WinSCP ، بعد فتح ملف القالب ، انقر فوق هذا الزر في شريط أدوات Word

وحدد عرض وحدات الماكرو فيه ، ثم تحرير . يجب أن تظهر نافذة من هذا النوع:


في هذه النافذة ، في قائمة أدوات-> المراجع ، يفتح مربع الحوار هذا. يجب أن يكون خط مع WinSCP .


إذا قمت بفتح الملف مباشرة في جوجلثم ستفتح ورقة فارغة. هذا صحيح ، القالب فارغ. أنها ليست سوى أسلوب عادي وأسلوب العنوان 1 تشبه أسلوب هبرة. يجب عليك كتابة النص بنفسك.
يجب تعديل الماكرو في القالب قبل الاستخدام. في بداية الماكرو مثل هذه الكتلة
Const TMPNAME = "TMP"                    '        
Const URL = "http://www..ru"
Const FTPPATH = "/public_html/imgs/"     '         FTP,  
Const WEBPATH = "/imgs/"                 '       ,  
Const HOSTNMAE = "ftp..ru"   '    FTP 
Const USERNAME = " "             '      FTP 
Const PASSWORD = " "            '   

تحتاج إلى فتح الملف كقالب في Word ، وإدخال المعلمات الصحيحة وحفظه كقالب.
ثم يمكنك النقر على النموذج وكتابة مقال. احفظ المقال واستدعاء الماكرو ConvertToHabr .
إذا سار تنزيل الصور بشكل جيد ، فسيتم كتابته في شريط الحالة في نافذة Word .
يغلق المستند الأولي ، في مكانه يظهر النص المحول.

تنويه


هذا ليس محول يعمل بكامل طاقته. الآن انه يستبدل فقط نمط الخط عريض و مائل على علامات هبرة، وتغيير الأنماط عنوان 1..5 على العلامات وعلامات إدراج بدلا من الارتباطات التشعبية والصور. نظرًا لأن هذا هو كل ما احتاجه من هذا المحول عند كتابة هذا المقال.
ملف القالب متاح هنا ومتاح للجميع للتحسين ، لكن لا يمكنني ضمان استمرار هذا المشروع ودعمه وجودته ونقاوة براءات الاختراع والحياة الأبدية لهذا الرابط .

Source: https://habr.com/ru/post/ar388785/


All Articles