AppleScript Fun: تغيير مجلد تنزيل Safari تلقائيًا

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

في الآونة الأخيرة ، اتصل بي زميل هنا في CNET بموقف فريد ، حيث أراد أن يقوم جهاز Mac الخاص به بتغيير مجلد التنزيلات الخاص بـ Safari تلقائيًا بناءً على وجود محرك أقراص خارجي. تتمثل الفكرة هنا في جعل Safari يضع الملفات التي تم تنزيلها في دليل التنزيلات الافتراضي ، ولكن عند إرفاق محرك أقراص خارجي محدد (مثل thumbdrive يُسمى "التنزيلات") ، ثم يقوم النظام تلقائيًا بتبديل دليل تنزيل Safari إلى محرك الأقراص الخارجي نظرًا لأنه قد يكون من الصعب الاستمرار في تغييره يدويًا.

لسوء الحظ ، لا تملك Safari نفسها القدرة على القيام بذلك ، ولكن OS X لديها موارد يمكن استخدامها لهذا ويتم كتابتها باستخدام AppleScript لإدارة تطبيق Safari وبعض خدمات OS X ، برمجة نصية Shell لتنفيذ بعض الإجراءات التي لا تستخدم واجهة التطبيق ، ومُشغل النظام لتشغيل البرامج النصية فقط عند إرفاق محرك أقراص.

في البداية عند التفكير في هذه المشكلة ، قد يبدو الحل سهلاً إلى حد ما ، وقد يبدو السيناريو التالي كإجابة جيدة:

  1. إعداد برنامج نصي لتشغيل الأمر "defaults write com.apple.Safari DownloadFolder NAME" لتغيير مجلد التنزيلات إلى الموقع المحدد بواسطة "NAME"
  2. قم بتشغيل هذا البرنامج النصي باستخدام مشغل النظام فقط عند إرفاق محرك أقراص معين.
  3. كرر ذلك باستخدام أمر مشابه يشير إلى موقع مختلف عندما لا يكون محرك الأقراص متصلًا.

في حين أن هذا النهج الأساسي قد يبدو معقولاً ، إلا أنه لن يعمل لعدد من الأسباب. أولاً ، بمجرد تشغيل Safari ، تكون الطريقة الوحيدة لتغيير تفضيلاته من خلال البرنامج نفسه. عند تحميل البرنامج ، سيقرأ التفضيلات إلى ذاكرة الوصول العشوائي (RAM) وإدارة إعداداتها هناك ، لذلك إذا قمت بتحرير ملف التفضيلات باستخدام TextEdit أو الأمر "defaults" كما ذكر أعلاه ، فلن يكون له أي تأثير على البرنامج. علاوة على ذلك ، يكتب Safari تفضيلاته إلى القرص عند الإقلاع عن التدخين ، مما يؤدي إلى استبدال أي إعدادات معدلة.

بالإضافة إلى ذلك ، يفترض هذا الأسلوب أن لدى النظام موارد متوفرة تراقب وجود محرك أقراص محدد وتؤدي إلى تشغيل البرنامج النصي عندما يكون محرك الأقراص موجودًا ، وهذا ليس هو الحال. يمكن للنظام مراقبة ما إذا كانت محركات الأقراص موصولة أم لا ، ولكن ستكون هناك حاجة إلى برمجة إضافية لتحديد اسم محرك الأقراص للتحقق من ذلك عند إرفاق محرك أقراص.

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

وبسبب ذلك ، يحتاج البرنامج النصي إلى تضمين الاعتبارات الخمسة التالية:

  1. التشغيل فقط عند إرفاق محرك أقراص جديد
  2. فقط قم بتغيير الإعدادات إذا كان محرك الأقراص المسمى "التنزيلات" (أو أي اسم مجتهد) مرفقاً
  3. كن مشروطًا في منهجها لتغيير الإعدادات سواء تم طرح Safari حاليًا أم لا
  4. قم بتغيير الإعدادات فقط إذا كان موقع التنزيل المطلوب موجودًا
  5. لديك القدرة على استعادة التطبيق قبل كل شيء إذا كان البرنامج النصي يحتاج للتبديل إلى سفاري

لتنفيذ هذه الخيارات ، يجب إنشاء نصين برمجيين. الأول هو لقاذفة النظام "launchd" التي سيتم استخدامها لمراقبة نقاط تحميل محرك النظام ، لمعرفة ما إذا كان محرك الأقراص الجديد قد تم تركيبه وتثبيته أم لا. إذا كان الأمر كذلك ، فسيطلق البرنامج النصي الذي سيتحقق من اسم محرك الأقراص ، ويعرف ما إذا كان Safari قيد التشغيل أم لا ، ثم يغيّر إعدادات Safari فقط إذا اختلفت عن اختيار محرك الأقراص الخارجي ، ولكن إذا لم يكن موجودًا ، فاستخدم مجلد التنزيلات الافتراضي .

البرنامج النصي 1: LaunchAgent لمراقبة محركات الأقراص

