-
-
Save ninjamar/bf76adcca78e66153068a155766c4a97 to your computer and use it in GitHub Desktop.
import re | |
import requests | |
user = 'ninjamar' | |
r = requests.get(f'https://scratch.mit.edu/users/{user}') | |
c = ''.join([i.decode().strip() for i in r.iter_lines()]) | |
iscratcher = re.compile("<span class=\"group\">Scratcher</span>") | |
isscratchteam = re.compile("<span class=\"group\">Scratch Team</span>") | |
isnewscratcher = re.compile("<span class=\"group\">New Scratcher</span>") | |
if iscratcher.search(c): | |
print(f'{user} is a scratcher') | |
elif isscratchteam.search(c): | |
print(f'{user} is on the scratch team') | |
elif isnewscratcher.search(c): | |
print(f'{user} is a new scratcher') |
wow thanks!
your welcome
hey, I have one question:
c = ''.join([i.decode().strip() for i in r.iter_lines()])
how would this be in JS?
in nodejs or browser js?
nodejs 14
import fetch from "node-fetch"
console.log("starting");
(async () => {
const user = "god286";
const r = await fetch(`https://scratch.mit.edu/users/${user}`);
const c = (await r.text()).trim();
const iscratcher = new RegExp('<span class="group">Scratcher</span>');
const isscratchteam = new RegExp('<span class="group">Scratch Team</span>');
const isnewscratcher = new RegExp('<span class="group">New Scratcher</span>');
if (iscratcher.test(c)) {
console.log(`${user} is a scratcher`);
} else if (isscratchteam.test(c)) {
console.log(`${user} is on the scratch team`);
} else if (isnewscratcher.test(c)) {
console.log(`${user} is on the scratch team`);
} else {
console.log(iscratcher)
console.error(iscratcher.test(c), isnewscratcher.test(c), isscratchteam.test(c))
}
})();
doesn't seem to work.. why?
you need to iterate over EACH line and trim each line rather than the whole text. then turn this array into 1 string
I'm going to do that later
ok
Doesn't work 😭
import fetch from "node-fetch";
console.log("starting");
(async () => {
const user = "god286";
const r = await fetch(`https://scratch.mit.edu/users/${user}`, {
headers: {
"User-Agent": "Mozilla 5.0",
},
});
const c = await r.text();
let split = c.split("/n");
for (let index = 0; index < split.length; index++) {
split[index] = split[index].trim();
}
const iscratcher = new RegExp('<span class="group">Scratcher</span>');
const isscratchteam = new RegExp('<span class="group">Scratch Team</span>');
const isnewscratcher = new RegExp('<span class="group">New Scratcher</span>');
iscratcher.test(split);
if (user.search(iscratcher)) {
console.log(`${user} is a scratcher`);
} else if (user.search(isscratchteam)) {
console.log(`${user} is on the scratch team`);
} else if (user.search(isnewscratcher)) {
console.log(`${user} is a new scratcher`);
} else {
console.error(
iscratcher.test(split),
isnewscratcher.test(split),
isscratchteam.test(split)
);
}
})();
yay. please credit me with a link to this gist
argh... as soon as I thought I ported it to JS it decides to call everyone a scratcher
why are you doing user.search
? i think this evaluated to if undefined. you need to use split.search/test instead.
elif isnewscratcher.search(c): print(f'{user} is on the scratch team')```
what
what
lol ops
TypeError: split.test is not a function
TypeError: split.search is not a function
isscratcher.search(split)
TypeError: isScratcher.search is not a function
don't worry I've switched to JSDom, thanks for your help though!! python seems quite cool for stuff!
ok. i think it might be isscratcher.test
import fetch from "node-fetch";
console.log("starting");
(async () => {
const user = "god286";
const r = await fetch(`https://scratch.mit.edu/users/${user}`, {
headers: {
"User-Agent": "Mozilla 5.0",
},
});
console.log(r.ok)
const c = await r.text();
let split = c.split("/n");
for (let index = 0; index < split.length; index++) {
split[index] = split[index].trim();
}
const isScratcher = new RegExp('<span class="group">Scratcher</span>');
const isScratchTeam = new RegExp('<span class="group">Scratch Team</span>');
const isNew = new RegExp('<span class="group">New Scratcher</span>');
isScratcher.test(split);
if (isScratcher.test(split)) {
console.log(`${user} is a scratcher`);
} else if (isScratchTeam.test(split)) {
console.log(`${user} is on the scratch team`);
} else if (isNew.test(split)) {
console.log(`${user} is a new scratcher`);
} else {
console.log("nothing found")
}
})();
gives "nothing found"..?
The code doesn't seem to be replacing all occurrences of \n
,\t
,' ' with ``
wow thanks!