תוכן עניינים:

מחק את שירי ITunes הבלתי רצויים מהמחשב שלך: 10 שלבים
מחק את שירי ITunes הבלתי רצויים מהמחשב שלך: 10 שלבים

וִידֵאוֹ: מחק את שירי ITunes הבלתי רצויים מהמחשב שלך: 10 שלבים

וִידֵאוֹ: מחק את שירי ITunes הבלתי רצויים מהמחשב שלך: 10 שלבים
וִידֵאוֹ: Jonathan Blow: תודעה, עיצוב משחקים ורצון חופשי 2024, נוֹבֶמבֶּר
Anonim
מחק את שירי ITunes הבלתי רצויים מהמחשב שלך
מחק את שירי ITunes הבלתי רצויים מהמחשב שלך

היי גבירותיי ורבותיי, זהו הקידוד הראשון שלי להוראה, אז אנא, בעת ההערה, השאירו את האקדחים שלכם בבית (עם זאת סכינים מקובלים). עם הופעתם של נגני mp3, התאפשר לאנשים לשאת כמויות חסרות תקדים של מוזיקה מסביב כשהם בכיסים. אין זה נדיר לשמוע על אנשים שיש להם אוספים של 5, 10, אפילו 15 אלף שירים (וכמה אנשים, אפילו יותר). מבין נגני ה- mp3, אף אחד מהם אינו פופולרי יותר מהאייפוד של אפל והתוכנה שמפעילה אותו, iTunes. עם ספריות מוזיקה כל כך גדולות, עם זאת, זה יכול להיות קצת מייגע להיפטר מהשירים שפשוט לא נשמעים טוב או מושך אותם. אתה יותר. זה יכול לקחת שנים עד לעבור מסלול אחר מסלול דרך אוסף המוסיקה שלך ב- iTunes ולהיפטר מהשירים שאתה לא אוהב. לשם זה נכנס ההנחיה. במדריך הזה אני אראה לך דרך להיפטר אוטומטית משירים. שהם פשוט נוראיים, עם קצת עזרה מהחבר הטוב שלי, פרל. ידע בסיסי טוב על פרל הוא מאוד מועיל כאשר מנסים לחזור על ההנחיה הזו, אם כי לא נדרשת (אתה בהחלט יכול לקחת את מוצר הקוד המוגמר ולהעתיק/להדביק זה וזה יעבוד בסדר גמור). למתעניינים בפרל, אני ממליץ בחום על הספר "למידת פרל" מאת אוריילי, הוא קריאה טובה ואחד הספרים הטובים ביותר על פרל שהזדמן לי לקרוא. חשוב: למרות שהשיטות המוצגות כאן יעבדו אם נעשה נכון, אני לא יכול ופשוט לא אקבל כל אחריות אם תעשה משהו טיפשי ותמחק את השירים היקרים שלך. אנא שקול בחום לגבות את קבצי המוסיקה שלך לפני שתנסה לכתוב או לבצע סקריפט כגון הדברים הבאים. פשוט טעה בצד הזהירות כדי שלא יהיו לנו רגשות שנפגעו אם לא, תודה. קרא את האזהרה? (כן, אפילו אתה, אדם שלא קרא את האזהרה) מעולה! בואו נתחיל:-) עדכון: נראה שכמה מכתבי פרל עבדו קשה בכתיבת סקריפטים של iTunes. למגוון תסריטים הקשורים ל- iTunes, עיין בסקריפטים של Teridon.

שלב 1: תחילת העבודה

מתחילים
מתחילים

כמו בכל דבר, יש צורך בהכנה קטנה לפני שנוכל להריץ את הסקריפט הזה. אז דברים שתצטרך למחוק שירים אוטומטית מ- iTunes: 1) מחשב (duh) 2) iTunes (duh double) 3) Perl (קשה להריץ סקריפט Perl בלי Perl, לא היית אומר?) 4) שלך העורך המועדף (אני בעצמי חסיד vi ו- vim, אבל כל עורך טקסט צריך לעשות את העבודה) 5) אייפוד (לא חובה, אבל נחמד שיש לו מסיבות שיתבהרו בקרוב) קבלת Perl: עקוב אחר ההוראות כאן צריכות להיות פשוטות מספיק: https://www.perl.com/download.csp לאחר שהורדת, התקנת ומוכנים לפעולה של Perl נרצה קצת מידע רקע על מה שאנחנו עושים. יש לציין כי התסריט פותח במקור עבור Mac OS X, אם כי אותן שיטות צריכות לפעול על מערכות הפעלה שאינן מבוססות יוניקס כגון Windows. הגיע הזמן לחלק המשעמם, ה"חינוכי "של ה- Instructable.

