<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: oheyek</title>
    <description>The latest articles on DEV Community by oheyek (@oheyek).</description>
    <link>https://dev.to/oheyek</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3632569%2F4a42183f-8779-4623-b925-57c2bb93ea63.jpeg</url>
      <title>DEV Community: oheyek</title>
      <link>https://dev.to/oheyek</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/oheyek"/>
    <language>en</language>
    <item>
      <title>I built a Python Video Downloader for my Engineering Thesis 🎓🎥</title>
      <dc:creator>oheyek</dc:creator>
      <pubDate>Thu, 27 Nov 2025 11:11:22 +0000</pubDate>
      <link>https://dev.to/oheyek/i-built-a-python-video-downloader-for-my-engineering-thesis-586m</link>
      <guid>https://dev.to/oheyek/i-built-a-python-video-downloader-for-my-engineering-thesis-586m</guid>
      <description>&lt;p&gt;Hello Devs! 👋&lt;/p&gt;

&lt;p&gt;We've all been there. You need to download a video for offline viewing or archiving. You search on Google, click on the first result, and...&lt;/p&gt;

&lt;p&gt;🚨 &lt;strong&gt;Popups everywhere.&lt;/strong&gt;&lt;br&gt;
🚨 &lt;strong&gt;"Allow notifications to continue."&lt;/strong&gt;&lt;br&gt;
🚨 &lt;strong&gt;Sketchy redirects.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I recently faced a challenge: I needed to create a practical application for my &lt;strong&gt;Engineering Thesis&lt;/strong&gt; (Bachelor's final project). I didn't want to build something that would just sit in a drawer. I wanted to solve a real annoyance.&lt;/p&gt;

&lt;p&gt;So, I combined my academic requirements with a practical solution and built &lt;strong&gt;VidGrabber&lt;/strong&gt; – an open-source tool written in Python to grab videos easily.&lt;/p&gt;
&lt;h2&gt;
  
  
  🚀 What is VidGrabber?
&lt;/h2&gt;

&lt;p&gt;VidGrabber is a desktop utility that allows you to download videos from popular platforms. It was designed as a diploma project to demonstrate Python capabilities in handling media streams and GUI applications.&lt;/p&gt;

&lt;p&gt;No ads, no tracking, just code.&lt;/p&gt;

&lt;p&gt;

&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/oheyek" rel="noopener noreferrer"&gt;
        oheyek
      &lt;/a&gt; / &lt;a href="https://github.com/oheyek/VidGrabber" rel="noopener noreferrer"&gt;
        VidGrabber
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Desktop application for downloading and processing YouTube content
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;
&lt;a rel="noopener noreferrer" href="https://github.com/oheyek/VidGrabber/src/ui/icons/icon.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Foheyek%2FVidGrabber%2Fsrc%2Fui%2Ficons%2Ficon.png" alt="VidGrabber Logo" width="32"&gt;&lt;/a&gt; VidGrabber&lt;/h1&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/629436a6802e7afc32a847d0887585634ccf768c75901f1bb547bba090e528df/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f707974686f6e2d332e31302532422d626c75653f6c6f676f3d707974686f6e266c6f676f436f6c6f723d7768697465"&gt;&lt;img src="https://camo.githubusercontent.com/629436a6802e7afc32a847d0887585634ccf768c75901f1bb547bba090e528df/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f707974686f6e2d332e31302532422d626c75653f6c6f676f3d707974686f6e266c6f676f436f6c6f723d7768697465" alt="Python Version"&gt;&lt;/a&gt;
&lt;a href="https://github.com/oheyek/VidGrabber/LICENSE" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/363208b55a1c6f4f3650322a8f5f48c8425f5f5c5015f575f637f05c88d00f30/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f6f686579656b2f566964477261626265723f636f6c6f723d677265656e" alt="License"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/d8d74dec06a4b92efccb7211b4693f5d007e58bdede8f45e2c656e3107c0dab3/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f706c6174666f726d2d77696e646f77732532302537432532306d61636f732532302537432532306c696e75782d6c6967687467726579"&gt;&lt;img src="https://camo.githubusercontent.com/d8d74dec06a4b92efccb7211b4693f5d007e58bdede8f45e2c656e3107c0dab3/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f706c6174666f726d2d77696e646f77732532302537432532306d61636f732532302537432532306c696e75782d6c6967687467726579" alt="Platform"&gt;&lt;/a&gt;
&lt;a href="https://github.com/oheyek/VidGrabber/releases" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/4d560d4edfac6c6c1e56c1b2578970fa37746621374d62739ac2488efb0849f1/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f762f72656c656173652f6f686579656b2f566964477261626265723f696e636c7564655f70726572656c6561736573" alt="Release"&gt;&lt;/a&gt;
&lt;a href="https://github.com/oheyek/VidGrabber/releases" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/030ea62b5365f3582b885646b419c8befafeac6c5b0803bbc48e5a3d86ffadf9/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f646f776e6c6f6164732f6f686579656b2f566964477261626265722f746f74616c3f636f6c6f723d6f72616e6765" alt="Downloads"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;A powerful desktop application for downloading and processing YouTube content with an intuitive interface.&lt;/p&gt;
&lt;p&gt;
&lt;a rel="noopener noreferrer" href="https://github.com/oheyek/VidGrabber/src/ui/icons/screenshot.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Foheyek%2FVidGrabber%2Fsrc%2Fui%2Ficons%2Fscreenshot.png" alt="VidGrabber Interface" width="500"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;✨ Features&lt;/h2&gt;
&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Multi-Format Downloads&lt;/strong&gt;: Download videos (MP4), audio (MP3/WAV), thumbnails (JPG), and tags (CSV).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Quality Selection&lt;/strong&gt;: Choose from available video qualities (144p to 2160p) with automatic detection.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Queue Management&lt;/strong&gt;: Add multiple downloads to queue and process them in batch (up to 5 concurrent downloads).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Smart Path Management&lt;/strong&gt;: Customize download locations for each file type with persistent settings.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Theme Customization&lt;/strong&gt;: Switch between Dark, Light, and System themes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tag Extraction&lt;/strong&gt;: Extract video tags and copy them directly to clipboard.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cross-Platform&lt;/strong&gt;: Works seamlessly on Windows, macOS, and Linux.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Auto-Updates&lt;/strong&gt;: Automatically downloads and updates yt-dlp and ffmpeg binaries.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Progress Tracking&lt;/strong&gt;: Real-time download progress with visual indicators.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🛠️ Installation&lt;/h2&gt;
&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Using the Pre-built Release&lt;/h3&gt;

&lt;/div&gt;

&lt;ol&gt;
&lt;li&gt;Download the appropriate executable for your platform from
the &lt;a href="https://github.com/oheyek/VidGrabber/releases" rel="noopener noreferrer"&gt;Releases&lt;/a&gt; page
&lt;ul&gt;
&lt;li&gt;Windows: &lt;code&gt;VidGrabber.exe&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;macOS: &lt;code&gt;VidGrabber-macOS.zip&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Linux: &lt;code&gt;VidGrabber-Linux.tar.gz&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Extract…&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/oheyek/VidGrabber" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;



&lt;h2&gt;
  
  
  🛠️ Tech Stack
&lt;/h2&gt;

&lt;p&gt;Since this was an engineering project, I focused on clean structure and efficiency:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Language:&lt;/strong&gt; Python 3.x 🐍&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Core:&lt;/strong&gt; &lt;code&gt;yt-dlp&lt;/code&gt; (for robust video extraction)&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;GUI:&lt;/strong&gt; &lt;code&gt;customtkinter&lt;/code&gt; (for a modern look) / &lt;code&gt;tkinter&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  ✨ Key Features
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;User-Friendly Interface:&lt;/strong&gt; Designed to be intuitive (a key requirement for my thesis).&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;High Quality:&lt;/strong&gt; Downloads the best available resolution.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Audio Extraction:&lt;/strong&gt; Option to grab just the audio (MP3).&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Open Source:&lt;/strong&gt; Fully transparent code.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  💻 How to run it
&lt;/h2&gt;

&lt;p&gt;If you want to test my thesis project, you can clone the repo and run it locally.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Clone the repository:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/oheyek/VidGrabber.git
&lt;span class="nb"&gt;cd &lt;/span&gt;VidGrabber
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Install dependencies:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; requirements.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Run the app:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python main.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  🤝 Contributions
&lt;/h2&gt;

&lt;p&gt;Even though the thesis is the main milestone, I'd love to keep this project alive! If you have ideas for improvements, feel free to:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Fork the repository.&lt;/li&gt;
&lt;li&gt; Create a feature branch.&lt;/li&gt;
&lt;li&gt; Submit a Pull Request!&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  🔗 Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;GitHub Repo:&lt;/strong&gt; &lt;a href="https://github.com/oheyek/VidGrabber" rel="noopener noreferrer"&gt;https://github.com/oheyek/VidGrabber&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you find this tool useful or just want to support a student/developer, please consider &lt;strong&gt;starring the repo ⭐&lt;/strong&gt; on GitHub. It really helps!&lt;/p&gt;

&lt;p&gt;Thanks for reading! Happy coding! 💻&lt;/p&gt;

</description>
      <category>python</category>
      <category>opensource</category>
      <category>productivity</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
