สารบัญ:

ลบเพลง iTunes ที่ไม่ต้องการออกจากคอมพิวเตอร์ของคุณ: 10 ขั้นตอน
ลบเพลง iTunes ที่ไม่ต้องการออกจากคอมพิวเตอร์ของคุณ: 10 ขั้นตอน

วีดีโอ: ลบเพลง iTunes ที่ไม่ต้องการออกจากคอมพิวเตอร์ของคุณ: 10 ขั้นตอน

วีดีโอ: ลบเพลง iTunes ที่ไม่ต้องการออกจากคอมพิวเตอร์ของคุณ: 10 ขั้นตอน
วีดีโอ: วิธีย้ายรูปและวิดีโอจาก iPhone ลงคอม Windows10 และ 11 (ไม่ต้องผ่าน iTunes) #catch5 #iphone #ipad 2024, กรกฎาคม
Anonim
ลบเพลง iTunes ที่ไม่ต้องการออกจากคอมพิวเตอร์ของคุณ
ลบเพลง iTunes ที่ไม่ต้องการออกจากคอมพิวเตอร์ของคุณ

สวัสดี ท่านสุภาพบุรุษและสุภาพสตรี นี่เป็นครั้งแรกที่ฉันสามารถสอนการเข้ารหัสได้ ดังนั้นโปรดทิ้งปืนของคุณไว้ที่บ้านเวลาแสดงความคิดเห็น (อย่างไรก็ตาม มีดเป็นที่ยอมรับได้) ด้วยการถือกำเนิดของเครื่องเล่น mp3 มันทำให้ผู้คนสามารถพกพาไปในจำนวนที่ไม่เคยปรากฏมาก่อน ของเพลงที่อยู่รอบตัวพวกเขาในกระเป๋าของพวกเขา ไม่ใช่เรื่องแปลกที่จะได้ยินคนมีคอลเลคชันเพลง 5, 10, 15,000 เพลง (และบางคนมากกว่านั้น) ในบรรดาเครื่องเล่น mp3 ไม่มีสิ่งใดที่ได้รับความนิยมมากไปกว่า iPod ของ Apple และซอฟต์แวร์ที่ใช้งาน iTunes อย่างไรก็ตาม ด้วยคลังเพลงขนาดใหญ่เช่นนี้ การกำจัดเพลงที่ฟังดูไม่ดีหรือน่าดึงดูดใจอาจกลายเป็นเรื่องน่าเบื่อ คุณอีกต่อไป อาจใช้เวลานานในการติดตามโดยติดตามผ่านคอลเลคชันเพลงของคุณใน iTunes และกำจัดเพลงที่คุณไม่ชอบ นั่นคือสิ่งที่คำแนะนำนี้เข้ามา ในคำแนะนำนี้ ฉันจะแสดงวิธีการกำจัดเพลงโดยอัตโนมัติ ที่เลวร้ายเพียงธรรมดาด้วยความช่วยเหลือจากเพื่อนที่ดีของฉัน Perl ความรู้พื้นฐานที่ดีของ Perl นั้นมีประโยชน์อย่างมากเมื่อพยายามทำซ้ำคำสั่งนี้แม้ว่าจะไม่จำเป็น (คุณสามารถนำผลิตภัณฑ์โค้ดที่เสร็จแล้วและคัดลอก / วางได้อย่างแน่นอน และมันจะทำงานได้ดี) สำหรับผู้ที่สนใจ Perl ฉันขอแนะนำหนังสือ "Learning Perl" จาก O'Reilly เป็นหนังสือที่น่าอ่านและเป็นหนังสือที่ดีที่สุดเล่มหนึ่งเกี่ยวกับ Perl ที่ฉันมีโอกาสอ่าน สำคัญ: ในขณะที่วิธีการที่นำเสนอที่นี่จะได้ผล ถ้าทำอย่างถูกต้อง ฉันไม่สามารถและจะไม่รับผิดชอบใด ๆ หากคุณทำอะไรโง่ ๆ และลบเพลงอันมีค่าของคุณ โปรดพิจารณาสำรองไฟล์เพลงของคุณอย่างจริงจังก่อนที่จะพยายามเขียนหรือรันสคริปต์ดังต่อไปนี้ แค่เตือนสติไว้ จะได้ไม่เสียความรู้สึก ขอบคุณ อ่านคำเตือน? (ใช่แม้กระทั่งคุณ คนที่ไม่ได้อ่านคำเตือน) Great! มาเริ่มกันเลย:-) อัปเดต: ดูเหมือนว่าสคริปต์ Perl บางตัวทำงานอย่างหนักในการเขียนสคริปต์ iTunes สำหรับสคริปต์ที่เกี่ยวข้องกับ iTunes ที่หลากหลาย โปรดดูที่ Teridon's Scripts

