Question sorting posts on coomer.party by type?

re3gewrgwergtwer gtew

Bathwater Drinker
Aug 25, 2022
27
2,924
597
0fya082315al84db03fa9bf467e3.png
hi i was wondering if there was a way to sort posts of a creator on coomer.party by type (video, photo, text, audio, etc.) instead of checking thousands of posts to find the type of content i'm looking for.
thanks!
 
  • Like
Reactions: Basil4

heyitsathrowaway222

Diamond Tier
May 27, 2022
31
953
1,052
0fya082315al84db03fa9bf467e3.png
I really hope they add a gallery function where you could view all media from a creator and sort by size, file type, etc. I appreciate that they archive all that content, but with the way a lot of OF creators post to their wall it makes it immensely time consuming to work out if there's any good content there at all or if it's just 2sec clips and tease pics.
 
Last edited:

heyitsathrowaway222

Diamond Tier
May 27, 2022
31
953
1,052
0fya082315al84db03fa9bf467e3.png
I did come up with a kind of work around. If you're a local storage lad just rip the coomer with
Please, Log in or Register to see links and images
, you can sort by file type, size, date at your will once you've downloaded the files. Not as convenient but for as long as it takes to download the pics and clips just delete them if you don't want them
 

DeadMeatFAP

Lurker
Jun 22, 2022
6
13
78
0fya082315al84db03fa9bf467e3.png
I was just about to post this question, Following thread as this is the biggest downside to coomer. I won’t even check them half the time because of this.
 

fefeos

Lurker
Jun 4, 2024
1
2
16
0fya082315al84db03fa9bf467e3.png
There's this I found which deletes anything that isn't a video from your view. Besides that no.





// ==UserScript==
// name Filter Videos
// @namespace Violentmonkey Scripts
// Match https://*.coomer.party/*/user/*
// Match https://*.kemono.party/*/user/*
// Match https://*.
Please, Log in or Register to see links and images

// Match https://*.
Please, Log in or Register to see links and images

// grant GM_getValue
// grant GM_setValue
// version 2.03
// author -
// @description 6/21/2023, 11:18:54 PM
// LICENSE MIT
// ==/UserScript==

async function querySelectorAsync(element, selector) {
return await new Promise(resolve => {
let elm = element.querySelector(selector);
if(elm) return resolve(elm);

const observer = new MutationObserver(_ => {
elm = element.querySelector(selector);
if(elm) {
resolve(elm);
observer.disconnect();
}
})

observer.observe(document.body, {
childList: true,
subtree: true
})
})
}

async function hasVideo(postUrl) {
// Check if the result has been cached, return cache if yes
let cache = await GM_getValue(postUrl);
if(cache !== undefined) return cache;

return new Promise(resolve => {
let request = new XMLHttpRequest();
request.open("GET", postUrl, true);
request.send(null);

request.onreadystatechange = function() {
if(request.readyState === 4) {
let elm = document.createElement("html");
elm.innerHTML = request.responseText;

// If we can find a video tag, then post has video
let res = elm.querySelector("video") !== null;
resolve(res);

// Cache value of this post
GM_setValue(postUrl, res);
}
}
})
}

async function filterVideos() {
// For every post, check the html and if there is no video, then remove post
let posts = [...(await querySelectorAsync(document, ".card-list__items")).children];
for(let post of posts) {
let postUrl = (await querySelectorAsync(post, "a")).href;
hasVideo(postUrl).then(res => {
if(!res) post.remove();
})
}
}

(async() => {
let filterBtn = document.createElement("button");
filterBtn.textContent = "Filter Videos";
filterBtn.onclick = function(e) {
// Prevent redirection
e.preventDefault();
// Remove the button to prevent spam
filterBtn.remove();
// Filter videos
filterVideos();
}

let searchInputForm = await querySelectorAsync(document, "form");
searchInputForm.appendChild(filterBtn);
})()