Metadata-Version: 2.4
Name: hotdreams
Version: 0.0.2
Summary: Library for getting educative url video's
Home-page: https://github.com/reinanbr/hotdreams
Author: Reinan Br
Author-email: slimchatuba@gmail.com
License: BSD v3
Keywords: video link api porn
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: requests
Requires-Dist: mechanicalsoup
Requires-Dist: bs4
Requires-Dist: requests-html
Requires-Dist: lxml-html-clean
Requires-Dist: kitano>=0.0.8.5
Requires-Dist: cloudscraper
Dynamic: author
Dynamic: author-email
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: keywords
Dynamic: license
Dynamic: license-file
Dynamic: requires-dist
Dynamic: summary

 <div align='center'>

 <img  height='200px' width='460px' src='https://raw.githubusercontent.com/reinanbr/hotdreams/main/img/logo.jpeg'>

<h1>Hot Dreams</h1>

<p>A Python library for scraping video metadata 🍑 (title, duration, thumbnail, preview, views, rating...) from several adult video sites — built for bots, apps and other services.</p>

<a href='https://github.com/reinanbr/hotdreams/actions/workflows/ci.yml'><img alt="CI" src="https://github.com/reinanbr/hotdreams/actions/workflows/ci.yml/badge.svg"></a>

<br/>
<a href='https://pypi.org/project/hotdreams/'><img src='https://img.shields.io/pypi/v/hotdreams'></a>
<a href='#'><img alt="PyPI - Downloads" src="https://img.shields.io/pypi/dm/hotdreams"></a>
<img alt="PyPI - License" src="https://img.shields.io/pypi/l/hotdreams?color=orange">
<img alt="GitHub Pipenv locked Python version" src="https://img.shields.io/github/pipenv/locked/python-version/reinanbr/hotdreams">

<!-- redes sociais -->
<br/>
<a href='https://instagram.com/reysofts/'><img src='https://shields.io/badge/insta-reysofts-darkviolet?logo=instagram&style=flat'></a>
</div>

<br>

<a href="https://www.buymeacoffee.com/ReinanBr" target="_blank"><img height='30px' widht='100px' src="https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png" alt="Buy Me A Coffee" style="height: 30px !important;width: 100px !important;" ></a>

<hr>

## Table of contents

