Skip to content

Developer Guide

Deep edited this page Jul 16, 2026 · 1 revision

Developer Guide

Welcome to the developer documentation for QIFY Downloader.

This guide is intended for contributors and developers who want to understand, modify, or improve the project.


Technology Stack

QIFY Downloader is built using:

  • Python 3
  • CustomTkinter
  • yt-dlp
  • FFmpeg
  • PyInstaller (for Windows executable)

Project Structure

QIFY-Downloader/
│
├── .github/
│   ├── ISSUE_TEMPLATE/
│   └── workflows/
│
├── assets/
│   └── qify.ico
│
├── screenshots/
│
├── main.py
├── README.md
├── LICENSE
├── CHANGELOG.md
├── CONTRIBUTING.md
├── CODE_OF_CONDUCT.md
├── DISCLAIMER.md
├── SECURITY.md
├── requirements.txt
├── .gitignore
└── .editorconfig

Main Components

main.py

The main application file.

Responsibilities:

  • Creates the GUI
  • Handles downloads
  • Manages the download queue
  • Detects FFmpeg
  • Displays progress
  • Writes log messages

Dependencies

Python packages:

yt-dlp
customtkinter

Install:

pip install -r requirements.txt

FFmpeg

FFmpeg is required for:

  • MP3 conversion
  • Video/audio merging

QIFY Downloader automatically detects FFmpeg if it is installed.


Building the Executable

Install PyInstaller:

pip install pyinstaller

Build:

pyinstaller --onefile --windowed --icon=assets/qify.ico --name QIFY-Downloader main.py

Code Style

Please follow these guidelines:

  • Write clear and readable code.
  • Keep functions small and focused.
  • Avoid unnecessary dependencies.
  • Test changes before submitting.
  • Follow existing naming conventions.

Reporting Bugs

Before opening an issue:

  • Check existing issues.
  • Reproduce the problem.
  • Include your operating system.
  • Include error messages if available.
  • Describe the steps to reproduce the issue.

Pull Requests

Contributions are welcome.

Before submitting a Pull Request:

  • Test your changes.
  • Keep commits focused.
  • Update documentation if necessary.
  • Ensure the application still works correctly.

License

All contributions will be licensed under the project's MIT License.

Clone this wiki locally