• Stars
    star
    663
  • Rank 67,991 (Top 2 %)
  • Language
    Python
  • License
    GNU General Publi...
  • Created about 12 years ago
  • Updated almost 4 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

An innovative FUSE wrapper for Google Drive.

Build_Status

GDriveFS is an innovative FUSE wrapper for Google Drive. It is Python 2/3 compatible.

Latest Changes

  • Though you can still use the previous authorization flow, there is now a very simple authorization flow that may be used instead by using the 'auth_automatic' subcommand on the 'gdfstool'. Whe you run this command, the browser will automatically be opened, you may or may not be prompted for authorization by Google, a redirection will occur, and we will then automatically record the authorization code. GDFS will temporarily open a small webserver on a random port in order to receive the response. This effectively makes authorization a one-step process for the user. See below for more details.
  • There is now a default file-path for the credentials ("auth storage file"). Just use "default" and "$HOME/.gdfs/creds" will be the file-path used. See below for more details.
  • The 'auth' subcommand on the 'gdfstool' command is now obsolete. Though you may continue to use this subcommand, please start using the 'auth_get_url' and 'auth_write' subcommands as this subcommand will be removed in the future.

Installation

In order to install his, we're going to use PIP (to access PyPI). Under Ubuntu, this is done via:

$ sudo apt-get install python-pip

You'll also need to equip your system to perform builds in order to install some of the dependencies. Under Ubuntu, this is done via:

$ sudo apt-get install build-essential python-dev

Now, to install GDriveFS:

$ sudo pip install gdrivefs

Usage

Important

If you wish to mount your Google Drive account at bootup, we recommend that you wrap it as a service. If you list it in /etc/fstab, you have bootup issues since your networking system may not be active when your filesystems are mounted unless you have deliberately configured the order in order to give you a guarantee.

Overview

Before you can mount the account, you must authorize GDriveFS to access it. GDriveFS works by producing a URL that you must visit in a browser. Google will ask for your log-in information and authorization, and then give you an authorization code. You then pass this code back to the GDriveFS utility along with a file-path of where you want it to store the authorization information ("auth storage file" or "credentials file"). Then, you can mount it whenever you'd like.

Since this is FUSE, you must be running as root or under the right group to mount.

Credentials File

Also referred to as the "auth storage" file.

In previous versions, you were required to provide a file-path to write and read the authorization code to. There is now a default ($HOME/.gdfs/creds). Just literally use the string "default" whereever the credentials file-path is required in order to use this default file-path.

Automatic Authorization Flow

There is now a simplified flow that will automatically open the system Web browser, do any authentication necessary, and automatically write the authorization-code to disk:

$ gdfstool auth_automatic
Authorization code recorded.

$ gdfs default /mnt/gdrivefs

This automatic flow will require GDFS to temporarily start a small, internal webserver on the first available port.

Manual Authorization Flow

If you need to manually get the URL, browse to it, get the authorization code, and then call the 'auth_write' subcommand to store it:

  1. To get an authorization URL:

    $ gdfstool auth_get_url
    To authorize FUSE to use your Google Drive account, visit the following URL to produce an authorization code:
    
    https://accounts.google.com/o/oauth2/auth?scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive.file&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&response_type=code&client_id=626378760250.apps.googleusercontent.com&access_type=offline
    
  2. To set the authorization-code, you must also provide the auth-storage file that you would like to save it as. The name and location of this file is arbitrary:

    $ gdfstool auth_write "4/WUsOa-Sm2RhgQtf9_NFAMMbRC.cj4LQYdXfshQV0ieZDAqA-C7ecwI"
    Authorization code recorded.
    

Mounting

Once you're ready to mount:

$ gdfs -o allow_other default /mnt/gdrivefs

Optimization

By default, FUSE uses a very conservative block-size. On systems that support it, you may elect to use the "big_writes" option. This may dramatically increase the block-size (which improves the speed of transfers). There doesn't appear to be any authoritative documentation as to what systems support it or what the improvements might be, but, so far, it seems like Linux supports it, OSX doesn't, and FUSE will go from using 4K blocks to using 64K blocks.