البرنامج النصي الأول الذي يتم إجراؤه هو مشغل النظام الذي يطلق عليه "عامل الإطلاق". لإنشائه ، افتح Terminal واكتب الأمر التالي (قم بنسخه ولصقه لبساطته):

touch ~ / Library / LaunchAgents / local.ChangeSafariDownload.plist

عند الانتهاء من ذلك ، افتحه في TextEdit عن طريق تشغيل الأمر التالي:

open -e ~ / Library / LaunchAgents / local.ChangeSafariDownload.plist

يجب أن يكون لديك الآن مستندًا فارغًا بنص TextEdit ، لذلك قم بنسخ النص التالي إليه واحفظ المستند ، ولكن احتفظ به مفتوحًا الآن. ستحتاج إلى تغيير قسم "FILEPATH" لتغيير موقع البرنامج النصي:

 Label local.ChangeSafariDownloads QueueDirectories WatchPaths / Volumes Program / usr / bin / osascript ProgramArguments osascript FILEPATH 

عند تسجيل الدخول ، سيتم تحميل هذا البرنامج النصي في عملية تشغيل النظام ويعطيه شروط وتعليمات لتشغيل البرنامج النصي الرئيسي لتحرير تفضيلات Safari. في هذه الحالة ، سيُطلب من المشغّل مشاهدة الدليل / وحدات التخزين لمعرفة ما إذا كانت هناك أي تغييرات تحدث داخل هذا الدليل. بما أن هذا هو المكان الذي يتم فيه تحميل أنظمة الملفات ، في أي وقت يتم إرفاق محرك أقراص أو فصله عن النظام ، سيؤدي هذا إلى تشغيل البرنامج النصي الرئيسي.

البرنامج النصي 2: AppleScript لتغيير الإعدادات

البرنامج النصي الثاني هو البرنامج الرئيسي الذي سيؤدي جميع الإجراءات ، بما في ذلك التحقق من أسماء محركات الأقراص ، سواء كان Safari مفتوحًا أم لا ، وأي شروط أخرى لتغيير التفضيلات. لإنشائه ، اذهب إلى / Applications / Utilities / folder وافتح برنامج AppleScript Editor. سيتم فتح نافذة محرر فارغة ، وعندما تنسخ وتلصق البرنامج النصي التالي:

- قم بتعيين اسم محرك أقراص بديل لاستخدامه كمجلدات للتحميل هنا

set dlFolder to convertHome ("/ Volumes / Downloads")

أخبر تطبيق "Finder"

إذا كان موجودًا [ POSIX file dlFolder] ،

- لا شيء واستخدام المجلد

آخر

- تعيين dlFolder إلى الدليل الرئيسي الافتراضي

تعيين dlFolder إلى (مسار POSIX ( المسار إلى المجلد الرئيسي كنص )) و "التنزيلات"

إنهاء إذا

نهاية اقول

- الحصول على المسار الحالي من بليز سفاري

تعيين currentpath لتحويل هوم هوم ( فعل شل "افتراضات قراءة com.apple.Safari DownloadsPath")

- تغيير المسار فقط إذا كان الإعداد الحالي لا يتطابق مع مسار الإدخال (هناك شيء لتغييره)

إذا كان (currentpath كنص ) لا يساوي (dlFolder كنص ) ثم

- في حالة تشغيل Safari ، قم بتغيير الإعدادات من خلال تفضيلات Safari

إذا كان appIsRunning ("Safari") ثم

- تحديد التطبيق الأمامي لاستعادة عند الانتهاء من البرنامج النصي

ضبط frontApp على المسار إلى تطبيق الواجهة الأمامية كنص

- نسخ مسار مجلد التنزيل إلى الحافظة

ضبط الحافظة إلى dlFolder كنص

تفعيل تطبيق "سفاري"

إخبار التطبيق "أحداث النظام" لإخبار عملية التطبيق "سفاري"

- افتح التفضيلات أو أحضرها إلى الأمام (النافذة 1)

ضغط المفاتيح "،" باستخدام {الأمر لأسفل}

التأخير 1 - قد يؤدي الإيقاف المؤقت في عرض النافذة إلى حدوث خطأ ، لذا ننتظر ثانية

- التغيير إلى علامة التبويب عام

انقر على زر "عام" من شريط الأدوات 1 من النافذة 1

- تغيير موقع التحميل إلى أخرى

tell pop up button "Save saved files to:" of group 1 of group 1 of window "General"

انقر

انقر فوق عنصر القائمة "أخرى ..." من القائمة 1 - ثلاث نقاط هي القطع ، وليس ثلاث فترات

نهاية اقول

- افتح مربع الحوار "الانتقال إلى المجلد"

ضغط المفاتيح "g" باستخدام {shift down، command down}

- قم بلصق مسار المجلد في حقل الموقع

اطلب النافذة "Go To Folder"

ضغط المفاتيح "v" باستخدام {الأمر لأسفل}

ضغطة مفتاح العودة