שלב 2: רעיון התסריט הבסיסי

iTunes כוללת מערכת דירוג של 5 כוכבים המאפשרת למשתמשים לדרג שירים. שירים עם דירוג של 5 כוכבים נחשבים לשירים הטובים ביותר ואילו שירים עם דירוג של כוכב 1 נחשבים לכמה מהשירים הגרועים ביותר. למטרותינו, נניח שכל שיר חסר דירוג (aka 0 כוכבים) הוא שיר שלמשתמש לא הייתה הזדמנות לדרג עדיין. תמצא שזה כנראה גרוע מספיק כדי שלא מגיע לו שטח הדיסק הקשיח שהשיר תופס. לכן סקריפט Perl שאציג בפניכם במדריך זה ינתח בספריית iTunes וימחק כל רצועה שהוקצה לה דירוג של כוכב 1. כבונוס נוסף, ניתן לדרג את השירים בזמן שהמשתמש בתנועה באמצעות אייפוד. בדרך זו תוכל לבחור שירים למחיקה תוך כדי תנועה פשוט על ידי דירוג אותם, והם יימחקו אוטומטית כאשר תסנכרן את ה- iPod למחשב מאוחר יותר (אם תסנכרן את ה- iPod שלך אוטומטית למחשב שלך). כעת אנו יודעים מה אנחנו עושים, בוא נראה איך אנחנו הולכים לשלוף מידע שירים מ- iTunes לתסריט Perl.

שלב 3: ספריית ה- XML: Goto Guy של ITunes

ספריית ה- XML: Goto Guy של ITunes
ספריית ה- XML: Goto Guy של ITunes

על מנת למחוק שיר מהמחשב על סמך הדירוג שלו, אנו דורשים 2 פיסות מידע: דירוג השיר ומיקום השיר. למרבה המזל לנו יש קובץ שימושי שנוכל לקבל ממנו את כל המידע שרצינו אי פעם על iTunes: קובץ ה- XML של ספריית המוסיקה של iTunes. קובץ ה- XML נקרא "iTunes Music Library.xml" והוא אמור להיות ממוקם בספריית המוסיקה שלך בכונן הקשיח הראשי.

אודות קובץ ה- XML: קובץ ה- xml של iTunes הוא מעין מסד נתונים המתוחזק על ידי iTunes ותמיד מעודכן. כאשר מתבצעת שינוי ב- iTunes, החלק המקביל של קובץ ה- XML של iTunes משתנה כדי לשים לב לשינוי זה. רשומה לדוגמה מקובץ ה- XML שלי ב- iTunes ניתנת להלן: 1218 מסלול ID1218 NameTake On MeArtistA-HaGenre80's קובץ שמע של MPMP גודל 3682382 סך הכל 230138 תאריך שינוי 2007-09-24T02: 11: 30Z תאריך הוספה2008-05-28T05: 00: 24ZB2 זמן תאריך8 זמנית8 תאריך 08 זמנית 25T01: 26: 58ZRating40 דירוג אלבום 40 דירוג אלבום מחושב ID9AC5DB9713240B44 קבוע מסלול קובץ מיקוד: //localhost/Volumes/HD1/iTunes%20Music/A-Ha/Unknown%20Album/Take%20On%20Me1Fil קובץ ה- XML מורכב מערכים המוקפים בתגים בסגנון HTML. לצורך התסריט, אנו מעוניינים בנתוני מידע על המסלול, שם, אמן, דירוג ומיקום. אם אתה מסתכל על קובץ ה- XML, ייתכן שתבחין מלמעלה כי לשיר זה יש "דירוג" של 40. iTunes מקצה לכל שיר מספר שלם, הנע בין 0 ל -100, כאשר כל 20 נקודות מהוות כוכב נוסף לדירוג. אם כן, דירוג של 20 מתאים לדירוג של כוכב אחד, דירוג של 40 הוא דירוג של 2 כוכבים וכן הלאה, כאשר 100 הוא דירוג של 5 כוכבים. אז עכשיו, כשאנחנו יודעים על קובץ ה- XML, נתחיל בסקריפטים

שלב 4: חברך האש (גם אם אינך באמסטרדם)

חברך האש (גם אם אינך באמסטרדם)
חברך האש (גם אם אינך באמסטרדם)