ขั้นตอนที่ 1: เริ่มต้น

เริ่มต้น
เริ่มต้น

เช่นเดียวกับทุกสิ่ง มีการเตรียมการเล็กน้อยที่ต้องทำก่อนที่เราจะเรียกใช้สคริปต์นี้ได้ ดังนั้น สิ่งที่คุณจะต้องลบเพลงโดยอัตโนมัติจาก iTunes:1) คอมพิวเตอร์ (duh)2) iTunes (double duh)3) Perl (ยากที่จะเรียกใช้สคริปต์ Perl โดยไม่มี Perl คุณจะไม่พูดเหรอ)4) ของคุณ โปรแกรมแก้ไขที่ชื่นชอบ (ฉันเป็นผู้แสดง vi และ vim เอง แต่โปรแกรมแก้ไขข้อความควรทำเคล็ดลับ)5) iPod (ไม่จำเป็น แต่ดีที่มีเหตุผลที่จะชัดเจนในไม่ช้า) รับ Perl: ทำตาม คำแนะนำในที่นี้ควรจะง่ายพอ:https://www.perl.com/download.csp เมื่อคุณดาวน์โหลด ติดตั้ง Perl และพร้อมที่จะใช้งานแล้ว เราจะต้องการข้อมูลพื้นฐานเกี่ยวกับสิ่งที่เรากำลังทำอยู่ ควรสังเกตว่าต้นฉบับสคริปต์ได้รับการพัฒนาสำหรับ Mac OS X แม้ว่าวิธีการเดียวกันนี้ควรทำงานบนระบบปฏิบัติการที่ไม่ใช่ Unix เช่น Windows เวลาสำหรับส่วนที่น่าเบื่อ เอ่อ "การศึกษา" ของ Instructable

ขั้นตอนที่ 2: แนวคิดพื้นฐานของสคริปต์

iTunes มีระบบการให้คะแนน 5 ดาวเพื่อให้ผู้ใช้สามารถให้คะแนนเพลงได้ เพลงที่มีคะแนน 5 ดาวถือเป็นเพลงที่ดีที่สุด ในขณะที่เพลงที่มีคะแนน 1 ดาวจะถือว่าเป็นเพลงที่แย่ที่สุดบางเพลง สำหรับจุดประสงค์ของเรา เราจะถือว่าเพลงใดๆ ที่ไม่มีเรตติ้ง (หรือที่เรียกกันว่า 0 ดาว) เป็นเพลงที่ผู้ใช้ยังไม่มีโอกาสให้คะแนน โดยส่วนตัวแล้วเมื่อเรตติ้งเพลง ถ้าเพลงมีเรตติ้ง 1 ดาว ผม พบว่ามันอาจจะไม่ดีพอที่มันไม่สมควรได้รับพื้นที่ฮาร์ดไดรฟ์อันมีค่าที่เพลงใช้ ดังนั้น Perl Script ที่ฉันจะแสดงให้คุณเห็นในคำแนะนำนี้จะแยกวิเคราะห์ผ่าน iTunes Library และลบแทร็กใด ๆ ที่ได้รับการจัดอันดับ 1 ดาวเป็นโบนัสเพิ่มเติม เพลงสามารถให้คะแนนในขณะที่ผู้ใช้อยู่ระหว่างการเดินทาง โดยใช้ไอพอด ด้วยวิธีนี้ คุณสามารถเลือกเพลงที่จะลบในขณะเดินทางได้ง่ายๆ โดยการให้คะแนน และเพลงเหล่านั้นจะถูกลบโดยอัตโนมัติเมื่อคุณซิงค์ iPod กับคอมพิวเตอร์ของคุณในภายหลัง (หากคุณซิงค์ iPod กับคอมพิวเตอร์ของคุณโดยอัตโนมัติ) ตอนนี้เรารู้แล้วว่าอย่างไร เรากำลังดำเนินการ มาดูกันว่าเราจะดึงข้อมูลเพลงจาก iTunes สำหรับ Perl Script ได้อย่างไร

