Skip to content

Instantly share code, notes, and snippets.

View natesymer's full-sized avatar

Nathaniel Symer natesymer

View GitHub Profile
asdf
@natesymer
natesymer / metadata.h
Last active August 29, 2015 14:15
retrieve metadata from mp3s
#import <Foundation/Foundation.h>
@interface metadataRetriever : NSObject
+ (NSDictionary *)metadataForFile:(NSString *)filePath;
+ (NSData *)id3TagForFile:(NSString *)filePath;
@end
@natesymer
natesymer / example.rb
Created September 25, 2014 19:27
Adds default messages to Exception subclasses.
require "./with_message.rb"
MyError = StandardError.with_message "This is my error message"
raise MyError # the raised error's message is "This is my error message"
raise MyError, "Something else" # the raised error's message is "Something else"
@natesymer
natesymer / MapViewRenderer.h
Created June 24, 2014 16:00
Render maps in iOS 7 +
#import <MapKit/MapKit.h>
typedef void (^MapViewRendererCallback)(UIImage *image);
@interface MapViewRenderer : NSObject
+ (void)renderMapRect:(MKMapRect *)mapRect withSize:(CGSize)size completion:(MapViewRendererCallback)block;
@end
@natesymer
natesymer / Rakefile
Last active August 29, 2015 14:01
Generic Rakefile for building, installing, and pushing gems.
#!/usr/bin/env ruby
s = eval(File.read(Dir.glob("*.gemspec").first))
app_name = s.name
gem_name = "#{s.name}-#{s.version}.gem"
task :clean do
`[ -f #{gem_name} ] && rm #{gem_name}`
end
@natesymer
natesymer / dpkg-scanpackages.rb
Created March 9, 2014 23:06
A ruby rewrite of dpkg-scanpackages. It's faster, has no dependencies, and you can embed it into your Rails/Sinatra app!
#!/usr/bin/env ruby
require "digest/md5"
module DPKG
def self.control(deb_package_path)
return `ar p #{deb_package_path} control.tar.gz | tar -xzO`
end
class ScanPackages
def self.scan(path)
@natesymer
natesymer / artworkblock.mm
Created March 7, 2013 14:54
Get the artwork of an mp3 audio file.
- (void)artworksForFileAtPath:(NSString *)path block:(void(^)(NSArray *artworkImages))block {
NSURL *url = [NSURL fileURLWithPath:path];
AVURLAsset *asset = [AVURLAsset URLAssetWithURL:url options:nil];
NSArray *keys = [NSArray arrayWithObjects:@"commonMetadata", nil];
[asset loadValuesAsynchronouslyForKeys:keys completionHandler:^{
NSArray *artworks = [AVMetadataItem metadataItemsFromArray:asset.commonMetadata withKey:AVMetadataCommonKeyArtwork keySpace:AVMetadataKeySpaceCommon];
NSMutableArray *artworkImages = [NSMutableArray array];
for (AVMetadataItem *item in artworks) {