To use this, pass "big_writes" in the "-o" option-string:

$ sudo gdfs -o big_writes /home/user/.gdfs/creds /mnt/gdrivefs

Vagrant

A Vagrantfile has been made available in the event that you would like to mount your account from a system that isn't FUSE compatible (like a Mac) or you are having issues installing GDriveFS somewhere else and would like to debug.

To install Vagrant:

$ sudo apt-get install vagrant

To start and provision the instance:

$ cd gdrivefs/vagrant
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'ubuntu/trusty64'...
==> default: Matching MAC address for NAT networking...
==> default: Checking if box 'ubuntu/trusty64' is up to date...
==> default: Setting the name of the VM: vagrant_default_1413437502948_22866
==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
==> default: Forwarding ports...

...

==> default: Using /usr/lib/python2.7/dist-packages
==> default: Finished processing dependencies for gdrivefs==0.13.14
==> default: To authorize FUSE to use your Google Drive account, visit the following URL to produce an authorization code:
==> default:
==> default: https://accounts.google.com/o/oauth2/auth?scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive.file&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&response_type=code&client_id=1056816309698.apps.googleusercontent.com&access_type=offline
==> default:
==> default: Once you have retrieved your authorization string, run:
==> default:
==> default: sudo gdfstool auth_write <authcode>
==> default:

This may take a few more minutes the first time, as it might need to acquire the Ubuntu 14.04 image if not already available.

To log into the guest instance:

$ vagrant ssh

The GDFS source directory will be mounted at /gdrivefs, and the scripts will be in the path.

If you're familiar with Vagrant, you can copy the Vagrantfile and modify it to mount an additional path from the host system in the guest instance, and then use this to access your files from an incompatible system.

Developing/Debugging

Mounting GDFS in debugging-mode will run GDFS in the foreground, and enable debug-logging.

Just set the GD_DEBUG environment variable to "1":

root@vagrant-ubuntu-trusty-64:/home/vagrant# GD_DEBUG=1 gdfs /home/user/.gdfs/creds /mnt/g
2014-12-09 04:09:17,204 [gdrivefs.utility INFO] No mime-mapping was found.
2014-12-09 04:09:17,204 [gdrivefs.utility INFO] No extension-mapping was found.
2014-12-09 04:09:17,258 [__main__ DEBUG] Mounting GD with creds at [/home/user/.gdfs/creds]: /mnt/g
2014-12-09 04:09:17,259 [root DEBUG] Debug: True
2014-12-09 04:09:17,260 [root DEBUG] PERMS: F=777 E=666 NE=444
2014-12-09 04:09:17,262 [gdrivefs.drive DEBUG] Getting authorized HTTP tunnel.
2014-12-09 04:09:17,262 [gdrivefs.drive DEBUG] Got authorized tunnel.
FUSE library version: 2.9.2
nullpath_ok: 0
nopath: 0
utime_omit_ok: 0
unique: 1, opcode: INIT (26), nodeid: 0, insize: 56, pid: 0
INIT: 7.22
flags=0x0000f7fb
max_readahead=0x00020000
2014-12-09 04:09:22,839 [gdrivefs.fsutility DEBUG] --------------------------------------------------
2014-12-09 04:09:22,841 [gdrivefs.fsutility DEBUG] >>>>>>>>>> init(23) >>>>>>>>>> (0)
2014-12-09 04:09:22,841 [gdrivefs.fsutility DEBUG] DATA: path= [/]
2014-12-09 04:09:22,842 [gdrivefs.gdfuse INFO] Activating change-monitor.
2014-12-09 04:09:23,002 [gdrivefs.fsutility DEBUG] <<<<<<<<<< init(23) (0)
   INIT: 7.19
   flags=0x00000011