ขั้นตอนที่ 3: ไลบรารี XML: Goto Guy ของ iTunes

ไลบรารี XML: Goto Guy ของ iTunes
ไลบรารี XML: Goto Guy ของ iTunes

ในการลบเพลงออกจากคอมพิวเตอร์ตามการจัดเรต เราต้องการข้อมูล 2 ส่วน ได้แก่ เรทของเพลงและตำแหน่งของเพลง โชคดีสำหรับเราที่มีไฟล์ที่มีประโยชน์ซึ่งเราสามารถรับข้อมูลทั้งหมดที่เราต้องการเกี่ยวกับ iTunes จาก: ไฟล์ XML ของคลังเพลงของ iTunes ไฟล์ XML เรียกว่า "iTunes Music Library.xml" และควรอยู่ในไดเรกทอรี Music บนฮาร์ดไดรฟ์หลักของคุณ

เกี่ยวกับไฟล์ XML: ไฟล์ iTunes xml เป็นฐานข้อมูลประเภทหนึ่งที่ iTunes ดูแลและอัปเดตอยู่เสมอ เมื่อมีการแก้ไขใน iTunes ส่วนที่เกี่ยวข้องของไฟล์ iTunes XML จะถูกแก้ไขเพื่อให้ทราบถึงการเปลี่ยนแปลงนี้ รายการตัวอย่างจากไฟล์ iTunes XML ของฉันแสดงไว้ด้านล่าง: 1218Track ID1218NameTake On MeArtistA-HaGenre80'sKindMPEG audio fileSize3682382Total Time230138Date Modified2007-09-24T02:11:30ZDate Added2008-05-28T05:00:24ZBit Rate128Sample Rate44100Play Count18Play Date32 25T01:26:58ZRating40การจัดอันดับอัลบั้ม40อันดับอัลบั้มที่คำนวณแล้วPersistent ID9AC5DB9713240B44ประเภทแทร็กFileLocationfile://localhost/Volumes/HD1/iTunes%20Music/A-Ha/Unknown%20Album/Take%20On%20Me.mp3File Folder Count4Library Folderเห็นจากรายการด้านบน ไฟล์ XML ประกอบด้วยค่าที่ล้อมรอบด้วยแท็กสไตล์ HTML สำหรับวัตถุประสงค์ของสคริปต์ เราจะสนใจข้อมูลรหัสแทร็ก ชื่อ ศิลปิน คะแนน และตำแหน่ง หากคุณกำลังดูไฟล์ XML คุณอาจสังเกตเห็นจากด้านบนว่าเพลงนี้มี "การจัดประเภท" ที่ 40 iTunes กำหนดให้แต่ละเพลงเป็นจำนวนเต็มตั้งแต่ 0 ถึง 100 โดยทุกๆ 20 คะแนนจะเป็นดาวเพิ่มเติมสำหรับการให้คะแนน ดังนั้น การให้คะแนน 20 จะเท่ากับการให้คะแนน 1 ดาว การให้คะแนน 40 เป็นการให้คะแนน 2 ดาว และอื่นๆ โดยที่ 100 เป็นระดับ 5 ดาว เมื่อเรารู้เกี่ยวกับไฟล์ XML แล้ว มาเริ่มเขียนสคริปต์กันเถอะ

