Skip to content

Instantly share code, notes, and snippets.

View alanhamlett's full-sized avatar

Alan Hamlett alanhamlett

View GitHub Profile
"""
wakatime.geocoding_utils
~~~~~~~~~~~~~~~~~~~~~~~~
Utils to get location from ip address.
"""
import traceback
import flag # https://pypi.org/project/emoji-country-flag
@alanhamlett
alanhamlett / image_utils.py
Last active September 24, 2022 08:07
Utility functions to resize, make square, and optimize (pngquant) images using Python
from io import BytesIO
from subprocess import PIPE, Popen
from typing import Optional
from PIL import Image, ImageFile, UnidentifiedImageError
from PIL.Image import DecompressionBombError
SUPPORTED_IMAGE_FORMATS = ["PNG", "JPEG", "JPEG2000"]
@alanhamlett
alanhamlett / logger.py
Created September 6, 2022 00:21
WakaQ example worker error log handler
from logging import getLogger, ERROR, Formatter, Filter
from logging.handlers import WatchedFileHandler
from wakatime import app
from wakatime.background import wakaq
TASK_LOG_FORMAT = '[%(asctime)s] %(hostname)s %(levelname)s in %(task)s args=%(task_args)s kwargs=%(task_kwargs)s retry=%(task_retry)s: %(message)s'
class TaskFilter(Filter):
@alanhamlett
alanhamlett / processHeartbeatsIntoDurations.js
Last active September 19, 2023 20:12
Turn an array of heartbeats into durations by combining heartbeats that are within Keystroke Timeout minutes from each other.
/*
BSD 3-Clause License
Copyright (c) 2023 Alan Hamlett.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
@alanhamlett
alanhamlett / wakatime-admin-__init__.py
Created November 30, 2018 00:11
Flask-Admin Example (replace dash with forward slash in file names)
# -*- coding: utf-8 -*-
"""
wakatime.admin
~~~~~~~~~~~~~~
Flask-Admin.
"""
from .views import admin
@alanhamlett
alanhamlett / oauth_example_decorator.py
Created July 12, 2018 02:22
OAuth permission decorator code snippet from WakaTime blog post
""" Example for Blog Post:
https://wakatime.com/blog/34-part-3-flask-api-decorators-and-helpers
"""
def oauth(required_scopes=[]):
def wrapper(func):
@wraps(func)
def inner(*args, **kwargs):
# don't check oauth tokens if user already logged in with session cookie
@alanhamlett
alanhamlett / oauth-provider.py
Created January 18, 2017 02:48
WakaTime OAuth Provider Implementation using Flask
# -*- coding: utf-8 -*-
"""
wakatime.oauth.provider
~~~~~~~~~~~~~~~~~~~~~~~
OAuth 2.0 Provider.
"""
from datetime import datetime, timedelta
This file has been truncated, but you can view the full file.
41b5f9baa448533dfd513f4ed1753990f59cc613:workingknowledge
deb7be5e7ca96c5b317b8a0ee13045a00e22bab5:rafaebiel
c528cf77d9cdb4ea14b43aa62cf55044e25d3b4e:kunsitint
0cbcf09868e2ec6b856eee76e7e6a9201cc60ed0:zxcasdQWE!@#
413b6507e26f3fbe388f4f5bc1f5599ff85dec1c:siapatakut
708c503230bb9a2079696386f891899a7fc15ba5:FM95jd01
400945c2ea0fa0179adb232c882fd9d8dec90424:100Senh@
e7880b9ae185f66fdfcc80d71e61154ce705f4ab:om2sanji
d819838e7f3a3d37fdc8dcb5c5cf9409d32bfbaf:bc89mod47a
12ba813567f950658c0151e9b4d2e3dcdccc8d25:fredandleo
@alanhamlett
alanhamlett / bower.json
Created December 14, 2015 21:15
WakaTime's bower.json JavaScript front-end dependencies
{
"name": "wakatime",
"version": "1.0.0",
"private": true,
"ignore": [
".jshintrc",
"**/.*",
"**/*.txt",
"test",
"tests",
@alanhamlett
alanhamlett / requirements.txt
Last active March 21, 2019 00:02
WakaTime's requirements.txt Python dependencies
-e git://github.com/kennethreitz/inbox.py.git@551b4f44b144564504c687cebdb4c543cb8e9adf#egg=inbox
alembic==0.8.3
amqp==1.4.9
anyjson==0.3.3
boto==2.39.0
braintree==3.20.0
cairosvg==1.0.19
celery==3.1.20