Skip to content

Instantly share code, notes, and snippets.

@patlanio
Created September 20, 2023 05:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save patlanio/0a8c6cf25e0bf5462c65744c1544d7f0 to your computer and use it in GitHub Desktop.
Save patlanio/0a8c6cf25e0bf5462c65744c1544d7f0 to your computer and use it in GitHub Desktop.
Taylor Swift's google puzzle autosolver
// can be improved but I have to sleep
// #yosimeagarrefuerte #taylorswift :(
const answers = [
"SHE WASN'T DOING ANYTHING",
"LONG LIST OF EX LOVERS",
"SWIFTMAS",
"CRYSTAL BLUE SKIES",
"FIFTH ALBUM",
"POP RECORD",
"OCTOBER TWENTY SEVENTH",
"SYDNEY",
"TAYLURKING",
"BUT NOT LIKE THIS",
"SWIFTIES",
"LOVE",
"SHEEP",
"GOT A HAIRCUT",
"SECRET SESSIONS",
"WHAT YOU ARE IS BRAVE",
"AQUAMARINE GREEN",
"THIRTEEN",
"PEN CLICK",
"NICE TO MEET YOU",
"SHE LOST HIM",
"CHAI SUGAR COOKIES 23.1 COULD FINALLY BREATHE",
"GLITCH",
"YES WHALE",
"TOKIO",
"WEDNESDAY",
"NEVER GO OUT OF STYLE",
"GOLF CLUB",
"NEW YORK CITY",
"CANT STOP WONT STOP MOVING",
"WITH SOME OTHER GIRL",
"TAYLORS VERSION",
"THE SUMMER I TURNED RETTY",
"FROM THE VAULT",
"PINK ROSE GARDEN",
"AND I'LL WRITE YOUR NAME",
"LOOSE LIPS SINK SHIPS",
"TWO PAPER AIRPLANES FLYING",
"AND EVERYONE WAS WATCHING",
"SHE'S LIKE OH MY GOD",
"SAGITTARIUS",
"MCMLXXXIX",
"MAKES YOU CLEAN",
"SHE DANCED TO FORGET HIM",
"SEA URCHINS",
"HE DOES IT SO WELL",
"NOW WE GOT PROBLEMS",
"SEAGULL",
"YOU WERE ALL I WANTED",
"MAGIC MADNESS HEAVEN SIN",
"SUMMER FLING",
"BUTTONS",
"SUNGLASSES",
"SIXTY FIVE",
"LOS ANGELES",
"THEY PAID THE PRICE",
"RAINSTORMS",
"EIGHTEENTH FLOOR",
"PEAGCORN",
"ITS A NEW SOUNDTRACK",
"CROSSWORD PUZZLE",
"COME ALONG WITH ME",
"RED LIP CLASSIC",
"I THINK I AM FINALLY CLEAN",
"EVERYTHING AND NOTHING",
"YOU WERE LOOKING AT ME",
"WE BOTH WENT MAD",
"OF KISSES ON CHEEKS",
"BUT SHE FOUND HERSELF",
"MELBOURNE",
"IM JUST GONNA SHAKE",
"IT ALL SEEM SO SIMPLE",
"DARLING IM A NIGHTMARE",
"YOU'RE MY BEST FRIEND",
"TIMING IS A FUNNY THING",
"THE PALM OF YOUR HAND",
"NINETEEN EIGHTY NINE",
"TO WHAT YOU NEED",
"BUT THEY NEVER BLIND ME",
"ELEVATOR BUTTONS",
"MY NAME IS TAYLOR",
"SCREAMS IN SILENT",
"INCREDIBLE THINGS",
"BEAUTIFUL TIME",
"SUNRISE BOULEVARD YELLOW",
"LIKE WE STOOD A CHANCE",
"AND WE RUN",
"BURNING IT DOWN",
]
const answersMap = answers.map((answer) => {
return answer.split(' ').map((word) => {
return word.toLocaleLowerCase().split('').sort().join('')
}).join('').split('').sort((a, b) => a.length > b.length).join('')
})
function findAnswer(hint) {
let answer = hint.sort((a, b) => a.length > b.length).map((word) => {
return word.toLocaleLowerCase().split('').sort().join('')
}).join('').split('').sort((a, b) => a.length > b.length).join('')
console.log("Trying with:", answer)
let index = answersMap.indexOf(answer)
console.log("The answer is", answers[index])
answer = answers[index]
if(!answer) console.info("No answer found with", hint)
return answer
}
function extractLetter(htmlElementWord) {
return htmlElementWord.querySelector('text').getAttribute('alt')
}
const skipButton = document.querySelector('div[aria-label="Skip"]')
const puzzleWrapper = skipButton.nextSibling
const puzzle = puzzleWrapper.firstChild
const puzzleChildren = Array.from(puzzle.children)
const puzzleGroups = puzzleChildren.reduce((groups, child) => {
const className = child.className
if (!groups[className]) {
groups[className] = []
}
groups[className].push(child)
return groups
}, {})
const rawWords = Object.keys(puzzleGroups).map((key) => {
const words = puzzleGroups[key]
return words.map((word) => {
return extractLetter(word)
}).sort((a, b) => a.length > b.length).join('')
})
const answer = findAnswer(rawWords)
const searchField = document.querySelector('textarea[aria-label="Search"]')
if (answer) {
searchField.value = answer
const searchButton = document.querySelector('button[aria-label="Search"]')
searchButton.click()
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment