diff --git a/main.py b/main.py index a04f442..ffd659c 100644 --- a/main.py +++ b/main.py @@ -1,80 +1,42 @@ -import http.client -import json +import sys +import time +import random +import shutil +import tarfile +import os.path +import zipfile +import argparse +import markdown +import traceback +import requests.exceptions +import src.frontend.resources # Your IDE may tell you that this is an unused import statement, but that is WRONG! + +from phub import consts +from threading import Event +from io import TextIOWrapper +from base_api.base import Core +from itertools import islice, chain +from hqporner_api.api import Sort as hq_Sort +from base_api.modules import consts as bs_consts + +from src.backend.shared_gui import * +from src.backend.class_help import * +from src.backend.shared_functions import * + +from src.backend.log_config import setup_logging +from src.frontend.ui_form_license import Ui_SetupLicense +from src.frontend.ui_form_desktop import Ui_PornFetch_Desktop +from src.frontend.ui_form_android import Ui_PornFetch_Android +from src.frontend.ui_form_range_selector import Ui_PornFetchRangeSelector +from src.frontend.ui_form_install_dialog import Ui_SetupInstallDialog +from src.frontend.ui_form_keyboard_shortcuts import Ui_KeyboardShortcuts + +from PySide6.QtCore import (QFile, QTextStream, Signal, QRunnable, QThreadPool, QObject, QSemaphore, Qt, QLocale, + QTranslator, QCoreApplication, QSize, QTimer) +from PySide6.QtWidgets import QWidget, QApplication, QTreeWidgetItem, QButtonGroup, QFileDialog, QHeaderView +from PySide6.QtGui import QIcon, QFont, QFontDatabase, QPixmap, QShortcut -do_not_log = False -def send_error_log(message): - """ - This function is made for the Android development of Porn Fetch and is used for debugging. - You can, of course, change or remove it, but I wouldn't recommend it. - """ - - if do_not_log is False: - url = "192.168.2.139:8000" - endpoint = "/error-log/" - data = json.dumps({"message": message}) - headers = {"Content-type": "application/json"} - - conn = http.client.HTTPConnection(url) - - try: - conn.request("POST", endpoint, data, headers) - response = conn.getresponse() - - if response.status == 200: - print("Error log sent successfully") - else: - print(f"Failed to send error log: Status {response.status}, Reason: {response.reason}") - - conn.close() - except Exception as e: - print(f"Request failed: {e}") - -send_error_log("Hi") - -try: - import sys - import time - import random - import shutil - import tarfile - import os.path - import zipfile - import argparse - import markdown - import traceback - import requests.exceptions - import src.frontend.resources # Your IDE may tell you that this is an unused import statement, but that is WRONG! - - from phub import consts - from threading import Event - from io import TextIOWrapper - from base_api.base import Core - from itertools import islice, chain - from hqporner_api.api import Sort as hq_Sort - from base_api.modules import consts as bs_consts - - from src.backend.shared_gui import * - from src.backend.class_help import * - from src.backend.shared_functions import * - - from src.backend.log_config import setup_logging - from src.frontend.ui_form_license import Ui_SetupLicense - from src.frontend.ui_form_desktop import Ui_PornFetch_Desktop - from src.frontend.ui_form_android import Ui_PornFetch_Android - from src.frontend.ui_form_range_selector import Ui_PornFetchRangeSelector - from src.frontend.ui_form_install_dialog import Ui_SetupInstallDialog - from src.frontend.ui_form_keyboard_shortcuts import Ui_KeyboardShortcuts - - from PySide6.QtCore import (QFile, QTextStream, Signal, QRunnable, QThreadPool, QObject, QSemaphore, Qt, QLocale, - QTranslator, QCoreApplication, QSize, QTimer) - from PySide6.QtWidgets import QWidget, QApplication, QTreeWidgetItem, QButtonGroup, QFileDialog, QHeaderView - from PySide6.QtGui import QIcon, QFont, QFontDatabase, QPixmap, QShortcut - -except Exception: - error = traceback.format_exc() - send_error_log(error) - """ Copyright (C) 2023-2024 Johannes Habel @@ -99,15 +61,21 @@ def send_error_log(message): __license__ = "GPL 3" __version__ = "3.5" -__build__ = "android" # android or desktop +__build__ = "desktop" # android or desktop __author__ = "Johannes Habel" __next_release__ = "3.5" total_segments = 0 downloaded_segments = 0 stop_flag = Event() +os.environ['QT_ANDROID_ENABLE_WORKAROUND_TO_DISABLE_PREDICTIVE_TEXT'] = '1' +os.environ['QT_ANDROID_DISABLE_GLYPH_CACHE_WORKAROUND'] = '1' +os.environ['QT_ANDROID_BACKGROUND_ACTIONS_QUEUE_SIZE'] = '3' +# Just don't ask, thank you :) + url_linux = "https://johnvansickle.com/ffmpeg/builds/ffmpeg-git-amd64-static.tar.xz" url_windows = "https://www.gyan.dev/ffmpeg/builds/ffmpeg-git-essentials.7z" +url_macOS = "https://evermeet.cx/ffmpeg/ffmpeg-7.1.zip" session_urls = [] # This list saves all URls used in the current session. Used for the URL export function total_downloaded_videos = 0 # All videos that actually successfully downloaded total_downloaded_videos_attempt = 0 # All videos the user tries to download @@ -226,6 +194,7 @@ def show_android_startup_or_main(self): def show_install_dialog(self): if sys.platform == "darwin": self.show_main() # Installation not supported on macOS + return if self.conf["Setup"]["install"] == "unknown": self.install_widget = InstallDialog() @@ -499,6 +468,10 @@ def delete_dir(): shutil.rmtree(f"ffmpeg-{search.group(1)}-amd64-static") return True + elif sys.platform == "darwin": + shutil.rmtree("ffmpeg-7.1.7z") + return True + except AttributeError: pass # This is expected and (99%) not an issue @@ -510,7 +483,7 @@ def run(self): logger.debug("FFMPEG: [1/4] Starting the download") with requests.get(self.url, stream=True) as r: r.raise_for_status() - if self.url == url_windows: + if self.url == url_windows or self.url == url_macOS: total_length = int(r.headers.get('content-length')) else: @@ -551,6 +524,11 @@ def run(self): shutil.move(extracted_path, ".") self.signals.total_progress.emit(idx, total) + + elif self.mode == "macOS" and filename.endswith(".zip"): + with zipfile.ZipFile(filename, mode='r') as archive: + archive.extractall(path=self.extract_path) + logger.debug("FFMPEG: [3/4] Finished Extraction") # Finalize self.signals.total_progress.emit(total_length, total_length) # Ensure progress bar reaches 100% @@ -2282,13 +2260,18 @@ def check_ffmpeg(self): logger.debug(f"FFmpeg found at: {ffmpeg_path}") def download_ffmpeg(self): - if sys.platform == "linux": + """ if sys.platform == "linux": if not os.path.isfile("ffmpeg"): self.downloader = FFMPEGDownload(url=url_linux, extract_path=".", mode="linux") elif sys.platform == "win32": if not os.path.isfile("ffmpeg.exe"): self.downloader = FFMPEGDownload(url=url_windows, extract_path=".", mode="windows") + """ + if sys.platform == "linux": + if not os.path.isfile("ffmpeg"): + self.downloader = FFMPEGDownload(url=url_macOS, extract_path=".", mode="macOS") + self.downloader.signals.total_progress.connect(self.update_total_progressbar) self.downloader.signals.ffmpeg_download_finished.connect(ffmpeg_finished) diff --git a/src/frontend/form_android.ui b/src/frontend/form_android.ui index a8a561a..c261210 100644 --- a/src/frontend/form_android.ui +++ b/src/frontend/form_android.ui @@ -14,11 +14,7 @@ UI_android - QWidget {background-color: rgb(59, 59, 59) } -QLabel {color: white} -QLineEdit {color: white} -QRadioButton {color: white} -QPushButton {color: white} + @@ -34,343 +30,10 @@ QPushButton {color: white} 6 - - - - 0 - - - - - - 0 - 0 - - - - - 50 - 35 - - - - - 16777215 - 35 - - - - PointingHandCursor - - - QPushButton { - border: 2px solid #a9a9a9; - border-radius: 8px; - padding: 8px 10px; -} - - - - - - - 32 - 32 - - - - - - - - - 0 - 0 - - - - - 50 - 35 - - - - - 16777215 - 35 - - - - PointingHandCursor - - - QPushButton { - border-radius: 8px; - padding: 8px 10px; - border: 2px solid #a9a9a9; -} - - - - - - - - 32 - 32 - - - - - - - - - 0 - 0 - - - - - 50 - 35 - - - - - 16777215 - 35 - - - - - - - PointingHandCursor - - - QPushButton { - border-radius: 8px; - border: 2px solid #a9a9a9; - padding: 8px 10px; -} - - - - - - - - 32 - 32 - - - - - - - - - 0 - 0 - - - - - 50 - 35 - - - - - 16777215 - 35 - - - - PointingHandCursor - - - QPushButton { - border-radius: 8px; - border: 2px solid #a9a9a9; - padding: 8px 10px; -} - - - - - - - - 32 - 32 - - - - - - - - - 0 - 0 - - - - - 50 - 35 - - - - - 16777215 - 35 - - - - PointingHandCursor - - - QPushButton { - border-radius: 8px; - border: 2px solid #a9a9a9; - padding: 8px 10px; -} - - - - - - - - 32 - 32 - - - - - - - - - 0 - 0 - - - - - 50 - 35 - - - - - 16777215 - 35 - - - - PointingHandCursor - - - QPushButton { - border-radius: 8px; - border: 2px solid #a9a9a9; - padding: 8px 10px; -} - - - - - - - 32 - 32 - - - - - - - - - 0 - 0 - - - - - 50 - 35 - - - - - 16777215 - 35 - - - - PointingHandCursor - - - QPushButton { - border-radius: 8px; - border: 2px solid #a9a9a9; - padding: 8px 10px; -} - - - Supported websites - - - - 32 - 32 - - - - - - - - - - - 0 - 0 - - - - - 100 - 30 - - + + - URL: - - - - - - - Qt::Orientation::Vertical - - - - 20 - 40 - - - - - - - - This line will show you debug messages, please read it (only on Android) + Copy clipbaord @@ -388,7 +51,7 @@ QPushButton {color: white} - + Reset URL @@ -414,14 +77,7 @@ QPushButton {color: white} - - - - Copy clipbaord - - - - + @@ -438,21 +94,64 @@ QPushButton {color: white} PointingHandCursor - - - Download - + + + + + 0 + 0 + + + + + 100 + 30 + + + + URL: + + + + + + + 0 + + + + + + + Qt::Orientation::Vertical + + + + 20 + 40 + + + + + Video + + + + This line will show you debug messages, please read it (only on Android) + + + diff --git a/src/frontend/resources.py b/src/frontend/resources.py index 8e6957a..a7e44b1 100644 --- a/src/frontend/resources.py +++ b/src/frontend/resources.py @@ -27944,11 +27944,11 @@ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x07\ \x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x07\x0a\x00\x00\x00\x00\x00\x01\x00\x06m&\ -\x00\x00\x01\x94\x0f`\xa8\x9b\ +\x00\x00\x01\x94\x12\x7f\x9b\xcd\ \x00\x00\x07\x1a\x00\x04\x00\x00\x00\x01\x00\x06\x83\xfa\ -\x00\x00\x01\x94\x0f`\xa7\xdd\ +\x00\x00\x01\x94\x12\x7f\x9b-\ \x00\x00\x070\x00\x00\x00\x00\x00\x01\x00\x06\xabo\ -\x00\x00\x01\x94\x0f`\xa8:\ +\x00\x00\x01\x94\x12\x7f\x9b}\ \x00\x00\x06\xa6\x00\x02\x00\x00\x00\x01\x00\x00\x00\x0b\ \x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x06\xb8\x00\x04\x00\x00\x00\x01\x00\x027\xfc\ diff --git a/src/frontend/translations/en.ts b/src/frontend/translations/en.ts index 7250046..fddde46 100644 --- a/src/frontend/translations/en.ts +++ b/src/frontend/translations/en.ts @@ -35,42 +35,42 @@ li.checked::marker { content: "\2612"; } PornFetch - + You are running on Android! You can not install Porn Fetch - + Porn Fetch installation successful! - + Porn Fetch installation failed, because of: {result[1]} - + Saved User Settings, please restart Porn Fetch! - + The model URL you entered seems to be invalid. Please check your output - + Information: The Website {website} specified in the URL file isn't valid. - + Couldn't determine which site you want to search on??? Please report this immediately! - + An error happened inside of Porn Fetch! @@ -78,48 +78,48 @@ An error happened inside of Porn Fetch! - + Can't show thumbnail, due to your privacy settings ;) - + No thumbnail available - + Those credentials don't seem to be valid... - + Login Successful! - + Login Failed, please check your credentials and try again! - + You are already logged in! - + There's a problem with the login. Please make sure you login first and then you try to get videos based on your account. - - + + Invalid Category. Press 'list categories' to see all possible ones. - + ! Warning ! Some websites couldn't be accessed. Here's a detailed report: @@ -128,7 +128,7 @@ Some websites couldn't be accessed. Here's a detailed report: - + FFmpeg isn't installed on your system... Some features won't be available: @@ -972,22 +972,22 @@ li.checked::marker { content: "\2612"; } main - + Done! Please restart. - + No URLs in the current session... - + FFmpeg has been installed. Please restart Porn Fetch :) - + Information: A new version of Porn Fetch (v{__next_release__}) is out. I recommend you to update Porn Fetch. Go to: https://github.com/EchterAlsFake/Porn_Fetch/releases/tag/ {__next_release__} diff --git a/src/frontend/ui_form_android.py b/src/frontend/ui_form_android.py index 0eb2c94..8df50b1 100644 --- a/src/frontend/ui_form_android.py +++ b/src/frontend/ui_form_android.py @@ -24,11 +24,7 @@ def setupUi(self, PornFetch_Android): if not PornFetch_Android.objectName(): PornFetch_Android.setObjectName(u"PornFetch_Android") PornFetch_Android.resize(720, 1280) - PornFetch_Android.setStyleSheet(u"QWidget {background-color: rgb(59, 59, 59) }\n" -"QLabel {color: white}\n" -"QLineEdit {color: white} \n" -"QRadioButton {color: white}\n" -"QPushButton {color: white}") + PornFetch_Android.setStyleSheet(u"") self.gridLayout = QGridLayout(PornFetch_Android) self.gridLayout.setObjectName(u"gridLayout") self.verticalLayout = QVBoxLayout() @@ -38,152 +34,10 @@ def setupUi(self, PornFetch_Android): self.gridlayout_downloading.setObjectName(u"gridlayout_downloading") self.gridlayout_downloading.setSizeConstraint(QLayout.SizeConstraint.SetMinimumSize) self.gridlayout_downloading.setContentsMargins(-1, 14, -1, -1) - self.horizontalLayout = QHBoxLayout() - self.horizontalLayout.setSpacing(0) - self.horizontalLayout.setObjectName(u"horizontalLayout") - self.button_switch_home = QPushButton(PornFetch_Android) - self.button_switch_home.setObjectName(u"button_switch_home") - sizePolicy = QSizePolicy(QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Maximum) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.button_switch_home.sizePolicy().hasHeightForWidth()) - self.button_switch_home.setSizePolicy(sizePolicy) - self.button_switch_home.setMinimumSize(QSize(50, 35)) - self.button_switch_home.setMaximumSize(QSize(16777215, 35)) - self.button_switch_home.setCursor(QCursor(Qt.CursorShape.PointingHandCursor)) - self.button_switch_home.setStyleSheet(u"QPushButton {\n" -" border: 2px solid #a9a9a9;\n" -" border-radius: 8px;\n" -" padding: 8px 10px;\n" -"}") - self.button_switch_home.setIconSize(QSize(32, 32)) - - self.horizontalLayout.addWidget(self.button_switch_home) - - self.button_switch_account = QPushButton(PornFetch_Android) - self.button_switch_account.setObjectName(u"button_switch_account") - sizePolicy.setHeightForWidth(self.button_switch_account.sizePolicy().hasHeightForWidth()) - self.button_switch_account.setSizePolicy(sizePolicy) - self.button_switch_account.setMinimumSize(QSize(50, 35)) - self.button_switch_account.setMaximumSize(QSize(16777215, 35)) - self.button_switch_account.setCursor(QCursor(Qt.CursorShape.PointingHandCursor)) - self.button_switch_account.setStyleSheet(u"QPushButton {\n" -" border-radius: 8px;\n" -" padding: 8px 10px;\n" -" border: 2px solid #a9a9a9;\n" -"}\n" -"") - self.button_switch_account.setIconSize(QSize(32, 32)) - - self.horizontalLayout.addWidget(self.button_switch_account) - - self.button_switch_tools = QPushButton(PornFetch_Android) - self.button_switch_tools.setObjectName(u"button_switch_tools") - sizePolicy.setHeightForWidth(self.button_switch_tools.sizePolicy().hasHeightForWidth()) - self.button_switch_tools.setSizePolicy(sizePolicy) - self.button_switch_tools.setMinimumSize(QSize(50, 35)) - self.button_switch_tools.setMaximumSize(QSize(16777215, 35)) - font = QFont() - self.button_switch_tools.setFont(font) - self.button_switch_tools.setCursor(QCursor(Qt.CursorShape.PointingHandCursor)) - self.button_switch_tools.setStyleSheet(u"QPushButton {\n" -" border-radius: 8px;\n" -" border: 2px solid #a9a9a9;\n" -" padding: 8px 10px;\n" -"}\n" -"") - self.button_switch_tools.setIconSize(QSize(32, 32)) - - self.horizontalLayout.addWidget(self.button_switch_tools) - - self.button_switch_settings = QPushButton(PornFetch_Android) - self.button_switch_settings.setObjectName(u"button_switch_settings") - sizePolicy.setHeightForWidth(self.button_switch_settings.sizePolicy().hasHeightForWidth()) - self.button_switch_settings.setSizePolicy(sizePolicy) - self.button_switch_settings.setMinimumSize(QSize(50, 35)) - self.button_switch_settings.setMaximumSize(QSize(16777215, 35)) - self.button_switch_settings.setCursor(QCursor(Qt.CursorShape.PointingHandCursor)) - self.button_switch_settings.setStyleSheet(u"QPushButton {\n" -" border-radius: 8px;\n" -" border: 2px solid #a9a9a9;\n" -" padding: 8px 10px;\n" -"}\n" -"") - self.button_switch_settings.setIconSize(QSize(32, 32)) - - self.horizontalLayout.addWidget(self.button_switch_settings) - - self.button_switch_credits = QPushButton(PornFetch_Android) - self.button_switch_credits.setObjectName(u"button_switch_credits") - sizePolicy.setHeightForWidth(self.button_switch_credits.sizePolicy().hasHeightForWidth()) - self.button_switch_credits.setSizePolicy(sizePolicy) - self.button_switch_credits.setMinimumSize(QSize(50, 35)) - self.button_switch_credits.setMaximumSize(QSize(16777215, 35)) - self.button_switch_credits.setCursor(QCursor(Qt.CursorShape.PointingHandCursor)) - self.button_switch_credits.setStyleSheet(u"QPushButton {\n" -" border-radius: 8px;\n" -" border: 2px solid #a9a9a9;\n" -" padding: 8px 10px;\n" -"}\n" -"") - self.button_switch_credits.setIconSize(QSize(32, 32)) - - self.horizontalLayout.addWidget(self.button_switch_credits) - - self.button_view_progress_bars = QPushButton(PornFetch_Android) - self.button_view_progress_bars.setObjectName(u"button_view_progress_bars") - sizePolicy.setHeightForWidth(self.button_view_progress_bars.sizePolicy().hasHeightForWidth()) - self.button_view_progress_bars.setSizePolicy(sizePolicy) - self.button_view_progress_bars.setMinimumSize(QSize(50, 35)) - self.button_view_progress_bars.setMaximumSize(QSize(16777215, 35)) - self.button_view_progress_bars.setCursor(QCursor(Qt.CursorShape.PointingHandCursor)) - self.button_view_progress_bars.setStyleSheet(u"QPushButton {\n" -" border-radius: 8px;\n" -" border: 2px solid #a9a9a9;\n" -" padding: 8px 10px;\n" -"}") - self.button_view_progress_bars.setIconSize(QSize(32, 32)) - - self.horizontalLayout.addWidget(self.button_view_progress_bars) - - self.button_switch_supported_websites = QPushButton(PornFetch_Android) - self.button_switch_supported_websites.setObjectName(u"button_switch_supported_websites") - sizePolicy.setHeightForWidth(self.button_switch_supported_websites.sizePolicy().hasHeightForWidth()) - self.button_switch_supported_websites.setSizePolicy(sizePolicy) - self.button_switch_supported_websites.setMinimumSize(QSize(50, 35)) - self.button_switch_supported_websites.setMaximumSize(QSize(16777215, 35)) - self.button_switch_supported_websites.setCursor(QCursor(Qt.CursorShape.PointingHandCursor)) - self.button_switch_supported_websites.setStyleSheet(u"QPushButton {\n" -" border-radius: 8px;\n" -" border: 2px solid #a9a9a9;\n" -" padding: 8px 10px;\n" -"}") - self.button_switch_supported_websites.setIconSize(QSize(32, 32)) - - self.horizontalLayout.addWidget(self.button_switch_supported_websites) - - - self.gridlayout_downloading.addLayout(self.horizontalLayout, 7, 0, 1, 6) - - self.label_url = QLabel(PornFetch_Android) - self.label_url.setObjectName(u"label_url") - sizePolicy1 = QSizePolicy(QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Minimum) - sizePolicy1.setHorizontalStretch(0) - sizePolicy1.setVerticalStretch(0) - sizePolicy1.setHeightForWidth(self.label_url.sizePolicy().hasHeightForWidth()) - self.label_url.setSizePolicy(sizePolicy1) - self.label_url.setMinimumSize(QSize(100, 30)) - - self.gridlayout_downloading.addWidget(self.label_url, 2, 0, 1, 1) - - self.verticalSpacer_4 = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding) - - self.gridlayout_downloading.addItem(self.verticalSpacer_4, 8, 2, 1, 1) - - self.lineEdit = QLineEdit(PornFetch_Android) - self.lineEdit.setObjectName(u"lineEdit") + self.button_clipboard = QPushButton(PornFetch_Android) + self.button_clipboard.setObjectName(u"button_clipboard") - self.gridlayout_downloading.addWidget(self.lineEdit, 0, 0, 1, 6) + self.gridlayout_downloading.addWidget(self.button_clipboard, 5, 2, 1, 2) self.radioButton_2 = QRadioButton(PornFetch_Android) self.radioButton_2.setObjectName(u"radioButton_2") @@ -198,38 +52,58 @@ def setupUi(self, PornFetch_Android): self.pushButton = QPushButton(PornFetch_Android) self.pushButton.setObjectName(u"pushButton") - self.gridlayout_downloading.addWidget(self.pushButton, 4, 4, 1, 2) + self.gridlayout_downloading.addWidget(self.pushButton, 5, 4, 1, 2) self.lineedit_url = QLineEdit(PornFetch_Android) self.lineedit_url.setObjectName(u"lineedit_url") - sizePolicy2 = QSizePolicy(QSizePolicy.Policy.MinimumExpanding, QSizePolicy.Policy.Minimum) - sizePolicy2.setHorizontalStretch(0) - sizePolicy2.setVerticalStretch(0) - sizePolicy2.setHeightForWidth(self.lineedit_url.sizePolicy().hasHeightForWidth()) - self.lineedit_url.setSizePolicy(sizePolicy2) + sizePolicy = QSizePolicy(QSizePolicy.Policy.MinimumExpanding, QSizePolicy.Policy.Minimum) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.lineedit_url.sizePolicy().hasHeightForWidth()) + self.lineedit_url.setSizePolicy(sizePolicy) self.lineedit_url.setMinimumSize(QSize(300, 30)) self.gridlayout_downloading.addWidget(self.lineedit_url, 2, 1, 1, 5) - self.button_clipboard = QPushButton(PornFetch_Android) - self.button_clipboard.setObjectName(u"button_clipboard") - - self.gridlayout_downloading.addWidget(self.button_clipboard, 4, 2, 1, 2) - self.button_download = QPushButton(PornFetch_Android) self.button_download.setObjectName(u"button_download") + sizePolicy1 = QSizePolicy(QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Minimum) + sizePolicy1.setHorizontalStretch(0) + sizePolicy1.setVerticalStretch(0) sizePolicy1.setHeightForWidth(self.button_download.sizePolicy().hasHeightForWidth()) self.button_download.setSizePolicy(sizePolicy1) self.button_download.setMinimumSize(QSize(60, 30)) self.button_download.setCursor(QCursor(Qt.CursorShape.PointingHandCursor)) - self.button_download.setStyleSheet(u"") - self.gridlayout_downloading.addWidget(self.button_download, 4, 0, 1, 2) + self.gridlayout_downloading.addWidget(self.button_download, 5, 0, 1, 2) + + self.label_url = QLabel(PornFetch_Android) + self.label_url.setObjectName(u"label_url") + sizePolicy1.setHeightForWidth(self.label_url.sizePolicy().hasHeightForWidth()) + self.label_url.setSizePolicy(sizePolicy1) + self.label_url.setMinimumSize(QSize(100, 30)) + + self.gridlayout_downloading.addWidget(self.label_url, 2, 0, 1, 1) + + self.horizontalLayout = QHBoxLayout() + self.horizontalLayout.setSpacing(0) + self.horizontalLayout.setObjectName(u"horizontalLayout") + + self.gridlayout_downloading.addLayout(self.horizontalLayout, 9, 0, 1, 6) + + self.verticalSpacer = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding) + + self.gridlayout_downloading.addItem(self.verticalSpacer, 6, 2, 1, 1) self.radioButton = QRadioButton(PornFetch_Android) self.radioButton.setObjectName(u"radioButton") - self.gridlayout_downloading.addWidget(self.radioButton, 3, 0, 1, 1) + self.gridlayout_downloading.addWidget(self.radioButton, 4, 4, 1, 1) + + self.lineEdit = QLineEdit(PornFetch_Android) + self.lineEdit.setObjectName(u"lineEdit") + + self.gridlayout_downloading.addWidget(self.lineEdit, 4, 1, 1, 3) self.verticalLayout.addLayout(self.gridlayout_downloading) @@ -245,21 +119,14 @@ def setupUi(self, PornFetch_Android): def retranslateUi(self, PornFetch_Android): PornFetch_Android.setWindowTitle(QCoreApplication.translate("PornFetch_Android", u"UI_android", None)) - self.button_switch_home.setText("") - self.button_switch_account.setText("") - self.button_switch_tools.setText("") - self.button_switch_settings.setText("") - self.button_switch_credits.setText("") - self.button_view_progress_bars.setText("") - self.button_switch_supported_websites.setText(QCoreApplication.translate("PornFetch_Android", u"Supported websites", None)) - self.label_url.setText(QCoreApplication.translate("PornFetch_Android", u"URL:", None)) - self.lineEdit.setPlaceholderText(QCoreApplication.translate("PornFetch_Android", u"This line will show you debug messages, please read it (only on Android)", None)) + self.button_clipboard.setText(QCoreApplication.translate("PornFetch_Android", u"Copy clipbaord", None)) self.radioButton_2.setText(QCoreApplication.translate("PornFetch_Android", u"Playlist", None)) self.radioButton_3.setText(QCoreApplication.translate("PornFetch_Android", u"Model URL", None)) self.pushButton.setText(QCoreApplication.translate("PornFetch_Android", u"Reset URL", None)) self.lineedit_url.setPlaceholderText(QCoreApplication.translate("PornFetch_Android", u"Enter video URL", None)) - self.button_clipboard.setText(QCoreApplication.translate("PornFetch_Android", u"Copy clipbaord", None)) self.button_download.setText(QCoreApplication.translate("PornFetch_Android", u"Download", None)) + self.label_url.setText(QCoreApplication.translate("PornFetch_Android", u"URL:", None)) self.radioButton.setText(QCoreApplication.translate("PornFetch_Android", u"Video", None)) + self.lineEdit.setPlaceholderText(QCoreApplication.translate("PornFetch_Android", u"This line will show you debug messages, please read it (only on Android)", None)) # retranslateUi