ขั้นตอนที่ 4: แฮชเพื่อนของคุณ (แม้ว่าคุณจะไม่ได้อยู่ในอัมสเตอร์ดัม)

แฮชเพื่อนของคุณ (แม้ว่าคุณจะไม่ได้อยู่ในอัมสเตอร์ดัม)
แฮชเพื่อนของคุณ (แม้ว่าคุณจะไม่ได้อยู่ในอัมสเตอร์ดัม)

ก่อนที่เราจะกำจัดไฟล์ เราจำเป็นต้องมีฐานข้อมูลที่ทำงานซึ่งเชื่อมโยงข้อมูลเพลงทั้งหมดเข้าด้วยกัน แม้ว่าโครงสร้างข้อมูลที่มีความซับซ้อนมากขึ้น เช่น อาร์เรย์ของแฮชหรือแฮชของแฮช สามารถใช้สคริปต์นี้ได้ สคริปต์นี้ง่ายพอที่จะเป็นประโยชน์ต่อการใช้รายการแฮชอย่างง่าย สำหรับผู้ที่ไม่ได้ฝึกหัด แฮชเป็นเพียงอาร์เรย์ที่ ถูกสร้างดัชนีโดยสตริง หรือมวลของคู่คีย์/ค่าที่คลาดเคลื่อน เราสามารถนึกถึงแฮชเป็นกระบอกขนาดใหญ่ที่มีสิ่งของ (ค่า) อยู่ในนั้น และทุกอย่างในถังเปรียบเทียบจะมีแท็ก (กุญแจ) ติดอยู่ คุณสามารถดึงสิ่งของใดๆ ในถังออกได้ง่ายๆ โดยการค้นหาแท็ก สำหรับข้อมูลเพิ่มเติมเกี่ยวกับแฮช ลิงก์ต่อไปนี้อาจมีประโยชน์: https://www.tutorialspoint.com/perl/perl_hashes.htm เราสามารถใช้ข้อมูลที่ทุกเพลงในไฟล์ iTunes XML กำหนด ID แทร็กที่ไม่ซ้ำกันเพื่อติดตาม เพลง ด้วยเหตุนี้ trackID จึงเป็นคีย์ในอุดมคติสำหรับแฮช ดังนั้นเราจึงสามารถตั้งค่าแฮชได้ 4 แฮชสำหรับชื่อเพลง ศิลปิน เรตติ้ง และตำแหน่ง เมื่อสร้างสิ่งเหล่านี้แล้ว เราสามารถสแกนไฟล์และเติมฐานข้อมูลแฮชของเราโดยใช้นิพจน์ทั่วไปง่ายๆ ซึ่งจะแสดงต่อไป

ขั้นตอนที่ 5: บทเรียนสั้น ๆ (มาก) เกี่ยวกับนิพจน์ทั่วไป