Troubleshooting Steps

  • If your setuptools package is too old, you might see the following [annoying] error:

    error: option --single-version-externally-managed not recognized
    

    See What does “error: option --single-version-externally-managed not recognized” indicate?.

    Apparently, the solution is to make sure that you have a healthy copy of Distribute and to, then, uninstall setuptools. However, this doesn't seem to [always] work. You might prefer to use the "easy_install" method, below.

  • If you see an error about antlr-python-runtime, try the following to install gdrivefs:

    $ sudo pip install --allow-unverified antlr-python-runtime --allow-external antlr-python-runtime gdrivefs
    

Options

Any of the configuration values in the conf.Conf module can be overwritten as "-o" options. You may pass the full array of FUSE options this way, as well.

Format Management

Google Drive will store Google Document files without a standard format. If you wish to download them, you have to select which format you'd like to download it as. One of the more exciting features of this FUSE implementation is the flexibility in choosing which format to download on the fly. See the section below labeled "Displaceables".

If a mime-type isn't provided when requesting a file that requires a mime-type in order to download, GDFS will make a guess based on whether the extension in the filename (if one exists) can be mapped to a mime-type that is available among the export-types provided by GD for that specific file.

The following is an example directory-listing:

-rw-rw-rw- 1 root root       0 Feb 17 07:52 20130217-145200
-rw-rw-rw- 1 root root       0 Feb 17 08:04 20130217-150358
-rw-rw-rw- 1 root root  358356 Feb 15 15:06 American-Pika-with-Food.jpg
-rw-rw-rw- 1 root root    1000 Oct 25 03:53 Dear Biola.docx#
-rw-rw-rw- 1 root root    1000 Oct 25 02:47 Dear Biola.docx (1)#
-rw-rw-rw- 1 root root    1000 Oct 15 14:29 Reflection.docx#
-rw-rw-rw- 1 root root 1536036 Nov 28 22:37 lotterynumbers01.png
drwxrwxrwx 2 root root    4096 Oct  4 06:08 Scratchpad#
drwxrwxrwx 2 root root    4096 Dec  1 19:21 testdir_1421#
-rw-rw-rw- 1 root root       5 Dec  2 08:50 testfile_0350
-rw-rw-rw- 1 root root       0 Dec  2 21:17 .testfile_0417.swp
-rw-rw-rw- 1 root root       0 Dec  3 00:38 testfile_1937
-rw-rw-rw- 1 root root       0 Dec  2 23:13 testfile_hidden_1812
-rw-rw-rw- 1 root root    1000 Oct  4 02:13 Untitled document#

Notice the following features:

  • Manages duplicates by appending index numbers (e.g. "<filename> (2)").
  • Mtimes, permissions, and ownership are correct.
  • Sizes are zero for file-types that Google hosts free of charge. These are always the files that don't have a strict, default format (the length is unknown).
  • Hidden files are prefixed with ".", thus hiding them from normal listings.
  • "Trashed" files are excluded from listings.
  • Any file that will require a mime-type in order to be downloaded has a "#" as the last character of its filename.

Displaceables

Google Documents stores all of its data on Google Drive. Google will store these files in an agnostic file entry whose format will not be determined until you download it in a specific format. Because the file is not stored in a particular format, it doesn't have a size. Because it doesn't have a size, the OS will not issue reads for more than (0) bytes.

To get around this, a read of these types of files will only return exactly 1000 bytes of JSON-encoded "stub data".. Information about the entry, including the file-path that we've stored it to.

This example also shows how we've specified a mime-type in order to get a PDF version of a Google Document file:

$ cp Copy\ of\ Dear\ Biola.docx#application+pdf /target
$ cat /tmp/Copy\ of\ Dear\ Biola.docx#application+pdf

Something like the following will be displayed:

{"ImageMediaMetadata": null,
 "Length": 58484,
 "FilePath": "/tmp/gdrivefs/displaced/Copy of Dear Biola.docx.application+pdf",
 "EntryId": "1Ih5yvXiNN588EruqrzBv_RBvsKbEvcyquStaJuTZ1mQ",
 "Title": "Copy of Dear Biola.docx",
 "RequiresMimeType": true,
 "Labels": {"restricted": false,
            "starred": false,
            "viewed": true,
            "hidden": false,
            "trashed": false},
 "OriginalMimeType": "application/vnd.google-apps.document",
 "ExportTypes": ["text/html",
                 "application/pdf",
                 "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
                 "application/vnd.oasis.opendocument.text",
                 "application/rtf", "text/plain"],
 "FinalMimeType": "application/pdf"}

