/cumg/ - coom.tech

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

Posting mode: Reply

Check to confirm you're not a robot
Drawing x size canvas

Remember to follow the rules

Max file size: 350.00 MB

Max files: 5

Max message length: 4096

Manage Board | Moderate Thread

Return | Catalog | Bottom

Welcome to the /cumg/ board.
This is where technology meets cooming.
Also known as coom.tech.

Expand All Images

(186.42 KB 1055x1500 snis-939.cover.jpg)
/sg/ - Scripting General Anonymous 03/24/2021 (Wed) 04:54:31 [Preview] No. 13
Share and discuss cooming-related scripts. This thread is for those who appreciate small-scale programming. Shell scripts as well as browser userscripts are welcome.

Tips & Tricks: https://coom.tech/index.php?title=Tricks

>Bash Scripting Resources
Bash Hackers Wiki: https://wiki.bash-hackers.org/
Bash Cheat Sheet: https://shellmagic.xyz/
Bash Reference Sheet: http://mywiki.wooledge.org/BashSheet
Bash Programming: http://mywiki.wooledge.org/BashProgramming
Bash Guide: http://mywiki.wooledge.org/BashGuide
Advanced Bash Scripting Guide: https://tldp.org/LDP/abs/html/abs-guide.html
Pure Bash Bible: https://github.com/dylanaraps/pure-bash-bible
Official Bash Manual: https://www.gnu.org/software/bash/manual/bash.html
Bash Cheat Sheet: https://devhints.io/bash

>UserScript Resources
How To Write A UserScript: https://simply-how.com/enhance-and-fine-tune-any-web-page-the-complete-user-scripts-guide
Violentmonkey: https://violentmonkey.github.io/

Anonymous 03/24/2021 (Wed) 05:05:58 [Preview] No.14 del
echo "Hello, World!"

jav script Anonymous 03/24/2021 (Wed) 06:52:20 [Preview] No.15 del
(148.70 KB 1055x1500 sspd-152.cover.jpg)
This is one of the simpler versions of the jav script which takes a video code as parameter and streams the video using mpv. Many derivatives of the original jav shell function were made, but this one is mine.