לפני שנוכל לחסל קבצים, אנו זקוקים למסד נתונים פועל שמקשר את כל פרטי השיר יחד. אמנם ניתן להשתמש במבני נתונים מתוחכמים יותר, כגון מערך של hashes או hash של hashes, אך סקריפט זה פשוט מספיק בכדי לזכות בשימוש ברשימה פשוטה של hashes. עבור לא יזומים, חשיש אינו אלא מערך אשר מאונדס על ידי מחרוזות, או מסה מעורבבת של צמדי מפתח/ערך. אפשר לחשוב על חשיש כחבית גדולה שיש בה דברים (הערכים), ולכל החבית המטפורית יש תג (המפתחות). אתה יכול לשלוף כל פריט בחבית החוצה פשוט על ידי מציאת התג שלו. למידע נוסף על hash, הקישור הבא עשוי להיות שימושי: https://www.tutorialspoint.com/perl/perl_hashes.htm אנו יכולים להשתמש במידע שלכל שיר בקובץ ה- XML של iTunes מוקצה מזהה רצועה ייחודי כדי לעקוב אחריו השירים. בגלל זה, ה- trackID מהווה מפתח אידיאלי לחשיפות. לכן, אנו יכולים להגדיר 4 hashes לכותרת השיר, אמן, דירוג ומיקום. לאחר שהן הוקמו, נוכל לסרוק את הקובץ ולמלא את מאגר הנתונים שלנו באמצעות מספר ביטויים רגילים פשוטים, שיוצגו בהמשך.

שלב 5: שיעור קצר (מאוד) על ביטויים רגילים

על מנת לתפוס את ערכי החשיש שלנו מקובץ ה- XML ולחסוך מעט זמן בחיפוש, נרצה להיעזר באחת מהתכונות החזקות יותר של פרל: הביטוי הרגיל. אני אעשה שיעור קצר מאוד על ביטויים רגילים, אבל לאלו מכם שרוצים הסברים מפורטים יותר, יש הרבה הדרכות טובות לביטוי רגיל באינטרנט. בדוק https://perldoc.perl.org/perlretut.html לקבלת הדרכה טובה לביטויים רגילים. בקיצור, ביטויים רגילים מספקים לנו מערכת כלים לעבור מחרוזות, החלפת מחרוזת אחת במחרוזת אחרת או שמירת חלקים של מחרוזת לשימוש מאוחר יותר. ביטויים רגילים מספקים 2 פונקציות, האופרטורים התואמים (m //) והחלפתיים (ים //), שעומדים לשמש לפרויקט זה. כדי להשתמש באחת מהפונקציות האלה בהקשר הקצאה, נשתמש באופרטור הכריכה של Perl (= ~), המשמש לקשירת תבנית למשתנה מחרוזת לפי בחירה.

$ comment = ~ /Purduecer /; #חוזר נכון אם מחרוזת $ comment מכילה את הביטוי "Purduecer" s/[a-z]/[A-Z]/; #קח את כל האותיות באותיות קטנות במחרוזת והרך אותן במחרוזת $ _תכונה שימושית שנייה של ביטויים רגילים היא של משתני זיכרון. בביטויים רגילים, תוכל למקם פריטים מסוימים בסוגריים, ולאחר מכן להשתמש במשתני הזיכרון המיוחדים להתאמה לדפוס $ 1, $ 2 וכו 'כדי לגשת לחלקים של המיתרים שהתאימו לחלקים אלה מאוחר יותר.

/(הוראות) רובוט/; #התאם לכל שורה עם הביטוי "רובוט Instructables" $ אתר = $ 1; #שמור תוצאה של התאמת תבניות מוצלחת הכלולה בקבוצה הראשונה של הזוגות #(במקרה זה, משתנה $ 1 מכיל "הוראות")לבסוף, בביטויים רגילים, יש דמויות מסוימות המשרתות מטרה מיוחדת. אלה בריחות לאחור (שכולן אמורות להיראות מוכרות למתכנתים C), שיעורי דמויות ומטא -דמויות. לדוגמה, כדי להתאים לכל אות אחת שיש לה כרטיסייה משני הצדדים, נוכל לומר

/\ t [a-zA-Z] t/סוגריים מרובעים אלה משמשים בביטויים רגילים להגדרת מחלקת תווים. עם זאת נניח שרצינו למצוא טקסט בתוך סוגריים מרובעים בשורה. לא יכולנו פשוט לכתוב אותו כפי שהוא, כפי שמוצג להלן

/

/

שלב 6: החלת ביטויים רגילים על סקריפט ITunes

החלת ביטויים רגילים על סקריפט ITunes
החלת ביטויים רגילים על סקריפט ITunes

