{"id":18270655,"url":"https://github.com/pierrotsmnrd/grabKit","last_synced_at":"2025-04-05T01:30:47.312Z","repository":{"id":56932107,"uuid":"4868926","full_name":"pierrotsmnrd/grabKit","owner":"pierrotsmnrd","description":"Drop-in iOS component to easily import photos from Facebook, FlickR, Instagram, Picasa, and more ","archived":false,"fork":false,"pushed_at":"2013-11-13T20:17:06.000Z","size":10717,"stargazers_count":396,"open_issues_count":26,"forks_count":89,"subscribers_count":50,"default_branch":"master","last_synced_at":"2025-03-24T03:02:28.686Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Objective-C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pierrotsmnrd.png","metadata":{"files":{"readme":"README.md","changelog":"changelog.txt","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2012-07-03T06:51:42.000Z","updated_at":"2024-09-19T08:50:12.000Z","dependencies_parsed_at":"2022-08-21T00:00:31.597Z","dependency_job_id":null,"html_url":"https://github.com/pierrotsmnrd/grabKit","commit_stats":null,"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pierrotsmnrd%2FgrabKit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pierrotsmnrd%2FgrabKit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pierrotsmnrd%2FgrabKit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pierrotsmnrd%2FgrabKit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pierrotsmnrd","download_url":"https://codeload.github.com/pierrotsmnrd/grabKit/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247276042,"owners_count":20912285,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-05T11:38:47.438Z","updated_at":"2025-04-05T01:30:44.959Z","avatar_url":"https://github.com/pierrotsmnrd.png","language":"Objective-C","readme":"\nGrabKit\n=======================\n\nGrabKit for iOS offers a ready-to-use component to easily import photos from social networks. \n\nGrabKit allows you to retrieve photos from  :\n* Facebook\n* FlickR\n* Picasa\n* Instagram\n* iPhone/iPad\n* ... and more to come\n\n\n\nAbstract\n--------\n\n\nIn your iPhone/iPad applications, you may want to let your users access their photo albums hosted on various social networks like Facebook or FlickR, or stored in the device.\nUnfortunately, the websites hosting these images offer different APIs and different libraries to authentify a user, grab its photo albums, etc.\n\nGrabKit is made to wrap these differences into :\n* a simple library : GrabKitLib \n* a simple ready-to-use component : GrabKitPicker, based on GrabKitLib\n\n\nGrabKitPicker is **Developer-friendly** :\n\n* Compatible with iOS 5.1 and higher, for **both iPhone and iPad**, the GrabKitPicker is already compatible with your project. \n* Once you've installed and configured it, all you have to do is to present it \"modally\" on iPhone, or through a popover on iPad.\n* Easy to use, GrabKitPicker offers two main classes : **GRKPickerViewController**, and its delegate **GRKPickerViewControllerDelegate**.\n* Through its delegation protocol, you can easily handle the user's interactions.\n* Easy to customize, it will fit to the design of your applications.\n* Of course, GrabKitPicker uses ARC, and is full of documentation and comments.\n\n\nGrabKitPicker is also **User-friendly** :\n* Translated in French and English so far, but soon translated in other languages. Feel free to help ! :)\t\n* The default interface is simple and easy to use, though heavily tested to offer the best user-experience possible.\n\n\n\u003cp align=\"center\"\u003e\n\u003cimg alt=\"screenshot of the demo application\" width=\"285\" height=\"539\" src=\"https://github.com/pierrotsmnrd/grabKit/raw/master/doc/demo.gif\"/\u003e\u003cbr /\u003e\nWatch this demo on YouTube : http://www.youtube.com/watch?v=6sOgy_3P4Ws\u003cbr /\u003e\n\u003c/p\u003e\n\n\n\nDemo application\n-------------\n\nThe best way to discover how powerful GrabKit is, is to run the Demo application.\nOnly a few steps are needed to run it, just follow the [detailled instructions in the wiki](https://github.com/pierrotsmnrd/grabKit/wiki/How-to-run-GrabKit's-demo-application)\n\n\nHow to use Grabkit in your app\n-------------\n\n\n### Installation\n\nTo install and setup GrabKit in your project, follow the [detailled instructions in the wiki](https://github.com/pierrotsmnrd/grabKit/wiki/How-to-install-GrabKit)\n\n                    \n### Configuration                    \n                    \nIn order to grab content from each service, you need to register your app and get an API key from each service. \n\nPlease follow the [detailled instructions in the wiki](https://github.com/pierrotsmnrd/grabKit/wiki/How-to-configure-GrabKit) \n\n\n### Add the GrabKitPicker in your code \n\nFrom any UIViewController in your app, all you have to do is similar to this :\n\t\n\t// Retrieve the singleton of GrabKitPicker\n\tGRKPickerViewController * grabkitPickerViewController = [GRKPickerViewController sharedInstance];\n\n\t// Set the picker's delegate. \n\t// Don't forget to add GRKPickerViewControllerDelegate in the list of protocols implemented by your controller.\n\tgrabkitPickerViewController.pickerDelegate = self;\n\n\t // We allow the selection \n    grabkitPickerViewController.allowsSelection = YES;\n\tgrabkitPickerViewController.allowsMultipleSelection = YES;\n\t\n\t[self presentViewController:grabkitPickerViewController animated:YES completion:^{\n    \t// GrabKitPicker is now displayed        \n    }];\n\t\n\t\nOn iPad, you can simply call this method on the picker, to present it from a UIPopover :\n\t\n\t[grabkitPickerViewController presentInPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];\n\t\n\t\nThen, implement in your controller the delegate method you need. \nThe delegate method called when the picker is dismissed, passing the array of the photos the user selected, is :\n\n\t-(void)picker:(GRKPickerViewController*)picker didDismissWithSelectedPhotos:(NSArray*)selectedPhotos {\n\t\t\n\t\t// selectedPhotos is an NSArray of GRKPhoto objects. Check the \"Model\" section below for more details.\n\t\t\t\n\t}\n\n\n\nModel \n-------------\n\n* A ``GRKAlbum`` represents a **photo album**. This object has the following properties :\n\t* ``albumId`` : id of the album, as returned by the service.\n\t* ``count`` : total number of photos for the album, according to the service. \n\t* ``name`` : name of the album.\n\t* ``coverPhoto`` : an instance of a ``GRKPhoto`` representing the cover photo of the album\n\t\n* A ``GRKPhoto`` represents a **photo**. It has a ``name`` (title of the photo), a ``caption``(its description). \nA ``GRKPhoto`` has several **images** which represent the photo in different sizes.\n\n* an **image** is an instance of ``GRKImage``. it has a ``width``, a ``height``, an ``URL``, and a flag (``isOriginal``) set at ``YES`` if this image is the original image uploaded by the user. \n\n\nComing soon\n-------\n\n* More tests and examples\n* More services\n* More content to grab\n\nFeel free to help and contribute :)\n\n\nGrabKit v1.3 changes\n-------\n* Introducing the GrabKitPicker, and much more. [check the full changelog](https://github.com/pierrotsmnrd/grabKit/blob/master/changelog.txt)\n\t\n\nFAQ\n-------\n[All your questions have answers.](https://github.com/pierrotsmnrd/grabKit/wiki/FAQ) \n\t\n\nApplications using GrabKit\n-------------\n\nSeveral top-rated applications use GrabKit, as :\n* [XnSketch](http://www.xnview.com/en/mobile/xnsketch/) : Turn your photos into drawing, cartoons or sketch images in one click to create instant works of art.\n* [1sleeve](http://www.1sleeve.com/) : 1sleeve is a cool and innovative iPad app to design, customize, personalize and buy your own sleeve for iPad, iPad mini and macbookAir 11\" and 13\".\n* [Printzel](https://printzel.it/get/printzel) : Create an elegant photo book in minutes!\n\n\nDonations\n-------\n\nGrabKit is **\\*100% free**\\* .\nHowever, developing and supporting this project is hard work and costs real money. Please help support the development of GrabKit !\n\n**10%** of your donations is donated to the **Free Software Foundation**.\n\n[![donation](https://www.paypalobjects.com/en_US/i/btn/btn_donate_LG.gif)](https://www.paypal.com/cgi-bin/webscr?cmd=_donations\u0026business=GEHQ8UX5RR298\u0026lc=US\u0026currency_code=USD\u0026bn=PP%2dDonationsBF%3abtn_donate_LG%2egif%3aNonHosted)\n\n\n\nLicense\n-------\n\nThis project is under MIT License, please feel free to contribute and use it.\n\nThe GrabKitPicker uses :\n* NVUIGradientButton made by Nicolas Verinaud. https://github.com/nverinaud/NVUIGradientButton/\n* MBProgressHUD made by Jonathan George. https://github.com/jdg/MBProgressHUD/\n* PSTCollectionView by Peter Steinberger. https://github.com/steipete/PSTCollectionView/\n\n\nThe Facebook Grabber uses :\n* ISO8601DateFormatter made by Peter Hosey. http://boredzo.org/iso8601unparser/\n* Facebook iOS SDK  https://github.com/facebook/facebook-ios-sdk\n\nThe FlickR Grabber uses the ObjectiveFlickR project :  https://github.com/lukhnos/objectiveflickr\n\nThe Picasa Grabber uses \"Google Data APIs Objective-C Client Library\" : https://code.google.com/p/gdata-objectivec-client/\n\n\nSpecial thanks to the talented [Laurence Vagner](http://www.redisdead.net/) for the use of her photo album 'Foodporn' in the demo video.\n\nCheck her [FlickR page](http://www.flickr.com/photos/redisdead) for more pictures under Creative Commons licence.\n\n\nThe demo video has been made with CaptureRecord. https://github.com/gabriel/CaptureRecord\n\n\nContact\n-------\n\nAre you using GrabKit in your project ? Do you have a suggestion ? Any question ? \n\n\nPierre-Olivier Simonard \n\npierre.olivier.simonard@gmail.com\n\nwww.twitter.com/pierrotsmnrd\n\nwww.linkedin.com/in/pierreoliviersimonard\n\n","funding_links":["https://www.paypal.com/cgi-bin/webscr?cmd=_donations\u0026business=GEHQ8UX5RR298\u0026lc=US\u0026currency_code=USD\u0026bn=PP%2dDonationsBF%3abtn_donate_LG%2egif%3aNonHosted"],"categories":["etc"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpierrotsmnrd%2FgrabKit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpierrotsmnrd%2FgrabKit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpierrotsmnrd%2FgrabKit/lists"}