ข้ามไปที่เนื้อหา
yt-dlp

ตัวสร้างคำสั่ง yt-dlp สำหรับ Instagram

ประกอบคำสั่ง yt-dlp สำหรับโพสต์และ reels บน Instagram โดยเปิด cookies ไว้ตั้งแต่ต้น เพราะถ้าไม่มีก็แทบทำอะไรไม่ได้

ไม่บังคับ ถ้าเว้นว่างไว้ คำสั่งจะจบด้วยคำว่า URL ให้คุณเติมเอง

คำสั่งของคุณ

yt-dlp --merge-output-format mp4 --no-playlist --cookies-from-browser chrome https://www.instagram.com/p/Cxxxxxxxxxx/
พื้นฐาน

เฉพาะเสียงจะดึงแทร็กเสียงออกมาและทิ้งภาพไป

วิดีโอและคุณภาพ

จำกัดความสูงไว้ yt-dlp ยังคงเลือกสตรีมที่ดีที่สุดในระดับนั้นหรือต่ำกว่า

ชนิดไฟล์ที่ใช้รวมสตรีมภาพกับเสียงที่แยกกันไว้ด้วยกัน

ตัวเลือกขั้นสูง (3)

ใช้แทนช่องเลือกคุณภาพ สำหรับคนที่รู้ไวยากรณ์ของฟอร์แมตอยู่แล้ว

บรรจุสตรีมใหม่โดยไม่เข้ารหัสใหม่ เร็วและไม่สูญเสียคุณภาพ

เข้ารหัสวิดีโอใหม่ ช้าและคุณภาพลด — ใช้เมื่อ remux ไม่ไหวเท่านั้น

เสียง

ชนิดไฟล์ที่เสียงจะถูกแปลงไป

VBR ให้อัตราส่วนขนาดต่อคุณภาพดีที่สุด ส่วน bitrate คงที่คาดเดาขนาดได้ง่ายกว่า

คำบรรยาย

การฝังจะใส่คำบรรยายไว้ในตัววิดีโอ ส่วนการบันทึกจะเขียนไฟล์ .srt แยกไว้ข้าง ๆ

คั่นด้วยจุลภาค ใส่ all ถ้าต้องการทุกภาษาที่มี

เพลย์ลิสต์และช่อง

จะทำอย่างไรเมื่อลิงก์เป็นทั้งวิดีโอและเพลย์ลิสต์ในเวลาเดียวกัน

ใช้ได้ทั้งช่วงและรายการ เช่น 1-10,15 หรือ -5::2 เพื่อเอาเว้นหนึ่งรายการนับจากท้าย

ตัวเลือกขั้นสูง (1)

จดว่าดาวน์โหลดอะไรไปแล้ว การรันซ้ำจึงข้ามรายการเหล่านั้น นี่คือวิธีทำให้ช่องหนึ่งอัปเดตตามต้นทางเสมอ

ช่วงและบท
ตัวเลือกขั้นสูง (2)

ช่วงเวลาแบบ *00:01:30-00:03:00 หรือชื่อบท เครื่องหมายดอกจันข้างหน้าหมายถึงเป็นเวลา

เมทาดาทาและภาพปก
ตัวเลือกขั้นสูง (3)
SponsorBlock

ตัดช่วงที่ชุมชนทำเครื่องหมายไว้ออกจากไฟล์ โดยอาศัยข้อมูลของ SponsorBlock

ตัวเลือกขั้นสูง (1)

คงช่วงเหล่านั้นไว้แต่ทำเครื่องหมายให้ เพื่อให้คุณข้ามเอง

ไฟล์และโฟลเดอร์

ชื่อฟิลด์เขียนไว้ใน %(...)s เครื่องหมายทับจะสร้างโฟลเดอร์

ตัวเลือกขั้นสูง (4)

ที่ที่จะเขียนไฟล์ลงไป ใช้ร่วมกับรูปแบบชื่อไฟล์ข้างบนจะได้โฟลเดอร์ย่อย

ความยาวสูงสุดของชื่อไฟล์ นับเป็นตัวอักษร

