Giter Site home page Giter Site logo

echteralsfake / porn_fetch Goto Github PK

View Code? Open in Web Editor NEW
102.0 3.0 19.0 49.58 MB

Cross-Platform Porn (Hub) downloader with Account Login and Searching support

License: GNU General Public License v3.0

Python 96.76% Shell 0.41% PowerShell 0.46% Ruby 2.37%
cross-platform downloader linux pornhub pyside6 python qt windows xxx android

porn_fetch's Introduction

Porn Fetch Logo

Porn Fetch - The Ultimate Open-Source Porn(Hub) Downloader

Build GUI Windows Status Build GUI Linux Status Build CLI Windows Status Build GUI CLI Linux Status CodeQL Analysis GitHub all releases

 
 Download (v3.3) 
 
 
 Screenshots 
 
 
 Supported Websites 
 
 
 FAQ 
 
 
 Changelog 
 
 
 Development Status 
 


Warning

Porn Fetch is NOT associated with the websites. Porn Fetch is AGAINST the Terms of Services of EVERY website! Usage is on YOUR risk.

Important

Porn Fetch may get flagged by your antivirus software. See HERE for an explanation why this is.

🚀 Quick Links

🌟 Features

  • Downloading Videos
  • Downloading Playlists
  • Downloading whole model / channel accounts
  • Searching for videos (and downloading them directly)
  • Downloading from a file
  • Optional account login
  • Multithreaded downloading
  • Dark mode and CLI support
  • No ads or mandatory logins
  • Cross-platform compatibility
  • Multiple supported websites
  • Multiple user interface languages
  • Native Android application
  • modern looking user interface
  • Supports over 115 MB/s download speed thanks to well optimized HLS downloading

General Information

Note

Supported Platforms:

  • Windows (10 / 11)
  • Linux (X11 / Wayland)
  • Android (Android is very unstable, please consider using the CLI on Termux instead!)
  • macOS (Untested)

The Graphical User Interface is only for 64bit systems. The CLI supports 64 and 32bit systems.
Porn Fetch is developed on Arch Linux (Hyprland) and cross-compiled using GitHub CI/CD

Downloading on Windows is generally slower because Windows doesn't have a good I/O network handling

🌐 Supported Websites

Important

Not all websites support every feature. Some might only support downloading, while others support searching

You can see more information HERE

Working with Files

Porn Fetch allows you to use a URL or kind of batch file to programmatically download all videos, models, and search terms listed in there.

Here's a short documentation on how to use it:

Note

The format ending of the file doesn't matter.

Here's a quick example on how to use it. It should explain anything by itself:

Inside the File:

url # The url of some video you want to download. Just in raw format, like when you would download it.
model#pornhub.com/pornstar/whatever # First enter "model#" after the # follows the model URL
search#query#website  # First enter search# then the query and then after another hashtag the website you want to search on.


Porn Fetch supports all URLs, Models and search terms like it would if you use the basic GUI for downloading.

Important

When using the search function, make sure the website is the exact same name like in the URL between www. and .com e., for "https://www.pornhub.com" it would be just "pornhub" or for "https://xvideos.com" it would be just "xvideos"

If you still need a real example file, here you go

🔨 Building from Source

Easy-to-use build scripts are available for various platforms. Run these in your terminal:

For Ubuntu, Windows, Arch Linux, Termux, Fedora, OpenSUSE:

wget "https://raw.githubusercontent.com/EchterAlsFake/Porn_Fetch/master/src/scripts/install.sh" -O install.sh
bash install.sh

For Termux:

wget -O - "https://raw.githubusercontent.com/EchterAlsFake/Porn_Fetch/master/src/scripts/install_termux.sh" | bash

For Windows (Powershell as Admin)