From this, you can tell that the file was originally a Google Documents mimetype, and now its a PDF mime-type. You can also see various flags, as well as the location that the actual, requested file was stored to.

Cache/Change Management

A cache of both the file/folder entries is maintained, as well as a knowledge of file/folder relationships. However, updates are performed every few seconds using GD's "change" functionality.

Permissions

The default UID/GID of files is that of the current user. The default permissions (modes) are the following:

Entry Type Perm
Folder 777
Editable file 666
Non-editable file 444

Whether or not a file is "editable" is [obviously] an attribute reported by Google Drive.

These settings can be overridden via the "-o" comma-separated set of command-line options. See below.

Permission-Related Options

Related Standard FUSE

These options change the behavior at the FUSE level (above GDFS). See "man mount.fuse" for all options.

Option Description
umask=M Prescribe the umask value for -all- entries.
uid=N Change the default UID.
gid=N Change the default GID.
allow_other Allow other users access.
default_permissions Enforce the permission modes (off, by default)

GDFS-Specific

Option Description
default_perm_folder=nnn Default mode for folders.
default_perm_file_noneditable=nnn Default mode for non-editable files.
default_perm_file_editable=nnn Default mode for editable files (see above).

Example:

allow_other,default_permissions,default_perm_folder=770,default_perm_file_noneditable=440,default_perm_file_editable=660

Extended Attributes

Extended attributes allow access to arbitrary, filesystem-specific data. You may access any of the properties that Google Drive provides for a given entry, plus a handful of extra ones.

Listing attributes:

$ getfattr American-Pika-with-Food.jpg

# file: American-Pika-with-Food.jpg
user.extra.download_types
user.extra.is_directory
user.extra.is_visible
user.extra.parents
user.original.alternateLink
user.original.createdDate
user.original.downloadUrl
user.original.editable
user.original.etag
user.original.fileExtension
user.original.fileSize
user.original.iconLink
user.original.id
user.original.imageMediaMetadata
user.original.kind
user.original.labels
user.original.lastModifyingUser
user.original.lastModifyingUserName
user.original.md5Checksum
user.original.mimeType
user.original.modifiedByMeDate
user.original.modifiedDate
user.original.originalFilename
user.original.ownerNames
user.original.owners
user.original.parents
user.original.quotaBytesUsed
user.original.selfLink
user.original.shared
user.original.thumbnailLink
user.original.title
user.original.userPermission
user.original.webContentLink
user.original.writersCanShare

Getting specific attribute:

$ getfattr --only-values -n user.original.id American-Pika-with-Food.jpg

0B5Ft2OXeDBqSSGFIanJ2Z2c3RWs

$ getfattr --only-values -n user.original.modifiedDate American-Pika-with-Food.jpg

2013-02-15T15:06:09.691Z

$ getfattr --only-values -n user.original.labels American-Pika-with-Food.jpg

K(restricted)=V(False); K(starred)=V(False); K(viewed)=V(False); K(hidden)=V(False); K(trashed)=V(False)

This used to be rendered as JSON, but since the xattr utilities add their own quotes/etc.., it was more difficult to make sense of the values.

Misc Notes

  • A file will be marked as hidden on Google Drive if it has a prefixing dot. However, Linux/Unix doesn't care about the "hidden" attribute. If you create a file on Google Drive, somewhere else, and want it to truly be hidden via this software, make sure you add the prefixing dot.
  • If you have a need to do a developer install, use "pip install -e" rather than "python setup.py develop". The latter will [now] break because of the dependencies that are eggs.

More Repositories

1

go-exif

A very complete, highly tested, standards-driven (but customizable) EXIF reader/writer lovingly written in Go.
Go
491
star
2

