Skip to content

Commit

Permalink
New: moduled structure
Browse files Browse the repository at this point in the history
  • Loading branch information
DUB1401 committed Jan 13, 2025
1 parent e410059 commit 8b01024
Show file tree
Hide file tree
Showing 31 changed files with 1,103 additions and 978 deletions.
17 changes: 6 additions & 11 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,18 +1,13 @@
# Python cache and virtual enviroment.
__pycache__
.venv
# Build data.
Build/Windows/Release
pornhub-dl.spec

# Visual Studio project files.
PornHub Downloader.pyproj
PornHub Downloader.sln
.vs

pornhub-dlp.spec
# Downloaded videos and it's data.
Downloads.ytdl
Downloads

# Advertisement animation file.
Advertisement.gif

# Python cache.
__pycache__
# Libs.
yt-dlp
8 changes: 4 additions & 4 deletions Build/Windows/build.bat
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,14 @@
cd ..\..\

:: Сборка приложения.
pyinstaller --distpath %~dp0\Release --i icon.ico --version-file Build\Windows\metadata.txt --onefile main.py --name pornhub-dl
pyinstaller --distpath %~dp0\Release --i icon.ico --version-file Build\Windows\metadata.txt --onefile main.py --name pornhub-dlp

:: Копирование в директорию сборки необходимых компонентов приложения.
xcopy /Y /I Source\GUI\Qt\Locales.json Build\Windows\Release\Source\GUI\Qt\
xcopy /Y /I yt-dlp Build\Windows\Release\yt-dlp
xcopy /Y /I /S Locales Build\Windows\Release\Locales
xcopy /Y Advertisement.gif Build\Windows\Release
xcopy /Y icon.ico Build\Windows\Release
xcopy /Y Settings.json Build\Windows\Release

:: Удаление файлов сборки приложения.
rmdir /q /s Build\pornhub-dl
rmdir /q /s Build\pornhub-dlp
del pornhub-dlp.spec
16 changes: 8 additions & 8 deletions Build/Windows/metadata.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
VSVersionInfo(
ffi=FixedFileInfo(
filevers=(1, 3, 2, 0),
prodvers=(1, 3, 2, 0),
filevers=(2, 0, 0, 0),
prodvers=(2, 0, 0, 0),
mask=0x3f,
flags=0x0,
OS=0x40004,
Expand All @@ -15,12 +15,12 @@ VSVersionInfo(
StringTable(
u'040904B0',
[StringStruct(u'CompanyName', u'DUB1401'),
StringStruct(u'FileDescription', u'PornHub video downloader.'),
StringStruct(u'FileVersion', u'1.3.2'),
StringStruct(u'LegalCopyright', u'Copyright © DUB1401. 2023-2024.'),
StringStruct(u'OriginalFilename', u'PornHub Downloader.exe'),
StringStruct(u'ProductName', u'PornHub Downloader'),
StringStruct(u'ProductVersion', u'1.3.2')])
StringStruct(u'FileDescription', u'PornHub multiple video downloader.'),
StringStruct(u'FileVersion', u'2.0.0'),
StringStruct(u'LegalCopyright', u'Copyright © DUB1401. 2023-2025.'),
StringStruct(u'OriginalFilename', u'pornhub-dlp.exe'),
StringStruct(u'ProductName', u'PornHub-dlp'),
StringStruct(u'ProductVersion', u'2.0.0')])
])
]
)
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,7 @@
same "printed page" as the copyright notice for easier
identification within third-party archives.

Copyright © 2023-2024. DUB1401.
Copyright © 2023-2025. DUB1401.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
Expand Down
63 changes: 63 additions & 0 deletions Locales/PornHub-dlp.pot
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: \n"
"POT-Creation-Date: 2024-12-28 13:49+0300\n"
"PO-Revision-Date: 2024-12-28 13:48+0300\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: ru\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 3.4.4\n"
"X-Poedit-Basepath: ../Source\n"
"X-Poedit-SearchPath-0: .\n"

#: GUI/Qt/QtWindow.py:133
msgid "Реклама"
msgstr ""

#: GUI/Qt/QtWindow.py:139
msgid "Очистить"
msgstr ""

#: GUI/Qt/QtWindow.py:145
msgid "Копировать вывод"
msgstr ""

#: GUI/Qt/QtWindow.py:156
msgid "Скачать"
msgstr ""

#: GUI/Qt/QtWindow.py:161
msgid "Вставьте сюда ссылки на видео"
msgstr ""

#: GUI/Qt/QtWindow.py:174
msgid "Вывод"
msgstr ""

