VideoDownloader adalah program pengunduhan video yang dikembangkan berdasarkan pustaka python yt-dlp
.
yt-dlp adalah pengunduh audio/video baris perintah kaya fitur yang mendukung ribuan situs web. Proyek ini adalah cabang dari youtube-dl berdasarkan youtube-dlc yang sekarang sudah tidak ada lagi.
yt-dlp pada dasarnya mendukung semua situs video umum. Ini adalah program baris perintah dengan fungsi yang sangat kuat dan parameter yang kaya. Proyek ini dikembangkan berdasarkan pustaka python yt-dlp (yt_dlp). Proyek ini menggunakan pustaka tkinter untuk membangun aplikasi GUI untuk mengunduh video, menghilangkan kebutuhan untuk memasukkan perintah yang panjang pada baris perintah dan memberi Anda pengalaman mengunduh yang mudah. .
Lingkungan Windows digunakan secara default, saya menggunakan pycharm+Anaconda:
ular piton>=3.8
ffmpeg digunakan untuk menggabungkan audio dan video secara otomatis setelah diunduh. Perhatikan bahwa ini adalah file biner ffmpeg yang dapat dieksekusi, bukan pustaka python. Ingatlah untuk menambahkannya ke variabel lingkungan, seperti: D:ffmpegbin
(1) Kloning proyek ini
git clone [email protected]:CQUPTLei/VideoDownloader.git
(2) Buat lingkungan virtual conda baru untuk proyek tersebut, contoh:
conda buat -n unduh video python=3.12
(3) Gunakan pip untuk menginstal perpustakaan yt_dlp:
conda aktifkan pengunduhan video pip instal yt-dlp
Di Linux, ambil Ubuntu24.04 sebagai contoh, gunakan vim untuk mengedit, lingkungan virtual python venv (Anda juga dapat menggunakan conda):
(1) Kloning proyek secara lokal
git clone [email protected]:CQUPTLei/VideoDownloader.git
(2) Instal python venv
tepat instal python3.12-venv
(3) Ciptakan lingkungan virtual
python3 -m pengunduh venv
(4) Aktifkan lingkungan virtual
pengunduh sumber/bin/aktifkan
(5) Instal perpustakaan terkait
pip instal yt-dlp sudo tepat instal python3-tk pip install Prettytable# Untuk pengemasan, gunakan pip install pyinstaller
(6) Berikan izin main.py yang dapat dieksekusi
sudo chmod 775 main.py
(7) Eksekusi (perhatikan jalurnya)
python3 utama.py
Kemungkinan modifikasi: Jika Anda ingin mendapatkan file cookie dari browser, Anda mungkin perlu mengubah jalurnya, dan lokasi penyimpanan default mungkin perlu diubah.
jendela:
Instal perpustakaan pyinstaller:
pip instal pyinstaller
Contoh perintah pengemasan, perhatikan setiap jalur. Kode berikut dijalankan di direktori tempat main.py berada:
pyinstaller -F --paths=D:anacondaenvsvideodownloadLibsite-packages --python=D:anacondaenvsvideodownloadpythonw.exe --noconsole --icon=icon1.ico --name=Pengunduh main.py
Ubuntu:
Contoh sederhana:
pyinstaller -F --paths=/home/moon/VideoDownloader/downloader/lib/python3.12/site-packages --python=/home/moon/VideoDownloader/downloader/bin/python312 --noconsole --icon=icon1.ico --name=Downloader main.py
macOS:
Tambahkan pemrosesan dan pengunduhan daftar video;
Lakukan beberapa tugas pengunduhan secara bersamaan;
Mendukung lebih banyak parameter khusus;
...
Tidak ada manual referensi khusus untuk yt_dlp di pypi. Parameter yang tersedia dari program baris perintah yt-dlp ditulis di github dan pypi, tetapi Anda dapat membaca implementasi spesifik yt_dlp: YoutubeDL.py
untuk mendapatkan parameter dan makna yang tersedia .
Berikut ini adalah parameter utama yang didukung oleh metode yt_dlp.YoutubeDL(download_opts)
.
Objek YoutubeDL menerima banyak parameter. Agar tidak memenuhi konstruktor objek dengan argumen, ia menerima kamus opsi sebagai gantinya. Opsi ini tersedia melalui atribut params untuk digunakan oleh InfoExtractors ditambahkan ke dalamnya, jadi ini adalah "pendaftaran bersama". Opsi yang tersedia: nama pengguna: Nama pengguna untuk tujuan autentikasi. Kata sandi: Kata sandi untuk tujuan autentikasi. Kata sandi video: Kata sandi untuk mengakses video.ap_mso: Pengidentifikasi operator multi-sistem Adobe Pass.ap_nama pengguna : Nama pengguna akun operator multi-sistem.ap_password: Kata sandi akun operator multi-sistem.usenetrc: Gunakan netrc untuk autentikasi.netrc_location: Lokasi file netrc. Defaultnya adalah ~/.netrc.netrc_cmd: Gunakan perintah shell untuk mendapatkan kredensialverbose: Cetak info tambahan ke stdout.quiet: Jangan cetak pesan ke stdout.no_warnings: Jangan cetak apa pun untuk peringatan.forceprint: Dict dengan kunci KETIKA dipetakan ke daftar templat untuk dicetak ke stdout item di utils.POSTPROCESS_WHEN. Untuk kompatibilitas, satu daftar juga diterimaprint_to_file: Dict dengan kunci WHEN (sama seperti forceprint) dipetakan ke daftar tupel dengan (templat, nama file)forcejson: Paksa pencetakan info_dict sebagai JSON.dump_single_json: Paksa pencetakan info_dict seluruh daftar putar (atau video) sebagai satu baris JSON.force_write_download_archive: Paksa penulisan arsip unduhan terlepas dari 'skip_download' atau 'simulate'.simulate: Jangan unduh file video. simulasikan hanya jika listsubtitles, listformats atau list_thumbnails digunakanformat: Kode format video. lihat "FORMAT SELECTION" untuk detail lebih lanjut. Anda juga dapat meneruskan fungsi. Fungsi ini menggunakan 'ctx' sebagai argumen dan mengembalikan format yang akan diunduh. untuk implementasiallow_unplayable_formats: Izinkan format yang tidak dapat diputar untuk diekstraksi dan diunduh.ignore_no_formats_error: Abaikan kesalahan "Tidak ada format video". Berguna untuk mengekstrak metadata meskipun video tersebut sebenarnya tidak tersedia untuk diunduh (eksperimental)format_sort: Daftar kolom untuk mengurutkan format video. Lihat "Format Penyortiran" untuk rincian lebih lanjut.format_sort_force: Paksa format_sort yang diberikan. lihat "Format Penyortiran" untuk rincian lebih lanjut.prefer_free_formats: Apakah lebih memilih format video dengan penampung gratis daripada yang tidak gratis dengan kualitas yang sama.allow_multiple_video_streams: Izinkan beberapa streaming video digabungkan menjadi satu fileallow_multiple_audio_streams: Izinkan beberapa streaming audio digabungkan menjadi satu filecheck_formats Apakah akan menguji apakah formatnya dapat diunduh. Bisa Benar (centang semua), Salah (centang tidak ada), 'dipilih' (periksa format yang dipilih), atau Tidak ada (periksa hanya jika diminta oleh ekstraktor) jalur: Kamus jalur keluaran. Kunci yang diizinkan adalah 'home' 'temp' dan kunci OUTTMPL_TYPES (di utils/_utils.py)outtmpl : Kamus templat untuk nama keluaran. Kunci yang diizinkan adalah 'default' dan kunci OUTTMPL_TYPES (di utils/_utils.py). Untuk kompatibilitas dengan youtube-dl, satu string juga dapat digunakanouttmpl_na_placeholder: Placeholder untuk bidang meta yang tidak tersedia.restrictfilenames : Jangan izinkan "&" dan spasi pada nama filestrim_file_name: Batasi panjang nama file (tidak termasuk ekstensi)windowsfilenames: Paksa nama file agar kompatibel dengan windowsignoreerrors: Jangan berhenti pada kesalahan pengunduhan/pascapemrosesan. Dapat berupa 'only_download' untuk mengabaikan kesalahan pengunduhan saja . Defaultnya adalah 'only_download' untuk CLI, namun False untuk APIskip_playlist_after_errors: Jumlah kegagalan yang dibolehkan hingga sisa playlist dilewatiallowed_extractors: Daftar regex yang akan dicocokkan dengan nama ekstraktor yang diperbolehkanoverwrites: Timpa semua file video dan metadata jika Benar, hanya timpa file non-video jika Tidak Ada dan jangan timpa file apa pun jika Falseplaylist_items: Indeks spesifik playlist yang akan diunduh.playlistrandom: Unduh item playlist dalam urutan acak.lazy_playlist: Memproses entri playlist saat diterima.matchtitle: Unduh hanya judul yang cocok.rejecttitle : Tolak unduhan untuk judul yang cocok.logger: Catat pesan ke logging.Contoh logger.logtostderr: Cetak semuanya ke stderr alih-alih stdout.consoletitle: Tampilkan kemajuan di bilah judul jendela konsol.writedescription: Tulis deskripsi video ke file .descriptionwriteinfojson: Tulis deskripsi video ke file .info.jsonclean_infojson: Hapus metadata internal dari infojsongetcomments: Ekstrak komentar video. Ini tidak akan ditulis ke disk kecuali writeinfojson juga diberikanwriteannotations: Tulis anotasi video ke file .annotations.xmlwritethumbnail: Tulis thumbnail gambar ke fileallow_playlist_files: Apakah akan menulis deskripsi daftar putar, infojson dll juga ke disk saat menggunakan opsi 'tulis*' write_all_thumbnails: Tulis semua format thumbnail ke filewritelink: Tulis file pintasan internet, tergantung pada platform saat ini (.url/. webloc /.desktop)writeurllink: Menulis file pintasan internet Windows (.url)writewebloclink: Menulis file pintasan internet macOS (.webloc)writedesktoplink: Menulis file pintasan internet Linux (.desktop)writesubtitles: Menulis subtitle video ke filewriteautomaticsub : Tulis subtitle yang dibuat secara otomatis ke filedaftarsubjudul: Mencantumkan semua subtitle yang tersedia untuk format subtitle video: Kode format untuk subtitlesubtitleslangs: Daftar bahasa subtitle yang akan diunduh (dapat berupa regex). semua subtitle yang tersedia. Bahasa dapat diawali dengan "-" untuk mengecualikannya dari bahasa yang diminta, misalnya ['all', '-live_chat']keepvideo: Simpan file video setelah pasca-pemrosesandaterange: Objek utils.DateRange. , unduh hanya jika upload_date berada dalam kisaran.skip_download: Lewati pengunduhan sebenarnya dari file videocachedir: Lokasi file cache di sistem file. False untuk menonaktifkan cache sistem file.noplaylist: Unduh satu video, bukan daftar putar, jika ragu. age_limit: Bilangan bulat yang mewakili usia pengguna dalam tahun. Video yang tidak sesuai untuk usia tertentu akan dilewati.min_views: Bilangan bulat yang mewakili jumlah penayangan minimum