/cumg/ - coom.tech

coom.tech - refugee from retarded cuckchan mods. Where technology meets cooming. (NSFW)


New Reply on thread #13
X
Max 20 files0 B total
[New Reply]

[Index] [Catalog] [Banners] [Logs]
Posting mode: Reply [Return]


 >>/57/
i am stuck because the download link doesn't appear in the html page that is downloaded using curl/wget. it appears that the download link is generated with js in the browser and i don't know how to go around this. if you have some ideas - please respond
 >>/57/
 >>/59/
Why re-invent the wheel?
youtube-dl can parse and download from iwara.
If you want to use wget to download then you can use youtube-dl with --get-url flag and pass it to wget.
But if you want to make your own extractor, then you can look up at the extractor and make your own
https://github.com/ytdl-org/youtube-dl/blob/master/youtube_dl/extractor/iwara.py
I'm not sure since I know nothing about python, but it seems to get the video url from iwara API, using JSON.
I think you can parse JSON with jq package.
Here's a Greasemonkey script I wrote that lets you search for a DL Site game on Nyaa in case you're an H game addict like me:

https://github.com/eternalmiko/nyaa_dl_search/blob/main/nyaa_search.js
 >>/56/
Test Subject:
https://www2.javhdporn.net/video/sspd-150/

Using mitmproxy, 
https://mitmproxy.org/
I was able to find the index.m3u8 file, but I don't know how to figure out the URL for it programatically.
https://hls1.gslb.ru/hls/Cen/SSPD-150.mp4/index.m3u8

This m3u8 file contains a list of all the parts that can be downloaded and then concatenated together.
The pattern in this case looks like:
https://hls1.gslb.ru/hls/Cen/SSPD-150.mp4/cdn-1-v1-a1.ts
https://hls1.gslb.ru/hls/Cen/SSPD-150.mp4/cdn-2-v1-a1.ts
https://hls1.gslb.ru/hls/Cen/SSPD-150.mp4/cdn-3-v1-a1.ts
all the way to 554.

Alternatively, you can feed the m3u8 URL directly to mpv to stream the video.

mpv https://hls1.gslb.ru/hls/Cen/SSPD-150.mp4/index.m3u8
 >>/77/
Download and Combine m3u8 Stream with ffmpeg
https://gist.github.com/tzmartin/fb1f4a8e95ef5fb79596bd4719671b5d


ffmpeg -i https://hls1.gslb.ru/hls/Cen/SSPD-150.mp4/index.m3u8 -c copy SSPD-150.mp4
 >>/77/
> I was able to find the index.m3u8 file, but I don't know how to figure out the URL for it programatically.
The devs at javhdporn.net have made it very difficult to inspect the underlying DOM and JS.  
They're using some kind of devtools detector, and 
it's not as easy to disable as it was in this other case:
https://coom.tech/index.php?title=Tricks#Download_Videos_From_Sites_That_Disable_Downloading

One heavy-handed approach to finding the index.m3u8 URL could be to use puppeteer to browse to the page and 
click around while setting up some code to monitor network requests.
https://github.com/puppeteer/puppeteer
https://pptr.dev/#?product=Puppeteer&version=v13.0.1&show=api-class-httprequest
 >>/77/
> mpv https://hls1.gslb.ru/hls/Cen/SSPD-150.mp4/index.m3u8

Out of curiosity, I tried:
mpv ">https://hls1.gslb.ru/hls/Cen/ADN-219.mp4/index.m3u8
and it didn't work.
I don't have mitmproxy setup on the laptop I'm currently using, but 
I wonder what the right m3u8 URL is for ADN-219.
My guess is that the "Cen" part will be different, but everything else would follow the same structure.

https://www2.javhdporn.net/video/adn-219/
Here's a thread in /bant/ that has a list of UserScripts for 4chan.
This doesn't include /cumg/ work, but it's nice to know what else exists.

Original: https://boards.4chan.org/bant/thread/14297446
Archive: https://archived.moe/bant/thread/14297446/
 >>/104/
> https://hls1.gslb.ru/hls/Cen/ADN-219.mp4/index.m3u8

I had a little bad luck.
I guessed the correct URL for ADN-219, but 
the Russian server didn't have the data, so 
it couldn't play it.
I tried ADN-115, and it worked.
We may have found a working pattern for the Russian servers.


mpv https://hls1.gslb.ru/hls/Cen/ADN-115.mp4/index.m3u8


Replace "ADN-115" with the code of the video you want, and
this will work for any video that's hosted on Russian servers.
However, many of their recent uploads are not on their Russian servers.
Similar patterns probably exist for their Dutch, French, and German servers, but
I'll leave that as an exercise for the reader.
If this gets automated,
it'll probably be abused again, because
c00mers don't know when to stop.

PS:  I think the "Cen" stands for censored.
 >>/141/
Test Subject:
https://www2.javhdporn.net/video/natr-673/

It's not going to be that easy for newer uploads.
I tried to find the URLs for NATR-673 which was
uploaded on January 9, 2022, and 
it's available on DE, NL, and FR servers.
I tried the NL servers, and I found 4 files.
One master.m3u8 and 3 index*.m3u8 files for different resolutions.