jav_name() {
if [ -z "$1" ]; then
read name
echo $name

jav_url () {
name="$(jav_name $1)"
links="(curl -s "$(curl -s "https://www2.javhdporn.net/video/$name/" | grep "embedURL" | grep -o "{.*}" | jq '.["@graph"]' | jq -r '.[].embedURL' | sed '/^null$/d' | sed 's/\/v\//\/api\/source\//')" --data-raw 'r=&d=javmvp.com' | jq -r '.data[] | select(.label | contains("720p", "480p","360p")).file' | tail -n1)"
echo "$links"

mpv "$(jav_url $1)"


jav sspd-152

Anonymous 03/24/2021 (Wed) 07:23:34 [Preview] No.19 del
The code tag here is no bueno. It actually corrupted the code by interpreting a $ as a cue to start turning text green, removing the $ in the process. Let's see what happens if I poste a pastebin URL.


Embed Resource - endchan.net Anonymous 03/26/2021 (Fri) 00:45:43 [Preview] No.33 del
I made a userscript for use on endchan /cumg/ to embed pastebins directly on the page like 4chan does. In the future, maybe we could embed more things beyond pastebin.


Anonymous 03/26/2021 (Fri) 19:41:22 [Preview] No.34 del
unfortunately not ideal because pastebin are fucking cucks. it is preferred to post the code directly on the coom.tech wiki and just link to that.

Please throw a post to the Endchan admins telling them about this issue.

Anonymous 03/27/2021 (Sat) 07:17:15 [Preview] No.39 del
>it is preferred to post the code directly on the coom.tech wiki and just link to that.
It's really hard to format code well on the coom.tech wiki. The SyntaxHighlight extension (which comes standard with MediaWiki) needs to be enabled at the very least.


Anonymous 03/28/2021 (Sun) 14:05:39 [Preview] No.40 del
Yeah, I've been doing it in quotes for now but obviously not ideal.
I have no way to contact the wiki host so it's a matter of trying to reach out to him.

I've posted on the discussion page about other stuff, but haven't seen a response yet.

Anonymous 04/01/2021 (Thu) 15:03:53 [Preview] No.43 del
sauc for pic related

Anonymous 04/04/2021 (Sun) 20:17:11 [Preview] No.46 del
It's in the file name.

Anonymous 04/06/2021 (Tue) 01:42:34 [Preview] No.47 del
The wiki admin enabled the <syntaxhighlight> tag.

Anonymous 04/06/2021 (Tue) 19:03:48 [Preview] No.48 del
Where do I get JAV from?

Anonymous 04/29/2021 (Thu) 21:37:04 [Preview] No.54 del
Anyone fixed the script yet?
I'm getting parse errors

Anonymous 05/03/2021 (Mon) 22:56:58 [Preview] No.55 del
Use the script from this pastebin.

endchan isn't good for posting code due to a bug it has as explained in >>19 .

Anonymous 05/04/2021 (Tue) 10:54:05 [Preview] No.56 del
Oh wait, it's really not working. javhdporn.net changes things up to stop people from downloading. This could take some time to figure out.

Anonymous 05/07/2021 (Fri) 10:16:15 [Preview] No.57 del
i will write a bash script to download from iwara.
i used iwara-dl from github before, but it's dead. wget should work fine, right?

Anonymous 05/08/2021 (Sat) 02:39:48 [Preview] No.58 del
>wget should work fine, right?
wget should be fine.

Anonymous 05/08/2021 (Sat) 13:01:37 [Preview] No.59 del
(60.73 KB 434x600 1386775652319.jpg)
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

Anonymous 05/12/2021 (Wed) 23:56:25 [Preview] No.60 del
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
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.

Anonymous 05/15/2021 (Sat) 02:02:41 [Preview] No.61 del
i remember it not working for me, but it works now, so whatever
thanks for pointing me in the right direction

Anonymous 06/13/2021 (Sun) 22:01:22 [Preview] No.63 del
What's a good instagram mirror and is there a userscript to redirect instagram profile links to that site?

Anonymous 01/03/2022 (Mon) 12:24:42 [Preview] No.67 del
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:


Anonymous 01/03/2022 (Mon) 16:03:02 [Preview] No.68 del
Thanks for the links. p good

Anonymous 01/15/2022 (Sat) 00:26:20 [Preview] No.77 del
Test Subject:

Using mitmproxy,
I was able to find the index.m3u8 file, but I don't know how to figure out the URL for it programatically.

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:
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

Anonymous 01/15/2022 (Sat) 01:49:57 [Preview] No.78 del

Anonymous 01/15/2022 (Sat) 23:22:41 [Preview] No.103 del
>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:

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.

Anonymous 01/16/2022 (Sun) 00:01:11 [Preview] No.104 del
>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.


Anonymous 01/17/2022 (Mon) 05:37:40 [Preview] No.123 del
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/

Anonymous 01/19/2022 (Wed) 01:09:38 [Preview] No.141 del

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.

Anonymous 01/19/2022 (Wed) 03:11:35 [Preview] No.142 del

Anonymous 01/20/2022 (Thu) 23:35:10 [Preview] No.146 del
...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.

Anonymous 01/21/2022 (Fri) 02:08:00 [Preview] No.147 del
>UserScript Resources
GM_* API: https://violentmonkey.github.io/api/gm/

Anonymous 01/22/2022 (Sat) 20:35:58 [Preview] No.155 del
This is a repo for collecting various userscripts written by anons.

Anonymous 01/23/2022 (Sun) 11:22:02 [Preview] No.157 del
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 < images.length; i++) {
if(images[i].getBoundingClientRect().y > baseOffset)
return i;

return -1;

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

return (rect.top > (window.innerHeight || document.documentElement.clientHeight)) ||
(rect.bottom < 0)

const markSelected = (i) => {
// if we're above images.length - 1, then
images[selectedIndex].style.border = '';

// update the indices
selectedIndex = i;

images[selectedIndex].style.border = markedBorder;


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

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');
let pageToGoTo = currentPageIndex;

switch(event.key) {
case 'ArrowLeft':
case 'a':
case 'h':
if(pageToGoTo >= 0 && parseInt(links[pageToGoTo]) !== NaN)
window.location = links[pageToGoTo].href;
case 'ArrowRight':
case 'd':
case 'l':
if(pageToGoTo < links.length && parseInt(links[pageToGoTo]) !== NaN)
window.location = links[pageToGoTo].href;
} else {
const imagesPerRow = getImagesPerRow();
switch(event.key) {
case 'ArrowLeft':
case 'a':
case 'h':
markSelected(selectedIndex - 1 >= 0 ? selectedIndex - 1 : selectedIndex);
case 'ArrowRight':
case 'd':
case 'l':
markSelected(selectedIndex + 1 < images.length ?
selectedIndex + 1 :
images.length - 1);
case 'ArrowUp':
case 'w':
case 'k':
markSelected(selectedIndex - imagesPerRow >= 0 ?
selectedIndex - imagesPerRow :
case 'ArrowDown':
case 's':
case 'j':
markSelected(selectedIndex + imagesPerRow < images.length ?
selectedIndex + imagesPerRow :
images.length - 1);
case 'Enter':

Anonymous 01/23/2022 (Sun) 11:35:56 [Preview] No.158 del
pastebin link, because the code block messed up the formatting: https://dpaste.com/2GYCBX6J6

Anonymous 01/23/2022 (Sun) 18:56:18 [Preview] No.160 del
I like how it simultaneously supports:
- Arrow Keys (normies)
- WASD (gamers)
- HJKL (vim users)

Anonymous 01/23/2022 (Sun) 20:00:22 [Preview] No.161 del

Anonymous 03/21/2022 (Mon) 18:33:26 [Preview] No.169 del
hacked together a tiny userscript to automatically reveal nsfw covers on vndb if anyone's interested: https://dpaste.com/9DPDUJWJM

Anonymous 03/30/2022 (Wed) 20:03:22 [Preview] No.174 del
Simple and to the point.
Very nice.

Anonymous 04/07/2022 (Thu) 17:05:24 [Preview] No.179 del
Use your own bibliogram instance and make your own redirect script

Anonymous 04/15/2022 (Fri) 12:24:28 [Preview] No.185 del
>What's a good instagram mirror

Anonymous 06/02/2022 (Thu) 16:42:04 [Preview] No.190 del
Can someone write a script for patreon/fantia that checks if they have a kemono page and adds a link to it?

Anonymous 08/07/2022 (Sun) 03:58:35 [Preview] No.191 del
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


Anonymous 08/11/2022 (Thu) 22:39 [Preview] No.192 del
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?

Top | Return | Catalog | Post a reply