divsel

/ emotes /


touch index.html;for f in e/*; do echo "<a href=\"https://divsel.neocities.org/e/$(basename $f)\"><img src=\"$(basename $f)\" alt=\"$(basename $f)\"></a>" >> index.html; done

This is a page I assembled with that line after using the code at the bottom of the page in the Discord console to generate wget commands to get all of these...

1F0.webp 3D_dolphin.gif 45degrees.webp 64dd.webp 90degrees.webp aaaa.webp aesthetic_controller.webp AiWat.gif aliens.webp alyx.webp anceCatNuk.webp angery.webp angreally.webp angryblob.gif angryBork.webp angrysun.webp ankye.webp areyouserious.webp askubuntu.webp astrocity.webp awaiiGalaxyHear.webp awaiistarge.webp aww~1.webp awwyeah.gif banana~1.gif banhammer.webp barthigh.webp beevee.webp bender.webp bento~1.webp BestFinalFantasy.webp betasaur.webp bingus.webp birbdanceparty.gif Birb.gif birbhappybop.gif birbhappydance.gif birbwave.gif bisexualflag.webp bitch.webp BlackMage.gif blobpray.webp bluemacaron.webp blueneonheart.webp BodyPillow.gif boneyboi.webp boonboi.webp boowomp.webp boowu.webp bo.webp bps.webp bruhcat.webp bulmafu.webp bustspin.gif bust.webp caco.webp cactuar.webp Capcuck.gif cascadia.webp casino.webp cassette.webp catnekowant.gif CatRoll.gif char.webp cheep.webp cheersbeer.gif chefs_kiss.webp chikatrauma.webp choccymilk.webp chokio.webp CH_PatZenitsu.webp CH_PeepoWeird.webp CH_PepeAngryHead.webp CH_Pepebruh.webp CH_PepeCalling.webp CH_PepeChilling.webp CH_PepeClown.webp CH_PepeCoffeeDepressed.webp CH_PepeConfused.webp CH_PepeCoolNerd.webp CH_PepeCringe.webp CH_PepeCryCute.webp CH_PepeCryingSoWhat.webp CH_PepeCry.webp CH_PepeCute~1.webp CH_PepeCute.webp CH_PepeDead.webp CH_PepeDisabled.webp CH_PepeDistorted.webp CH_PepeEpicCry.webp CH_PepeEvil.webp CH_PepeExit.webp CH_PepeFatEgg.webp CH_PepeFU.webp CH_PepeGay.webp CH_PepeGunLeft.webp CH_PepeGunRight.webp CH_PepeHmm~1.webp CH_PepeKiller.webp CH_PepeKingWeird.webp CH_PepeKnifeKill.webp CH_PepeKnight.webp CH_PepeLegs.webp CH_PepeLoveKing.webp CH_PepeLove.webp CH_PepeLul.webp CH_PepeModBan.webp CH_PepeNotes.webp CH_PepeNo.webp CH_PepeOmgGimmie.webp CH_PepePoggies.webp CH_PepeRoastedBread.webp CH_PepeSadge.webp CH_PepeSadLove.webp CH_PepeSalute.webp CH_PepeScared.webp CH_PepeShhh.webp CH_PepeSimp.webp CH_PepeSip~1.webp CH_PepeSip.webp CH_PepeSith.webp CH_PepeSleepy.webp CH_PepeStare.webp CH_PepeThanos.webp CH_PepeThinking.webp CH_PepeWatching.webp CH_PepeWeebs.webp CH_PepeWeeb.webp CH_PepeWhy.webp CH_PepeWide1.webp CH_PepeWide2.webp CH_PepeWide3.webp CH_PepeWide4.webp CH_PepeWizard.webp CH_PepeWoah.webp CH_PepeWow.webp CH_PepeWtfCute.webp CH_PepeWTF.webp CH_PepeYay.webp CH_PepeYes.webp CH_PikaGun.webp CH_PingSnake.webp CH_Pls.webp CH_PogYou.webp CH_PressFButton.webp CH_RageCry.webp CH_RemPout.webp CH_RemRamKiss1.webp CH_RemRamKiss2.webp Christmastree.gif christtt.webp CH_SadCat.webp CH_VerifiedTickCool.gif CH_VerifiedTickLightPink.gif CH_VerifiedTickLightPurple.gif CH_VerifiedTickLime.gif CH_VerifiedTickPink.gif CH_VerifiedTickPurple.gif CH_VerifiedTickRed.gif CH_VerifiedTickSuccess.gif CH_VerifiedTickYellow.gif CH_Vibe.gif CH_Walter.gif CH_WhatSpin.gif CH_Wheee.gif CH_Wine.gif CH_WinterCozyFire.gif CH_WumpusDance.gif CH_WumpusRainbow.gif CH_WumpusSadCry.gif CH_WumpusThumbsUp.gif CH_WumpusTongue.gif CH_Yay.gif CH_YodaDrinking.gif CH_Yoshi.gif clap~1.gif cleverthonk.webp clippy.webp cloudeyes.webp clownboy.webp column.webp ConcernFroge.webp considerthis.webp console_controller.webp cooldoggo.gif coolskull.gif cosmicatsmile.webp couchio.webp craig.webp crouchio.webp crying.gif crying.webp cryman.webp cursed.webp customsprite.webp cuteblush.gif cuttlefish.webp dabio_world.webp dab.webp danmason.webp DarkFlameMaster.gif dcolon.webp ddrupthis.gif derpyoshi.webp DespairHide.webp dino_cheer_prune.gif disappointedmole.webp DiscoDoge.gif dispumpking.webp doge.webp dolphinlaugh.gif Dorime.webp doug.webp DragonBall01.gif emetStare.webp emoji_180.webp emoji_49.webp emyea.webp equip.webp excitewave.gif exhaustedYoshi.webp expand.webp expluigi.webp expmario.webp famicom.webp fatyosh.webp faye.webp FeelsStrongMan.webp FeelsWowMan.webp filters.webp fireball.gif fistcurl.webp flandersmug.webp floppydiscspin.gif flushed_block.webp flushedorb.webp frank.webp frog_cry.webp gachigasm.webp gameboyadvance.webp gameboycolor.webp gameboy.webp gamecube.gif gamecube.webp gayreznor.webp genderfluid.webp GentleLuigi.webp gg_smirk.gif ghost2.gif ghosthalloween.webp giggle_cute.webp gingerale.webp gingerjake.webp github.webp git.webp gnomeparty.gif gnome.webp gnu.webp GODLUIGI.webp gokunice.gif goku_no.webp goku_yes.webp golangvim.webp gomba.webp grabL.webp grabR.webp grumpymog.webp gunL.webp gunR.webp hachaawhat.webp Haha.webp Hahoo.webp hammer~1.webp handsup.webp happyatrval.webp happychamp.webp happyflappy.webp har.webp Haudi.webp hee.webp heh.webp help.webp HER.webp hidethepain.webp hinking_yshtol.webp hollow.webp hot.webp hypnotoad.webp ightpinkheartspi.webp imcry.webp inputa.webp inputb.webp inputx.webp inputy.webp invader.webp i.webp jackiechan.webp jazz.webp Ji.gif kamer.webp KannaBear.webp Kannaowo.gif KannaSip.gif kappa.webp kawaiipizza.webp kdeplasma.webp kekw~1.webp kekw.webp KEKW.webp kekww.webp kek_you.webp kubuntu.webp lakka.webp laliho.webp larry.webp lesbian_flag.webp lewd.webp lgbuntu.webp libretro.webp lightpinkheartspin.webp light_theme.webp linuwu_mint.webp lollipoppink.webp lollipoppixels.webp lol.webp longneck.webp ltt.webp lubuntu.webp lul.webp lux.webp madman.webp magnify.webp mammamia.webp manjaro.webp menoheard.webp Meteor.gif miku.webp mikypink.webp mildpanic.webp milkwebkinz.webp mint.webp mong_us_twer.webp monkaGlass.webp monkaHmm.webp monkaNuke.webp monkapensive.webp monkaR.webp monkaSauce.webp Moog.gif msnblush.webp mwee.webp myst~1.webp myst1.webp myst.webp NAF.webp nathan.webp nekowow.webp nikestatue.webp nintendoswitch.webp Nintendrone.gif NO_block.webp NoctChoco.gif nonbinary.webp noping.webp noshoo.webp notdoingit.webp nothingpersonnel.webp nothing.webp nst.webp nuke.webp nut.webp nyarch.webp ohemgee.webp ohno.webp omegalul.webp omgosh.webp onfett.webp onkaHm.webp oof.webp oooh.webp oo.webp opensuse.webp OtisJudge.webp OtisWave.webp ov.webp oweaHear.webp owoCat.webp owoid.webp OwOThink.webp pandapolice.webp pandavampire.webp partyparrot.webp pat.webp peachmilk.webp peeeka.webp peekban.webp peepog.webp peepoShy.webp pepe_animated_cry.gif PepeClown.webp pepecri.webp pepega.webp pepehalloween.webp pepehands.webp Pepehands.webp pepelaugh.webp PepeWhale.gif pikapalm.webp PikaPika.gif pinkflowers.webp pinkmacaron.webp piracybad.webp pizzaheart.webp pizzainmilk.webp plant.webp plscat.webp pogcat.webp PogChamp.webp pogstolfo.webp pogU.webp pog.webp pokerface.webp pop_os.webp porygon.webp pumpkinjackolantern.webp purplecrystalgem.webp purpleneonheart.webp pvot.webp quin.webp r_360hear.gif r_chaingri.gif r_charm.gif r_chromehear.gif r_colum.gif r_crystal.gif r_david.gif recycle~1.webp Rember.webp ResidentBourm.webp retrogameboy.webp r_flower.gif r_fullhear.gif r_heartcar.gif r_interne.gif r_jewe.gif r_kawai.gif r_nic.gif roggie_pensive.webp roghu.webp r_pain.gif r_paraso.gif r_questio.gif r_rose.gif r_sparkhear.gif r_triphear.gif r_uz.gif r_vaporfl.gif r_vibi.gif r_wav.gif Rydia.webp Sabin.webp sad~1.webp sailormad.webp Sakaguchi.webp Santareindeer.gif ShadowNiceCock.webp shiro.webp shrek.webp shruggie.webp shrug.webp skeletonthumbsup.webp sleepymelody.webp slysmile.webp smhnowordswth.webp Smiling.webp smug.webp sonicnice.webp Squall.webp steveyikes.webp strip.webp SXF_Laugh.webp SYamiPai.webp Tabby.webp tape.webp tCavemanDanc.webp Terra.webp texas.webp thiccbulbasaur.webp thinksmart.webp thistbh.webp Thonking.webp thurston.webp Tidus.webp Tired.webp toenail.webp Tohru.webp tommy.webp TowaYab.webp trans.webp tunes.webp ucces.webp ud2.webp umr.webp urprisedsense.webp ustrigh.webp utopiadistrict.webp u.webp uwu.webp vaperror.webp vinyldisc.webp vong.webp Wada.webp WanWan.webp __.webp Wheezecat.webp windows.webp word.webp worry.webp wow.webp w.webp Www.webp y2kgamecontroller.webp yall.webp YokoTaro.webp YoshiBless.webp yoshipsigh.webp YoshiP.webp Yoshithink.webp youths.webp YukkuriFubuki.webp
// Take note of the warning about not pasting things into the console that you don't understand. // Paste this into the Discord console // Then browse discord as normal... Any emote you encounter in chat will be scraped. const chatContent = document.querySelector('div#app-mount') function getCommand(e, fType) { // This is pretty ugly but... return `wget --output-document "${e.alt.slice(1, e.alt.length - 1)}.${fType}" "${e.src.replace('size=96&', '').replace('size=40&', '').replace('size=44&', '').replace('size=20&', '').replace('size=32&', '')}"` } function outputGets(emotes) { let container = document.createElement('div') let fType, node, text for (let e of emotes) { if (e.src.includes('gif')) fType = 'gif' else if (e.src.includes('webp')) fType = 'webp' node = document.createElement('p') text = document.createTextNode(getCommand(e, fType)) node.appendChild(text) container.appendChild(node) } document.querySelector('html').remove() document.appendChild(container) } function removeDuplicates (arr) { const firstPass = [...new Map(arr.map(v => [v.src, v])).values()] return [...new Map(firstPass.map(v => [v.alt, v])).values()] } let emotes = [] const observer = new MutationObserver((mutationsList, observer) => { for(const mutation of mutationsList) { if (mutation.type === 'childList') { mutation.addedNodes.forEach(node => { for (let n of node.getElementsByTagName('img')) { if (n.dataset.type === 'emoji' && !n.src.includes('svg')) { emotes.push(n) console.log("An emote was found.") } } }); } } }); observer.observe(chatContent, { attributes: true, childList: true, subtree: true } ) function finished() { outputGets(removeDuplicates(emotes)) } // When you are finished gathering emotes, type: finished() // This will unmount the app from the browser and replace it with a list of wget commands. Save it, copy them into sh file, run it. // This POC is provided as-is without warranty. // finished()

To be honest, I don't really recommend using this code, not because it doesn't work (at the time of writing this anyway), but because... there isn't much value in downloading every emote that you come across on Discord. You're going to end up with a lot of emotes you don't care about and occasionally some that are offensive. The only way to clear them out is to do it by hand, so... it might just be better to start by hand selecting them to start with.

There are other neat things you can do with the MutationObserver in Discord though... For example this code will remove the placeholders for any messages that come from blocked users, making it as if blocked users were not present at all.

const chatContent = document.querySelector('div#app-mount') for (let div of document.querySelectorAll('div[role=article]')) { for (let d of div.getElementsByTagName('div')) { for (let cls of d.classList) { if (cls.includes('blocked')) { div.style.display = 'none' } } } } const observer = new MutationObserver((mutationsList, observer) => { for (const mutation of mutationsList) { if (mutation.type === 'childList') { mutation.addedNodes.forEach(node => { for (let n of node.getElementsByTagName('div')) { for (let cls of d.classList) { if (cls.includes('blocked')) { div.style.display = 'none' } } } }); } } }); observer.observe(chatContent, { attributes: true, childList: true, subtree: true } )