Skip to content

Instantly share code, notes, and snippets.

View kueda's full-sized avatar

Ken-ichi kueda

View GitHub Profile
@kueda
kueda / import-inat-place.rb
Created February 16, 2023 22:56
Ruby script for importing a production iNat place into a local dev environment
slug = ARGV[0]
open( "https://api.inaturalist.org/v1/places/#{slug}" ) do |f|
json = JSON.parse( f.read )["results"][0]
if !json
puts "No results"
exit!
end
if existing = Place.where( name: json["name"] ).exists?
puts "Already exists: #{existing}"
exit!
require "rubygems"
require "rest_client"
require "digest"
require "base64"
site = "https://www.inaturalist.org"
app_id = 'YOUR_APP_ID'
redirect_uri = 'YOUR_REDIRECT_URL' # you can set this to some URL you control for testing
code_verifier = "supersecretverifier"
@kueda
kueda / .block
Last active January 12, 2020 03:40
CNC2017 Species in Common
height: 800
@kueda
kueda / inat-password.py
Created July 31, 2015 22:45
iNaturalist API Resource Owner Password Credentials Flow Example (Python)
import requests
site = "https://www.inaturalist.org"
app_id = 'YOUR APP ID'
app_secret = 'YOUR APP SECRET'
username = 'YOUR USERNAME'
password = 'YOUR PASSWORD'
# Send a POST request to /oauth/token with the username and password
payload = {
@kueda
kueda / img2pdf
Last active February 14, 2024 08:27
OS X bash script that turns a collection of images into an OCR'd PDF
#!/bin/sh
#
# img2pdf
#
# OS X bash script that turns a collection of images into an OCR'd PDF
#
# Adapted from http://apple.stackexchange.com/questions/128384/ocr-on-pdfs-in-os-x-with-free-open-source-tools,
# where it was in turn adapted from
# http://www.morethantechnical.com/2013/11/21/creating-a-searchable-pdf-with-opensource-tools-ghostscript-hocr2pdf-and-tesseract-ocr/
# from http://www.ehow.com/how_6874571_merge-pdf-files-ghostscript.html
@kueda
kueda / esslinger.rb
Last active July 31, 2022 08:32
Script to parse Esslinger's A Cumulative Checklist for the Lichen-forming, Lichenicolous and Allied Fungi of the Continental United States and Canada into machine-readable CSV
#encoding: utf-8
#
# Script to parse Esslinger's A Cumulative Checklist for the Lichen-forming,
# Lichenicolous and Allied Fungi of the Continental United States and Canada
# into machine-readable CSV.
#
# Esslinger's checklist (e.g.
# http://www.ndsu.edu/pubweb/~esslinge/chcklst/chcklst7.htm) is considered
# authoritative for North American lichens, but it's authored with MS Word and
# has incosistent formatting. This script attempts to smooth that out and
@kueda
kueda / gist:a466810f4f5495c43f67
Created October 14, 2014 18:55
curl request to POST and observation to iNaturalist
> curl -H 'Authorization: Bearer MY_ACCESS_TOKEN' \
> --data "observation[species_guess]=test1" \
> --verbose \
> 'https://inaturalist.org/observations.json'
* Adding handle: conn: 0x7fe173818800
* Adding handle: send: 0
* Adding handle: recv: 0
* Curl_addHandleToPipeline: length: 1
* - Conn 0 (0x7fe173818800) send_pipe: 1, recv_pipe: 0
* About to connect() to inaturalist.org port 443 (#0)
@kueda
kueda / time_zones_by_abbreviation.rb
Created June 20, 2014 21:24
Took me a while to figure out how to get at all the time zone abbreviations stored within the TZInfo gem. I'm sure there's a better way, but this works.
abbrevs = {}
TZInfo::Timezone.all.each do |tz|
tz = tz.send(:real_timezone) unless tz.class == TZInfo::Timezone
tzi = tz.send(:info)
offsets = tzi.instance_variable_get(:@offsets)
next if offsets.blank?
offsets.values.each do |offset|
abbrevs[offset.abbreviation] ||= []
abbrevs[offset.abbreviation] << tz.identifier
end
@kueda
kueda / xcode_pending_translations.rb
Created May 19, 2014 21:32
Find strings that need translating in an xcode project.
#!/usr/bin/env ruby
require 'rubygems'
require 'trollop'
require 'nokogiri'
require 'tmpdir'
opts = Trollop::options do
banner <<-EOS
Find strings that need translating in an xcode project.
@kueda
kueda / xibstrings.rb
Created May 19, 2014 21:30
Spit out text from a .xib or .storyboard file as it appears in xcode. Useful for diffing and working with translations.
#!/usr/bin/env ruby
require 'rubygems'
require 'trollop'
require 'nokogiri'
require 'tmpdir'
opts = Trollop::options do
banner <<-EOS
Spit out text from a .xib or .storyboard file as it appears in xcode. Useful
for diffing and working with translations.