- [Installation](#installation)
- [Quickstart](#quickstart)
- [Custom User-Agent and proxies](#custom-user-agent-and-proxies)
- [Supported sites](#supported-sites)
- [Examples](#examples)
- [Changelog](CHANGELOG.md) / [Fix history](fixed.md)
- [License](#license)

<hr>

## Installation

```sh
pip install hotdreams
```

Requires Python 3.11+.

## Quickstart

```py
from hotdreams import pornhub as ph

result = ph.search_porn('lorena aquino')
print(result.len_videos, 'videos found')

for video in result.videos:
    print(video.title, video.url)
```

Every site module exposes the same shape: `search_porn(query, ...)` returns a `DataVideos` object
(`.videos`, `.len_videos`, `.len_pages`, ...), and most modules also expose `get_video_embed(url)`
for fetching a single video's embed data and suggestions. See [Examples](#examples) below for the
full output of each site.

<hr>

## Custom User-Agent and proxies

By default every site module ships with its own working headers. If you need to override the
User-Agent (e.g. to look like a different browser) or route requests through a proxy (e.g. to
avoid IP-based rate limiting), call these once, before or after importing the site modules you
plan to use — they apply to every site the lib supports:

```py
import hotdreams

hotdreams.set_user_agent('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36')

hotdreams.set_proxies(http='http://user:pass@host:port', https='http://user:pass@host:port')

# ... use the lib normally
from hotdreams import pornhub as ph
ph.search_porn('lorena aquino')

# to stop using the proxy
hotdreams.clear_proxies()
```

`set_user_agent`/`set_proxies` retroactively update sites already imported, and also apply to any
site module imported afterwards, so the order of imports doesn't matter.

<hr>

## Supported sites

| site         | data video | preview | embed url video | sugest. embed url's video | videos per page |
|--------------|:----------:|:-------:|:----------------:|:-------------------------:|:----------------:|
| [pornone](#pornone)             | ✅ | x  | ✅ |    | 36 |
| ~~spankbang~~ (blocked by Cloudflare) | ✅ | ✅ | ✅ | ✅ | 98 |
| [noodlemagazine](#noodlemagazine) | ✅ | ✅ | ✅ | ✅ | 24 |
| [ukdevilz](#ukdevilz)           | ✅ | x  | ✅ |    | 15 |
| [tnaflix](#tnaflix)             | ✅ | ✅ | ✅ | ✅ | 60 |
| playvids                       |    |    |    |    |    |
| [xvideos](#xvideos)             | ✅ | x  | ✅ | x  | 27 |
| [pornhub](#pornhub)             | ✅ | ✅ | ✅ | ✅ | 22 |
| ma6tube                        |    |    |    |    |    |
| eponer                         |    |    |    |    |    |
| upornia                        |    |    |    |    |    |

And sites from <b>OnlyFans</b> leaks:

| site         | data video | preview |
|--------------|:----------:|:-------:|
| [nudes7](#nudes7)             | ✅ | x  |
| [viralpornhub](#viralpornhub) | ✅ | ✅ |

<img src='https://getdatausers.000webhostapp.com/index.php?file=views_hotdreams'>

<br>
Please, <a href="https://github.com/reinanbr/hotdreams" alt="github hotdreams">fork-me</a>.

<br>
<br>
<b><a href='https://github.com/reinanbr/hotdreams/blob/main/fixed.md' title='list of versions and you fix on'> version's fix</a></b>

<hr>

# Examples

<!-- ### SpankBang
```py

>>> from hotdreams import spankbang as sb

>>> vds = sb.search_porn('lorena aquino')

>>> vds

SpankBang(
    sucess="True",
    query="lorena%20aquino",
    len_videos=195, 
    len_pages=2, 
    videos_per_pages=97, 
    ping=3.68935227394104, 
    url_base="https://spankbang.com", 
    url_search="https://spankbang.com/s/lorena%20aquino/1/?o=trending", 
    videos=[
        spankbang_video(
            site_name="SpankBang", 
            title="lorena aquino slave los monsta bbc", 
            time="358 min", 
            page_number=1, 
            url="https://spankbang.com/6971t/video/lorena+aquino+slave+los+monsta+bbc", 
            url_font="https://spankbang.com/s/lorena%20aquino/1/?o=trending", 
            thumbnail="https://tbi.sb-cd.com/t/10506737/1/0/w:800/t1-enh/lorena-aquino-slave-los-monsta.jpg",
            views="150K",
            views_int=150000,
            rating="99%",
            rating_int=99,
            date_upload="1 year",
            date_upload_seconds=1645519768.9531095,
            duration_seconds=21480,
            preview="https://tbv.sb-cd.com/t/10506737/1/0/td.mp4",
            indice=0), 
        ...
```

<hr>
 -->

## pornhub

### search

```py
>>> from hotdreams import pornhub as ph

>>> ph.search_porn('milf big ass',page_limit=8)
```

<details>
<summary>Output</summary>

```py
PornHub(
    sucess=True,
    query="milf%20big%20ass",
    len_videos=404, 
    len_pages=8, 
    videos_per_pages=50, 
    ping=22.36020064353943, 
    url_base="https://pornhub.com", 
    url_search="https://pornhub.com/video/search?search=milf%20big%20ass&page=1", 
    videos=[
        pornhub_video(
            title="College Classmate Came to my Room to do Homework", 
            time="12:37", 
            url="https://pornhub.com/view_video.php?viewkey=63dd8219f21c4", 
            url_font="https://www.pornhub.com/video/search?search=milf+big+ass&page=1", 
            thumbnail="https://di.phncdn.com/videos/202302/03/424743701/original/(m=eafTGgaaaa)(mh=EkAOT4sQQJxduqfM)12.jpg",
            site_name="PornHub",
            page_number=1,
            views="14.7M views",
            rating="89%",
            date_upload="6 days ago",
            preview="https://dw.phncdn.com/videos/202302/03/424743701/180P_225K_424743701.webm?ttl=1678145366&ri=256000&rs=1000&ipa=177.107.51.78&hash=faba555e5dbad0e12209740f1d6eba36",
            indice=0), 
```
</details>

### Embed

```py
>>> from hotdreams import pornhub as ph

>>> ph.get_video_embed('https://pt.pornhub.com/view_video.php?viewkey=ph62d65cfe4d0f0')
```

<details>
<summary>Output</summary>

```py
    EmbedVideoPornHub(
        title="(Watch This) Thick Ass Teacher Makes Student CUM IN HER! | Jessica Jax Fucks Young Guy", 
        time="None", 
        url="https://pt.pornhub.com/embed/ph62d65cfe4d0f0", 
        thumbnail="https://di.phncdn.com/videos/202207/19/412021581/thumbs_62/(m=eaAaGwObaaaa)(mh=gyLTsR8eonGxy24f)12.jpg", 
        views="3.5M Visualiz.", 
        time_published="None",
        rating="91%",
        duration_seconds=1280,
        likes=None,
        upload_date="7 meses atrás",
        person="None",
        len_videos_sugestions=50,
        videos_sugestions=[
        pornhub_video(
            title="Eu e minha amiga da faculdade fazendo um trabalho de casa diferenciado.", 
            time="12:37", 
            url="https://pornhub.com/view_video.php?viewkey=63dd8219f21c4", 
            url_font="https://pt.pornhub.com/view_video.php?viewkey=ph62d65cfe4d0f0", 
            thumbnail="https://di.phncdn.com/videos/202302/03/424743701/original/(m=eafTGgaaaa)(mh=EkAOT4sQQJxduqfM)12.jpg",
            site_name="PornHub",
            page_number=0,
            views="14.8M Visualiz.",
            rating="89%",
            date_upload="6 dias atrás",
            preview="https://dw.phncdn.com/videos/202302/03/424743701/180P_225K_424743701.webm?ttl=1678149883&ri=256000&rs=1000&ipa=191.185.78.35&hash=0ad33ce746a369b243fd0451fec4dbb4",
            indice=0), 
```
</details>

<hr/>

## pornone

### search

```py
>>> from hotdreams import pornone as pn

>>> vds = pn.search_porn('lorena aquino',page_limit=2)

>>> vds
```

<details>
<summary>Output</summary>

```py
pornone(
    query="lorena+aquino", 
    len_videos=72, 
    len_pages=2, 
    videos_per_pages=36, 
    ping=3.0705974102020264, 
    url_base="https://pornone.com", 
    url_search="https://pornone.com/search/?q=lorena+aquino&sort=relevance&filter=&page=1", 
    videos=[
        pornone_video(
            site_name="pornone", 
            title="Lorena Aquino Anal Total!", 
            time="25:17", 
            page_number=1, 
            url="https://pornone.com/brazilian/lorena-aquino-anal-total/276822039/", 
            url_font="https://pornone.com/search/?q=lorena+aquino&sort=relevance&filter=&page=1", 
            thumbnail="https://th-eu4.pornone.com/t/39/276822039/d48.jpg",
            stats="   12,780    38mo ago    100%  ",
            duration=1517,
            indice=0), 
        ...
```
</details>

<hr/>

## XVideos

### search

```py
>>> from hotdreams import xvideos as xv

>>> xv.search_porn('lorena aquino',page_limit=2)
```

<details>
<summary>Output</summary>

```py
XVideos(
    sucess=True,
    query="lorena%20aquino",
    len_videos=54, 
    len_pages=2, 
    videos_per_pages=27, 
    ping=2.265279531478882, 
    url_base="https://www.xvideos.com", 
    url_search="https://www.xvideos.com/?k=lorena%20aquino&p=1", 
    videos=[
        xvideos_video(
            title="Delicious busty loves blowjob and asshole 11 min", 
            time="11 min", 
            url="https://www.xvideos.com/video64901459/delicious_busty_loves_blowjob_and_asshole", 
            url_font="https://www.xvideos.com/?k=lorena%20aquino&p=1", 
            thumbnail="https://img-cf.xvideos-cdn.com/videos/thumbs169ll/04/fd/48/04fd48c36a72dd911b19bfe31b61876b-1/04fd48c36a72dd911b19bfe31b61876b.23.jpg",
            site_name="XVideos",
            page_number=1,
            indice=0), 
        ...
```
</details>

### embed

```py
>>> from hotdreams import xvideos as xv

>>> xv.get_video_embed('https://www.xvideos.com/video58733211/gali_diva_hot_sex_with_her_boyfriend')
```

<details>
<summary>Output</summary>

```py
    EmbedVideoXVideos(
        title="Gali Diva hot sex with her boyfriend", 
        time="None", 
        url="https://www.xvideos.com/embedframe/58733211", 
        thumbnail="https://img-cf.xvideos-cdn.com/videos/thumbs169ll/56/b5/73/56b573929854d1fca43884c894292d29/56b573929854d1fca43884c894292d29.28.jpg", 
        views="None", 
        time_published="None",
        duration_seconds=664,
        likes=None,
        person="None",
        len_videos_sugestions=0,
        videos_sugestions=None)
```
</details>

<hr/>

## ukdevilz

### search

```py
>>> from hotdreams import ukdevilz as uk

>>> vds = uk.search_porn('lorena aquino',page_limit=2)

>>> vds
```

<details>
<summary>Output</summary>

```py
ukdevilz(
    query="lorena+aquino", 
    len_videos=30, 
    len_pages=2, 
    videos_per_pages=15, 
    ping=2.1073954105377197, 
    url_base="https://ukdevilz.com", 
    url_search="https://ukdevilz.com/video/lorena+aquino?p=1", 
    videos=[
        ukdevilz_video(
            site_name="ukdevilz", 
            title="Lorena aquino white bubble butt sluts 2 ai enhanced video", 
            time=" 27:40", 
            page_number=1, 
            url="https://ukdevilz.com/watch/-209942790_456240637", 
            url_font="https://ukdevilz.com/video/lorena+aquino?p=1", 
            thumbnail="https://i.mycdn.me/getVideoPreview?id=2684034943497&idx=10&type=39&tkn=CzOYkDH_q-ldERSRuTGCyLKm85c&fn=vid_l&c_uniq_tag=ItwI2ATuwsYFuaz3EQKbLK2v4ueO-rHoABJMWYSudaM",
            stats=" 1.11K",
            duration=1660,
            indice=0), 
        ...
```
</details>

<hr>

## tnaflix

### search

```py
>>> from hotdreams import tnaflix as tn

>>> vds = tn.search_porn('lorena aquino',page_limit=2)

>>> vds
```

<details>
<summary>Output</summary>

```py
tnaflix(
    query="lorena+aquino", 
    len_videos=120, 
    len_pages=2, 
    videos_per_pages=60, 
    ping=5.709991693496704, 
    url_base="https://tnaflix.com", 
    url_search="https://www.tnaflix.com/search.php?tab=videos&what=lorena+aquino&category=&sb=relevance&su=anytime&sd=all&dir=desc&page=1", 
    videos=[
        tnaflix_video(
            site_name="tnaflix", 
            title="Lorena Aquino and Marcelinha Moraes Hot part4", 
            time="6:07", 
            page_number=1, 
            url="https://tnaflix.com/babe-videos/Lorena-Aquino-and-Marcelinha-Moraes-Hot-part4/video1430774", 
            url_font="https://www.tnaflix.com/search.php?tab=videos&what=lorena+aquino&category=&sb=relevance&su=anytime&sd=all&dir=desc&page=1", 
            thumbnail="https://img.tnastatic.com/a16:8q80w300/205/14/30/1430774/thumbs/5.jpg",
            views="6,132",
            rating="88%",
            date_upload="8.8 year's ago",
            duration=367,
            preview="https://sl205.tnaflix.com/14/30/1430774/trailer.mp4?secure=074fe97a886337701b912",
            indice=0),
        ...
```
</details>

### Embed

```py
>>> from hotdreams import tnaflix as tn

>>> embed_data = tn.get_video_embed('https://www.tnaflix.com/big-boobs/MILG-LATINA-ESPERTA-Gali-Diva/video7957213')

>>> embed_data
```

<details>
<summary>Output</summary>

```py
 EmbedVideotnaflix(
        title=" MILG LATINA ESPERTA - Gali Diva", 
        time="None", 
        url="https://player.tnaflix.com/video/7957213", 
        thumbnail="https://img.tnastatic.com/a16:8q80w300/206/15/76/1576707/thumbs/5.jpg", 
        views="1,736", 
        time_published="None", 
        len_videos_sugestions=16, 
        videos_sugestions=[
        tnaflix_video(
            title="MILG LATINA ESPERTA - Gali Diva", 
            time="31:41", 
            url="https://tnaflix.com/big-boobs/MILG-LATINA-ESPERTA-Gali-Diva/video7957213", 
            url_font="https://www.tnaflix.com/big-boobs/MILG-LATINA-ESPERTA-Gali-Diva/video7957213&autoPlay=1", 
            thumbnail="https://img.tnastatic.com/a16:8q80w300/104/79/57/7957213/thumbs/10.jpg",
            site_name="tnaflix",
            page_number=0,
            views="4,108",
            rating="94%",
            date_upload="4.3 month's ago",
            duration=1901,
            duration_seconds=1901,
            preview="https://sh104.tnaflix.com/79/57/7957213/trailer.mp4?se=1678117333&ss=5c439028a3f8b6c4e1bc9fec65a4a079",
            indice=0), 
```
</details>

<hr>

<!-- 
### spankbang

```py
>>> from hotdreams import spankbang as sb

>>> embed_data = sb.get_video_embed('https://spankbang.com/4b5uc/video/lorena+aquino')

>>> embed_data

    EmbedVideoSpankBang(
        title=Lorena aquino, 
        time=26:07, 
        url=https://vdownload-14.sb-cd.com/7/2/7239252-480p.mp4?secure=jzztPrBpX-BWs59AyiV_vw,1674891264&m=14&d=3&_tid=7239252, 
        thumbnail=https://tbi.sb-cd.com/t/7239252/7/2/w:300/t6-enh/lorena-aquino.jpg, 
        views=16,713 visualizações, 
        time_published=2 years, 
        len_videos_sugestions=48, 
        videos_sugestions=[
        spankbang_video(
            site_name="SpankBang", 
            title="Jenna Presley hot girl", 
            time="2 min", 
            page_number=None, 
            url="https://spankbang.com/dlju/video/jenna+presley+hot+girl", 
            url_font="https://spankbang.com/4b5uc/video/lorena+aquino", 
            thumbnail="https://tbi.sb-cd.com/t/634458/6/3/w:800/t6-enh/jenna-presley-hot-girl.jpg",
            stats=" 5.4K 93% 6 years   ",
            duration=120,
            indice=0),
        ...


``` -->

## noodlemagazine

### search

```py
>>> from hotdreams import noodlemagazine as nd

>>> nd.search_porn('lorena aquino',page_limit=2)
```

<details>
<summary>Output</summary>

```py
NoodleMagazine(
    sucess=True,
    query="lorena%20aquino",
    len_videos=48, 
    len_pages=2, 
    videos_per_pages=24, 
    ping=1.6482410430908203, 
    url_base="https://noodlemagazine.com", 
    url_search="https://noodlemagazine.com/video/lorena%20aquino?p=1", 
    videos=[
        noodlemagazine_video(
            title="Cafetão brasileirinhas naiara, anytha red, july paiva, lorena aquino, tati rio, sheila brown, carol sampaio", 
            time=" 32:50", 
            url="https://noodlemagazine.com/watch/-208980412_456239263", 
            url_font="https://noodlemagazine.com/video/lorena%20aquino?p=1", 
            thumbnail="https://i.mycdn.me/getVideoPreview?id=2878899423824&idx=9&type=39&tkn=OO1Mraql-P2Gzq7lsHFB2sOUcA0&fn=vid_l&c_uniq_tag=IYbYvPydm8Ul5Ev2C4-0jsRoDmLauRvXLmYxu-GotXU",
            site_name="NoodleMagazine",
            page_number=1,
            views=" 1.89K",
            duration_seconds=1970,
            indice=0), 
        ...
```
</details>

### embed

```py
>>> from hotdreams import noodlemagazine as nd

>>> nd.get_video_embed('https://noodlemagazine.com/watch/-190558927_456239092')
```

<details>
<summary>Output</summary>

```py
    EmbedVideoNoodleMagazine(
        title="[sexmex] gali diva hot milf (newporn, latin, big tits, ass, blowjob, spanish, teen, milf, mother, sister, anal, porn)", 
        time="None", 
        url="https://nmcorp.video/player/-190558927_456239092?m=af3f0f69ad1abf20d97587c170515f2f", 
        thumbnail="https://p2-86.pvvstream.pro/preview/eAivkKcZHl8ke9AGgtxoNw/-190558927_456239092/sun9-17.userapi.com/z12glz2pKg1psV3kfe3pbNRRIAynap8g6OdHNA/jQxKqgm02N0.jpg", 
        views="None", 
        time_published="None",
        views_int=217289,
        duration_seconds=2554,
        likes=1500,
        upload_date="2020-01-11",
        person="Gali Diva",
        tags="anal, ass, big, big tits, blowjob, brazzers, diva, gali, hot, latin, milf, mother, newporn, sexmex, sister, spanish, teen, tits",
        len_videos_sugestions=24,
        videos_sugestions=[
        noodlemagazine_video(
            title="Sexmex gali diva", 
            time=" 27:09", 
            url="https://noodlemagazine.com/watch/-172454327_456260979", 
            url_font="https://noodlemagazine.com/watch/-190558927_456239092", 
            thumbnail="https://i.mycdn.me/getVideoPreview?id=1786320652880&idx=14&type=39&tkn=67jVd9PgvdjmOg4HIGXNxRaMVTs&fn=vid_t&c_uniq_tag=1WKQjJgtNSNWBmBli-cZkWrC-_FTxsPXUg5049thwok",
            site_name="NoodleMagazine",
            page_number=0,
            views=" 36.47K",
            duration_seconds=1629,
            indice=0), 
        ...
```
</details>

<hr/>

## onlyfans sites

### viralpornhub

```py
>>> from hotdreams.sites.only import viralpornhub as vp

>>> vp.search_porn('mia monroe')
```

<details>
<summary>Output</summary>

```py
viralpornhub@only(
    sucess="True",
    query="mia%20monroe",
    len_videos=24, 
    len_pages=1, 
    videos_per_pages=24, 
    ping=2.7153677940368652, 
    url_base="https://viralpornhub.com", 
    url_search="https://viralpornhub.com/search/mia%20monroe", 
    videos=[
        viralpornhub@only_video(
            title="Mia Monroe Velma Porn Video", 
            time="9:22", 
            url="https://viralpornhub.com/videos/45100/mia-monroe-velma-porn-video/", 
            url_font="https://viralpornhub.com/search/mia%20monroe/", 
            thumbnail="https://viralpornhub.com/contents/videos_screenshots/45000/45100/336x189/3.jpg",
            site_name="viralpornhub@only",
            page_number=1,
            views="208",
            rating="100%",
            date_upload="22 hours ago",
            preview="https://viralpornhub.com/get_file/3/952f0963d1d49fcd8c2ea2e297d89f6afc1eec1005/45000/45100/45100_preview.mp4/",
            indice=0), 
        ...
```
</details>

### nudes7

> nudes7.com now permanently redirects to `shareanynudes.com` (same content, new domain and markup); the lib follows this automatically.

```py
>>> from hotdreams.sites.only import nudes7

>>> nudes7.search_porn('mia monroe')
```

<details>
<summary>Output</summary>

```py
nudes7@only(
    sucess=True,
    query="mia%20monroe",
    len_videos=20, 
    len_pages=None, 
    videos_per_pages=20, 
    ping=0.9403104782104492, 
    url_base="https://shareanynudes.com/", 
    url_search="https://shareanynudes.com/search/mia%20monroe/", 
    videos=[
        nudes7@only_video(
            title="Mia Monroe Sucks Then Gets Stuffed Onlyfans Video Leaked", 
            time="10:03", 
            url="https://shareanynudes.com/video/mia-monroe-sucks-then-gets-stuffed/", 
            url_font="https://shareanynudes.com/search/mia%20monroe/", 
            thumbnail="https://shareanynudes.com/contents/videos_screenshots/18000/18881/320x180/1.jpg",
            site_name="nudes7@only",
            page_number=1,
            views="2.0K",
            indice=0), 
        ...
```
</details>

<hr>

## License

BSD 3-Clause — see [LICENSE](LICENSE).
