UNPKG

eyefi

Version:

integrate image-uploads from eye-fi cards into your application

102 lines (68 loc) 3.28 kB
# Node-Eyefi Allows an Eye-Fi card to post images directly to your node.js-application. ## Installation ### Standalone git clone git://github.com/usefulthink/node-eyefi.git cd node-eyefi && npm install . ### As a module npm install eyefi ## Preparations - you'll obviously need an Eye-Fi card. Amazon has these. - connect the eye-fi card to your computer and run the setup found on the card (on linux you might want to try Dave Hansen's eyefi-config found here: http://goo.gl/D3UVy) - the card should be configured to use your network with the TransferRelay mode (and any other fancy-pants feature) turned off - test it with the software provided. - make sure that the card is in the same network (and network-segment, i.e. can send packets to) as your computer. - close the eye-fi helper and manager. - Locate the `Settings.xml`-File (Windows: `\Users\<username>\Application Data\Eye-Fi\Settings.xml`, OS-X: `~/Library/Eye-Fi/Settings.xml`) to find out the cards mac-address and uploadKey ## Running standalone # create a file named config.json (just copy the config.json.sample) cp config.json.sample config.json # edit config.json and enter your cards mac-address and uploadKey # start the server node standalone.js now take a photo to see if it's working. ## Integrate into your own project Integration is possible, and not really complicated. It basically just works (or maybe doesn't) and emits an `imageReceived`-Event whenever the upload of an image is completed. Additionally, you may listen for `uploadProgress`-events which are fired during the file-upload. By default, logging will print error-messages to the console. This is something I'm working on. (If you want to customize logging, the only way for now is to create your own logger-instance (see standalone.js)) var eyefi = require('eyefi'); var eyefiServer = eyefi({ uploadPath : '/where/uploaded/files/are/stored', cards : { '<macaddress>': { uploadKey: '<uploadKey>' } } }).start(); eyefiServer.on('imageReceived', function(data) { console.log('received an image: ' + data.filename); }); eyefiServer.on('uploadProgress', function(progress) { console.log( (100*progress.received/progress.expected).toFixed(2) + '% complete'); }); ## Doesn't work? Shit happens. [File an issue](https://github.com/usefulthink/node-eyefi/issues) or [drop me a line](https://github.com/usefulthink). I'll see what I can do. ## Dive deeper? If you want to undestand what is really going on behind the scenes, you could start here: - http://code.google.com/p/sceye-fi - java-based eye-fi server - http://code.google.com/p/sceye-fi/wiki/UploadProtocol - a really good write-up on the soap-protocol - https://github.com/tachang/EyeFiServer - python-implementation, also some good docs - https://github.com/kristofg/rifec - perl, well documented ## Acknowledgements Inspired by prior work of Sebastian Hoitz and Thomas Schaaf – their project (http://goo.gl/HOxO2) gave me some insights and was some kind of starting-point for me. Also, thanks to all the people who dissected the eye-fi cards and the protocols.