نهاية اقول

انقر فوق الزر "تحديد" من الورقة 1 من الإطار "عام"

- أغلق التفضيلات

ضغط المفاتيح "w" باستخدام {الأمر لأسفل}

نهاية اقول

- استعادة التطبيق الأمامي بعد اكتمال المهمة

أخبر تطبيق frontApp لتنشيط

آخر

- في حالة عدم تشغيل Safari ، استخدم الأمر defaults لتغيير التفضيلات

do shell script ("defaults write com.apple.Safari DownloadsPath" & dlFolder)

إنهاء إذا

إنهاء إذا

- وظيفة لتحويل المراجع مسار المنزل إلى المسارات الكاملة

على تحويل المنزل (currentpath)

إذا كان currentpath يحتوي على "~ /" بعد ذلك

تعيين oldDelimiter إلى محددات عناصر النص في AppleScript

تعيين محدِّدات عناصر النص في AppleScript على {"~ /"}

تعيين textPath على كل عنصر النص من currentpath

تعيين المحددات عنصر النص AppleScript إلى oldDelimiter

قم بتعيين currentpath إلى مسار POSIX ( المسار إلى المجلد الرئيسي كنص ) والعنصر 2 في textPath

إنهاء إذا

العودة currentpath

نهاية تحويل المنزل

- وظيفة للتحقق من تشغيل التطبيق "appName" (في هذه الحالة ، يُستخدم لـ Safari)

على appIsRunning (اسم التطبيق)

تخبر تطبيق "أحداث النظام" إلى (اسم العمليات ) يحتوي على appName

انهاء التطبيق

سيكون نص البرنامج النصي باللون الأرجواني في البداية ، ولكن عند النقر فوق زر شريط الأدوات Compile أو إذا قمت بحفظ البرنامج النصي ، فسيتم تلوينه على نحو مشابه لما تراه هنا. احفظ البرنامج النصي باسم "ChangeDownloads" إلى موقع من اختيارك (يمكنك وضعه داخل مجلد "Scripts" في مجلد "المستندات" الخاص بك ، أو داخل مكتبة المستخدم) وإغلاق محرر AppleScript.

الآن افتح نافذة طرفية جديدة واسحب ملف البرنامج النصي الذي تم إنشاؤه حديثًا إليه. عند القيام بذلك سيتم إدخال مسار الملف الكامل إلى البرنامج النصي في النافذة ، والتي ستبدو شيئًا مثل "/Users/username/Documents/ChangeDownloads.scpt." باستخدام الماوس ، حدد مسار الملف بالكامل ، واضغط على Command-C لنسخه إلى الحافظة ، والعودة إلى Script 1 في TextEdit واستبدال إدخال "FILEPATH" بنصك المنسوخ. ثم احفظ وأغلق المستند.

عند هذه النقطة يتم إعداد جميع البرامج النصية. فقط قم بتسجيل الخروج وتسجيل الدخول مرة أخرى لتحميل البرنامج النصي لوكيل التشغيل (Script 1) ، والآن عند تحميل محرك أقراص يحمل الاسم "Downloads" ، سيتم تغيير إعدادات Safari تلقائيًا بحيث تستخدم محرك الأقراص هذا كمجلد للتنزيلات. إذا قمت بعد ذلك بإلغاء تحميل محرك الأقراص سيتم التراجع عن الإعداد. سيحدث نفس الأمر أيضًا إذا أعدت تسمية محرك أقراص ليتم تسميته باسم "التنزيلات" أو تغيير اسمه من "التنزيلات" إلى شيء آخر.

ضع في اعتبارك أنه بينما يعمل هذا البرنامج النصي ، فقد تم اختباره فقط على OS X 10.6 "Snow Leopard" و OS X 10.7 "Lion" يعمل على Safari 5.1 ؛ ومع ذلك ، يجب أن تعمل بشكل جيد على تكوينات النظام الأخرى التي تعمل على الأقل 5.0 Safari. المتطلبات الأساسية هي عندما يقوم البرنامج النصي بتعديل تفضيلات Safari من داخل البرنامج ، فإنه يستخدم فهرسة الأزرار لفتح العديد من القوائم والنقر فوق الأزرار المختلفة على الشاشة. إذا غيّرت Apple مؤسسة التفضيلات في Safari في المستقبل ، فلن يعمل هذا الجزء من النص البرمجي حتى يتم تحريره للإشارة إلى الأزرار المناسبة مرة أخرى. ومع ذلك ، في الوقت الراهن هذا هو الحد الذي يتعين علينا التعامل معه. أحد الحلول لهذا في Lion هو الاستفادة من ميزة استئناف السيرة الذاتية في برنامج نصي لإنهاء Safari ، وإجراء التغييرات المفضلة ، ثم إعادة تشغيل البرنامج بدلاً من الحاجة إلى برمجة الواجهة.

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

rm ~ / Library / LaunchAgents / local.ChangeSafariDownload.plist


 

ترك تعليقك