# Enable script execution
Set-ExecutionPolicy RemoteSigned 
Set-ExecutionPolicy Bypass -Scope Process
Invoke-Expression (Invoke-WebRequest -Uri https://raw.githubusercontent.com/EchterAlsFake/Porn_Fetch/master/src/scripts/install_windows.ps1 -UseBasicParsing).Content

Scripts aren't maintained very often. Please report errors immediately!

📱 Android

The Android app is the exact same as the desktop app. Thanks to Qt's Android developing Guide, you'll be able to simply install the .apk file, and you have the full version of Porn Fetch on your device.

Building for Android

Building the PySide6 application by yourself isn't possible through a simple script. If you really want to do it, please refer to my Pyside6-to-Android repository.

🌍 Translating

Currently available in:

  • German (3.0)
  • English
  • Chinese (3.0) [*] Thanks to: Joshua-auhsoj
  • French (3.0) [*] Thanks to: Egsagon


To contribute a translation, follow this guide.

If a language is marked with a * it means, you can contribute something, and it needs an update!

👏 Credits

📚 License

Licensed under GPL 3.
Copyright (C) 2023–2024 Johannes Habel

Porn Fetch uses FFmpeg, which is licensed under the GPL license

porn_fetch's People

Contributors

echteralsfake avatar egsago-n avatar omar-st avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

porn_fetch's Issues

where binaries

Why are the binaries in a google drive and not in the release assets?

Missing Error Message

In the Function on Line 1598 is an Error.
def on_video_load_error(self, error_message): # Handle errors, possibly show message to user logger_debug(f"Error loading video: {error_message}") SomeFunctions().ui_popup(QCoreApplication.tr(f"Some error occurred in loading a video. Please report this: {e}", None))

The Function has no param 'e', so it should be changed to something else or {error_message}.
I hope you will be open to Contibution in the Future (didnt found any Info in your Project ^^)

Fail to fetch PH model videos (Rgegex <get_flash> failed)

Hello,

When I try to find all videos of a specific PH model, I enter the model URL (https://www.pornhub.com/model/XXX) and click to find videos, but the program fails after 19 videos.

I tried with 5 models, and that always fails at 19...

Here's the error :
2024-03-08 11:13:39.950434 : ←[96m[DEBUG] : ←[38;2;255;66;0m : Search Limit: 50 ←[0m
Pattern <get_flash> failed
Traceback (most recent call last):
File "main.py", line 253, in run
File "main.py", line 219, in process_video
File "functools.py", line 995, in get
File "phub\objects\video.py", line 575, in author
File "phub\objects\user.py", line 103, in from_video
File "phub\objects\video.py", line 131, in fetch
File "phub\modules\parser.py", line 33, in resolve
File "phub\consts.py", line 95, in wrapper
File "phub\consts.py", line 60, in _throw_re_error
phub.errors.RegexError: Regex <get_flash> failed.

Playlist limit?

There seems to be a max of 50 videos? Result limit only goes up to 200? Up limit to 1000?

translation:en-us to zh-cn and one suggestion

here is the Chinese translation file
en-us to zh-cn.zip
I use some translations from cn. prefix pornhub page

and one suggestion: could you please sort the video number in reverse? Make the mode’s first video numbered with 001,and the newest video has the biggest number, thank you very much🥰

here is the code I got form ChatGPT

    for i, video in enumerate(reversed(list(iterator)), start=1):
          item = QTreeWidgetItem(tree_widget)
          item.setText(0, f"{i}) {video.title}")
          item.setData(0, QtCore.Qt.UserRole, video.url)
          item.setCheckState(0, QtCore.Qt.Unchecked)  # Adds a checkbox
    ```

3.1 build?

3.1 released. No build/actual release?

[Feature Requests] Allow export of URLs from list | | Allow building a larger list with multiple models, searches, etc converged into a list.

Hello,

I just wanted to politely request these two things as features and see if they could be implemented. The exportation of URLs could be from a right click menu or as a button next to the select all (and other) buttons. Potential improvements upon this feature could include formatting and allowing import with duration, model, etc already included using separators in the file to save on network requests.

The second feature would just be allowing for consecutive requests and searches to add to the existing list in the tree (would likely require expanding past 200 available responses in list).

If you hate these ideas then I totally understand but just wanted to offer input on what I think could help make it a more robust software.

Thank you for considering my requests

FFmpeg downloading

When trying to download with ffmpeg enabled this error appears

Traceback (most recent call last):
File "main.py", line 325, in run
File "phub\objects\video.py", line 242, in download
File "phub\modules\download.py", line 104, in FFMPEG
TypeError: sequence item 8: expected str instance, WindowsPath found

HTTPSConnectionPool

Good morning.

I am contacting you to inform you that I often encounter the following error when downloading:
"Segment 72 failed: HTTPSConnectionPool(host='dv-h.phncdn.com', port=443): Max retries exceeded with url: /hls/videos/202203/01/403895761/1080P_8000K_403895761.mp4/seg-72-v1-a1.ts?ttl=1697661737&l=0&ipa=82.64.80.34&hash=5b041f20145cdce36375f15410dc178d (Caused by SSLError(SSLEOFError(8, '[SSL: UNEXPECTED_EOF_WHILE_READING] EOF occurred in violation of protocol (_ssl.c:1006)')))
Retrying to fetch 33 segments".

For information, I set the speed setting to "Usual". It doesn't change anything.

Buffer Overflow (HQPorner / EPorner)

I don't know why this error still happens. If you get it just wait, the video should still be downloaded, but you won't see progress.

Will be fixed in v3.2 (yeah I do some more tests before releasing in the future lmao)

The connection is terminated

版本:Porn_Fetch_2.7
网站:https://cn.pornhub.com/model/carrylight
I get an error after running,Not all of the retrieved videos are displayed.
The error message is as follows:
An error happened. This error will NOT be sent tosentry, to prevent leakingyour account data! ERROR:('Connection aborted.'ConnectionAbortedError(10053,‘你的主机中的软件中止了一个已建立的连接。None, 10053, None))

I thought the network was fluctuating and causing the error when I ran it again,A new error has occurred:
An error happened. Thiserror will NOT be sent to sentry, to prevent leaking
separated with n→
your account data! ERROR: HTTPSConnectionPoolchost=www.pornhub.comel
port-443): Max retries exceeded with url: /webmasters/video_by id?
n.pornhub.coiid=ph5b40ff9241d93 (Caused by SSLError(SSLEOFError 8,'ISSL:UD
UNEXPECTED EOF_WHILE READINGJ EOF occurred in violation of protocol
(ssl.c:1006))1)

There are some issues at present.

Some model links can only get 40 videos.
And if you participate in other people's videos, the videos obtained by the model link will not be the videos uploaded by you but the videos you participated in.
And some duplicate titles will cause the file to be overwritten instead of becoming (1).
The above problem may have scalability issues, such as some non-English titles will not be displayed, such as Russian and Japanese, which will cause the video titles to be repeated and overwrite the previous different videos.(The inability to display does not refer to when the video is obtained, but when it is downloaded locally.)

Error getting Phub playlist

when i try to get a Phub playlist i get the following error

 File "C:\Users\efrax\AppData\Local\Temp\ONEFIL~1\main.py", line 1620, in start_playlist
AttributeError: 'Playlist' object has no attribute 'videos'. Did you mean: 'views'?

Im in 3.3 version

Output Path

Good morning.
I am contacting you to inform you that I often encounter the following error.
When in "Output Path" I enter "D:\Personnel\Documents", the files are downloaded to "D:\Personnel".
If I put "D:\Personal", the files are downloaded to "D:".

I am using Windows version 2.9.

Connection Error

Appea mistaker,requests.exceptions.ConnectionError: ('Connection aborted.', ConnectionResetError(10054, '远程主机强迫关闭了一个现有的连接。', None, 10054, None))

Unsupported Distribution notice on Arch-based distros

Currently the installer gives a notification of "unsupported distribution" on EndeavourOS (which I use) based on the operating system name being "endeavouros" instead of "arch linux". However, this software would definitely also build successfully on other Arch-based distros.

My suggestion is that it case match the names of EndeavourOS, Manjaro, Garuda, and any other common Arch-based distros to be "arch linux". This is probably also the case for Ubuntu-based distros (Kubuntu, Mint, PopOS, etc), and other distros where the upstream is supported but downstream uses a different host name.

I can confirm that the repo builds fine on a vanilla arch VM, so I know it would also work on my EndeavourOS machine. Fundamentally, I think the best solution is not to query if the OS is named "arch linux" but to query if the package manager is pacman, but just case matching the distro name would resolve my issue.

Allow for custom attempt limit

WARNING:phub.core:Call failed: ConnectionError(ProtocolError('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))). Retrying (attempt 1/4)

the attempts are 4, before it aborts. There should be an option to allow for custom attempt limit.

Question about the tests

Hi,
In your test file you point out that with a delay of .2 seconds, the client crashes.
I haven't been able to replicate the error, mass downloading with no delay works fine for me. Can you provide a traceback?

Also, video.hotspots are now a map object. You can get them back to a list by generating them :)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.