diff --git a/flickrfeeds/FlickrFeedsParser.inc b/flickrfeeds/FlickrFeedsParser.inc
new file mode 100644
index 0000000..6721811
--- /dev/null
+++ b/flickrfeeds/FlickrFeedsParser.inc
@@ -0,0 +1,76 @@
+<?php
+/**
+ * @file
+ * Flickr feeds parser class.
+ */
+
+/**
+ * Class definition for Flickr Parser.
+ */
+class FlickrFeedsParser extends FeedsParser {
+
+  public function parse(FeedsSource $source, FeedsFetcherResult $fetcher_result) {
+    $flickr_feed = $fetcher_result->getRaw();
+    $result = new FeedsParserResult();
+
+    $json = json_decode($flickr_feed);
+
+    $items = array();
+    foreach ($json->items as $entry) {
+      $items[] = array(
+        'title' => (isset($entry->title) ? $entry->title : ''),
+        'link' => (isset($entry->link) ? $entry->link : ''),
+        'media' => (isset($entry->media->m) ? $entry->media->m : ''),
+        'date_taken' => (isset($entry->date_taken) ? $entry->date_taken : ''),
+        'description' => (isset($entry->description) ? $entry->description : ''),
+        'published' => (isset($entry->published) ? $entry->published : ''),
+        'author' => (isset($entry->author) ? $entry->author : ''),
+        'author_id' => (isset($entry->author_id) ? $entry->author_id : ''),
+        'tags' => (isset($entry->tags) ? $entry->tags : ''),
+      );
+    }
+    $result->items = $items;
+    return $result;
+  }
+
+  public function getMappingSources() {
+    return parent::getMappingSources() + array(
+      'title' => array(
+        'name' => t('Title'),
+        'description' => t('Flickr photo title.'),
+      ),
+      'link' => array(
+        'name' => t('Link'),
+        'description' => t('Link to the Flickr photo page.'),
+      ),      
+      'media' => array(
+        'name' => t('Media'),
+        'description' => t('Link to the photo (or video "thumb") itself.'),
+      ),      
+      'date_taken' => array(
+        'name' => t('Date taken'),
+        'description' => t('ISO 8601 format (e.g. 2011-12-06T14:24:28-08:00).'),
+      ),      
+      'description' => array(
+        'name' => t('Description'),
+        'description' => t('Flickr photo description.'),
+      ),      
+      'published' => array(
+        'name' => t('Published'),
+        'description' => t('ISO 8601 format (e.g. 2011-12-06T14:24:28-08:00).'),
+      ),      
+      'author' => array(
+        'name' => t('Author'),
+        'description' => t('Email (username).'),
+      ),      
+      'author_id' => array(
+        'name' => t('Author ID'),
+        'description' => t('E.g. 98518260@N02'),
+      ),      
+      'tags' => array(
+        'name' => t('Tags'),
+        'description' => t('Space separated list of terms.'),
+      ),      
+    );
+  } 
+}
diff --git a/flickrfeeds/README.txt b/flickrfeeds/README.txt
new file mode 100644
index 0000000..ca536d6
--- /dev/null
+++ b/flickrfeeds/README.txt
@@ -0,0 +1,26 @@
+Note that this sub-module does not depend (yet) on the main Flickr module. It has a dependency on the Feeds and Date module.
+
+Below is an example how to set up a Flickr feed.
+
+Besides this module enable the sub-module Feeds UI (feeds_ui, part of Feeds) and its dependencies.
+
+Create at 'admin/structure/types/add' a content type 'Flickr user feed' (Machine name: flickr_user_feed). You can delete the unused 'Body' field.
+
+Create a content type 'Flickr user feed item' (Machine name: flickr_user_feed_item) with the following extra fields:
+- Link (field_link) - Field type: Text field
+- Media (field_media) - Field type: Text field
+- Date taken (field_date_taken) - Field type: Date (ISO format) - Widget: Text
+  field - DATE TAKEN FIELD SETTINGS: Date attributes to collect: select all -
+  Time zone handling: UTC
+- Author (field_author) - Field type: Text field
+- Author ID (field_author_id) - Field type: Text field
+- Tags (field_terms) - Field type: Text field
+Leave the default added 'Title' and 'Body' field untouched.
+
+Create at 'admin/structure/feeds/import' a new 'Feeds importer' using the file 'example_user_importer.txt' (in the same folder as this README.txt).
+
+Create a feed at 'node/add/flickr-user-feed'. A title like 'Uploads from lolandese1' will do but is not relevant.
+Use a feed URL like:
+https://api.flickr.com/services/feeds/photos_public.gne/?id=98518260@N02&media=b&format=json&nojsoncallback=1
+
+After saving you should get a status message like 'Created 13 nodes'. Go to 'admin/content' to check.
diff --git a/flickrfeeds/example_user_importer.txt b/flickrfeeds/example_user_importer.txt
new file mode 100644
index 0000000..bce78b6
--- /dev/null
+++ b/flickrfeeds/example_user_importer.txt
@@ -0,0 +1,94 @@
+$feeds_importer = new stdClass();
+$feeds_importer->disabled = FALSE; /* Edit this to true to make a default feeds_importer disabled initially */
+$feeds_importer->api_version = 1;
+$feeds_importer->id = 'flickr_user_feed';
+$feeds_importer->config = array(
+  'name' => 'Flickr user feed',
+  'description' => '',
+  'fetcher' => array(
+    'plugin_key' => 'FeedsHTTPFetcher',
+    'config' => array(
+      'auto_detect_feeds' => FALSE,
+      'use_pubsubhubbub' => FALSE,
+      'designated_hub' => '',
+      'request_timeout' => NULL,
+      'auto_scheme' => 'http',
+      'accept_invalid_cert' => FALSE,
+    ),
+  ),
+  'parser' => array(
+    'plugin_key' => 'FlickrFeedsParser',
+    'config' => array(),
+  ),
+  'processor' => array(
+    'plugin_key' => 'FeedsNodeProcessor',
+    'config' => array(
+      'expire' => '-1',
+      'author' => 0,
+      'authorize' => 0,
+      'mappings' => array(
+        0 => array(
+          'source' => 'title',
+          'target' => 'title',
+          'unique' => 0,
+        ),
+        1 => array(
+          'source' => 'link',
+          'target' => 'field_link',
+          'unique' => FALSE,
+        ),
+        2 => array(
+          'source' => 'media',
+          'target' => 'field_media',
+          'unique' => FALSE,
+        ),
+        3 => array(
+          'source' => 'media',
+          'target' => 'guid',
+          'unique' => 1,
+        ),
+        4 => array(
+          'source' => 'date_taken',
+          'target' => 'field_date_taken:start',
+          'unique' => FALSE,
+        ),
+        5 => array(
+          'source' => 'description',
+          'target' => 'body',
+          'format' => 'full_html',
+        ),
+        6 => array(
+          'source' => 'published',
+          'target' => 'created',
+          'unique' => FALSE,
+        ),
+        7 => array(
+          'source' => 'author',
+          'target' => 'field_author',
+          'unique' => FALSE,
+        ),
+        8 => array(
+          'source' => 'author_id',
+          'target' => 'field_author_id',
+          'unique' => FALSE,
+        ),
+        9 => array(
+          'source' => 'tags',
+          'target' => 'field_terms',
+          'unique' => FALSE,
+        ),
+      ),
+      'update_existing' => '2',
+      'update_non_existent' => 'skip',
+      'input_format' => 'full_html',
+      'skip_hash_check' => 0,
+      'bundle' => 'flickr_user_feed_item',
+    ),
+  ),
+  'content_type' => 'flickr_user_feed',
+  'update' => 0,
+  'import_period' => '43200',
+  'expire_period' => 3600,
+  'import_on_create' => 1,
+  'process_in_background' => 0,
+);
diff --git a/flickrfeeds/flickrfeeds.info b/flickrfeeds/flickrfeeds.info
new file mode 100644
index 0000000..acde573
--- /dev/null
+++ b/flickrfeeds/flickrfeeds.info
@@ -0,0 +1,7 @@
+name = Feeds: Flickr parser
+description = Adds a JSON Flickr feed processor to the Feeds module
+dependencies[] = feeds
+dependencies[] = date
+package = Flickr
+version = VERSION
+core = 7.x
diff --git a/flickrfeeds/flickrfeeds.install b/flickrfeeds/flickrfeeds.install
new file mode 100644
index 0000000..3aa2f93
--- /dev/null
+++ b/flickrfeeds/flickrfeeds.install
@@ -0,0 +1,21 @@
+<?php
+/**
+ * @file
+ * Schema definitions install/update/uninstall hooks.
+ */
+
+/**
+ * Implementation of hook_enable().
+ */
+function flickrfeeds_enable() {
+  //clear the cache to display in Feeds as available plugin.
+  cache_clear_all('plugins:feeds:plugins', 'cache');
+}
+
+/**
+ * Implementation of hook_disable().
+ */
+function flickrfeeds_disable() {
+  //clear the cache to display in Feeds as available plugin.
+  cache_clear_all('plugins:feeds:plugins', 'cache');
+}
diff --git a/flickrfeeds/flickrfeeds.module b/flickrfeeds/flickrfeeds.module
new file mode 100644
index 0000000..41eb720
--- /dev/null
+++ b/flickrfeeds/flickrfeeds.module
@@ -0,0 +1,33 @@
+<?php 
+/**
+ * @file
+ * Adds a Flickr feed processor to the Feeds module.
+ */
+
+/**
+ * Implementation of hook_ctools_plugin_api().
+ */
+function flickrfeeds_ctools_plugin_api($owner, $api) {
+  if ($owner == 'feeds' && $api == 'plugins') {
+    return array('version' => 1);
+  }
+}
+
+/**
+ * Implementation of hook_feeds_plugins().
+ */
+function flickrfeeds_feeds_plugins() {
+  $info = array();
+  $info['FlickrFeedsParser'] = array(
+    'name' => 'Flickr parser',
+    'description' => 'Parse Flickr feeds.',
+    'help' => '',
+    'handler' => array(
+      'parent' => 'FeedsParser',
+      'class' => 'FlickrFeedsParser',
+      'file' => 'FlickrFeedsParser.inc',
+      'path' => drupal_get_path('module', 'flickrfeeds'),
+    ),
+  );
+  return $info;
+}
