This gist shows how to create a GIF screencast using only free OS X tools: QuickTime, ffmpeg, and gifsicle.
To capture the video (filesize: 19MB), using the free "QuickTime Player" application:
| local batch = {} | |
| local holes_err = "bad argument #%s to function '%s' (this list doesn't support holes)" | |
| local refill = function (t, ...) | |
| local newn = select('#', ...) | |
| local length = math.max(newn, (t.n or #t)) | |
| for i = 1, length do | |
| t[i] = select(i, ...) |
| # Copyright 2017 Josef N Patoprsty | |
| # | |
| # Permission is hereby granted, free of charge, to any person obtaining a copy | |
| # of this software and associated documentation files (the "Software"), to deal | |
| # in the Software without restriction, including without limitation the rights | |
| # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | |
| # copies of the Software, and to permit persons to whom the Software is | |
| # furnished to do so, subject to the following conditions: | |
| # | |
| # The above copyright notice and this permission notice shall be included in all |
| -- | |
| -- OCR all documents added to a folder | |
| -- | |
| on adding folder items to this_folder after receiving added_items | |
| try | |
| repeat with i from 1 to number of items in added_items | |
| set this_item to item i of added_items | |
| set appName to my getAppName() | |
| tell application appName | |
| activate |
| import socket | |
| import struct | |
| import json | |
| def unpack_varint(s): | |
| d = 0 | |
| for i in range(5): | |
| b = ord(s.recv(1)) | |
| d |= (b & 0x7F) << 7*i | |
| if not b & 0x80: |