Options

October 2007 API contest - Win an iPhone!

2

Comments

  • Options
    ifotoproifotopro Registered Users Posts: 6 Beginner grinner
    edited October 30, 2007
    SmugSync
    My official details will be supplied tomorrow night before the dealine, but wanted to make sure I could post.

    My Entry - Desktop SmugSync.

    -Mark
  • Options
    Paul Anderson HazenPaul Anderson Hazen Registered Users Posts: 3 Beginner grinner
    edited October 31, 2007
    Do you have to be 18 to win? If it needs to be 18 for legal reasons I'll get someone else to post it, but I think I've got something very cool.
  • Options
    ifotoproifotopro Registered Users Posts: 6 Beginner grinner
    edited October 31, 2007
    ifotopro wrote:
    My official details will be supplied tomorrow night before the dealine, but wanted to make sure I could post.

    My Entry - Desktop SmugSync.

    -Mark
    Being a Java developer by trade and an avid photographer by desire (hobbyist), I have always wanted to develop something to improve my workflow. Something that would allow me to automatically: “Upload all my photos to online sharing site”, to show off, and hopefully sell. I have to say that I’ve tried many sharing sites and I’m a very new comer to SmugMug. In fact, I just became a member within the last 7-10 days. I’ve also wanted (in my day job) to develop a REST interface. Although I have not developed such REST server-side interface for SmugMug, I’ve enjoyed the simplicity as a consumer. I’ve also desired to attempt to learn Flex and develop an Adobe Interactive Runtime (AIR) application. [I used REST 1.2.1 version of API for all calls, with no issues] This contest, which I strongly desire to win, has helped me live out these two passions. I could not wait to come home from my day job to develop this wonderful application [in less than week]. Without further ado, the application:

    SmugSync – an AIR application that is cross platform – Mac and Windows. I would like to see how it works for iPhone. [I don’t have one yet, but eager to see how it works – something hopefully to work itself out – winning challenge].

    Although developed for offline mode, for moment, the advantage of an AIR application is that you can take an online application and “offline it”. It was developed as offline now, since I wanted it to be able to upload photographs automatically.

    Further “working” Implementation Details:
    - It uses a very cool “spider like” navigation component to drill down to photo albums, via categories and sub categories.
    - Once you reach the album node level, a double-click will bring up a “Mac like” Cover View navigation of pictures.
    - To synchronize your photos, click the “Sync” tab and user is presented with ability to setup the base directory of all photographs that they would like to upload. The following structure must be used (from base directory): directories are in order of Category, Sub Category, and Album (Gallery). The album folder contains list of images for that album. The names of folders at each level become the name for the category, sub category, and album.
    - If categories, sub categories or albums do not exist, the synchronization will automatically create such.
    - Uploads multiple photos at once. The order is all categories, sub categories and albums are first created. Then all images start to upload. [Not fully tested with uploading lots of images at once]
    - Uploads can be canceled, by use of cancel button.
    - If photographs are already uploaded, the current implementation will keep the upload progress component for that photo showing no progress. However, at least it currently does not attempt to upload again. [A future enhancement will expand upon this, giving user the choice to replace, or override automatically, if local copy is newer]. These non-progress reporting photos can be removed from view by using cancel button.

    To give a try yourself, you must first install Adobe Interactive Runtime (AIR), beta 2, then SmugSync. Further details can be found at:

    www.ifotopro.com/SmugSync.html

    Did I mention it’s cross-platform? Mac & Windows – SmugMug Synchronization for avid photographers.
  • Options
    spiralspiral Registered Users Posts: 1 Beginner grinner
    edited October 31, 2007
    Contest Entry: Photo River
    It is a photocast application. You upload photos by dragging them into the window. Downloads occur automatically - all you do is "subscribe" to the album by entering the ID or URL, and an optional directory. The application will periodically poll all subscribed albums for new images, and download the originals.

    It is a prototype that is not functionally complete, and is currently in an alpha state. It does not (yet) work with password protected images because I do not have a method to authenticate to the server at the URL provided (waiting to find out how to do that). Therefore, only publicly available images will work.

    http://www.onlinestreams.com/PhotoRiver/

    This is my first GUI program ever, and the first time I have touched Java in 8 years (last time was when Java 1.2 was almost out the door). I spent a LOT of time catching up on all the changes and GUI APIs. I don't mean to scare you :-) it actually works OK.

    I am only providing the Mac OS X bundle at this time because I have not had time to test it out under Linux and Windows. If you want the jar to try on your Linux or Windows box, however, let me know.

    Feedback is appreciated.

    Thanks !
  • Options
    jmrodrijmrodri Registered Users Posts: 19 Big grins
    edited November 1, 2007
    zmugfs 0.1 RELEASED!
    zmugfs 0.1 is a FUSE-based filesystem allowing you to access your categories, subcategories, albums, and photos from your smugmug.com account as if they were on your computer.

    You can download the code here: http://sourceforge.net/project/showfiles.php?group_id=205794

    System requirements:
    Linux
    Python 2.4 or greater
    FUSE

    For the official release announcement checkout my blog: http://zeusville.wordpress.com/2007/10/31/zmugfs-01-released/

    zmugfs uses the 1.2.1 version of the JSON api. This initial release only allows read-only access to your account.

    Enjoy,
    jesus rodriguez
    jmrodri at gmail dot com
  • Options
    jmrodrijmrodri Registered Users Posts: 19 Big grins
    edited November 1, 2007
    Contest entry: zmugfs 0.1
    This is to inform you that I'm entering zmugfs into the API contest.
    jmrodri wrote:
    zmugfs 0.1 is a FUSE-based filesystem allowing you to access your categories, subcategories, albums, and photos from your smugmug.com account as if they were on your computer.

    You can download the code here: http://sourceforge.net/project/showfiles.php?group_id=205794

    System requirements:
    Linux
    Python 2.4 or greater
    FUSE

    For the official release announcement checkout my blog: http://zeusville.wordpress.com/2007/10/31/zmugfs-01-released/

    zmugfs uses the 1.2.1 version of the JSON api. This initial release only allows read-only access to your account.

    Enjoy,
    jesus rodriguez
    jmrodri at gmail dot com
  • Options
    devbobodevbobo Registered Users, Retired Mod Posts: 4,339 SmugMug Employee
    edited November 1, 2007
    Do you have to be 18 to win? If it needs to be 18 for legal reasons I'll get someone else to post it, but I think I've got something very cool.

    Paul,

    I don't believe you need to be 18. Post it and if we need to work something out, i'm sure we can thumb.gif

    David
    David Parry
    SmugMug API Developer
    My Photos
  • Options
    Paul Anderson HazenPaul Anderson Hazen Registered Users Posts: 3 Beginner grinner
    edited November 1, 2007
    Thanks David.

    I'll be posting it 'round.... later ... ish... rolleyes1.gif
  • Options
    mjohnsonperlmjohnsonperl Registered Users Posts: 41 Big grins
    edited November 1, 2007
    SyncMug - SmugMug Uploading/Downloading File Synching
    I'm compiling my application into a binary for distribution, and I should have it uploaded tonight.

    SyncMug is a file synchronization application that allows you to maintain a copy of your SmugMug account on your local computer.

    It currently is able to check for new and removed images from either your local computer or the SmugMug site. This allows you to add new directories at the designated storage directory, and then when you sync, it uploads all of them up to SmugMug. You can also remove images locally and the program will remove the images off SmugMug.
  • Options
    GarethLewinGarethLewin Registered Users Posts: 95 Big grins
    edited November 1, 2007
    I made a thread, but to follow contest rules I'm posting here too.

    SmugSaver, a screensaver that uses SmugMug as a source for it's images. More info at http://www.garethlewin.com/smugsaver or the thread in this forum

    I've been running it on multiple PCs for a few days now, as have several people that downloaded it. So far no bug reports, so I will just submit this version for the contest FWIW.

    oops seems I had the wrong URL, updated both posts with the real url
  • Options
    fwscottfwscott Registered Users Posts: 1 Beginner grinner
    edited November 1, 2007
    AS3 / Flex Framework
    Lots of good entries so far and I dont even have a full blown app.

    Anyways, I am entering a new development framework.
    http://code.google.com/p/as3smugmuglib/

    It currently supports most operations on v1.2.0 and v1.2.1. The reason I only have Sample Apps in the download section is because I have not had time to polish the framework up for a public release. The source is located in the SVN repository if anyone would like to try things out. Documentation is coming soon but you can look in the sample apps to see how things work.

    The two sample applications are both AIR applications , you will need to install the AIR runtime to install the applications.

    Sample Application 1:
    NASMU or Not Another SmugMug Uploader: Hint for using the strange interface.... use the eyes for setting options. You can drag-drop files onto the SmugMug like character.

    Sample Application 2:
    SmugTop Organizer: App that allows you to use a google picasa like drag and drop to organize your photo albums. Currently, you can only organize photos within the same album. Note, this application uses no "AIR" features... it could be dropped in as a flash application on the SmugMug site.

    Sample applications can be downloaded from the "Downloads" section.

    Good luck everyone
  • Options
    GarethLewinGarethLewin Registered Users Posts: 95 Big grins
    edited November 1, 2007
    fwscott wrote:
    Lots of good entries so far and I dont even have a full blown app.

    Anyways, I am entering a new development framework.
    http://code.google.com/p/as3smugmuglib/

    It currently supports most operations on v1.2.0 and v1.2.1. The reason I only have Sample Apps in the download section is because I have not had time to polish the framework up for a public release. The source is located in the SVN repository if anyone would like to try things out. Documentation is coming soon but you can look in the sample apps to see how things work.

    The two sample applications are both AIR applications , you will need to install the AIR runtime to install the applications.

    Sample Application 1:
    NASMU or Not Another SmugMug Uploader: Hint for using the strange interface.... use the eyes for setting options. You can drag-drop files onto the SmugMug like character.

    Sample Application 2:
    SmugTop Organizer: App that allows you to use a google picasa like drag and drop to organize your photo albums. Currently, you can only organize photos within the same album. Note, this application uses no "AIR" features... it could be dropped in as a flash application on the SmugMug site.

    Sample applications can be downloaded from the "Downloads" section.

    Good luck everyone

    Cool stuff.

    I guess I shoudl have cleaned up and submitted my C# dll. It's planned to be released to all, but it's missing a crucial feature, no uploading (Not needed it yet).

    Oh well I'll release it soon.
  • Options
    Paul Anderson HazenPaul Anderson Hazen Registered Users Posts: 3 Beginner grinner
    edited November 1, 2007
    C#.NET wrapper class registered for COM uses multithreading... very very fast to get photos down from album. I used it to develop a great application, that's not.... working.... soon enough.

    http://paulhazen.net/SmugMug.dll
  • Options
    AculeusAculeus Registered Users Posts: 1 Beginner grinner
    edited November 1, 2007
    Smuggler
    Smuggler

    An idiomatic Python library or accessing the SmugMug API.

    It includes an API library that:

    * Mimics the SmugMug API methods
    * Does type and method checking client side
    * Has unit tests for code integrity
    * Takes advantage of HTTP caching
    * Case-insensitve paramater mapping - use the case that suits your project

    It also includes an ORM wrapper around the API that:

    * Treats SmugMug types as objects instead of collections of URLs
    * Makes it as easy as creating new object instances to create SmugMug albums, images, users, etc.
    * As easy as updating class properties to update

    The only SmugMug API that I know of in Python is a very thin wrapper that just forwards API requests without doing much checking. Smuggler is a full wrapper around the API that does type checking before the data is submitted to save bandwidth and does better error reporting that the API responds with when you do something wrong. It also includes integrated help for each SmugMug method using Python's idiomatic docstring help.

    The API wrapper works like this:
    >>> from smuggler.api import Smuggler
    >>> smugmug = Smuggler()
    >>> smugmug.login.withPassword('test', Password='********', APIKey='********************************')
    
    {u'FileSizeLimit': 25165824, u'Session': {u'id': u'********************************'}, u'User': {u'DisplayName': u'Your Name', u'NickName': u'nickname', u'id': 9999999}, u'AccountType': u'Pro', u'PasswordHash': u'********'}
    
    >>> smugmug.albums.get()
    
    [{u'Category': {u'id': 21, u'Name': u'Trucks'}, u'Passworded': False, u'id': 3702665, u'Title': u'2007 Tundra Crewmax'}, {u'Category': {u'id': 39, u'Name': u'Births'}, u'Passworded': False, u'id': 9992, u'Title': u"Son's Birth"}]
    
    >>> smugmug.albums.getInfo(999999999999999)
    
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "/Projects/Cixate/Smuggler/trunk/src/api/method.py", line 152, in __call__
        return self.smuggler.execute(self.module, *args, **kwargs)
      File "api/smuggler.py", line 65, in execute
        raise errors.get(response.code, response.message)
    api.errors.SystemError: system error
    
    >>> smugmug.albums.getInfo(3702665)
    
    {u'Category': {u'id': 21}, u'Title': u'2007 Tundra Crewmax', u'UnsharpThreshold': 0.050000000000000003, u'Comments': True, u'WorldSearchable': False, u'UnsharpAmount': 0.20000000000000001, u'LastUpdated': u'2007-10-23 15:43:25', u'Template': {u'id': 0}, u'Highlight': {u'id': 0}, u'PasswordHint': u'', u'Public': False, u'FriendEdit': False, u'Originals': True, u'Description': u'2007 Toyota Tundra Crewmax, 4x2 5.7L V8, 380 HP', u'Watermark': {u'id': 0}, u'Printable': False, u'id': 3702665, u'Filenames': False, u'SortDirection': False, u'External': True, u'Password': u'', u'ImageCount': 19, u'X2Larges': True, u'SubCategory': {u'id': 0}, u'Larges': True, u'DefaultColor': False, u'SortMethod': u'Position', u'UnsharpRadius': 1, u'Protected': False, u'UnsharpSigma': 1, u'SmugSearchable': False, u'Clean': False, u'Position': 1, u'X3Larges': True, u'FamilyEdit': False, u'EXIF': True, u'Share': True, u'Community': {u'id': 0}, u'Header': False, u'XLarges': True, u'HideOwner': False, u'Watermarking': False, u'ProofDays': 0, u'Keywords': u'', u'CanRank': True, u'Backprinting': u'', u'Geography': False}
    
    >>> smugmug.images.get(3702665)
    
    [{u'id': 212117936}, {u'id': 212118013}, {u'id': 212118179}, {u'id': 212118374}, {u'id': 212117805}, {u'id': 212117885}, {u'id': 212118536}, {u'id': 212118834}, {u'id': 212118698}, {u'id': 212118986}, {u'id': 212119402}, {u'id': 212120243}, {u'id': 212119138}, {u'id': 212117672}, {u'id': 212117735}, {u'id': 212119536}, {u'id': 212119823}, {u'id': 212119977}, {u'id': 212120115}]
    
    >>> smugmug.image.getInfo(212117936)
    
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "/Projects/Cixate/Smuggler/trunk/src/api/smuggler.py", line 77, in __getattr__
        module = __import__(key, globals(), locals())
    ImportError: No module named image
    
    >>> smugmug.images.getInfo(212117936)
    
    {u'Album': {u'id': 3702665}, u'LargeURL': u'http://cixate.smugmug.com/photos/212117936-L.jpg', u'OriginalURL': u'http://cixate.smugmug.com/photos/212117936-O.jpg', u'X2LargeURL': u'http://cixate.smugmug.com/photos/212117936-X2.jpg', u'X3LargeURL': u'http://cixate.smugmug.com/photos/212117936-X3.jpg', u'AlbumURL': u'http://cixate.smugmug.com/gallery/3702665/1/212117936', u'Width': 3072, u'Height': 2304, u'SmallURL': u'http://cixate.smugmug.com/photos/212117936-S.jpg', u'id': 212117936, u'Format': u'JPG', u'Date': u'2007-10-23 15:20:06', u'ThumbURL': u'http://cixate.smugmug.com/photos/212117936-Th.jpg', u'XLargeURL': u'http://cixate.smugmug.com/photos/212117936-XL.jpg', u'MD5Sum': u'7d063826a3657396d1062fa11f088407', u'Caption': u'Big grill', u'TinyURL': u'http://cixate.smugmug.com/photos/212117936-Ti.jpg', u'Position': 1, u'Watermark': u'0', u'LastUpdated': u'2007-10-23 15:45:39', u'FileName': u'PA230278.JPG', u'MediumURL': u'http://cixate.smugmug.com/photos/212117936-M.jpg', u'Keywords': u'', u'Serial': 0, u'Size': 1494877}
    
    >>> smugmug.logout()
    {u'Successful': u''}
    

    The ORM wrapper works like this:
    >>> from smuggler.orm import Runner
    >>> from smuggler.api import Smuggler
    >>> smugmug = Smuggler()
    >>> smugmug.login.withPassword('test', Password='********', APIKey='********************************')
    >>> runner = Runner(smugmug)
    >>> albums = runner.get_all(Album)
    >>> album = albums[0]
    >>> album.id
    
    3702665
    
    >>> album.title
    
    u'2007 Tundra Crewmax'
    
    >>> album.title = 'My New Truck'
    >>> album.save()
    
    >>> image = Image(album)
    >>> image.caption = 'Spacious cab'
    >>> image.filename = '/My Photos/My Truck/PA230279.JPG
    >>> image.save()
    >>> image.crop(100, 100, 0, 0)
    >>> image.rotate(Degrees=90, Flip=False)
    
    >>> smugmug.logout()
    {u'Successful': u''}
    

    After the API and ORM are complete I will be making a sync library that will allow you to keep a directories in sync with your SmugMug account. With that library I will create a Windows Service that will run in the back ground and keep you in sync and a cross-platform GUI that works like CVS/SVN diff GUIs to allow you to keep your albums in sync. I haven't had time to complete the syncing stuff, and based on the multiple syncing submissions, I may not need to create the GUI although I will still create the library. I'll then be using the library a lot in my web applications using Python, Django, and Turbogears.

    I'm working on packaging up and setting up the project on Google Code tonight at http://code.google.com/p/smuggler/.
  • Options
    mjohnsonperlmjohnsonperl Registered Users Posts: 41 Big grins
    edited November 1, 2007
    SyncMug - Beta Launched
    I got everything packaged together in a nice .zip file and I put some documentation together for the program. I had a rough time getting it to build correctly.

    http://www.digitalmediashelf.com/syncmug/

    I think there might be a bug in the code if there are files in the same album with the same filename. I haven't had a chance to fix that yet.

    You can safely test the program by running the "Sync" with the "Execute Differences" checkbox UNCHECKED. This will identify any differences, and lsit them in the program but it won't upload or download anything.

    Also if an image is removed from either the local or remote storage a copy will be stored in the "deleted" folder... this way code bugs or mistakes will minimize disasters.

    I don't know about the rest of you, but I had an extreamly packed past 3 weeks trying to get this app built. It started as a console program, and I built the GUI interface and packaged it into a binary in the last 3 days.

    I built the app in Perl, had to figure out how to upload and download files in Perl for the first time, had to learn how to read XML with Perl, how to write XML with Perl, how to build a GUI app in Perl using Tkx (the GUI for SyncMug looks pretty rough in my opinion). Then I had the fun challenge of getting PerlApp to build the whole thing into a nice .exe package fighting with crypto dll files because of the HTTPS calls in the app. I learned a lot and had a lot of fun doing it all, but I looking forward to getting to bed before 2:00AM in the next couple days.

    I should be able to release a Mac OS X version soon. I just have to figure out how to get all the perl modules I'm using installed on a Mac so I can build the binary. I'm currently borrowing my sister's MacBook Pro to build it on. Then I'll just have to make sure I don't have any weird issues with paths or something in my code that doesn't work on the Mac.
  • Options
    jmrodrijmrodri Registered Users Posts: 19 Big grins
    edited November 1, 2007
    Aculeus wrote:
    Smuggler


    The only SmugMug API that I know of in Python is a very thin wrapper that just forwards API requests without doing much checking. Smuggler is a full wrapper around the API that does type checking before the data is submitted to save bandwidth and does better error reporting that the API responds with when you do something wrong. It also includes integrated help for each SmugMug method using Python's idiomatic docstring help.

    The API wrapper works like this:
    >>> from smuggler.api import Smuggler
    >>> smugmug = Smuggler()
    >>> smugmug.login.withPassword('test', Password='********', APIKey='********************************')
    
    {u'FileSizeLimit': 25165824, u'Session': {u'id': u'********************************'}, u'User': {u'DisplayName': u'Your Name', u'NickName': u'nickname', u'id': 9999999}, u'AccountType': u'Pro', u'PasswordHash': u'********'}
    
    >>> smugmug.albums.get()
    
    [{u'Category': {u'id': 21, u'Name': u'Trucks'}, u'Passworded': False, u'id': 3702665, u'Title': u'2007 Tundra Crewmax'}, {u'Category': {u'id': 39, u'Name': u'Births'}, u'Passworded': False, u'id': 9992, u'Title': u"Son's Birth"}]
    
    >>> smugmug.albums.getInfo(999999999999999)
    
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "/Projects/Cixate/Smuggler/trunk/src/api/method.py", line 152, in __call__
        return self.smuggler.execute(self.module, *args, **kwargs)
      File "api/smuggler.py", line 65, in execute
        raise errors.get(response.code, response.message)
    api.errors.SystemError: system error
    
    >>> smugmug.albums.getInfo(3702665)
    
    {u'Category': {u'id': 21}, u'Title': u'2007 Tundra Crewmax', u'UnsharpThreshold': 0.050000000000000003, u'Comments': True, u'WorldSearchable': False, u'UnsharpAmount': 0.20000000000000001, u'LastUpdated': u'2007-10-23 15:43:25', u'Template': {u'id': 0}, u'Highlight': {u'id': 0}, u'PasswordHint': u'', u'Public': False, u'FriendEdit': False, u'Originals': True, u'Description': u'2007 Toyota Tundra Crewmax, 4x2 5.7L V8, 380 HP', u'Watermark': {u'id': 0}, u'Printable': False, u'id': 3702665, u'Filenames': False, u'SortDirection': False, u'External': True, u'Password': u'', u'ImageCount': 19, u'X2Larges': True, u'SubCategory': {u'id': 0}, u'Larges': True, u'DefaultColor': False, u'SortMethod': u'Position', u'UnsharpRadius': 1, u'Protected': False, u'UnsharpSigma': 1, u'SmugSearchable': False, u'Clean': False, u'Position': 1, u'X3Larges': True, u'FamilyEdit': False, u'EXIF': True, u'Share': True, u'Community': {u'id': 0}, u'Header': False, u'XLarges': True, u'HideOwner': False, u'Watermarking': False, u'ProofDays': 0, u'Keywords': u'', u'CanRank': True, u'Backprinting': u'', u'Geography': False}
    
    >>> smugmug.images.get(3702665)
    
    [{u'id': 212117936}, {u'id': 212118013}, {u'id': 212118179}, {u'id': 212118374}, {u'id': 212117805}, {u'id': 212117885}, {u'id': 212118536}, {u'id': 212118834}, {u'id': 212118698}, {u'id': 212118986}, {u'id': 212119402}, {u'id': 212120243}, {u'id': 212119138}, {u'id': 212117672}, {u'id': 212117735}, {u'id': 212119536}, {u'id': 212119823}, {u'id': 212119977}, {u'id': 212120115}]
    
    >>> smugmug.image.getInfo(212117936)
    
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "/Projects/Cixate/Smuggler/trunk/src/api/smuggler.py", line 77, in __getattr__
        module = __import__(key, globals(), locals())
    ImportError: No module named image
    
    >>> smugmug.images.getInfo(212117936)
    
    {u'Album': {u'id': 3702665}, u'LargeURL': u'http://cixate.smugmug.com/photos/212117936-L.jpg', u'OriginalURL': u'http://cixate.smugmug.com/photos/212117936-O.jpg', u'X2LargeURL': u'http://cixate.smugmug.com/photos/212117936-X2.jpg', u'X3LargeURL': u'http://cixate.smugmug.com/photos/212117936-X3.jpg', u'AlbumURL': u'http://cixate.smugmug.com/gallery/3702665/1/212117936', u'Width': 3072, u'Height': 2304, u'SmallURL': u'http://cixate.smugmug.com/photos/212117936-S.jpg', u'id': 212117936, u'Format': u'JPG', u'Date': u'2007-10-23 15:20:06', u'ThumbURL': u'http://cixate.smugmug.com/photos/212117936-Th.jpg', u'XLargeURL': u'http://cixate.smugmug.com/photos/212117936-XL.jpg', u'MD5Sum': u'7d063826a3657396d1062fa11f088407', u'Caption': u'Big grill', u'TinyURL': u'http://cixate.smugmug.com/photos/212117936-Ti.jpg', u'Position': 1, u'Watermark': u'0', u'LastUpdated': u'2007-10-23 15:45:39', u'FileName': u'PA230278.JPG', u'MediumURL': u'http://cixate.smugmug.com/photos/212117936-M.jpg', u'Keywords': u'', u'Serial': 0, u'Size': 1494877}
    
    >>> smugmug.logout()
    {u'Successful': u''}
    
    The ORM wrapper works like this:
    >>> from smuggler.orm import Runner
    >>> from smuggler.api import Smuggler
    >>> smugmug = Smuggler()
    >>> smugmug.login.withPassword('test', Password='********', APIKey='********************************')
    >>> runner = Runner(smugmug)
    >>> albums = runner.get_all(Album)
    >>> album = albums[0]
    >>> album.id
    
    3702665
    
    >>> album.title
    
    u'2007 Tundra Crewmax'
    
    >>> album.title = 'My New Truck'
    >>> album.save()
    
    >>> image = Image(album)
    >>> image.caption = 'Spacious cab'
    >>> image.filename = '/My Photos/My Truck/PA230279.JPG
    >>> image.save()
    >>> image.crop(100, 100, 0, 0)
    >>> image.rotate(Degrees=90, Flip=False)
    
    >>> smugmug.logout()
    {u'Successful': u''}
    
    After the API and ORM are complete I will be making a sync library that will allow you to keep a directories in sync with your SmugMug account. With that library I will create a Windows Service that will run in the back ground and keep you in sync and a cross-platform GUI that works like CVS/SVN diff GUIs to allow you to keep your albums in sync. I haven't had time to complete the syncing stuff, and based on the multiple syncing submissions, I may not need to create the GUI although I will still create the library. I'll then be using the library a lot in my web applications using Python, Django, and Turbogears.

    I'm working on packaging up and setting up the project on Google Code tonight at http://code.google.com/p/smuggler/.

    Cool. Funny thing is I think most folks playing with python will end up doing this. I did it as well: http://zmugtools.svn.sourceforge.net/viewvc/zmugtools/trunk/zmugjson/zmugjson.py?revision=151&view=markup
  • Options
    rjonnarjonna Registered Users Posts: 1 Beginner grinner
    edited November 1, 2007
    FireUploader (Firefox addon)
    Hi,

    Below is the link to Fireuploader

    http://www.fireuploader.com/ext/fireuploader/FireUploader_v0.3.2.xpi

    Features:

    - This firefox addon has an FTP-like interface where you see the local folders/files onto the left and remote files to the right.

    - You can upload to Smugmug (or to various other supported sites) with just one click of a button.

    -There is also a drop-box (see the icon on the firefox statusbar) which allows you to drag-n-drop files from Windows Explorer.

    -It works on all three platforms, Windows, Linux and Mac (basically it works wherever firefox works).

    - There is a progress bar to monitor the upload progress.

    - Also, photo description/tags etc can be updated using a slick interface by just clicking on the photo on the remote panel, modify the information and click save.

    - There is a thumbnail support to view the local files (click on the small button on the left hand side beside refresh button).

    I couldn't login to the forums yesterday (seems there is a bug). So, I posted it today. Hope I am still in the contest.

    Thanks,
    Rahul Jonna.
  • Options
    mjohnsonperlmjohnsonperl Registered Users Posts: 41 Big grins
    edited November 4, 2007
    I have now released SyncMug for Mac OS X
    http://www.digitalmediashelf.com/syncmug/

    I wasn't able to test it on any other computer besides the one I built the binary on, and that systems I borrowed, so please let me know if it doesn't run.

    I just didn't have time to get this out before October 31st.
  • Options
    dresdres Registered Users Posts: 7 Beginner grinner
    edited November 4, 2007
    SmugMug Gadget
    Not in time for the contest but I have started work on a gadget to show SmugMug galleries on your Google IG portal or embed in any web page. The gadget is here - http://hosting.gmodules.com/ig/gadgets/file/111500584010921510819/smugmug.xml

    You can see an example of the widget in a web page here - http://googlemodules.com/module/4209/

    I'm planning on API features later and support for pretty much every social network out there. Right now it just works with any Smug feed.

    -Andres
  • Options
    greenpeagreenpea Registered Users Posts: 880 Major grins
    edited November 4, 2007
    dres wrote:
    Not in time for the contest but I have started work on a gadget to show SmugMug galleries on your Google IG portal or embed in any web page. The gadget is here - http://hosting.gmodules.com/ig/gadgets/file/111500584010921510819/smugmug.xml

    You can see an example of the widget in a web page here - http://googlemodules.com/module/4209/

    I'm planning on API features later and support for pretty much every social network out there. Right now it just works with any Smug feed.

    -Andres
    Very cool gadget! I took a stab at trying to write a smugmug google gadget a while back and never quite got it to work the way I wanted. Although I just used the rss feed and not the api.
    Andrew
    initialphotography.smugmug.com

    "The camera is an instrument that teaches people how to see without a camera" - Dorothea Lange
  • Options
    onethumbonethumb Administrators Posts: 1,269 Major grins
    edited November 5, 2007
    Wow!
    Wow, I'm totally blown away by how many great submissions there were!

    In case you hadn't heard, my new baby girl, Audrey, was born the morning of October 30th, so I haven't had time to check out all the entries yet. But I wanted to make sure everyone knew that I was still alive and can't wait to hand out some prizes. :)

    We will *definitely* be doing more contests in the near future, since this one went so well, so if your app didn't quite meet the deadline (or you have some great new features to add) - no worries, more is coming.

    Thanks, everyone, for submitting such great entries!
  • Options
    greenpeagreenpea Registered Users Posts: 880 Major grins
    edited November 5, 2007
    onethumb wrote:
    ...In case you hadn't heard, my new baby girl, Audrey, was born the morning of October 30th...

    Congratulations!
    Andrew
    initialphotography.smugmug.com

    "The camera is an instrument that teaches people how to see without a camera" - Dorothea Lange
  • Options
    NikolaiNikolai Registered Users Posts: 19,035 Major grins
    edited November 5, 2007
    Don,
    onethumb wrote:
    ...In case you hadn't heard, my new baby girl, Audrey, was born the morning of October 30th...

    Huge congrats! clap.gifclap.gif
    "May the f/stop be with you!"
  • Options
    darryldarryl Registered Users Posts: 997 Major grins
    edited November 5, 2007
    dres wrote:
    Not in time for the contest but I have started work on a gadget to show SmugMug galleries on your Google IG portal or embed in any web page. The gadget is here - http://hosting.gmodules.com/ig/gadgets/file/111500584010921510819/smugmug.xml

    You can see an example of the widget in a web page here - http://googlemodules.com/module/4209/

    I'm planning on API features later and support for pretty much every social network out there. Right now it just works with any Smug feed.

    -Andres

    Sweet! Is it supposed to work with RSS *and* Atom Feeds? The example showed Atom, and when I tried my RSS feed, it didn't seem to work.

    Also, why does the "Add to Google" button show up after I've already added it to my iGoogle?

    Also, can you use the Small size image and scale it down? Thumbs are so tiny!

    Thanks!

    --Darryl
  • Options
    onethumbonethumb Administrators Posts: 1,269 Major grins
    edited November 5, 2007
    darryl wrote:
    Sweet! Is it supposed to work with RSS *and* Atom Feeds? The example showed Atom, and when I tried my RSS feed, it didn't seem to work.

    Also, why does the "Add to Google" button show up after I've already added it to my iGoogle?

    Also, can you use the Small size image and scale it down? Thumbs are so tiny!

    Thanks!

    --Darryl

    Better yet, use custom sizes to get them "just right" :)
  • Options
    dresdres Registered Users Posts: 7 Beginner grinner
    edited November 6, 2007
    onethumb wrote:
    Better yet, use custom sizes to get them "just right" :)
    I'd be happy to add some more features. I only tried it with atom but adding RSS support won't be hard. I see the RSS feed has much more info, so I can also add support for different sizes too.

    Let me know if there are any other features you would like to see.
  • Options
    dresdres Registered Users Posts: 7 Beginner grinner
    edited November 6, 2007
    dres wrote:
    I'd be happy to add some more features. I only tried it with atom but adding RSS support won't be hard. I see the RSS feed has much more info, so I can also add support for different sizes too.

    Let me know if there are any other features you would like to see.
    RSS now works and you can specify your preferred image height.

    Add it here:

    http://fusion.google.com/ig/add?synd=open&source=ggyp&moduleurl=http://hosting.gmodules.com/ig/gadgets/file/111500584010921510819/smugmug.xml
  • Options
    ifotoproifotopro Registered Users Posts: 6 Beginner grinner
    edited November 13, 2007
    onethumb wrote:
    In case you hadn't heard, my new baby girl, Audrey, was born the morning of October 30th, so I haven't had time to check out all the entries yet. But I wanted to make sure everyone knew that I was still alive and can't wait to hand out some prizes. :)
    Congrats! I too have a daughter with a birthday on Oct. 30th. Hope everyone is doing well.

    I enjoyed developing something using the Smugmug API . I look forward to hearing about the results.

    -Mark
    http://www.ifotopro.com/SmugSync.html
  • Options
    carolinecaroline Registered Users Posts: 1,302 Major grins
    edited November 15, 2007
    onethumb wrote:

    In case you hadn't heard, my new baby girl, Audrey, was born the morning of October 30th, so I haven't had time to check out all the entries yet. But I wanted to make sure everyone knew that I was still alive and can't wait to hand out some prizes. :)

    We will *definitely* be doing more contests in the near future, since this one went so well, so if your app didn't quite meet the deadline (or you have some great new features to add) - no worries, more is coming.

    Thanks, everyone, for submitting such great entries!

    Congratulations clap.gif - can add news of baby Audrey to the SmugMug Monday Blog? please ?

    Caroline
    Mendip Blog - Blog from The Fog, life on the Mendips
    www.carolineshipsey.co.uk - Follow me on G+

    [/URL]
  • Options
    GarethLewinGarethLewin Registered Users Posts: 95 Big grins
    edited November 18, 2007
    Congrats :)

    So who won? Or is it still undecided?
Sign In or Register to comment.