זה הרבה יותר מדריך (ואפילו ארוך, מצטער) מאשר טיפ, אבל נראה לי שזה עדיין מתאים פה, נכון?
למה צריך אוטומציה בכלל?
אם עוד לא נתקלתם בצורך לחזור על תהליך כלשהו באניטרנט מיליון פעם, באמת קשה להסביר למה זה חשוב.
אפילו הדוגמא שאני אביא בהמשך , "העלאת תיקייה מלאת סקרינשוטים לאתר העלאות" – היא לא שימושית יותר מדי. אבל, זה נותן לנו כיוון. רק תחשבו, נגיד שאנחנו רוצים להפציץ את ווטסאפ (חס ושלום, אסור להפציץ את ווטסאפ. נניח פורום של חלונות
) במיליון דיונים עם כותרות שעולות מהמספר אחד עד מיליון, בלי שום תוכן. או שאנחנו רוצים לשלוח למישהו המון איימלים ברצף, או שמישהו (במקרה שלנו מישהי
) נתנה לנו לינק לדף אינטרנט ששולט על המנורה שלה, ואנחנו רוצים להפוך את החדר שלה לדיסקוטק, או כל דוגמא אחרת.
האם נעשה את זה ידנית? ברור שלא, הרי בדיוק בשביל זה המציאו "לולאות" (לא בשביל שטויות של תכנות...).
מימוש
עכשיו ששוכנענו שזה שימושי (ואפילו לגיטימי לפעמים) הגיע הזמן לראות איך לממש את זה.
השיטה הקלאסית (ומן הסתם גם היותר נכונה), תבוצע בעזרת שפת תכנות כלשהי, בשימוש עם ספריה מתאימה לתקשורת עם האינטרנט.
המימוש שנראה לי הנוח ביותר בשיטה הזאת, הוא שימוש בפייתון בעזרת ספריית ה - cgi המובנית, או בעזרת ספריות נוספות כגון זאת:
http://wwwsearch.sourceforge.net/mechanize/
היתרונות של השיטה הזאת רבים מאוד, ומי שמצליח להשתמש בה - שיהנה.
אבל, אני נתקלתי בשני חסרונות שבגללם אני רוצה להמליץ על שיטה אחרת -
א) הרבה יותר מסובך לקבל פידבק מהאתר ככה. אם משהו לא עבד (שכחנו למלא שדה חובה, למשל) אין לנו יותר מדי כלים פשוטים כדי לגלות את זה. וכמובן - מה שרצינו לא יקרה.
ב) אני לא הצלחתי להבין מה הולך שם, ולכן שום דבר לא עבד לי
יכול להיות שעם יותר השקעה הייתי מצליח, אבל מצאתי שיטה יותר קלה מבחינתי.
לכן מי שלא מסתדר עם השיטה הראשונה, מוזמן לראות איך השיטה שמצאתי עובדת, ואני מקווה שיסתדר עם זאת.
iMacros:
הדבר שפתר לי את הבעיות הללו הוא תוסף חביב לפירפוקס בשם iMacros.
https://addons.mozilla.org/en-US/firefox/addon/3863
http://en.wikipedia.org/wiki/IMacros
התוסף הזה נותן לנו להקליט פעולות שביצענו, ולהפעיל אותם כל פעם שנרצה, למספר הפעמים שנרצה. כל זה טוב ויפה, וכבר שימושי מאוד. אתם מוזמנים לנסות את האפשרויות להשתמש בהם בעת הצורך. אבל מה קורה אם נרצה לבצע פעולה טיפה שונה כל פעם?
את זאת נדגים בעזרת הדוגמא הבאה:
העלאת המון סקרינשוטים לאתר העלאות:
נניח שיש לנו תקייה בשם screenshots על הדסקטופ שבה שמורים לא פחות מ - 42,350 סקרינשוטים מהממים של שולחן העבודה שלנו, וברצוננו להעלות אותם לאתר כלשהו, נניח -
http://www.freeimagehosting.net/.
נעשה זאת כך:
(נתקין את iMacros כמובן), נגש לאתר הרצוי, ונפתח את התפריט של iMacros.
נעבור ללשונית Rec, ונלחץ על כפתור ההקלטה. החל מרגע זה כל מה שנעשה ישמר על ידי התוסף. נבחר קובץ להעלאה, ונלחץ uplaod.
הדף יעבור לדף עם המידע על התמונה ששמרנו, שם נלחץ על תיבה שאנחנו מעונינים לשמור את המידע שבה (נניח זו שמתאימה לפורומים), ונשנה את הערך שם למשהו רנדומלי.
תמונה להמחשה:
עכשיו אפשר ללחוץ על סטופ, ולשמור את המקרו.
נפתח את המקרו בעזרת עורך טקסט, והקובץ יראה כך:
קוד: |
VERSION BUILD=6111228 RECORDER=FX
TAB T=1
URL GOTO=http://www.freeimagehosting.net/
TAG POS=1 TYPE=INPUT:FILE FORM=NAME:form1 ATTR=NAME:attached CONTENT=$FILEPATH
TAG POS=1 TYPE=INPUT:SUBMIT FORM=NAME:form1 ATTR=ID:b
TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:directforum1 CONTENT=עכעכגעכג
|
כאשר $FILEPATH זה כמובן הנתיב לקובץ שצירפנו.
נחליף בשורה האחרונה את הערך CONTENT=x ל - EXTRACT=TXT, כך שתראה כך:
קוד: |
TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:image EXTRACT=TXT
|
השורה הזאת אומרת למקרו לקחת את המידע שבתיבה שסימנו, ולזכור אותו.
נוסיף את השורה
קוד: |
SAVEAS TYPE=EXTRACT FOLDER=$any_folder FILE=$any_file |
וכעת כל המידע שהמקרו הוציא ישמר בקובץ שציינו בתקייה $any_folder בשם $any_file
כדאי לנסות להריץ את המקרו פעם אחת, ולראות שהוא אכן מעלה את הקובץ לשרת, מודיע לנו איזה מידע הוא לקח, ושומר אותו בקובץ.
(כדי שלא יטרח כל פעם להודיע לנו מה המידע שהוא שאב, אפשר להוסיף את השורה
SET !EXTRACT_TEST_POPUP NO לתחילת הקובץ).
כעת אם הכל תקין, הגיע הזמן להודיע לו שאנחנו רוצים שיעלה את כל הקבצים שאצלנו בתקייה.
ניצור תסריט באש קטן שיצור את כל המידע מחדש - כל פעם עם השם של הקובץ הבא. זה יראה כמו משהו כזה:
קוד: |
#! /bin/sh
#Head of macro
base="VERSION BUILD=6111228 RECORDER=FX"'\n'
base+="TAB T=1"'\n'
base+="TAB CLOSEALLOTHERS"'\n'
base+="SET !EXTRACT_TEST_POPUP NO"'\n'
echo -e $base > macro.iim
#loop over every file in the given directory
find $folder-with-files/* | while read LINE ; do
macro="URL GOTO=http://www.freeimagehosting.net/upload.php"'\n'
macro+="TAG POS=1 TYPE=INPUT:FILE FORM=NAME:form1 ATTR=NAME:attached"
macro+=" CONTENT="$LINE'\n'
macro+="TAG POS=1 TYPE=INPUT:SUBMIT FORM=NAME:form1 ATTR=ID:b"'\n'
macro+="TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:directforum1 EXTRACT=TXT"'\n''\n'
echo -e $macro >> macro.iim
done
echo "SAVEAS TYPE=EXTRACT FOLDER=$any_folder FILE=$any_file” >> macro.iim
|
נריץ (לא מתוך התקייה עם התמונות!), וזהו, המאקרו מוכן.
נפתח מחדש את הדפדפן, נבחר את המקרו שנוצר לנו, ונריץ אותו.
בהנחה שהכל עבד כמו שצריך, הדפדפן יתחיל להעלות בשבילנו את כל התמונות שבתקייה (זהירות, זה יקח הרבה זמן אם יש הרבה תמונות, ועדיף לא להפריע לו באמצע [אפילו עם טאבים אחרים] - זה לפעמים מחרפן אותו, ואז צריך הכל מהתחלה
)
ובסוף ייוצר לנו קובץ עם כל הלינקים לתמונות מופרדים בפסיקים.
עכשיו עושים מה שרוצים עם הלינקים האלה (משחקים עם sed ו grep יוכלו להפוך גם את זה לאוטומטי, אבל אלה שיעורי בית).
זה אמנם תהליך קצת ארוך ומסובך, אבל אם מתעסקים במספרים גדולים, זה שווה את זה.
מקווה שזה יועיל למישהו,
משה