I hereby claim:
- I am philgruneich on github.
- I am philgruneich (https://keybase.io/philgruneich) on keybase.
- I have a public key ASCImpS5AkiYRlekKl0e5xDWhf7uKDFxUjYlcA7aBcsOEQo
To claim this, I am signing this object:
I hereby claim:
To claim this, I am signing this object:
| Array.from(document.querySelectorAll('article.player')).forEach((player) => { | |
| const age = +player.querySelector('.general .first-col li:nth-child(2)').textContent.substr(5, 2); | |
| const rx = /(\d+)[^\d]*(\d+)?/; | |
| const skills = player.querySelector('.skills-bar'); | |
| const aim = skills.querySelector('li:first-child .visual').textContent.trim().match(rx); | |
| const handling = skills.querySelector('li:nth-child(3) .visual').textContent.trim().match(rx); | |
| const quickness = skills.querySelector('li:nth-child(5) .visual').textContent.trim().match(rx); | |
| const determination = skills.querySelector('li:nth-child(6) .visual').textContent.trim().match(rx); | |
| const awareness = skills.querySelector('li:nth-child(7) .visual').textContent.trim().match(rx); | |
| let player_skills = { |
| var request = new XMLHttpRequest(); | |
| var counter = 0; | |
| var limit = 40; // Trains 40 times | |
| var counterFunction = function() { | |
| request.abort(); | |
| request.open('POST', '/game/player/' + glb2.player.playerId + '/pickup_join', true); | |
| request.onload = function() { | |
| if (request.status >= 200 && request.status < 400) { | |
| if (!!+request.responseText) ++counter; | |
| if (counter >= limit) window.clearInterval(interval) |
| # coding: utf-8 | |
| import reminders | |
| import sys | |
| import dialogs | |
| import webbrowser | |
| from urllib import quote | |
| def completeReminder(): |
| # coding: utf-8 | |
| import dialogs | |
| import keychain | |
| import console | |
| import cPickle | |
| from urllib import quote, unquote | |
| class NoConfigError (Exception): pass | |
| class MissingConfigError (Exception): pass |
| # coding: utf-8 | |
| import keychain | |
| import console | |
| from urllib import quote, unquote | |
| keychain.set_password('MovieDB', 'API', console.input_alert('Insert your MovieDB API key', '', keychain.get_password('MovieDB', 'API'))) | |
| keychain.set_password('Airtable', 'API', console.input_alert('Insert your Airtable API key', '', keychain.get_password('Airtable', 'API'))) | |
| keychain.set_password('Airtable', 'Movie Diary', console.input_alert('Insert your Airtable database ID', '', keychain.get_password('Airtable', 'Movie Diary'))) | |
| keychain.set_password('Airtable', 'Movie Diary Table', quote(console.input_alert('Insert the name of your Airtable table', '', unquote(keychain.get_password('Airtable', 'Movie Diary Table'))))) |
| #!/usr/bin/env/python2 | |
| # coding: utf-8 | |
| import requests | |
| import json | |
| import appex | |
| import dialogs | |
| import re | |
| import datetime | |
| import keychain |
| # coding: utf-8 | |
| # This script downloads and opens a Gist from a URL in the clipboard. | |
| # It's meant to be put in the editor's actions menu. | |
| # | |
| # It works with "raw" and "web" gist URLs, but not with gists that | |
| # contain multiple files or non-Python files. | |
| # | |
| # If a file already exists, a dialog is shown that asks whether the | |
| # new file should be renamed or replaced. |
| # coding: utf-8 | |
| import requests | |
| import photos | |
| from PIL import Image, ImageEnhance | |
| import StringIO | |
| import appex | |
| import console | |
| import json | |
| import keychain |
| javascript:(function() {var tumblr=document.querySelector("meta[name='twitter:app:url:iphone']").getAttribute('content');if (tumblr.match(/^tumblr:\/\/x-callback-url\/blog\?.*/)) window.location=tumblr;})(); |