Python Script Facebook Video Downloader Dengan Library yt-dlp

Dalam era digital saat ini, mengelola dan mengunduh video secara otomatis bisa sangat membantu, terutama untuk dokumentasi, arsip, atau pembelajaran. 


Download Video dari Facebook dengan Python dan Library yt-dlp

Python Script Facebook Video Downloader Dengan Library yt-dlp


Artikel ini akan membahas fungsi dan alur kerja dari sebuah script Python yang dirancang untuk:

  • Membaca daftar video dari file teks,
  • Mengelompokkan video berdasarkan judul atau kategori,
  • Menyusun nama file secara rapi dan terstruktur,
  • Mengunduh video dengan kualitas terbaik menggunakan yt-dlp.

Library yg Digunakan

Script ini memanfaatkan beberapa pustaka Python:

  • yt_dlp – untuk mengambil informasi dan mengunduh video,
  • subprocess – untuk menjalankan perintah terminal secara langsung,
  • re – untuk pencocokan pola teks menggunakan regular expressions,
  • os – untuk pengelolaan sistem file dan folder.

Fb Video Downloader Script

Berikut ini adalah script Python untuk mendownload video dari facebook dengan menggunakan yt-dlp library. Simpan ke dalam main.py.


import subprocess
import re
import os
import yt_dlp

BASE_FOLDER = "downloads"
CUSTOM_REGEX = r"\[ *[Ee][Pp][\.\s]*([\d\.]+) *\] *(.+)"

def sanitize_filename(name):
    return re.sub(r'[\\/:*?"<>|]', '_', name)

def extract_title(url):
    try:
        ydl_opts = {
            'quiet': True,
            'skip_download': True,
        }
        with yt_dlp.YoutubeDL(ydl_opts) as ydl:
            info = ydl.extract_info(url, download=False)
            return info.get('title', 'fb_video')
    except Exception as e:
        print(f"Gagal mengambil info dari {url}: {e}")
        return "fb_video"

def download_video(url, index, folder_name, base_name):
    raw_title = extract_title(url)

    # Coba gunakan regex kalau cocok
    match = re.search(CUSTOM_REGEX, raw_title)
    if match:
        video_title = f"Ep. {match.group(1)} - {match.group(2)}"
    else:
        video_title = raw_title

    video_title = sanitize_filename(video_title)

    filename = f"{index:02d} - {base_name}"  # Gunakan nama blok
    target_folder = os.path.join(BASE_FOLDER, folder_name)
    os.makedirs(target_folder, exist_ok=True)

    print(f"\n Mendownload: {filename} → folder '{target_folder}'")

    try:
        subprocess.run([
            "yt-dlp",
            "-f", "best",
            url,
            "-o", f"{target_folder}/{filename}.%(ext)s"
        ])
    except Exception as e:
        print("Gagal download:", e)

def parse_facebook_links(file_path):
    groups = []
    with open(file_path, "r", encoding="utf-8") as f:
        title = None
        links = []
        for line in f:
            line = line.strip()
            if line.startswith("title ="):
                if title and links:
                    groups.append((title, links))
                title = sanitize_filename(line.replace("title =", "").strip())
                links = []
            elif line.startswith("http"):
                links.append(line)
        if title and links:
            groups.append((title, links))  # simpan blok terakhir
    return groups

if __name__ == "__main__":
    blocks = parse_facebook_links("facebook_links.txt")
    for title, urls in blocks:
        print(f"\n Mengunduh untuk judul: {title} ({len(urls)} video)")
        for i, url in enumerate(urls, start=1):
            download_video(url, i, title, title)
  
  

Penjelasan Tiap Bagian Script

1. Konstanta dan Regex Kustom

BASE_FOLDER = "downloads"CUSTOM_REGEX = r"\[ *[Ee][Pp][\.\s]*([\d\.]+) *\] *(.+)"

BASE_FOLDER: Lokasi utama tempat semua video akan disimpan.
CUSTOM_REGEX: Pola untuk mendeteksi format nama video seperti [Ep. 01] Judul Video agar nama file bisa disusun rapi.


2. sanitize_filename(name)

Fungsi ini membersihkan nama file dari karakter ilegal di sistem file:

return re.sub(r'[\\/:*?"<>|]', '_', name)

Berguna agar nama file aman dan tidak menimbulkan error saat menyimpan.


3. extract_title(url)

Mengambil judul video dari URL Facebook menggunakan yt_dlp tanpa mengunduh videonya:

info = ydl.extract_info(url, download=False)return info.get('title', 'fb_video')

Jika gagal, fungsi akan mengembalikan fb_video sebagai judul default.


4. download_video(url, index, folder_name, base_name)

Fungsi utama untuk:

  • Menentukan nama file berdasarkan regex atau judul asli,
  • Menyusun folder berdasarkan folder_name,
  • Menjalankan perintah yt-dlp untuk mengunduh video.
subprocess.run(["yt-dlp","-f", "best",url,"-o", f"{target_folder}/{filename}.%(ext)s"])

Nama file dibuat dengan format 01 - NamaJudul.ext agar tersusun rapi secara numerik.


5. parse_facebook_links(file_path)

Fungsi ini membaca file facebook_links.txt dan mengelompokkan link video berdasarkan blok judul:

Contoh isi file:

title = Kelas Python Dasar
https://facebook.com/video1
https://facebook.com/video2

title = Tutorial Django
https://facebook.com/video3

Hasil parsing-nya adalah daftar tuple: (judul, [daftar_url]).


6. Main Execution

Bagian ini menjalankan seluruh proses:

if __name__ == "__main__":
  • Membaca file link,
  • Untuk setiap blok judul → buat folder → unduh semua video di dalamnya secara berurutan.

Struktur Output

Setelah dijalankan, script ini akan membuat struktur folder seperti:

downloads/├── Kelas Python Dasar/│   ├── 01 - Kelas Python Dasar.mp4│   └── 02 - Kelas Python Dasar.mp4├── Tutorial Django/│   └── 01 - Tutorial Django.mp4

Kegunaan Script Ini

Script ini ideal untuk:

  • Guru/instruktur yang menyimpan konten dari Facebook untuk pelatihan offline,
  • Dokumentasi video live atau serial yang memiliki format judul konsisten,
  • Pengunduhan massal video dengan pengelompokan otomatis.

Catatan Penting

  • yt-dlp harus sudah terinstal dan dapat dijalankan lewat terminal, dengan mengetikkan command

pip install yt-dlp

  • Pastikan Kamu memiliki izin untuk mengunduh konten dari Facebook,
  • Beberapa video Facebook mungkin membutuhkan login atau tidak bisa diakses publik.

Script ini menunjukkan bagaimana Python dapat digunakan untuk mengotomatiskan tugas-tugas repetitif seperti mengunduh dan mengorganisir video dari platform seperti Facebook. Dengan menambahkan regex dan sanitasi nama file, hasil akhirnya pun menjadi lebih profesional dan rapi.

Jika Kamu ingin mengembangkan versi dengan antarmuka grafis (GUI) atau menyimpan ke Google Drive, fitur itu dapat ditambahkan dengan penyesuaian lebih lanjut.

Previous Post