Tumgik
#it's like the xkit blacklist tool but for ao3
lilbittymonster · 2 years
Text
*picks through my ship tags on ao3 desktop where my extension has my blacklist saved to mark for later on mobile like I'm going out to forage for mushrooms for my dinner*
2 notes · View notes
dianaburnwood · 1 year
Note
Even if he was canonically asexual, it wouldn't be disrespectful or unethical to ship him.
He's not only not a real person, but, even more importantly: what other fans in your fandom do is not about you. People are allowed to have fun in ways you don't like, as long as everyone stays in their lane and leaves those who don't want to play in the same corner of our sandbox alone.
You have all the tools to avoid seeing things you don't want to see.
Filter tags you don't like, and unfollow or block people who write or share fics or headcanons that annoy you. Don't focus on stuff you hate, but put your time and energy in stuff you like.
You don't have to see things you don't want to see. You don't have to read stuff that hurts you.
Curate your own online experience instead of expecting others to stop enjoying fandom the way they like, just because it doesn't align with your preferences.
There are many headcanons and ideas I personally don't like, but I would never even think of making this someone else's problem. That's what "XKit Revised" for hiding tags and keywords on Tumblr and "AO3 Kudos and Seen History" for hiding fics I don't want to see and "AO3: Fic's Style, Blacklist, Bookmarks" for blocking tags and keywords are for.
Tagging things correctly and not stomping on someone else's sandcastle is the way to go in fandom.
(All instances of "you" are meant as "general you", not meaning you personally.)
^^^
28 notes · View notes
Conversation
Me 99.99% of the time: It is up to teens and young adults to properly curate their own online experiences. Especially as the internet becomes more sterile and the tools to do so become easier and easier to come by, such as ao3's tagging system and xkit's blacklist here on tumblr, it is not up to me to babysit some young person who stumbled onto my (admittedly poorly tagged or organized) Adult Space.
Me when I check my activity and see a 19 year old reblogging half my blog in a go: Shit, fuck, there's kids here act like a fucking adult that knows what the fuck you're doing. I just reblogged a post before and commented how easy it is to steal from Whole Foods and now there's some kid who thinks I'm cool or something?!
6 notes · View notes
shinelikethunder · 5 years
Text
Fandom Userscript Cookbook: Five Projects to Get Your Feet Wet
Target audience: This post is dedicated, with love, to all novice, aspiring, occasional, or thwarted coders in fandom. If you did a code bootcamp once and don’t know where to start applying your new skillz, this is for you. If you're pretty good with HTML and CSS but the W3Schools Javascript tutorials have you feeling out of your depth, this is for you. If you can do neat things in Python but don’t know a good entry point for web programming, this is for you. Seasoned programmers looking for small, fun, low-investment hobby projects with useful end results are also welcome to raid this post for ideas.
You will need:
The Tampermonkey browser extension to run and edit userscripts
A handful of example userscripts from greasyfork.org. Just pick a few that look nifty and install them. AO3 Savior is a solid starting point for fandom tinkering.
Your browser dev tools. Hit F12 or right click > Inspect Element to find the stuff on the page you want to tweak and experiment with it. Move over to the Console tab once you’ve got code to test out and debug.
Javascript references and tutorials. W3Schools has loads of both. Mozilla’s JS documentation is top-notch, and I often just keep their reference lists of built-in String and Array functions open in tabs as I code. StackOverflow is useful for questions, but don’t assume the code snippets you find there are always reliable or copypastable.
That’s it. No development environment. No installing node.js or Ruby or Java or two different versions of Python. No build tools, no dependency management, no fucking Docker containers. No command line, even. Just a browser extension, the browser’s built-in dev tools, and reference material. Let’s go.
You might also want:
jQuery and its documentation. If you’re wrestling with a mess of generic spans and divs and sparse, unhelpful use of classes, jQuery selectors are your best bet for finding the element you want before you snap and go on a murderous rampage. jQuery also happens to be the most ubiquitous JS library out there, the essential Swiss army knife for working with Javascript’s... quirks, so experience with it is useful. It gets a bad rap because trying to build a whole house with a Swiss army knife is a fool’s errand, but it’s excellent for the stuff we're about to do.
Git or other source control, if you’ve already got it set up. By all means share your work on Github. Greasy Fork can publish a userscript from a Github repo. It can also publish a userscript from an uploaded text file or some code you pasted into the upload form, so don’t stress about it if you’re using a more informal process.
A text editor. Yes, seriously, this is optional. It’s a question of whether you’d rather code everything right there in Tampermonkey’s live editor, or keep a separate copy to paste into Tampermonkey’s live editor for testing. Are you feeling lucky, punk?
Project #1: Hack on an existing userscript
Install some nifty-looking scripts for websites you visit regularly. Use them. Ponder small additions that would make them even niftier. Take a look at their code in the Tampermonkey editor. (Dashboard > click on the script name.) Try to figure out what each bit is doing.
Then change something, hit save, and refresh the page.
Break it. Make it select the wrong element on the page to modify. Make it blow up with a huge pile of console errors. Add a console.log("I’m a teapot"); in the middle of a loop so it prints fifty times. Savor your power to make the background wizardry of the internet do incredibly dumb shit.
Then try a small improvement. It will probably break again. That's why you've got the live editor and the console, baby--poke it, prod it, and make it log everything it's doing until you've made it work.
Suggested bells and whistles to make the already-excellent AO3 Savior script even fancier:
Enable wildcards on a field that currently requires an exact match. Surely there’s at least one song lyric or Richard Siken quote you never want to see in any part of a fic title ever again, right?
Add some text to the placeholder message. Give it a pretty background color. Change the amount of space it takes up on the page.
Blacklist any work with more than 10 fandoms listed. Then add a line to the AO3 Savior Config script to make the number customizable.
Add a global blacklist of terms that will get a work hidden no matter what field they're in.
Add a list of blacklisted tag combinations. Like "I'm okay with some coffee shop AUs, but the ones that are also tagged as fluff don't interest me, please hide them." Or "Character A/Character B is cute but I don't want to read PWP about them."
Anything else you think of!
Project #2: Good Artists Borrow, Great Artists Fork (DIY blacklisting)
Looking at existing scripts as a model for the boilerplate you'll need, create a script that runs on a site you use regularly that doesn't already have a blacklisting/filtering feature. If you can't think of one, Dreamwidth comments make a good guinea pig. (There's a blacklist script for them out there, but reinventing wheels for fun is how you learn, right? ...right?) Create a simple blacklisting script of your own for that site.
Start small for the site-specific HTML wrangling. Take an array of blacklisted keywords and log any chunk of post/comment text that contains one of them.
Then try to make the post/comment it belongs to disappear.
Then add a placeholder.
Then get fancy with whitelists and matching metadata like usernames/titles/tags as well.
Crib from existing blacklist scripts like AO3 Savior as shamelessly as you feel the need to. If you publish the resulting userscript for others to install (which you should, if it fills an unmet need!), please comment up any substantial chunks of copypasted or closely-reproduced code with credit/a link to the original. If your script basically is the original with some key changes, like our extra-fancy AO3 Savior above, see if there’s a public Git repo you can fork.
Project #3: Make the dread Tumblr beast do a thing
Create a small script that runs on the Tumblr dashboard. Make it find all the posts on the page and log their IDs. Then log whether they're originals or reblogs. Then add a fancy border to the originals. Then add a different fancy border to your own posts. All of this data should be right there in the post HTML, so no need to derive it by looking for "x reblogged y" or source links or whatever--just make liberal use of Inspect Element and the post's data- attributes.
Extra credit: Explore the wildly variable messes that Tumblr's API spews out, and try to recreate XKit's timestamps feature with jQuery AJAX calls. (Post timestamps are one of the few reliable API data points.) Get a zillion bright ideas about what else you could do with the API data. Go through more actual post data to catalogue all the inconsistencies you’d have to catch. Cry as Tumblr kills the dream you dreamed.
Project #4: Make the dread Tumblr beast FIX a thing
Create a script that runs on individual Tumblr blogs (subdomains of tumblr.com). Browse some blogs with various themes until you've found a post with the upside-down reblog-chain bug and a post with reblogs displaying normally. Note the HTML differences between them. Make the script detect and highlight upside-down stacks of blockquotes. Then see if you can make it extract the blockquotes and reassemble them in the correct order. At this point you may be mobbed by friends and acquaintainces who want a fix for this fucking bug, which you can take as an opportunity to bury any lingering doubts about the usefulness of your scripting adventures.
(Note: Upside-down reblogs are the bug du jour as of September 2019. If you stumble upon this post later, please substitute whatever the latest Tumblr fuckery is that you'd like to fix.)
Project #5: Regular expressions are a hard limit
I mentioned up above that Dreamwidth comments are good guinea pigs for user scripting? You know what that means. Kinkmemes. Anon memes too, but kinkmemes (appropriately enough) offer so many opportunities for coding masochism. So here's a little exercise in sadism on my part, for anyone who wants to have fun (or "fun") with regular expressions:
Write a userscript that highlights all the prompts on any given page of a kinkmeme that have been filled.
Specifically, scan all the comment subject lines on the page for anything that looks like the title of a kinkmeme fill, and if you find one, highlight the prompt at the top of its thread. The nice ones will start with "FILL:" or end with "part 1/?" or "3/3 COMPLETE." The less nice ones will be more like "(former) minifill [37a / 50(?)] still haven't thought of a name for this thing" or "title that's just the subject line of the original prompt, Chapter 3." Your job is to catch as many of the weird ones as you can using regular expressions, while keeping false positives to a minimum.
Test it out on a real live kinkmeme, especially one without strict subject-line-formatting policies. I guarantee you, you will be delighted at some of the arcane shit your script manages to catch. And probably astonished at some of the arcane shit you never thought to look for because who the hell would even format a kinkmeme fill like that? Truly, freeform user input is a wonderful and terrible thing.
If that's not enough masochism for you, you could always try to make the script work on LiveJournal kinkmemes too!
64 notes · View notes
wrangletangle · 6 years
Text
New AO3 Filters \o/
(Sorry for not blogging about these yesterday - xkit finally gave up on me, so my tumblr experience is Worse Than Usual.)
New filters are here, yaaaaay! Let’s talk about them.
What you need to know
The new filters remove most of what you once needed to do in the "Search within results" field. They do both AND searches (Puppies AND Kittens, both are tagged) and NOT searches (PUPPIES NOT KITTENS, first is tagged but second is not). I've seen a couple people asking why there's no OR option (Puppies OR Kittens, at least one is tagged).
There is! It's just not listed in the filters themselves.
To do OR searches, you need to go back to the magic "Search within results" field. It's still there at the bottom of the page.
Let's do a walkthrough. Imagine I want to find Animal Transformation works without graphic sex or violence in them.
Tumblr media
Thinking about this, I realize that limiting my search to General or Teen rated works is probably the most efficient way to get what I want. However, every work can only be tagged with one rating - how do I return results with either of them?
The answer is that I use the old filter_ids trick in the "Search within results" box. I put in the filter IDs for the General and Teen ratings (10 and 11, respectively) with a double pipe || between them, like this:
filter_ids:10 || filter_ids:11
That will limit my results to just G and T rated works. However, I still want Shapeshifters gone. Easy! I add that to the "Tags to Exclude" filter box. (I don’t need a filter ID for exclusion anymore.)
Tumblr media
With a quick press of the "Sort and Filter” button, I'm done! My results are much smaller and more narrowly tailored to my interests now:
Tumblr media
If I wanted to get even fancier, I could choose completed works only, specify the length of the work, remove any fandoms I'm kinda burnt out on, etc. Whatever I want to do to limit myself to looking at mostly works that will appeal to my tastes.
Tumblr media Tumblr media
A caveat: There is no way to get perfect results from filtering. Filtering will always include some things I'm not really a fan of and exclude some things I might have liked. Filtering is limited by how other users tag, and there will never be a perfect consensus between several million people on that. Whatever you do, please don't harass others about their tagging choices. Please skip over their works or use the unofficial blacklist tool instead. The tags just mean "X content is here." They don't mean either you or I will like the work.
603 notes · View notes
shinelikethunder · 7 years
Text
disconnected thoughts on fandom and the indieweb
Recently I discovered the IndieWeb project, and I... think I am a lot more intrigued by it than by other Better Social Media Platform pipe dreams and decentralization projects I’ve seen? Because it’s not a monolithic platform that has to be all things to all people, or even one that has to gain a critical mass of userbase before it’s useful for anything. It’s just a bunch of people, making sites that work for them, and banging out protocols so their sites can talk to each other and hook up to the social-media hangouts du jour.
The basic idea:
- Have a personal website, preferably a personal domain name, that is the hub for your online identity and stuff. Posts, tweets, pictures, links, reading list, events, whatever you’d normally be posting to social media. You host it, you control it, you own it. You tweak it to fit your needs, no Xkit required.
- Once the original archival copy is up on your personal site, cross-post it to whatever social media sites it belongs on. You don’t have to quit your Tumblr habit, or convince your friends to quit theirs, or give up the audience you can reach on a large site.
- Use a pingbacks-on-steroids tool to collect all the responses (likes, reblogs, comments, etc) from the various sites you’ve cross-posted to. Ideally, display them at the bottom of the post back on your website.
As an idea, I like it a lot. In practice, a lot depends on what tools are already available, how useable they are, how capable you are of coding/templating/configuring to fill in the gaps, and how difficult large sites make it to push/pull from them automatically. That’s pretty much what I’m interested in exploring in the near future, for my own use if nothing else. I already have most of my Tumblr content backed up to a Wordpress install on my own shared hosting account, so I’m kinda curious see how much IndieWeb compatibility I can manage using plugins and template tweaks.
Indieweb and fandom:
As a potential tool for fandom to wean ourselves off the various hellsites we’ve inhabited over the years... okay, it’s an interesting thought. One with lots of unanswered questions, but interesting.
Lots of unanswered questions, so the rest of this is going under a cut.
- Upside: I know a lot of older fans are still nostalgic about the early blogosphere and even--heaven forfend--the Geocities days. Many things about them were shit, but the archipelago of personal fan shrines, indie blogs, having a personal site with a personal archive of your work, etc. was awesome. And the “own your own creations” ethos fits in nicely with AO3′s “we have to own the servers” philosophy.
- Enabling factor: Fandom builds and customizes stuff like crazy. Yes, including the younger generations who weren’t around for the “build it yourself” days and seem to think AO3 burst fully formed out of the forehead of a long-lost deity. What, you haven’t noticed that even on a hobbled hellsite like Tumblr, teenagers are using the relative freedom of the theme system to spontaneously rediscover all the sins of Geocities web design? (I rib with affection, as someone who definitely had a page with flaming torch gifs and a sparklecursor back in 2001.) Full, out-of-the-box, point-and-click setup is necessary to get fandom to adopt something in any decent numbers. But once we’re there, a disproportionate number of us start tinkering with anything that’s customizable, and when someone with actual coding skills comes out with a useful tool to supplement missing capabilities, it spreads like wildfire.
- Gaps and directions to expand: Indieweb principles include “scratch your own itches,” so here are my itches, which I’m going to shamelessly project onto fandom at large.
Import--needs rock solid LiveJournal-clone and Tumblr support if your site is to serve as an archive. I don’t know if there even is a working Wordpress plugin to import from LJ or Dreamwidth. The best-supported Tumblr->Wordpress importer is actually better than most standalone Tumblr backup tools, but it still mangles video posts/embeds. It’d also be cool to have import tools for AO3, Deviantart, and other major fanwork repositories.
Once your Tumblr posts are in, there's no way to automate the very first thing I’d want to do upon liberating my data from the vise-like jaws of What Tumblr Wants You To Do With Its Site: separate out posts I created, posts I added comments to, and posts I just shared via reblog. A nice addition would be the ability to copy Tumblr tags to a metadata field that’s separate from Wordpress tags--WP tags tend to be organizational, whereas on Tumblr, tags are often a sidechannel for comments that don’t propagate on reblog, thus filled with all sorts of crap.
On that note, Itch #3 is mass-organization tools. Select all posts that fit certain criteria and do a mass edit on their tags, categories, post types, or other taxonomy data. Lots of fandom folks have years or decades worth of content from various sites, making organizational tasks highly impractical to do manually. I’ve dicked around with a few Wordpress mass-edit plugins, but none of them seemed to work that well.
Not sure how well the existing backfeed tools support Tumblr notes, but for fandom to bite, the Tumblr support oughta be pretty damn slick. And the cross-posting should ideally support all the features of a native Tumblr post, because by god, we will use them, and we will notice if an expected one is missing. I can spot IFTTT cross-posts from AO3 without even reading text, and tbh my eyes usually skip right over them, unfair as that may be.
If this project extends to feed readers/aggregators, the embrace of multi-site cross-posting implies a need for deduplication. Preferably getting rid of Tumblr’s charming “barf the full post back out onto your dashboard every time someone you’re following shares/responds to it” behavior in the process. For fandom use, it’ll need a blacklist feature. And I’d love some more heavy-duty filtering, selective subscriptions (like to just one tag of a blog), creating multiple feeds based on topic or on how much firehose you want...
This may be a personal itch, but at least for personal archiving needs, I’m sick, sick, sick of the recency bias that’s eaten the internet since the first stirrings of Web 2.0. Wikis are practically the only sites that have escaped chronological organization. It would be cool to have easily-manipulated collections with non-kludgey support for series ordering, order-by-popularity, order-by-popularity with a manual bump for posts you want to highlight, hell even alphabetical ordering. None of these things are remotely unsolved problems, but they’re poorly supported on the social-media silos most people’s content lives on these days. Fandom’s suffered from this since at least the days of LiveJournal, which had the ominous beginnings of what’s since become the Tumblr Memory Hole. Relentless chronological ordering + the signal-to-noise ratio of any space with regular social interaction = greatest hits falling down the memory hole unless a community practices extensive manual cataloguing. Hell, LJ fandom did practice extensive manual cataloguing, but even within that silo, there was so much decentralization that content discovery was shit if you didn’t know the right accounts to search through. Like, fuck, at least forums bump threads to the top if they’re still active--LJ and blogs have the same "best conversation evar falls inexorably off the map as new posts are added, no matter how active it is” problem that InsideTheWeb forums did in 1999. (Anyone else remember InsideTheWeb? AKA 13-year-old me’s first experience with platform shutdown, frantic archiving attempts, and massive data loss. Fun times.) Tumblr and Twitter, meanwhile, spam you with duplicates of the original post every time someone you’re following replies to/shares it, a key component of the endless firehose of noise drowning out any attempt to hang on to the signal.
All those itches are things I could probably code myself if I got a stubborn enough bee in my bonnet, which might well happen. On the other hand, I have some deeper doubts, ones that aren’t going to get addressed by Wordpress plugins or shiny backfeed support:
The whole concept of IndieWeb fails to address (and might even worsen) what I suspect is the core dysfunction of social media. Which is the degradation of community spaces, and their replacement with a hopeless snarl where all content lives in individual accounts. There are a lot of weird effects that arise when the “social” sphere is built entirely upon the one-on-one connections created when someone subscribes to another account or gives someone else permission to view their restricted posts. Echo chambers, shame mobs, out-of-context remarks going viral, popular accounts setting off harassment storms whenever they disagree with someone, the difficulty of debunking hoaxes once they’re out in the wild... all of those are either created or made much, much worse by the lack of any reasonable, stable, shared expectation of who a post’s audience is.
Basically, if “own your content and host it on your site” also applies to your comments, interactions, etc, it starts running counter to one of the strengths of the Old Web. Which was community contexts where you explicitly weren’t posting to your own space or addressing everyone who might be looking at the main clearinghouse of all your different stuff. You were posting to the commons shared by a particular group with a particular culture and interests, not all of whom were people you’d necessarily want to follow outside that limited context, some of whom you might disagree with or dislike, but in any case you knew what audience you were broadcasting to. You knew what the conversation was, how similar conversations had gone in the past, and the reputations of all the main participants--not just the ones you yourself would subscribe to and the ones attention-grabbing enough to get shared by the people on your subscription list. And you weren’t spamming all your other acquaintances with chatter on a topic they weren’t interested in.
Shared spaces can also establish whatever social norms they need and moderate accordingly. (Plus, plurality of spaces = plurality of norms for different needs, which would solve a LOT of what’s currently ailing fandom.) Peaceable enforcement of a code of conduct, beyond the “minimum viable standard” sitewide abuse policy, is fundamentally impossible on social media, where individual muting is the closest thing you can get to moderation. That + unstable audience = any social norms that exist are so unenforceable it turns people into frothing shame-mob zealots, ratcheting up the coercive pressure on everyone the more it fails to work on the handful of unrepentant assholes who would’ve been permabanned from any self-respecting forum within a week. Moving onto personal sites with beefed up syndication/backfeed capabilities ain’t gonna fix that. Meanwhile the truly heinous dickweeds who’d ordinarily run afoul of the sitewide abuse policy will have the same capabilities, minus any risk of getting banned.
If there haven’t already been epic drama meltdowns caused by the “reply in your own space by making your own post, which includes a copy of the original post for context” model... it’s only a matter of time. You don’t even need malicious actors, just a human conflict where one party has overprotective subscribers. Or information turns out to be faulty and in need of correction. Or an argumentative type stumbles on the permalink of an acrimonious reply post that was actually resolved amicably several replies downthread. Or someone edits an apology into their controversial post and someone who’s been attacking it refuses to update their copy because tilting at strawmen is more fun. Or someone tries to make an embarrassing post go away by deletion and their co-conversationists don’t cooperate. Tumblr’s “reply by reposting in your own space and adding commentary” system already spawns endless floods of drama and misunderstanding, and that’s a system with some limits on the participants’ control, and relatively disposable accounts/identities if the shit hits the fan.
Basically, I’m all for personal websites as archives of your creations, but seriously dubious of them as archives of your interactions. Especially if the interactions aren’t well-segregated from the regular content feed that goes out to everyone who follows you. Yes, abuses of moderator power when interaction is all taking place on a site the mod controls are a thing. But if those sites are an archipelago of indie spaces rather than a monolithic platform, shitty mods don’t thwart the development of a healthy social ecosystem, they just drive everyone away to a competing space whose mod sucks less.
(Private/access-restricted archives of your interactions might be a compromise? You still have your stuff in case the other site goes down, but it’s not out there replicating the ill effects of the Tumblr reblog-to-respond model.)
Leaving aside all that, the IndieAuth component--using personal sites as stable identities you can log in with--is just as workable for community platforms as it is for cross-blog commenting. Proliferation of unlinkable accounts was one of the downfalls of forums, after all. That said, one potential point of friction is that fandom is far more pseudonym-centric than the devs and tech hobbyists who’ve coalesced around IndieWeb so far. But stable pseuds with years of reputation behind them have social effects that resemble real names more than anything else, so as potential culture clashes go, I’d hope that’s fairly surmountable.
As noted in the musings on LiveJournal archiving above: CONTENT DISCOVERY IS A BITCH IN DECENTRALIZED COMMUNITIES and that’s a major stumbling block for fandom. OTOH, platform-agnostic protocols with customization potential = room for experimentation with independently-run discovery/search/tagging layers. (Life goals: stay uncool enough that my “Like Uber, but for ___” elevator pitch ends up being “It’s like Technorati, but for fanfiction of Kirk drilling Spock.”)
Okay, that’s it, jesus christ it’s time for me to go to bed.
83 notes · View notes