Những kiến thức và kinh nghiệm thực tế mà thầy/cô chia sẻ không chỉ giúp em tiếp cận với ngôn ngữ lập trình một cách có hệ thống, mà còn mở rộng tầm nhìn về cách ứng dụng Python vào các
Trang 1TRƯỜNG ĐẠI HỌC ĐIỆN LỰC
KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO CHUYÊN ĐỀ HỌC PHẦN
NGÔN NGỮ LẬP TRÌNH PYTHON
ĐỀ TÀI:
CÔNG CỤ TẢI DỮ LIỆU ĐỊNH DẠNG
VIDEO TỪ YOUTUBE
Sinh viên thực hiện : PHẠM THANH HẢI -
21810310175
Giảng viên hướng dẫn
: ĐINH THU KHÁNH
Lớp học phần Khoa
: D16CNPM3 : CÔNG NGHỆ THÔNG TIN Chuyên ngành
Khóa
: CÔNG NGHỆ PHẦN MỀM : 2021-2025
Trang 2
PHIẾU CHẤM ĐIỂM
Sinh viên thực hiện :
STT Họ và tên sinh
viên
Nội dung thực hiện Điểm Chữ ký
1 Phạm Thanh Hải
21810310175
Giáo viên chấm điểm:
Giảng viên chấm 1:
Giảng viên chấm 2:
Trang 3LỜI CÁM ƠN
Kết thúc quá trình thực hiện đề tài này, em xin gửi lời cảm ơn chân thành đến
cô Đinh Thu Khánh, người đã luôn hỗ trợ em trong suốt quá trình học môn
"Ngôn ngữ lập trình Python" Những kiến thức và kinh nghiệm thực tế mà thầy/cô chia sẻ không chỉ giúp em tiếp cận với ngôn ngữ lập trình một cách
có hệ thống, mà còn mở rộng tầm nhìn về cách ứng dụng Python vào các dự
án thực tiễn Sự hướng dẫn tận tình của thầy/cô đã giúp em có thể tự tin triển khai và hoàn thiện đề tài công cụ tải video từ YouTube này
Bên cạnh đó, em cũng không thể không nhắc đến sự hỗ trợ quý báu từ các bạn học cùng lớp Những buổi thảo luận nhóm, chia sẻ tài liệu, và trao đổi ý kiến đã giúp em hiểu rõ hơn về những khía cạnh phức tạp của đề tài Mỗi lần gặp phải khó khăn trong việc xử lý mã lệnh hoặc tối ưu công cụ, em đều nhận được những ý tưởng và gợi ý hữu ích từ các bạn, điều này đã giúp em rất nhiều trong việc hoàn thành dự án
Ngoài ra, em cũng xin cảm ơn đến các nguồn tài liệu tham khảo, các diễn đàn lập trình trực tuyến đã cung cấp cho em những thông tin bổ ích để giải quyết các vấn đề kỹ thuật mà em gặp phải Những bài viết và hướng dẫn chi tiết đã giúp em tiết kiệm rất nhiều thời gian trong việc tìm kiếm giải pháp và nâng cao kỹ năng lập trình của mình
Cuối cùng, em xin gửi lời cảm ơn đến gia đình và những người thân đã luôn tạo điều kiện thuận lợi, ủng hộ và động viên em trong suốt quá trình học tập
và nghiên cứu Nhờ có sự hỗ trợ và thấu hiểu từ mọi người, em đã có thể tập trung hoàn toàn vào việc hoàn thành tốt nhất bài báo cáo này
Trân trọng,
Phạm Thanh Hải
Trang 4LỜI MỞ ĐẦU
Ngôn ngữ lập trình Python đã và đang trở thành một trong những công cụ mạnh mẽ và phổ biến nhất trong lĩnh vực phát triển phần mềm nhờ tính đơn giản, dễ học và khả năng ứng dụng đa dạng Trong suốt quá trình học tập môn "Ngôn ngữ lập trình Python", em đã có cơ hội tìm hiểu sâu hơn về các cấu trúc dữ liệu, thuật toán, cũng như khả năng tương tác với các API để xây dựng các ứng dụng thực tiễn
Đề tài của báo cáo này tập trung vào việc xây dựng một công cụ tải video từ YouTube bằng Python Đây là một ứng dụng có tính thực tiễn cao, cho phép người dùng tải xuống các video từ nền tảng YouTube một cách nhanh chóng
và dễ dàng Thông qua việc thực hiện đề tài này, em không chỉ củng cố kiến thức về lập trình Python mà còn học hỏi thêm cách làm việc với các thư viện
hỗ trợ như pytube, cùng quy trình xử lý dữ liệu video trực tuyến một cách hiệu quả
Trong báo cáo này, em sẽ trình bày chi tiết về quá trình xây dựng công cụ, các bước thực hiện, những khó khăn đã gặp phải, cách khắc phục, cũng như những bài học quý báu mà em rút ra sau khi hoàn thành dự án
Chương I NGÔN NGỮ LẬP TRÌNH PYTHON
Trang 51 Tổng quan về ngôn ngữ lập trình Python
a Khái niệm
- Python là một ngôn ngữ lập trình thông dịch (interpreted), hướng đối tượng (object-oriented), và là một ngôn ngữ bậc cao (high-level) ngữ nghĩa động (dynamic semantics)
- Python hỗ trợ các module và gói (packages), khuyến khích chương trình module hóa và tái sử dụng mã Trình thông dịch Python và thư viện chuẩn mở rộng có sẵn dưới dạng mã nguồn hoặc dạng nhị phân miễn phí cho tất cả các nền tảng chính và có thể được phân phối tự do
- Python đã được hình thành vào cuối những năm 1980, và việc thực hiện nó vào tháng 12 năm 1989 bởi Guido van Rossum tại Centrum Wiskunde & Informatica (CWI) ở Hà Lan như là một kế thừa cho ngôn ngữ ABC (tự lấy cảm hứng từ SETL) có khả năng xử lý ngoại lệ và giao tiếp với Hệ điều hành Amoeba Van Rossum là tác giả chính của Python, và vai trò trung tâm của ông trong việc quyết định hướng phát triển của Python
- Các đặc điểm của Python: + Ngữ pháp đơn giản, dễ đọc.Vừa hướng thủ tục (procedural-oriented), vừa hướng đối tượng (object-oriented)
+ Hỗ trợ module và hỗ trợ gói (package) + Xử lý lỗi bằng ngoại lệ (Exception)
+ Kiểu dữ liệu động ở mức cao
+ Có các bộ thư viện chuẩn và các module ngoài, đáp ứng tất cả các nhu cầu lập trình
+ Có khả năng tương tác với các module khác viết trên C/C++ (Hoặc Java cho Jython, hoặc Net cho
IronPython)
Trang 6+ Có thể nhúng vào ứng dụng như một giao tiếp kịch bản (scripting interface)
- Python hiện nay là một trong những ngôn ngữ lập trình phổ biến nhất trên thế giới Những nền tảng, trang web hay ứng dụng sử dụng đến Python có thể kể đến như: Instagram, Facebook, OpenAI, … Bởi nó
có một cộng đồng sôi động, ngôn ngữ gần với ngôn ngữ tự nhiên nên rất dễ hiểu và sử dụng
b Ưu nhược điểm của ngôn ngữ lập trình Python
● Tuy là một ngôn ngữ lập trình phổ biến nhưng Python cũng có ưu nhược điểm riêng của nó trong quá trình sử dụng, cụ thể:
- Ưu điểm:
+ Dễ học và sử dụng: Cú pháp đơn giản, dễ đọc, giúp người mới nhanh chóng tiếp cận
+ Thư viện phong phú: Hệ sinh thái đa dạng cho khoa học dữ liệu, phát triển web, AI, v.v
+ Đa nền tảng: Chạy trên nhiều hệ điều hành mà không cần thay đổi mã
+ Cộng đồng lớn: Hỗ trợ mạnh mẽ, nhiều tài liệu và nguồn học liệu
+ Lập trình hướng đối tượng: Tổ chức mã tốt, dễ bảo trì
- Nhược điểm:
+ Hiệu suất chậm: Chậm hơn các ngôn ngữ biên dịch như C/C+
Trang 7+ Đa luồng hạn chế: GIL gây cản trở cho xử lý đa luồng.
+ Không tối ưu cho di động: Ít dùng để phát triển ứng dụng di động
+ Tiêu thụ bộ nhớ nhiều: Không hiệu quả với các ứng dụng đòi hỏi tài nguyên thấp
2 Tổng quan về những thư viện được sử dụng
- Để hoàn thiện bài tập theo đề tài, em em sẽ sử dụng những thư viện như: os, json, tkinter, và đặc biệt là yt_dlp để tạo nên tool có thể tải được video từ youtube Cụ thể các chức năng và ứng dụng của các thư viện là:
+ os: Là thư viện được sử dụng để Python có thể tương tác được với hệ điều hành Trong dự án của mình, em sử dụng thư viện
“os” để tool có thể đọc ghi được dữ liệu vào ổ cứng và chọn đường dẫn lưu video vào trong ổ cứng của máy tính
+ json: Tuy được sử dụng rộng rãi trong Java nhưng Python cũng
có thể sử dụng được loại dữ liệu này Em sử dụng thư viện “json”
để lưu các dữ liệu cài đặt của tool nhằm nâng cao chất lượng trải nghiệm
+ tkinter: Em lựa chọn thư viện “tkinter” để tạo ra một giao diện cơ bản cho một chương trình cửa sổ sử dụng ngôn ngữ lập trình Python.Các component đơn giản được em sử dụng như textbox, nút, …
+ Yt_dlp: Thư viện cuối cùng và là thành phần chính của tool là thư viện “yt_dlp” Thư viện yt-dlp là một công cụ mạnh mẽ để tải video và âm thanh từ nhiều trang web chia sẻ video, đặc biệt là YouTube Nó là một nhánh (fork) của công cụ nổi tiếng
Trang 8youtube-dl, nhưng đi kèm với các tính năng cải tiến và sửa lỗi Ngoài video clip trên youtube, thư viện còn hỗ trợ tải cả các video trên tiktok, facebook, …
+ Ngoài những thư viện nêu trên, em còn sử dụng công cụ hỗ trợ FFMPEG FFmpeg là một bộ công cụ phần mềm mạnh mẽ và đa năng, chủ yếu dùng để xử lý, chuyển đổi, và truyền tải các tệp đa phương tiện (video, âm thanh) FFmpeg hỗ trợ một loạt các định dạng và codec, giúp nó trở thành công cụ ưa thích trong nhiều ứng dụng chỉnh sửa video, âm thanh, và xử lý luồng đa phương tiện Cụ thể trong tool của mình, em sử dụng FFmpeg để chuyển đổi kiểu webm của video sang dạng mp4 để có thể xem tốt hơn
và nâng cao trải nghiệm người dùng