ตัวกรอง
ตัวเลือกขั้นสูง (5)

YYYYMMDD หรือวันที่แบบสัมพัทธ์อย่าง now-1month

YYYYMMDD หรือวันที่แบบสัมพัทธ์

ข้ามไฟล์ที่เล็กกว่านี้ รับค่าอย่าง 5M, 500K

ข้ามไฟล์ที่ใหญ่กว่านี้

จำนวนไฟล์ที่จะดาวน์โหลดก่อนหยุด

เครือข่าย

เช่น 2M หรือ 500K มีประโยชน์เมื่อคุณต้องการแบนด์วิดท์ที่เหลือไปทำอย่างอื่น

ตัวเลือกขั้นสูง (5)

ช่วยเร่งสตรีมที่แบ่งเป็นชิ้น เริ่มที่ 4 กำลังพอดี

จะลองชิ้นที่ล้มเหลวซ้ำกี่ครั้ง ใส่ infinite ก็ได้

ที่อยู่ proxy แบบ HTTP, HTTPS หรือ SOCKS

ทำให้คำขอดูเหมือนมาจากเบราว์เซอร์จริง เป็นวิธีแก้ที่ใช้กันเมื่ออยู่ ๆ ก็เจอ 403

การเข้าสู่ระบบและ cookies

อ่านเซสชันที่คุณล็อกอินไว้โดยตรง จำเป็นสำหรับเนื้อหาส่วนตัว จำกัดอายุ หรือเฉพาะสมาชิก

ตัวเลือกขั้นสูง (1)

ไฟล์ cookies.txt รูปแบบ Netscape ที่ส่งออกมาจากเบราว์เซอร์ของคุณ

สตรีมสด
ตัวเลือกขั้นสูง (2)

คอยตรวจจนกว่าสตรีมที่นัดไว้จะเริ่ม MIN-MAX คือช่วงวินาทีระหว่างการตรวจแต่ละครั้ง

วิธีเลี่ยงปัญหา
ตัวเลือกขั้นสูง (3)

เลิกใช้แล้ว ให้ใช้ --add-headers แทน ที่ยังเก็บไว้เพราะคู่มือเก่าจำนวนมากยังใช้อยู่

เลิกใช้แล้ว ให้ใช้ --add-headers แทน

ตัวเลือกเฉพาะของแต่ละเว็บ เช่น youtube:player_client=web

ผลลัพธ์และการดีบัก
ตัวเลือกขั้นสูง (2)
ล้างค่า

Instagram ต้องมีเซสชัน

Instagram แทบไม่ส่งอะไรให้คำขอที่ยังไม่ล็อกอิน --cookies-from-browser จึงเป็นสิ่งจำเป็นในทางปฏิบัติ ไม่ใช่ตัวเลือก ปิดเบราว์เซอร์ก่อนรันคำสั่ง เพราะ Chrome และ Edge ล็อกฐานข้อมูล cookies ไว้ระหว่างที่เปิดอยู่

โพสต์ภาพชุดถูกส่งมาเป็นเพลย์ลิสต์ จึงต้องตั้งการจัดการเพลย์ลิสต์เป็นทั้งเพลย์ลิสต์เพื่อให้ได้ครบทุกรายการ ส่วนสตอรีต้องใช้เซสชันที่ติดตามบัญชีนั้นและจะหายไปใน 24 ชั่วโมง

Instagram ขาดความไว้ใจต่อการเข้าถึงอัตโนมัติมากขึ้นเรื่อย ๆ และเซสชันที่ดาวน์โหลดเยอะเกินเร็วเกินจะถูกทวงถามการล็อกอินใหม่ — จุดสังเกตคือคำสั่งที่เมื่อวานยังวิ่งได้วันนี้กลับคืนมาเป็นหน้าล็อกอิน ใช้บัญชีแยกต่างหากอย่าใช้บัญชีหลัก หมั่นล็อกอินตามปกติเป็นครั้งคราวเพื่อให้ cookies ของมันสด และยอมรับว่าบัญชีที่ถูกใช้แบบนี้มีโอกาสถูกตั้งข้อสังเกตเป็นครั้งคราวไม่ว่าคำสั่งจะเขียนประณีตแค่ไหน นั่นคือต้นทุนของแพลตฟอร์ม ไม่ใช่บั๊กของ yt-dlp