Master https://www41.akamai-cdn-content.com/hls/tysxfic6ys6oj6cdadgbjw2ioqjuushxic4l2x7iz,jeyxolv7cdnjh2qtjdq,abyxolv7cdoj6lnrmuq,2ayvolv7cdls6dro2qa,.urlset/master.m3u8?client=88.208.39.96
360p https://www41.akamai-cdn-content.com/hls/tysxfic6ys6oj6cdadgbjw2ioqjuushxic4l2x7izjeyxolv7cdnjh2qtjdq/index-v1-a1.m3u8
720p https://www41.akamai-cdn-content.com/hls/tysxfic6ys6oj6cdadgbjw2ioqjuushxic4l2x7izabyxolv7cdoj6lnrmuq/index-v1-a1.m3u8
1080p https://www41.akamai-cdn-content.com/hls/tysxfic6ys6oj6cdadgbjw2ioqjuushxic4l2x7iz2ayvolv7cdls6dro2qa/index-v1-a1.m3u8

The newer files don't follow the simple pattern that the older files do.
 >>/78/
> ffmpeg
...tries to download the video parts as fast as possible which makes it hit the Russian server's rate limit often.
ffmpeg will still power through the errors and eventually finish the download, but
it would be nice to slow ffmpeg down to stay under their rate limit.
There doesn't seem to be an easy way to do that though.
https://github.com/ytdl-org/youtube-dl/issues/29360
I wrote a userscript for gelbooru, so I can move around and open images with the keyboard, to enhance my cooming™ experience. Any feedback is welcome.

// UserScript
// @name        Keyboard controls for Gelbooru
// @namespace   Booru
// @match       https://gelbooru.com/index.php?page=*
// @grant       none
// @version     1.0
// @author      anon
// @description 
// /UserScript

const markedBorder = 'solid black 2px';

const search = document.getElementById('tags-search');
const images = document.getElementsByClassName('thumbnail-preview');
const imageHeight = images[0].clientHeight;

let selectedIndex = 0;

const getImagesPerRow = () => {
    const baseOffset = images[0].getBoundingClientRect().y;

    for(let i = 1; i  baseOffset)
            return i;
    }

    return -1;
};

const isOutsideViewPort = (img) => {
    const rect = img.getBoundingClientRect();

    return (rect.top > (window.innerHeight  document.documentElement.clientHeight)) 
        (rect.bottom  {
    // if we're above images.length - 1, then 
    images[selectedIndex].style.border = '';

    // update the indices
    selectedIndex = i;

    images[selectedIndex].style.border = markedBorder;

    if(isOutsideViewPort(images[selectedIndex]))
        images[selectedIndex].scrollIntoView(false);
};

const openSelected = () => {
    const link = images[selectedIndex].getElementsByTagName('a')[0].href;
    window.open(link);
};

document.addEventListener('keydown', (event) => {
    if(document.activeElement ! search) {
        if(event.ctrlKey) {
            const paginator = document.getElementById('paginator');
            const links = Array.from(paginator.children);

            // there's only one b element
            const currentPageIndex = links.findIndex(elem => elem.tagName = 'B');
            console.log(currentPageIndex);
            let pageToGoTo = currentPageIndex;

            switch(event.key) {
                case 'ArrowLeft':
                case 'a':
                case 'h':
                    pageToGoTo--;
                    if(pageToGoTo >= 0 && parseInt(links[pageToGoTo]) !== NaN)
                        window.location = links[pageToGoTo].href;
                    break;
                case 'ArrowRight':
                case 'd':
                case 'l':
                    pageToGoTo++;
                    if(pageToGoTo = 0 ? selectedIndex - 1 : selectedIndex);
                    break;
                case 'ArrowRight':
                case 'd':
                case 'l':
                    markSelected(selectedIndex + 1 = 0 ?
                        selectedIndex - imagesPerRow :
                        selectedIndex);
                    break;
                case 'ArrowDown':
                case 's':
                case 'j':
                    markSelected(selectedIndex + imagesPerRow < images.length ?
                        selectedIndex + imagesPerRow :
                        images.length - 1);
                    break;
                case 'Enter':
                    openSelected();
                default:
                    break;
        
This isn't really cooming-related but I started working on a script that lets you put messages into images and then read them out again on soyjak.party

https://dpaste.org/9qFW5
I currently use tweetdeck to export my twitter lists manually which I then can then use with gallery-dl to archive accounts.  Is there a way to do this without tweetdeck?  

The only way I've found is by requesting data from twitter itself, but the problem is the account names are replaced with a string of numbers at the end (their account id).  You can only get the proper name by manually loading each url and waiting for the redirect.  There must be a better way than these two methods surely?
thumbnail of HomeMade Porn Videos.jpg
thumbnail of HomeMade Porn Videos.jpg
HomeMade... jpg
(454.34 KB, 1134x1600)
HomeMade Porn Videos and Movies Sex on XxxZon.com, This Where True Girls Having Real Sex With Men at Home Made. Free XXX Clips to Watch Online in High Quality HD Online Sex Tube.
https://xxxzon.com/category/homemade-porn-videos/

Post(s) action:


Moderation Help
Scope:
Duration: Days

Ban Type:
CAPTCHA unavailable


New Reply on thread #13
Max 20 files0 B total