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:
| #!/bin/bash | |
| # ---------------------------------------------------------------- | |
| # MQTT Configuration values | |
| # Note: these values can either be defined in the environment, or | |
| # in the raspotify conf file (/etc/raspotify/conf on Raspberry Pi OS) | |
| # | |
| # - LIBRESPOT_MQTT_HOST: the MQTT broker host/ip where events should be published | |
| # - LIBRESPOT_MQTT_TOPIC: topic where events will be published | |
| # |
| // NOTE: filenames hardcoded! | |
| const got = require('got') | |
| const csv = require('csv') | |
| const fs = require('fs') | |
| async function fetchGoogleBookId(isbn) { | |
| const queryUrl = `https://www.googleapis.com/books/v1/volumes?q=isbn:${isbn}` | |
| const response = await got(queryUrl) | |
| const json = JSON.parse(response.body) |
| static EVILoggingCallback s_callback = nil; | |
| #pragma mark - | |
| void EVILog(EVILogLevel level, NSString *fmt, ...) | |
| { | |
| va_list ap; | |
| va_start(ap, fmt); | |
| if(s_callback) |
| - (void)start:(NSString *)queueItemId | |
| { | |
| // ... | |
| EVILog(EVILogLevelInfo, @"started playing %@", queueItemId); | |
| // ... | |
| } |
| @implementation AppDelegate | |
| - (void)applicationDidFinishLaunching:(NSNotification *)aNotification | |
| { | |
| // ... | |
| EVIRegisterLoggingCallback(^(EVILogLevel level, NSString *message) { | |
| NSLog(@"EVIStreamer (%@): %@", EVILogLevelString(level), message); | |
| }); | |
| // ... | |
| } |
| extern void EVILog(EVILogLevel level, NSString *fmt, ...); |
| typedef NS_OPTIONS(NSInteger, EVILogLevel) | |
| { | |
| EVILogLevelError, | |
| EVILogLevelWarning, | |
| EVILogLevelInfo, | |
| EVILogLevelDebug, | |
| }; | |
| typedef void(^EVILoggingCallback)(EVILogLevel level, NSString *message); |
| clang hi.c -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk -o hi | |
| where -isysroot parameter is discovered with: | |
| xcrun --sdk macosx10.9 --show-sdk-path | |
| --sdk parameter possibilities: | |
| thaddeus@pegasus:~$ xcodebuild -showsdks | |
| OS X SDKs: |
| BTPactolaNotificationRequest *request = [[BTPactolaNotificationRequest alloc] init]; | |
| request.deviceIdentifier = @"123456"; | |
| request.title = @"My App" | |
| request.message = @"Something Happened!" | |
| [request sendRequest]; |