#: GUI/Qt/QtWindow.py:181
msgid "Вставить ссылки"
msgstr ""

#: GUI/Qt/QtWindow.py:193
msgid "Настройки"
msgstr ""

#: GUI/Qt/QtWindow.py:203
msgid "Качество"
msgstr ""

#: GUI/Qt/QtWindow.py:211
msgid "Разрешение скачиваемых видео."
msgstr ""

#: GUI/Qt/QtWindow.py:216
msgid "По моделям"
msgstr ""

#: GUI/Qt/QtWindow.py:217
msgid "Сортировать видео по каталогам в соответствии с авторами."
msgstr ""
Binary file added Locales/en/LC_MESSAGES/PornHub-dlp.mo
Binary file not shown.
63 changes: 63 additions & 0 deletions Locales/en/LC_MESSAGES/PornHub-dlp.po
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: \n"
"POT-Creation-Date: 2024-12-28 13:49+0300\n"
"PO-Revision-Date: 2024-12-28 13:50+0300\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: en\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 3.4.4\n"
"X-Poedit-Basepath: ../Source\n"
"X-Poedit-SearchPath-0: .\n"

#: GUI/Qt/QtWindow.py:133
msgid "Реклама"
msgstr ""

#: GUI/Qt/QtWindow.py:139
msgid "Очистить"
msgstr "Clear"

#: GUI/Qt/QtWindow.py:145
msgid "Копировать вывод"
msgstr ""

#: GUI/Qt/QtWindow.py:156
msgid "Скачать"
msgstr ""

#: GUI/Qt/QtWindow.py:161
msgid "Вставьте сюда ссылки на видео"
msgstr ""

#: GUI/Qt/QtWindow.py:174
msgid "Вывод"
msgstr ""

#: GUI/Qt/QtWindow.py:181
msgid "Вставить ссылки"
msgstr ""

#: GUI/Qt/QtWindow.py:193
msgid "Настройки"
msgstr ""

#: GUI/Qt/QtWindow.py:203
msgid "Качество"
msgstr ""

#: GUI/Qt/QtWindow.py:211
msgid "Разрешение скачиваемых видео."
msgstr ""

#: GUI/Qt/QtWindow.py:216
msgid "По моделям"
msgstr ""