כעת, כשתקווה שיש לנו מושג על מושגי היסוד הבסיסיים המפעילים ביטויים רגילים, הגיע הזמן ליישם אותם על סקריפט ה- iTunes. בעת קריאת קוד xml, תווים מסוימים, כגון קו הרוחב קדימה, נתקלים לעתים קרובות למדי. לכן, ננצל את העובדה שאופרטור m // מאפשר לך לבחור איזה תוחם שאתה רוצה בקוד (נשתמש בסוגריים מרובעים, למרות שמפרידים אחרים בהחלט יעבדו) ראשית, עלינו לקרוא רק חלק את קובץ ה- XML המלא של iTunes. אין צורך בחלקים מהקובץ המכילים מידע כמו רשימות השמעה וכו '. השורה הראשונה של קטע רשימות ההשמעה, המגיעה לאחר מידע השיר, נראית כדלקמן: רשימות השמעה לכן, בתוך לולאת זמן, נוכל להוסיף הצהרה שקופצת לסוף קריאת הקבצים אם תיתקל בשורה זו.

בעוד () {#loop_instructions_here האחרון אם ($ _ = ~ m [רשימות השמעה])}לאחר מכן, לבניית מזהי ה- hash, נוכל להשתמש בעץ if-elsif לבניית hash של מסדי הנתונים שלנו, תוך שימוש במשתני התאמת הזיכרון שלמדנו עליהם בשלב הקודם כדי לשמור ערכים בתוך hashes

אם ($ _ = ~ m [(d+)]) {$ id = $ 1; } elsif ($ _ = ~ m [דירוג (d+)]) {$ rate_hash {$ id} = $ 1; } elsif ($ _ = ~ m [שם (.+)]) {$ name_hash {$ id} = $ 1; } elsif ($ _ = ~ m [אמן (.+)]) {$ art_hash {$ id} = $ 1; } elsif ($ _ = ~ m [Locationfile: // localhost (.*)]) {$ loc_hash {$ id} = $ 1; }כעת, לאחר שבנינו את הבסיס למאגר ההאש שלנו, נעסוק באיתור והסרה של קבצים של כוכב אחד, כך הלאה לשלב הבא!

שלב 7: איתור ומחיקה של מסלולי כוכב אחד

איתור ומחיקה של מסלולי כוכב אחד
איתור ומחיקה של מסלולי כוכב אחד

כעת, לאחר שהגדרנו את מסד הנתונים שלנו, הגיע הזמן לחפש את הרצועות של כוכב אחד, כדי שנוכל למחוק אותן. Perl מספק מבנה שימושי של לולאה הנקרא לולאת foreach שניתן להשתמש בו כדי לחזור על כל מפתחות hashes שלנו. יש לציין כי לא לכל רצועה בספריית ה- iTunes שלך תהיה רשומה ב- hash רייטינג. הסיבה לכך היא ששירים שאין להם דירוג אינם מקבלים שורת דירוג רצועות בקובץ ה- XML של iTunes. לכן, כשאתה עובר סיבובים דרך הרצועות, נרצה להשתמש במבנה הבא:

חפש $ id (מיון מפתחות %rate_hash) { #… הכנס קוד לולאה כאן}לאחר מכן, זה פשוט כמו השימוש בהצהרה הבאה

לבטל את הקישור של $ loc_hash {$ id} אם $ rate_hash {$ id} == 20;הפונקציה לביטול הקישור המשמשת בקוד לדוגמא למעלה היא הדרך של Perl למחוק קבצים. אתה עלול להתפתות להשתמש בשיחת מערכת לפונקציית המחיקה של מערכת ההפעלה שלך, אך מסיבות ניידות הקוד שכתבתי אינו משתמש בשיחת המערכת. כעת יש לנו את המבנה הבסיסי של הקוד שלנו. בשלבים הבאים, נבצע שיפורים בקוד כך שתוכל לקבל סקריפט פונקציונאלי מלא כדי להיפטר מאותם כוכבים מטרידים.

שלב 8: בריחת URI וכיצד לעקוף אותם

אם תנסה להריץ את הסקריפט כפי שהוא, תיתקל בשגיאות רבות ממערכת ההפעלה שלך, ואם תסתכל בנתיבי הקבצים שאתה מנסה למחוק, ייתכן שתמצא תווים יוצאי דופן המוטבעים במסלולים שאינם רצויים. יש סיכוי די טוב שנתיבים אלה יכילו דמויות בריחה של URI. מהן בריחות URI? ב- HTML וב- XML, תווי בריחה של URI (aka ברירות של URI) הם תווים מטא -מיוחדים המשמשים לחיפוש מופעים ממשיים של אותו תו. לדוגמה, לעולם לא תראה מרחב לבן פשוט במחרוזת תווים XML. עם זאת, תראה את ייצוג ה- XML של מרחב לבן פשוט, %20. (אין ספק שראיתם אותם בשורת כתובת האתר בדפדפן ותהיתם מה הם. ובכן, עכשיו אתה יודע) בריחת URI מורכבת מסימן % ואחריו קוד הקסדצימלי בן 2 ספרות המייצג את ערך ASCII של הדמות. נקודה, תוכל לכתוב חבורה שלמה של הצהרות החלפה על חשיש המיקום כדי להחליף כל מטא -אופי אפשרי שאתה נתקל בו (כלומר $ loc_hash {$ id} = ~ s/%20//; וכן הלאה). אך למרבה המזל, Perl מספקת דרך טובה יותר לטפל בדברים אלה. פרל מגיעה יחד עם מודול בשם URI:: Escape, בעל פונקציה מובנית, uri_unescape, שתעשה את עבודת חיסול הבריחות של ה- URI עבורנו.. כדי להשתמש במודול, הוסף את השורה הבאה בראש הקוד שלך:

השתמש ב- URI:: Escape;כעת, לאחר שנקצה את מערך $ loc_hash {$ id} בלולאת קובצי ה- XML, נוכל להוסיף את השורה הבאה לאחר מכן

uri_unescape ($ loc_hash {$ id});השורה לעיל מבטלת באופן אוטומטי את כל תווי הבריחה של URI. כבונוס נוסף, הוא מתרגם גם כמה דמויות בינלאומיות. הפעלתי את התסריט עם כמה נתיבי פילים שהיו בהם קונג'י יפני, והפונקציה uri_unescape תרגמה את פורמטי ה- XML של התווים האלה לדמויות המקוריות שלהם, כך שניתוק הקישור יוכל למחוק את הקובץ בהצלחה. לפני שנמשיך, יש לבצע צעד אחד נוסף. מסיבות שאני לא לגמרי מבין, iTunes מקודד את הסמל אמפרסנד (&) כמחרוזים שלו. אם מישהו יודע למה זה, אנא יידע אותי. בינתיים, אנו מבטלים בעיה זו על ידי הוספת השורה הבאה מתחת לקו uri_unescape

$ loc_hash {$ id} = ~ s/&#/&/;כעת לתסריט יהיו נתיבי קבצים ללא תווים מוזרים, ופונקציית ביטול הקישור תוכל למצוא קבצים במיקומם הנכון כדי למחוק אותם. ובכן, זה יקרה אם אתה משתמש ב- Mac OSX (וכנראה גם ברוב מערכות ההפעלה האחרות מבוססות יוניקס). המשך לקרוא כדי להפוך את הסקריפט תואם במערכות הפעלה אחרות (כלומר, Windows).

שלב 9: הוספת תאימות סקריפט ל- Windows

הוספת תאימות סקריפט ל- Windows
הוספת תאימות סקריפט ל- Windows

התסריט, כפי שנכתב עד כה, מסיר ביעילות רצועות במערכות הפעלה מבוססות יוניקס. כדי לגרום לזה לעבוד ב- Windows, יש צורך בתוספת אחת קטנה. שלא כמו Mac ומערכות הפעלה מבוססות Unix אחרות, Windows אינה תומכת ברעיון של ספריית שורש אחת. לכן, כל שמות הנתיבים מתחילים בנפח (C: או E: או כל אות אחרת שתוכל לחשוב עליה, לצורך העניין) בניגוד לספריית השורש (/). למרבה המזל, לפרל יש משתנה מיוחד, $O (זה הון o, לא אפס), זה אומר לנו באיזו מערכת הפעלה אנו משתמשים כרגע. לכן, אם הערך המאוחסן במשתנה זה מכיל "Win", נרצה להסיר את קו החיתוך המוביל בנתיב קובץ ה- XML שלנו. ניתן לעשות זאת באמצעות שורת הקוד הבאה (הוספה לאחר שניתחנו בהצלחה את מיקום הרצועה מקובץ ה- XML):

$ loc_hash {$ id} = substr ($ loc_hash {$ id}, 1) אם $^O = ~ /Win /i;כעת, התסריט יפעל בין אם הוא מופעל על מערכת ההפעלה X או Windows.

שלב 10: התסריט שהושלם

התסריט שהושלם
התסריט שהושלם

מצורפת הגרסה שלי לסקריפט השליטה האוטומטית של iTunes, לאלו מכם שרק רצו את המוצר הסופי ולא את ההסבר כיצד הוא פועל.

כדי להשתמש בסקריפט תרצה לשמור את הקובץ כקובץ perl (סיומת.pl) ולאחר מכן להפוך אותו להפעלה (chmod 751 ב- Unix, לא בטוח מה זה עבור מערכות Windows).

מוּמלָץ: