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 D:ffmpegbin
diunduh. Perhatikan bahwa ini adalah file biner ffmpeg yang dapat dieksekusi, bukan pustaka python
(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 otentikasi. kata sandi: Kata sandi untuk tujuan otentikasi. video kata sandi: Kata sandi untuk mengakses video.ap_mso: Pengidentifikasi operator multi-sistem Adobe Pass.ap_username: Nama pengguna akun operator multi-sistem.ap_password: Kata sandi akun operator multi-sistem.usenetrc: Gunakan netrc untuk autentikasi.netrc_location: Lokasi file netrc ~/.netrc.netrc_cmd: Gunakan perintah shell untuk mendapatkan kredensialverbose: Cetak info tambahan ke stdout.quiet: Jangan cetak pesan ke stdout.no_warnings: Jangan mencetak apa pun untuk warnings.forceprint: Dict dengan kunci KETIKA dipetakan ke daftar templat untuk dicetak ke stdout. Kunci yang diizinkan adalah video atau item apa pun 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 mencetak info_dict as JSON.dump_single_json: Paksa mencetak info_dict seluruh daftar putar (atau video) sebagai satu baris JSON.force_write_download_archive: Paksa menulis arsip unduhan terlepas dari 'skip_download' atau 'simulate'.simulate: Jangan unduh file video Jika tidak disetel ( atau Tidak Ada), simulasikan hanya jika listsubtitles, listformats atau list_thumbnails digunakanformat: Kode format video lihat "FORMAT SELECTION" untuk detail lebih lanjut. Anda juga dapat meneruskan suatu fungsi. Fungsi ini menggunakan 'ctx' sebagai argumen dan mengembalikan format yang akan diunduh. Lihat "build_format_selector" untuk implementasiallow_unplayable_formats: Izinkan format yang tidak dapat diputar diekstraksi dan diunduh.ignore_no_formats_error: Abaikan "Tidak kesalahan format video". Berguna untuk mengekstrak metadata meskipun video sebenarnya tidak tersedia untuk diunduh (eksperimental)format_sort: A daftar bidang yang digunakan 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 wadah gratis dibandingkan yang tidak bebas. yang kualitasnya sama.allow_multiple_video_streams: Mengizinkan beberapa aliran video digabungkan menjadi satu fileallow_multiple_audio_streams: Mengizinkan beberapa aliran audio digabungkan menjadi satu filecheck_formats Apakah akan menguji apakah format 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 diperbolehkan 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). dengan youtube-dl, string tunggal juga dapat digunakanouttmpl_na_placeholder: Placeholder untuk bidang meta yang tidak tersedia. batasi nama file: Jangan izinkan "&" dan spasi di nama filestrim_file_name: Batasi panjang nama file (tidak termasuk ekstensi)windowsfilenames: Paksa nama file agar kompatibel dengan windowsignoreerrors : Jangan berhenti pada kesalahan pengunduhan/pemrosesan pasca. Dapat berupa 'only_download' untuk mengabaikan kesalahan pengunduhan saja 'only_download' untuk CLI, tapi False untuk APIskip_playlist_after_errors: Jumlah kegagalan yang dibolehkan hingga sisa playlist dilewatiallowed_extractors: Daftar regex yang cocok dengan nama ekstraktor yang diperbolehkanoverwrites: Timpa semua file video dan metadata jika Benar, hanya timpa non-video file jika Tidak Ada dan jangan timpa file apa pun jika Falseplaylist_items: Indeks daftar putar tertentu yang akan diunduh.playlistrandom: Unduh item daftar putar dalam urutan acak.lazy_playlist: Memproses entri daftar putar saat diterima.matchtitle: Hanya mengunduh judul yang cocok.rejecttitle: Menolak unduhan untuk judul yang cocok.logger: Mencatat pesan ke logging.Contoh logger.logtostderr: Cetak semuanya ke stderr alih-alih stdout.consoletitle: Menampilkan kemajuan di bilah judul jendela konsol.writedescription: Tulis deskripsi video ke file .descriptionwriteinfojson: Tulis deskripsi video ke a 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 gambar mini ke fileallow_playlist_files: Apakah akan menulis deskripsi daftar putar, infojson, dll juga ke disk saat menggunakan 'tulis*' optionswrite_all_thumbnails: Menulis semua format thumbnail ke filewritelink: Menulis 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 shortcut internet Linux (.desktop)writesubtitles: Menulis subtitle video ke filewriteautomaticsub: Tulis subtitle yang dibuat secara otomatis ke filedaftarsubjudul: Daftar semua subtitle yang tersedia untuk videosubtitleformat: Kode format untuk subtitlesubtitleslangs: Daftar bahasa subtitle yang akan diunduh (bisa berupa regex). Daftar mungkin berisi "semua" untuk merujuk ke semua subtitle yang tersedia. Bahasa dapat diawali dengan "-" untuk mengecualikannya dari bahasa yang diminta, misalnya ['all', '-live_chat']keepvideo: Simpan file video setelah rentang tanggal pasca-pemrosesan: Objek utils.DateRange, unduh hanya jika tanggal_unggah berada dalam rentang tersebut.skip_download: Lewati pengunduhan sebenarnya dari file videocachedir: Lokasi file cache di sistem file .noplaylist: Unduh satu video, bukan daftar putar, jika ragu.age_limit: Bilangan bulat yang mewakili usia pengguna dalam beberapa tahun skipped.min_views: Bilangan bulat yang mewakili jumlah penayangan minimum</span