#: GUI/Qt/QtWindow.py:217
msgid "Сортировать видео по каталогам в соответствии с авторами."
msgstr ""
74 changes: 47 additions & 27 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,50 +1,70 @@
# PornHub Downloader
**PornHub Downloader** – это приложение с графическим интерфейсом для массовой загрузки видео с [PornHub](https://www.pornhub.com/), поддерживающее сортировку по моделям и выбор предпочитаемого качества роликов.
# PornHub-dlp
**PornHub-dlp** – это приложение для массовой загрузки видео с [PornHub](https://www.pornhub.com/), поддерживающее сортировку по моделям и выбор предпочитаемого качества роликов. Доступны графический и консольный интерфейсы.

## Порядок установки и использования | Исполняемый файл Windows
1. Загрузить последний релиз исполняемой версии. Распаковать.
2. Запустить _pornhub-dl.exe_. Вставить в поле ввода список ссылок на видео и нажать кнопку загрузки.
3. Дождаться скачивания видео в папку _Downloads_, в директории скрипта.
1. Загрузить последний релиз для платформы Windows. Распаковать.
2. Запустить _pornhub-dlp.exe_. При первом запуске будет произведена загрузка зависимостей, что может занять некоторое время.
4. Вставить в поле ввода список ссылок на видео и нажать кнопку загрузки.
3. Дождаться скачивания видео в папку _Downloads_, в директории скрипта.

## Порядок установки и использования | Скрипт Python
1. Загрузить последний релиз скрипта. Распаковать.
2. Установить Python версии не старше 3.10. Рекомендуется добавить в PATH.
3. В среду исполнения установить следующие пакеты: [pyinstaller](https://github.com/pyinstaller/pyinstaller), [pyperclip](https://github.com/asweigart/pyperclip), [requests](https://github.com/psf/requests), [pyqt6](https://www.riverbankcomputing.com/software/pyqt).
1. Скачать и распаковать последний релиз.
2. Убедиться в доступности на вашем устройстве Python версии **3.12** или новее.
3. Открыть каталог со скриптом в терминале: можно воспользоваться командой `cd` или встроенными возможностями файлового менеджера.
4. Создать виртуальное окружение Python.
```
pip install pyinstaller
pip install pyperclip
pip install requests
pip install pyqt6
python -m venv .venv
```
Либо установить сразу все пакеты при помощи следующей команды, выполненной из директории скрипта.
5. Активировать вирутальное окружение.
```
# Для Windows.
.venv\Scripts\activate.bat
# Для Linux или MacOS.
source .venv/bin/activate
```
6. Установить зависимости.
```
pip install -r requirements.txt
```
4. Запустить _main.py_. Вставить в поле ввода список ссылок на видео и нажать кнопку загрузки.
5. Дождаться скачивания видео в папку _Downloads_, в директории скрипта.
7. Разработчики [yt-dlp](https://github.com/yt-dlp) настоятельно рекомендуют установить библиотеку **ffmpeg** для поддержки расширенных сценариев загрузки и постпроцессинга. Ниже приведено несколько примеров.
```Bash
# Fedora
sudo dnf install ffmpeg-free
# Arch Linux
pacman -S ffmpeg
# Ubuntu
sudo apt install ffmpeg
```
8. В вирутальном окружении указать для выполнения интерпретатором файл `main.py`. По умолчанию будет выбран графический режим с использованием библиотеки [PyQt6](https://pypi.org/project/PyQt6/). При желании воспользоваться CLI, передайте главному файлу соответствующую команду `main.py run -live`.

# Скриншот
![Qt](Screenshots/Qt.png)
![image](https://github.com/user-attachments/assets/9fed05cd-5d2a-4f4b-9667-ceded975c03f)

# Сборка
# Сборка для Windows
1. Подготовить скрипт Python к работе согласно инструкции из порядка установки и использования.
2. Перейти в каталог _Build/Windows_, внутри директории скрипта.
3. Запустить файл _build.bat_ и дождаться завершения работы.
4. Исполняемая версия будет помещена по адресу _Build/Windows/Release_ вместе со всеми зависимостями.
2. Открыть терминал в директории скрипта и активировать виртуальное окружение.
```bat
.venv\Scripts\activate.bat
```
3. Перейти в каталог _Build/Windows_ и запустить сценарий сборки _build.bat_.
```bat
cd Build\Windows
build.bat
```
4. Исполняемая версия будет помещена по пути _Build/Windows/Release_ вместе со всеми зависимостями.

## Локализация
Для добавления сторонней локализации необходимо отредактировать файл [Locales.json](Source/GUI/Qt/Locales.json): в нём указываются списки используемых программой строк на целевом языке, ключём должен являться двухбуквенный тег языка в верхнем регистре по стандарту **ISO 639-1**.

Доступные локализации: `EN`, `RU`.
В скрипт внедрена начальная поддержка локализации через средство [GNU gettext](https://www.gnu.org/software/gettext/manual/gettext.html), что позволяет любому принять участие в переводе.

## Версии поставляемых бинарных файлов
### Версии загружаемых бинарных файлов
| Файл | Версия | Источник |
|-------------|-------------------------------|--------------------------------------------------------------------|
| yt-dlp | _2023.12.30_ | [ссылка](https://github.com/yt-dlp/yt-dlp/releases/tag/2023.12.30) |
| yt-dlp / yt-dlp.exe | _2025.01.12_ | [ссылка](https://github.com/yt-dlp/yt-dlp/releases/tag/2025.01.12) |
| ffmpeg.exe | _6.0 2023-03-04 (essentials)_ | [ссылка](https://github.com/GyanD/codexffmpeg/releases/tag/6.0) |
| ffprobe.exe | _6.0 2023-03-04 (essentials)_ | [ссылка](https://github.com/GyanD/codexffmpeg/releases/tag/6.0) |

# Благодарность
* [@yt-dlp](https://github.com/yt-dlp) – библиотека загрузки потокового видео.
* [yt-dlp](https://github.com/yt-dlp) – библиотека для скачивания видео из множества источников с широким дополнительным функционалом.

_Copyright © DUB1401. 2023-2024._
_Copyright © DUB1401. 2023-2025._
Binary file removed Screenshots/Qt.png
Binary file not shown.
11 changes: 5 additions & 6 deletions Settings.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
{
"sort-by-models": false,
"downloads-directory": "",
"cuality": 5,
"debug": false,
"advertisement": "https://xn--80aaalhzvfe9b4a.xn--80asehdb/"
{
"sorting": false,
"directory": "",
"quality": 2,
"advertisement": ""
}
1 change: 0 additions & 1 deletion Source/Core.py

This file was deleted.

Loading

0 comments on commit 8b01024

Please sign in to comment.