เพื่อที่จะดึงรายการแฮชของเราจากไฟล์ XML และยังประหยัดเวลาในการค้นหา เราจะต้องขอความช่วยเหลือจากหนึ่งในคุณสมบัติที่ทรงพลังกว่าของ Perl: นิพจน์ทั่วไป ฉันจะทำบทเรียนสั้นๆ เกี่ยวกับนิพจน์ทั่วไป แต่สำหรับพวกคุณที่ต้องการคำอธิบายที่ละเอียดมากขึ้น มีแบบฝึกหัดเกี่ยวกับนิพจน์ทั่วไปดีๆ มากมายทางออนไลน์ ลองดู https://perldoc.perl.org/perlretut.html เพื่อดูบทแนะนำนิพจน์ทั่วไปที่ดี กล่าวโดยย่อ นิพจน์ทั่วไปมีชุดเครื่องมือสำหรับตรวจสอบสตริง แทนที่สตริงหนึ่งด้วยสตริงอื่น หรือบันทึกบางส่วนของ สตริงสำหรับใช้ในภายหลัง นิพจน์ทั่วไปมี 2 ฟังก์ชัน ได้แก่ ตัวดำเนินการที่ตรงกัน (m//) และตัวดำเนินการแทนที่ (s//) ที่จะใช้สำหรับโครงการนี้ ในการใช้ฟังก์ชันนี้ในบริบทการกำหนด เราจะใช้ตัวดำเนินการผูกของ Perl (=~) ซึ่งใช้ในการผูกรูปแบบกับตัวแปรสตริงที่เลือก ตัวอย่าง:

$comment =~ /ผู้ดูแล/; #returns true ถ้า $comment string มีวลี "Purduecer"s/[a-z]/[A-Z]/; #ใช้อักษรตัวพิมพ์เล็กทั้งหมดในสตริงและแปลงเป็น $_ stringคุณลักษณะที่มีประโยชน์ประการที่สองของนิพจน์ทั่วไปคือตัวแปรหน่วยความจำ ในนิพจน์ทั่วไป คุณสามารถวางบางรายการในวงเล็บ แล้วใช้รูปแบบพิเศษจับคู่ตัวแปรหน่วยความจำ $1, $2 เป็นต้น เพื่อเข้าถึงส่วนของสตริงที่ตรงกับส่วนเหล่านี้ในภายหลัง ตัวอย่าง

/(คำสั่ง) หุ่นยนต์/; #จับคู่บรรทัดใดก็ได้ที่มีวลี "Instructables Robot"$website = $1; #Save ผลลัพธ์ของการจับคู่รูปแบบที่ประสบความสำเร็จซึ่งมีอยู่ใน parens ชุดแรก #(ในกรณีนี้ ตัวแปร $1 จะมี "Instructables")สุดท้าย ในนิพจน์ทั่วไป มีอักขระบางตัวที่มีจุดประสงค์พิเศษ สิ่งเหล่านี้คือแบ็กสแลช Escape (ซึ่งทั้งหมดนี้ควรมีลักษณะที่คุ้นเคยกับโปรแกรมเมอร์ C) คลาสอักขระและเมตาคาแรคเตอร์ ตัวอย่างเช่น หากต้องการจับคู่อักษรตัวเดียวที่มีแถบด้านใดด้านหนึ่ง เราอาจพูดว่า

/\t[a-zA-Z]\t/วงเล็บเหลี่ยมเหล่านี้ใช้ในนิพจน์ทั่วไปเพื่อกำหนดคลาสอักขระ อย่างไรก็ตาม สมมติว่าเราต้องการค้นหาข้อความที่อยู่ในวงเล็บเหลี่ยมในบรรทัด เราไม่สามารถเขียนตามที่เป็นอยู่ดังที่แสดงด้านล่าง

/

/

ขั้นตอนที่ 6: การใช้นิพจน์ทั่วไปกับ iTunes Script

การใช้นิพจน์ทั่วไปกับสคริปต์ iTunes
การใช้นิพจน์ทั่วไปกับสคริปต์ iTunes