โพสต์ reels และไฮไลต์ผ่านตัวดึงข้อมูลตัวเดียวกัน แต่แต่ละเซสชันเห็นสิ่งที่ต่างกัน Reels จากบัญชีที่คุณติดตามดาวน์โหลดได้สบาย ส่วน reels บนหน้าแนะนำมักปฏิเสธเซสชันที่ไม่เคยมีปฏิสัมพันธ์กับเนื้อหาประเภทนั้น ไฮไลต์ — วงกลมสตอรีที่ปักหมุดไว้บนโปรไฟล์ — แต่ละวงมาลงเป็นเพลย์ลิสต์ของสตอรีในวงนั้น IGTV เลิกใช้แล้ว ลิงก์เก่าบางทียังแกะออกได้ แต่ไม่มีอะไรใหม่ใช้มันอีก

Instagram จำกัดอัตราหนักกว่าแพลตฟอร์มอื่นใดที่ yt-dlp เจอเป็นประจำ Fragment ขนานยิ่งทำให้แย่ลง ไม่ใช่ดีขึ้น รายการละหนึ่งชิ้นพร้อมพักระหว่างรอบคือแบบแผนที่อยู่รอด การรันหลายรายการที่ล้มกลางทางเป็นเรื่องธรรมดา — ไฟล์บันทึกรายการบวกการทำต่อแม้เจอข้อผิดพลาดเปลี่ยนการลองใหม่ให้เป็นการสานต่อ ไม่ใช่เริ่มต้นใหม่ ซึ่งสำคัญเพราะเมื่อรอบจบ ลิงก์ CDN ของรายการแรก ๆ มักหมดอายุไปแล้ว และการรันใหม่ทั้งก้อนจะไปดึงหน้าเว็บซ้ำแทนที่จะได้มีเดีย

สิ่งที่กู้คืนไม่ได้: โพสต์จากบัญชีส่วนตัวที่คุณไม่ได้ติดตาม สตอรีที่เลย 24 ชั่วโมงไปแล้ว และทุกอย่างที่ถูกลบก่อนที่คุณจะรันคำสั่ง ลิงก์ CDN ในหน้าที่เพิ่งดึงมาหมดอายุเร็ว URL มีเดียที่หนึ่งชั่วโมงก่อนยังใช้ได้อาจปฏิเสธตอนนี้ — ให้ดึงหน้าโพสต์ใหม่ อย่าไปลองลิงก์เก่าซ้ำ การหมดอายุแบบนี้ยังเป็นเหตุผลให้ดาวน์โหลดเร็ว ๆ นี่แทนที่จะปล่อยไว้ว่าง ๆ: Instagram ไม่เคยให้คำสัญญาว่าจะเก็บมีเดียไว้ให้เข้าถึงได้เสมอ และมันก็ทำตามคำไม่สัญญานั้นจริง

คำถามที่พบบ่อย

ทำไม Instagram ถึงล้มเหลวเมื่อไม่มี cookies
Instagram แทบไม่ส่งอะไรให้คำขอที่ยังไม่ล็อกอิน --cookies-from-browser จึงจำเป็นในทางปฏิบัติ และเซสชันนั้นต้องเป็นของบัญชีที่มองเห็นโพสต์
โหลดสตอรีหรือ reels ได้ไหม
reels ทำงานเหมือนโพสต์ทั่วไป ส่วนสตอรีต้องใช้เซสชันที่ติดตามบัญชีนั้นและจะหมดอายุใน 24 ชั่วโมง
เอารายการทั้งหมดในโพสต์ภาพชุดอย่างไร
ตั้งการจัดการเพลย์ลิสต์เป็นทั้งเพลย์ลิสต์ — yt-dlp นับโพสต์หลายรายการเป็นเพลย์ลิสต์