PyInotify

An efficient and elegant inotify (Linux filesystem activity monitor) library for Python. Python 2 and 3 compatible.
Python
240
star
3

PySvn

Lightweight Subversion library for Python.
Python
215
star
4

PyEasyArchive

A very intuitive and useful adapter to libarchive for universal archive access.
Python
97
star
5

go-jpeg-image-structure

Parse JPEG data into segments via code or CLI from pure Go. Read/export/write EXIF data. Read XMP and IPTC metadata.
Go
69
star
6

go-ext4

A pure Go implementation of an ext4 reader with journaling support that does not require the kernel nor privileged access.
Go
43
star
7

Snackwich

A Snack-based Python console UI that reads screen configurations from a file.
Python
27
star
8

TightOCR

A slim, non-SWIG Python adapter to CTesseract (Tesseract OCR for C).
Python
24
star
9

GeonamesRdf

A Python client for the RDF web-services provided by Geonames (http://www.geonames.org).
Python
22
star
10

go-png-image-structure

Read/write PNGs as well as the EXIF in PNGs from pure Go.
Go
22
star
11

go-perceptualhash

Blockhash perceptual-hash algorithm for images. Written in pure Go.
Go
21
star
12

PythonEtcdClient

A simple and efficient etcd client that exposes all functions and just works.
Python
21
star
13

M2CryptoWindows

Binaries for Python 2.7 M2Crypto under Windows
19
star
14

go-exfat

exFAT reader implementation based on Microsoft specifications.
Go
18
star
15

PySecure

A complete Python SSH/SFTP library based on libssh.
Python
18
star
16

go-exif-knife

Perform surgical operations on EXIF data at the command-line with JPG, PNG, HEIC, and TIFF files.
Go
17
star
17

RandomUtility

Disparate tools by published by Dustin.
Python
14
star
18

TinyUntar

A tiny untar library written in C.
C
14
star
19

GeditSafetySave

Automatically store unsaved documents to a temporary location under the current user's home. This keeps your documents, temporary to-do lists, etc.. safe from crashes.
Python
14
star
20

CTesseract

A C adapter for the C++ Tesseract OCR Library (Google).
C++
13
star
21

go-fuse-example

A minimal, browseable, read-only, memory-based filesystem in Go.
Go
12
star
22

RijndaelPbkdf

Pure-Python Rijndael and PBKDF2 package. Python2 and Python3 compatible.
Python
12
star
23

CodeMirrorRemoteValidator

An asynchronous CodeMirror lint plugin that will receive code, send it to a callback (that can send it somewhere via Ajax, etc..), and apply any discovered errors on return.
JavaScript
12
star
24

go-appengine-sessioncascade

Equip Go with session support under Google AppEngine. Implement one or more AppEngine-specific backends, such as Memcache and Datastore, to store your session data.
Go
12
star
25

go-heic-exif-extractor

Parses an HEIC image and returns an EXIF accessor (if an EXIF blob is present).
Go
11
star
26

youtube-autodownloader

Monitor YouTube playlists and automatically download newly-added videos.
Python
11
star
27

PyHdHomeRun

Python interface to HDHomeRun network-attached TV tuners.
Python
10
star
28

ChromeIdGenerator

A tiny tool to generate Google Chrome extension IDs from an extension's public-key.
Python
9
star
29

PySchedules

Schedules Direct library for Python. Provides event-driven hooks for lineup, station, channel map, schedule, program, cast/crew, and genre data. Also provides QAM map (channels.conf) data. Go wild.
Python
9
star
30

ApnsPlistCsr

Tool to produce encoded Plists/CSRs for APNS.
Python
9
star
31

protobufp

Adds the stream-processing to protobuf messaging that you usually need to add yourself.
Python
8
star
32

go-exiftool

List EXIF tags, set EXIF tags, and extract thumbnails in images using Go.
Go
7
star
33

PythonUpstart

An intuitive library interface to Upstart for service and job management.
Python
7
star
34

go-iptc

Parse IPTC metadata with pure Go
Go
6
star
35

JobX

JobExchange is a distributed Python-Based MapReduce solution.
Python
5
star
36

M2CryptoWin64

An installable M2Crypto Python package for 64-bit Windows systems.
Python
5
star
37

SslApi

An SOA certificate authority (CA).
Python
5
star
38

go-time-parse

Parse time phrases into Go durations.
Go
5
star
39

M2CryptoWin32

An installable M2Crypto Python package for 32-bit Windows systems.
Python
5
star
40

go-logging

Useful and awesome logging system for Go with prefixing and stacktraces.
Go
5
star
41

RestPipe

An SSL-authenticated, durable, bidirectional, RESTful, client-server pipe that transports custom events.
Python
5
star
42

ZapLib

A C library of uniform DVB tuning calls for ATSC (US), DVB-C (cable), DVB-S (satellite), DVB-T (terrestrial). Based on dvb-apps.
C
5
star
43

markdown-embedimages

Translate markdown to HTML and encode/embed images into the HTML.
Python
5
star
44

go-parallel-walker

CURRENTLY IN ACTIVE DEVELOPMENT - A simple, tuneable Go package and CLI tool to quickly walk a filesystem using a concurrently-processed job queue.
Go
4
star
45

RelayServer

A service that that acts as a single proxy between many individual clients and many instances of a server. As the clients initiate connections to the relay server, this solution defeats NAT.
Python
4
star
46

heic-exif-samples

Samples of HEIC images with EXIF. At this point in time they're non-trivial to find in the wild.
4
star
47

AwsDynDns

Update your Route53-hosted domain name with your public IP.
Python
4
star
48

CaKit

A light project that conveniently bundles the logic needed to build both example CA certificates and a signed, example certificate.
Python
4
star
49

DtcLookup

A webpage-based database for automotive diagnostic trouble codes (DTC's).
Python
4
star
50

time-to-go

Efficiently store, scan, retrieve, update, and add time-series blobs on a filesystem.
Go
4
star
51

YiiBash

Add Bash command completion to your PHP Yii project.
PHP
4
star
52

GlacierTool

A simple tool to do massive uploads to Amazon Glacier
Python
4
star
53

PyZap

Python wrapper for ZapLib digital television (DVB) tuning library.
Python
4
star
54

go-tiff-image-structure

Parse TIFF data for EXIF metadata
Go
4
star
55

JsonPare

A very simple utility to decode and unwind JSON into JSON from the command-line.
Python
4
star
56

SMARTOnFHIRExample

A working example of how to read FHIR health data from a SMART resource and plot aggregate vital signs (all patients).
Python
4
star
57

go-xmp

Parse XMP documents (for image-metadata) with pure Go.
Go
4
star
58

go-utility

Reusable tools.
Go
3
star
59

go-geographic-attractor

Efficiently identify the nearest major city to a given coordinate.
Go
3
star
60

python-googleautoauth

Dramatically reduces the complexity of the Google API authentication/authorization process in command-line tools.
Python
3
star
61

go-appengine-logging

Configuration-based AppEngine logging library with level control, filters, and pluggable, interface-based writers.
Go
3
star
62

go-geographic-index

An in-memory time-series index that can be populated manually and/or by recursively processing a path.
Go
3
star
63

go-gpx

Easily and efficiently processing GPX (geographic track/log) data from Go.
Go
3
star
64

go-time-index

A simple Go package to manage time-series with data and slices of time-intervals with data.
Go
3
star
65

go-geographic-autogroup-images

A package that knows how to take a list of locations, a list of images, knowledge of EXIF, and some geographic/population data (if any images are not already geotagged), and group images by the major cities that they were taken near.
Go
3
star
66

HuffmanExample

Shows how to build a tree, establish an encoding, encode the data, preorder-serialize the binary tree, combine the tree and data to render complete file-data, and reverse the process.
Python
3
star
67

go-s2

A tool that can convert between coordinates, S2 cells, and S2 tokens, print cell info, and generate KML visualizations of cell parents and boundaries.
Go
2
star
68

go-napster-to-spotify-sync

Install tracks from Napster favorites to a Spotify playlist by one or more artists.
Go
2
star
69

go-pathfingerprint

Recursively calculate a SHA1 or SHA256 hash for a given directory.
Go
2
star
70

SvnCl

A one-line command to streamline building a Subversion changelog for tag/release messages.
Python
2
star
71

go-napster

A Go client for Napster/Rhapsody.
Go
2
star
72

TabManiac

Automatically back-up your Chrome tabs, and maintain a history of backups.
JavaScript
2
star
73

go-efficient-json-reader

Easily, efficiently, iteratively parse massive JSON data structures.
Go
2
star
74

RWebApplicationExample

An example Rook-based R web application
HTML
2
star
75

PySynchronousGlacier

Execute synchronous workflows against Amazon Glacier.
Python
2
star
76

bracketed-image-finder

Determine groups of images that were produced by bracketed image capture (e.g. Sony cameras)
Python
2
star
77

omsa-alert

Send emails or call commands when there are controller/disk problems reported by the Dell OMSA omreport command-line tool.
Python
2
star
78

go-photoshop-info-format

Minimal Photoshop format implementation. Currently only provides parsing functionality to expose embedded IPTC data.
Go
2
star
79

PathScan

A parallellized filesystem scanning, filtering, and processing framework (iteration 3).
Python
2
star
80

go-webp-image-structure

Parse WEBP RIFF stream and expose EXIF data via pure Go.
Go
2
star
81

HookableWebServer

A tiny C++ (mostly C) web-server that calls function pointers for requests and logging. Based on IBM's open-source small "nweb" web server..
C++
2
star
82

go-github-reminders

A tool that determines what Github issues you are currently involved in and reminds you about issues you are overdue in responding to.
Go
2
star
83

RemoteImageBrowser

Allows you to efficiently browse a large image-file hierarchy from a website with thumbnails (cached) and lightboxes.
JavaScript
2
star
84

LicensePrepend

Make sure all your source files have the standard licensing stub at the top.
Python
2
star
85

BeanTool

A console tool for querying a beanstalkd queue.
Python
2
star
86

MpegTsScanner

Library to scan packets from an MPEG-TS file. Also provides a call to grab information on the first program found. This latter feature is useful for getting information (subtitle info, etc..) for a program recorded from an ATSC/DVB television tuner. Depends on the LIBDVBPSI library (from the VLC project).
C
2
star
87

WebsocketServer

A reference implementation for a WebSocket server and two sample clients. Tested under Firefox 13 and Chrome 20.
PHP
2
star
88

go-gpxreader

Easily and efficiently processing GPX (geographic track/log) data from Go. PROJECT IS DEPRECATED. PLEASE USE go-gpx/reader.
Go
2
star
89

tree_partition

Partition a large file tree into several file trees of symlinks having equal file counts
Python
2
star
90

go-index-audit

A tool to wait on the Go Proxy to propagate your recent changes before returning
Go
1
star
91

pathhistogram

Generate a histogram of file-sizes within a path. Can also set constraints and write-out the bins.
Python
1
star
92

go-gpsbabel

A wrapper around GPSBabel to allow idiomatic Go to be used to interact with it.
Go
1
star
93

bingrok

A surgical tool for exploring structured binary data
Python
1
star
94

go-exif-extra

Higher-level EXIF and image functionality that works universally across many image formats.
Go
1
star
95

go-http-lifecycle-router

A simple HTTP handler suite that can trigger lifecycle events before and after requests are handled.
Go
1
star
96

PypiStats

A jQuery plugin to display a PyPI package's download statistics.
JavaScript
1
star
97

go-gpx-distance

Count the kilometers traveled in GPX data
Go
1
star
98

PythonScheduler

A multithreaded task scheduler that can schedule Python routines to run either at a particular time or at a particular interval.
Python
1
star
99

elasticbeanstalk-test

Go
1
star
100

MpoJpegFlatten

Convert 3D MPO JPEGs to normal images with a single left-right image.
C++
1
star