ตอนนี้เราหวังว่าจะมีความรู้ความเข้าใจเกี่ยวกับแนวคิดพื้นฐานพื้นฐานที่ขับเคลื่อนนิพจน์ทั่วไป ก็ถึงเวลาที่จะใช้สิ่งเหล่านี้กับสคริปต์ iTunes เมื่ออ่านโค้ด xml อักขระบางตัว เช่น เครื่องหมายทับ มักพบบ่อยพอสมควร ดังนั้น เราจะใช้ประโยชน์จากข้อเท็จจริงที่ว่าตัวดำเนินการ m// ให้คุณเลือกตัวคั่นอะไรก็ได้ที่คุณต้องการในโค้ด (เราจะใช้วงเล็บเหลี่ยม แม้ว่าตัวคั่นอื่นๆ จะได้ผลก็ตาม) ก่อนอื่นเราต้องอ่านเพียงบางส่วนเท่านั้น ไฟล์ iTunes XML แบบเต็ม บางส่วนของไฟล์ที่มีข้อมูล เช่น เพลย์ลิสต์ ฯลฯ ไม่จำเป็น บรรทัดแรกของส่วนเพลย์ลิสต์ซึ่งอยู่หลังข้อมูลเพลงจะมีลักษณะดังนี้: เพลย์ลิสต์ดังนั้น ในช่วงเวลาหนึ่ง เราสามารถเพิ่มคำสั่งที่ข้ามไปยังจุดสิ้นสุดของการอ่านไฟล์ได้ หากพบบรรทัดนั้น

while() { #loop_instructions_here last if($_ =~ m[Playlists])}ต่อไป เพื่อสร้าง hash IDs เราสามารถใช้ if-elsif tree เพื่อสร้าง hash ฐานข้อมูลของเรา โดยใช้ตัวแปร memory Match ที่เราได้เรียนรู้ในขั้นตอนก่อนหน้าเพื่อบันทึกค่าลงใน hash

if($_ =~ m[(d+)]) { $id = $1; } elsif($_ =~ m[Rating(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; }ตอนนี้เราได้สร้างพื้นฐานของฐานข้อมูลแฮชแล้ว เราจะพูดถึงการค้นหาและลบไฟล์ 1 ดาว ต่อจากนี้ไปในขั้นตอนต่อไป!

ขั้นตอนที่ 7: ค้นหาและลบแทร็ก 1 ดาวเหล่านั้น

การค้นหาและการลบแทร็ก 1 ดาวเหล่านั้น
การค้นหาและการลบแทร็ก 1 ดาวเหล่านั้น

ตอนนี้เราได้สร้างฐานข้อมูลแล้ว ถึงเวลาออกล่าเพลงระดับ 1 ดาวแล้ว ลบทิ้งได้เลย Perl มีโครงสร้างการวนซ้ำที่มีประโยชน์ซึ่งเรียกว่า foreach loop ที่สามารถใช้เพื่อวนซ้ำคีย์ทั้งหมดของแฮชของเรา ควรสังเกตว่าไม่ใช่ทุกแทร็กในคลัง iTunes ของคุณจะมีรายการในแฮชการให้คะแนน ทั้งนี้เนื่องจากเพลงที่ไม่มีการจัดเรตจะไม่ได้รับบรรทัดการให้คะแนนแทร็กในไฟล์ iTunes XML ดังนั้น เมื่อวนลูปผ่านแฮช เราจะต้องการใช้โครงสร้างต่อไปนี้:

foreach $id (คีย์การเรียงลำดับ %rate_hash) { #…ใส่โค้ดวนซ้ำที่นี่}หลังจากนั้นก็ง่ายเหมือนการใช้คำสั่งต่อไปนี้

ยกเลิกการเชื่อมโยง $loc_hash{$id} ถ้า $rate_hash{$id} == 20;ฟังก์ชัน unlink ที่ใช้ในโค้ดตัวอย่างด้านบนเป็นวิธีการลบไฟล์ของ Perl คุณอาจถูกล่อลวงให้ใช้การเรียกระบบไปยังฟังก์ชันการลบของระบบปฏิบัติการ แต่ด้วยเหตุผลในการพกพา โค้ดที่ฉันเขียนจึงไม่ใช้การเรียกของระบบ ตอนนี้เรามีโครงสร้างพื้นฐานสำหรับโค้ดของเราแล้ว ในขั้นตอนต่อไปนี้ เราจะทำการปรับแต่งโค้ดบางอย่างเพื่อให้คุณมีสคริปต์ที่ใช้งานได้เต็มรูปแบบเพื่อกำจัด 1 ดาวที่น่ารำคาญเหล่านั้น

ขั้นตอนที่ 8: URI Escapes และวิธีหลีกเลี่ยงพวกเขา

หากคุณพยายามเรียกใช้สคริปต์ตามที่เป็นอยู่ คุณจะพบข้อผิดพลาดมากมายจากระบบปฏิบัติการของคุณ และหากคุณดูเส้นทางของไฟล์ที่คุณกำลังพยายามลบ คุณอาจพบอักขระที่ผิดปกติฝังอยู่ในเส้นทางที่ไม่ต้องการ มีโอกาสค่อนข้างดีที่เส้นทางเหล่านี้มีอักขระหลีก URI URI Escape คืออะไร ใน HTML และ XML อักขระหลีก URI (หรือที่เรียกว่า URI Escape) เป็นอักขระพิเศษที่ใช้เพื่อค้นหาอินสแตนซ์ตามตัวอักษรของอักขระนั้น ตัวอย่างเช่น คุณจะไม่เห็นช่องว่างอย่างง่ายในสตริงอักขระ XML อย่างไรก็ตาม คุณจะเห็นการแสดง XML ของช่องว่างอย่างง่าย %20 (แน่นอนว่าคุณเคยเห็นสิ่งเหล่านี้ในแถบ URL ในเบราว์เซอร์ของคุณ และสงสัยว่ามันคืออะไร ทีนี้คุณรู้แล้ว) URI Escape ประกอบด้วยเครื่องหมาย % ตามด้วยรหัสเลขฐานสิบหก 2 หลักซึ่งแทนค่า ASCII ของอักขระ ณ ที่นี้ ชี้ คุณสามารถเขียนคำสั่งการแทนที่ทั้งหมดบนแฮชตำแหน่งเพื่อแทนที่อักขระเมตาทั้งหมดที่เป็นไปได้ที่คุณพบ (เช่น $loc_hash{$id} =~ s/%20/ /; และอื่นๆ) โชคดีที่ Perl มีวิธีที่ดีกว่าในการดูแลสิ่งเหล่านี้ Perl มาพร้อมกับโมดูลที่เรียกว่า URI::Escape ซึ่งมีฟังก์ชัน uri_unescape ในตัว ซึ่งจะทำหน้าที่กำจัด URI Escape ให้เรา. ในการใช้โมดูล เพียงเพิ่มบรรทัดต่อไปนี้ที่ด้านบนของโค้ดของคุณ:

ใช้ URI::Escape;ตอนนี้ หลังจากที่เรากำหนดอาร์เรย์ $loc_hash{$id} ในลูปไฟล์ XML แล้ว เราก็สามารถเพิ่มบรรทัดต่อไปนี้ได้ในภายหลัง

uri_unescape($loc_hash{$id});บรรทัดด้านบนจะกำจัดอักขระหลีก URI โดยอัตโนมัติ เป็นโบนัสเพิ่มเติม มันแปลอักขระสากลบางตัวเช่นกัน ฉันรันสคริปต์ด้วยพาธไฟล์สองสามไฟล์ที่มีคอนจิภาษาญี่ปุ่นอยู่ในนั้น และฟังก์ชัน uri_unescape แปลรูปแบบ XML ของอักขระเหล่านั้นไปเป็นอักขระดั้งเดิมเพื่อให้การยกเลิกการลิงก์สามารถลบไฟล์ได้สำเร็จ ก่อนที่เราจะดำเนินการต่อ ต้องทำขั้นตอนเพิ่มเติมหนึ่งขั้นตอน. ด้วยเหตุผลที่ฉันไม่เข้าใจอย่างถ่องแท้ iTunes เข้ารหัสสัญลักษณ์ ampersand(&) เป็น & ในสตริง หากใครรู้ว่าเป็นเช่นนี้โปรดแจ้งให้เราทราบ ในระหว่างนี้ เราแก้ไขปัญหานี้โดยเพิ่มบรรทัดต่อไปนี้ใต้บรรทัด uri_unescape

$loc_hash{$id} =~ s/&#/&/;ตอนนี้สคริปต์จะมีเส้นทางของไฟล์ที่ชัดเจนจากอักขระแปลก ๆ และฟังก์ชัน unlink จะสามารถค้นหาไฟล์ในตำแหน่งที่เหมาะสมเพื่อลบออก มันจะเกิดขึ้นถ้าคุณใช้ Mac OSX (และน่าจะเป็น OS อื่น ๆ ที่ใช้ Unix ด้วยเช่นกัน) อ่านต่อไปเพื่อทำให้สคริปต์เข้ากันได้กับระบบปฏิบัติการอื่น (กล่าวคือ Windows)

ขั้นตอนที่ 9: การเพิ่มความเข้ากันได้ของสคริปต์ให้กับ Windows

การเพิ่มความเข้ากันได้ของสคริปต์ให้กับ Windows
การเพิ่มความเข้ากันได้ของสคริปต์ให้กับ Windows

สคริปต์ดังที่เขียนไว้ตอนนี้สามารถลบแทร็กบนระบบปฏิบัติการที่ใช้ Unix ได้อย่างมีประสิทธิภาพ เพื่อให้ทำงานบน Windows จำเป็นต้องมีการเพิ่มเติมเล็กน้อย ซึ่งต่างจาก Mac และระบบปฏิบัติการที่ใช้ Unix อื่นๆ Windows ไม่สนับสนุนแนวคิดของไดเร็กทอรีรากเดียว ดังนั้นชื่อพาธทั้งหมดจึงขึ้นต้นด้วยโวลุ่ม (C: หรือ E: หรือตัวอักษรอื่น ๆ ที่คุณคิดได้สำหรับเรื่องนั้น) ตรงข้ามกับไดเรกทอรีราก (/) โชคดีที่ Perl มีตัวแปรพิเศษ $O (นั่นคือตัวพิมพ์ใหญ่ o ไม่ใช่ศูนย์) ที่บอกเราว่าเรากำลังใช้ระบบปฏิบัติการใดอยู่ ดังนั้น หากค่าที่เก็บไว้ในตัวแปรนั้นมี "Win" เราจะต้องการลบเครื่องหมายทับบนเส้นทางไฟล์ตำแหน่ง XML ของเรา สามารถทำได้ด้วยโค้ดบรรทัดต่อไปนี้ (เพิ่มหลังจากที่เราแยกวิเคราะห์ตำแหน่งของแทร็กจากไฟล์ XML สำเร็จ):

$loc_hash{$id} = substr($loc_hash{$id}, 1) ถ้า $^O =~ /Win/i;ตอนนี้ สคริปต์จะทำงานไม่ว่าจะทำงานบน OS X หรือ Windows

ขั้นตอนที่ 10: สคริปต์ที่เสร็จสมบูรณ์

สคริปต์ที่เสร็จสมบูรณ์
สคริปต์ที่เสร็จสมบูรณ์

สิ่งที่แนบมาคือเวอร์ชันของฉันของสคริปต์การลบอัตโนมัติของ iTunes ที่เสร็จสมบูรณ์แล้ว สำหรับบรรดาของคุณที่ต้องการผลิตภัณฑ์ขั้นสุดท้ายและไม่ใช่คำอธิบายเกี่ยวกับวิธีการทำงาน

ในการใช้สคริปต์ คุณจะต้องบันทึกไฟล์เป็นไฟล์ Perl (นามสกุล.pl) แล้วทำให้สามารถเรียกใช้งานได้ (chmod 751 ใน Unix ไม่แน่ใจว่ามันคืออะไรสำหรับระบบ Windows)

แนะนำ: