You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@streams.apache.org by sb...@apache.org on 2014/03/21 20:44:47 UTC

[1/5] adding google provider, tweaks to localbuilder and hdfs reader

Repository: incubator-streams
Updated Branches:
  refs/heads/STREAMS-26 2ec7fe8cf -> 61592dc07


http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/61592dc0/streams-contrib/streams-provider-google/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-google/pom.xml b/streams-contrib/streams-provider-google/pom.xml
new file mode 100644
index 0000000..57da330
--- /dev/null
+++ b/streams-contrib/streams-provider-google/pom.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <groupId>org.apache.streams</groupId>
+        <artifactId>streams-contrib</artifactId>
+        <version>0.1.STREAMS26-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>streams-provider-google</artifactId>
+
+    <packaging>pom</packaging>
+
+    <properties>
+
+    </properties>
+
+    <modules>
+        <module>google-gmail</module>
+        <module>google-gplus</module>
+    </modules>
+
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.apache.streams</groupId>
+                <artifactId>streams-config</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.streams</groupId>
+                <artifactId>streams-core</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.streams</groupId>
+                <artifactId>streams-pojo</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+</project>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/61592dc0/streams-core/src/main/java/org/apache/streams/core/builders/LocalStreamBuilder.java
----------------------------------------------------------------------
diff --git a/streams-core/src/main/java/org/apache/streams/core/builders/LocalStreamBuilder.java b/streams-core/src/main/java/org/apache/streams/core/builders/LocalStreamBuilder.java
index 3e99827..3fc29cc 100644
--- a/streams-core/src/main/java/org/apache/streams/core/builders/LocalStreamBuilder.java
+++ b/streams-core/src/main/java/org/apache/streams/core/builders/LocalStreamBuilder.java
@@ -4,6 +4,7 @@ import org.apache.streams.core.StreamsDatum;
 import org.apache.streams.core.StreamsPersistWriter;
 import org.apache.streams.core.StreamsProcessor;
 import org.apache.streams.core.StreamsProvider;
+import org.apache.streams.core.tasks.LocalStreamMonitorThread;
 import org.apache.streams.core.tasks.StreamsProviderTask;
 import org.apache.streams.core.tasks.StreamsTask;
 import org.apache.streams.util.SerializationUtil;
@@ -11,10 +12,7 @@ import org.joda.time.DateTime;
 
 import java.math.BigInteger;
 import java.util.*;
-import java.util.concurrent.ConcurrentLinkedQueue;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.TimeUnit;
+import java.util.concurrent.*;
 
 /**
  * {@link org.apache.streams.core.builders.StreamBuilder} implementation to run a data processing stream in a single
@@ -29,6 +27,7 @@ public class LocalStreamBuilder implements StreamBuilder{
     private Map<String, Object> streamConfig;
     private ExecutorService executor;
     private int totalTasks;
+    private LocalStreamMonitorThread monitorThread;
 
     /**
      *
@@ -127,7 +126,9 @@ public class LocalStreamBuilder implements StreamBuilder{
         this.executor = Executors.newFixedThreadPool(this.totalTasks);
         Map<String, StreamsProviderTask> provTasks = new HashMap<String, StreamsProviderTask>();
         Map<String, List<StreamsTask>> streamsTasks = new HashMap<String, List<StreamsTask>>();
+        monitorThread = new LocalStreamMonitorThread(this.executor, 1000);
         try {
+            this.executor.submit(monitorThread);
             for(StreamComponent comp : this.components.values()) {
                 int tasks = comp.getNumTasks();
                 List<StreamsTask> compTasks = new LinkedList<StreamsTask>();
@@ -145,7 +146,6 @@ public class LocalStreamBuilder implements StreamBuilder{
                 this.executor.submit(task);
                 provTasks.put(prov.getId(), (StreamsProviderTask) task);
             }
-
             while(isRunning) {
                 isRunning = false;
                 for(StreamsProviderTask task : provTasks.values()) {
@@ -155,6 +155,7 @@ public class LocalStreamBuilder implements StreamBuilder{
                     Thread.sleep(3000);
                 }
             }
+            //monitorThread.shutdown();
             this.executor.shutdown();
             //complete stream shut down gracfully 
             for(StreamComponent prov : this.providers.values()) {

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/61592dc0/streams-core/src/main/java/org/apache/streams/core/tasks/BaseStreamsTask.java
----------------------------------------------------------------------
diff --git a/streams-core/src/main/java/org/apache/streams/core/tasks/BaseStreamsTask.java b/streams-core/src/main/java/org/apache/streams/core/tasks/BaseStreamsTask.java
index 19ef977..e382607 100644
--- a/streams-core/src/main/java/org/apache/streams/core/tasks/BaseStreamsTask.java
+++ b/streams-core/src/main/java/org/apache/streams/core/tasks/BaseStreamsTask.java
@@ -53,7 +53,7 @@ public abstract class BaseStreamsTask implements StreamsTask {
     }
 
     /**
-     * NOTE NECCESSARY AT THE MOMENT.  MAY BECOME NECESSARY AS WE LOOK AT MAKING JOIN TASKS. CURRENTLY ALL TASK HAVE MAX
+     * NOTE NECESSARY AT THE MOMENT.  MAY BECOME NECESSARY AS WE LOOK AT MAKING JOIN TASKS. CURRENTLY ALL TASK HAVE MAX
      * OF 1 INPUT QUEUE.
      * Round Robins through input queues to get the next StreamsDatum. If all input queues are empty, it will return null.
      * @return the next StreamsDatum or null if all input queues are empty.

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/61592dc0/streams-core/src/main/java/org/apache/streams/core/tasks/LocalStreamMonitorThread.java
----------------------------------------------------------------------
diff --git a/streams-core/src/main/java/org/apache/streams/core/tasks/LocalStreamMonitorThread.java b/streams-core/src/main/java/org/apache/streams/core/tasks/LocalStreamMonitorThread.java
new file mode 100644
index 0000000..4c73e74
--- /dev/null
+++ b/streams-core/src/main/java/org/apache/streams/core/tasks/LocalStreamMonitorThread.java
@@ -0,0 +1,69 @@
+package org.apache.streams.core.tasks;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.lang.management.ManagementFactory;
+import java.lang.management.MemoryUsage;
+import java.util.concurrent.Executor;
+
+public class LocalStreamMonitorThread implements Runnable
+{
+    private static final Logger LOGGER = LoggerFactory.getLogger(LocalStreamMonitorThread.class);
+
+    private Executor executor;
+
+    private int seconds;
+
+    private boolean run = true;
+
+    public LocalStreamMonitorThread(Executor executor, int delayInSeconds) {
+        this.executor = executor;
+        this.seconds = delayInSeconds;
+    }
+
+    public void shutdown(){
+        this.run = false;
+    }
+
+    @Override
+    public void run()
+    {
+        while(run){
+
+            /**
+             *
+             * Note:
+             * Quick class and method to let us see what is going on with the JVM. We need to make sure
+             * that everything is running with as little memory as possible. If we are generating a heap
+             * overflow, this will be very apparent by the information shown here.
+             */
+
+            MemoryUsage memoryUsage = ManagementFactory.getMemoryMXBean().getHeapMemoryUsage();
+
+            String maxMemory = memoryUsage.getMax() == Long.MAX_VALUE ? "NO_LIMIT" :
+                    humanReadableByteCount(memoryUsage.getMax(), true);
+
+            String usedMemory = humanReadableByteCount(memoryUsage.getUsed(), true);
+
+            LOGGER.info("[monitor] Used Memory: {}, Max: {}",
+                    usedMemory,
+                    maxMemory);
+
+            try
+            {
+                Thread.sleep(seconds*1000);
+            }
+            catch (InterruptedException e)
+            { }
+        }
+    }
+
+    public String humanReadableByteCount(long bytes, boolean si) {
+        int unit = si ? 1000 : 1024;
+        if (bytes < unit) return bytes + " B";
+        int exp = (int) (Math.log(bytes) / Math.log(unit));
+        String pre = (si ? "kMGTPE" : "KMGTPE").charAt(exp-1) + (si ? "" : "i");
+        return String.format("%.1f %sB", bytes / Math.pow(unit, exp), pre);
+    }
+}


[4/5] adding google provider, tweaks to localbuilder and hdfs reader

Posted by sb...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/61592dc0/streams-contrib/streams-provider-google/google-gmail/src/test/resources/datasift_jsons.txt
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-google/google-gmail/src/test/resources/datasift_jsons.txt b/streams-contrib/streams-provider-google/google-gmail/src/test/resources/datasift_jsons.txt
new file mode 100644
index 0000000..858756a
--- /dev/null
+++ b/streams-contrib/streams-provider-google/google-gmail/src/test/resources/datasift_jsons.txt
@@ -0,0 +1,101 @@
+{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"361363177973366787","filter_level":"medium","text":"Arm and Hammer sounds like a good porno. Not baking powder","source":"<a href=\"http://twitter.com/download/android\" rel=\"nofollow\">Twitter for Android<\/a>","created_at":"Sun, 28 Jul 2013 05:51:10 +0000","lang":"en","user":{"geo_enabled":true,"statuses_count":7761,"lang":"en","utc_offset":-14400,"id":472480397,"time_zone":"Eastern Time (US & Canada)","favourites_count":5062,"description":"I hate everything. Especially you.","friends_count":385,"name":"Alexander","created_at":"Tue, 24 Jan 2012 00:22:21 +0000","screen_name":"InsulinLover","id_str":"472480397","profile_image_url":"http://a0.twimg.com/profile_images/3078961290/b86c753148bdaf13fcf7f0ea3ea2ff57_normal.jpeg","followers_count":241}},"salience":{"content":{"sentiment":5}},"klout":{"score":42},"interaction":{"schema":{"version":3},"content":"Arm and Hammer sounds like a good porno. Not baking powder","id":"1e2f7
 49b40d9ab00e0742908a9ff4d74","author":{"id":472480397,"username":"InsulinLover","name":"Alexander","link":"http://twitter.com/InsulinLover","language":"en","avatar":"http://a0.twimg.com/profile_images/3078961290/b86c753148bdaf13fcf7f0ea3ea2ff57_normal.jpeg"},"source":"Twitter for Android","link":"http://twitter.com/InsulinLover/statuses/361363177973366787","created_at":"Sun, 28 Jul 2013 05:51:10 +0000","type":"twitter"},"language":{"tag":"en","confidence":100},"demographic":{"gender":"male"}}
+{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"361366536625201152","retweeted":{"id":"361363177973366787","source":"<a href=\"http://twitter.com/download/android\" rel=\"nofollow\">Twitter for Android<\/a>","created_at":"Sun, 28 Jul 2013 05:51:10 +0000","user":{"geo_enabled":true,"statuses_count":7765,"lang":"en","utc_offset":-14400,"id":472480397,"time_zone":"Eastern Time (US & Canada)","favourites_count":5064,"description":"I hate everything. Especially you.","friends_count":386,"name":"Alexander","created_at":"Tue, 24 Jan 2012 00:22:21 +0000","screen_name":"InsulinLover","id_str":"472480397","profile_image_url":"http://a0.twimg.com/profile_images/3078961290/b86c753148bdaf13fcf7f0ea3ea2ff57_normal.jpeg","followers_count":242}},"retweet":{"id":"361366536625201152","text":"Arm and Hammer sounds like a good porno. Not baking powder","source":"<a href=\"http://twitter.com/#!/download/ipad\" rel=\"nofollow\">Twitter for iPad<\/a>","count":1,"created_at":"Sun, 28 Jul 2013 0
 6:04:30 +0000","user":{"location":"Henderson, NV","statuses_count":4851,"lang":"en","url":"https://www.facebook.com/DonMfPatchUFemaleDogs","utc_offset":-25200,"id":537777703,"time_zone":"Pacific Time (US & Canada)","favourites_count":1235,"description":"Otherwise known as @Slender_Sir","friends_count":240,"name":"Iram Gonzalez","created_at":"Tue, 27 Mar 2012 02:35:56 +0000","screen_name":"gonzalez_iram","id_str":"537777703","profile_image_url":"http://a0.twimg.com/profile_images/3325430053/65b2d200115a97ff3f9061e9cc672136_normal.jpeg","followers_count":232},"lang":"en"}},"salience":{"content":{"sentiment":5}},"klout":{"score":40},"interaction":{"schema":{"version":3},"content":"RT @InsulinLover: Arm and Hammer sounds like a good porno. Not baking powder","id":"1e2f74b90e3eab00e07452795b51705e","author":{"id":537777703,"username":"gonzalez_iram","name":"Iram Gonzalez","link":"http://twitter.com/gonzalez_iram","language":"en","avatar":"http://a0.twimg.com/profile_images/3325430053/65b
 2d200115a97ff3f9061e9cc672136_normal.jpeg"},"source":"Twitter for iPad","link":"http://twitter.com/gonzalez_iram/statuses/361366536625201152","created_at":"Sun, 28 Jul 2013 06:04:30 +0000","type":"twitter"},"language":{"tag":"en","confidence":100}}
+{"w2o":{"tags":{"topic":["Sustainability","LaundryDetergent"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":0,"topics":[{"hits":0,"name":"Weather","score":0.65636122226715}]}},"facebook":{"id":"557546084284515_565003810205409","message":"To get arm and hammer laundry detergent for 1.29 go to Walgreens and get a rain check for this product. One you have the rain check go to www.thecouponclippers.com and order the arm and hammer detergent that's $1 off. The coupons are around 12 cent each. If you have any questions please post","author":{"id":"557546084284515","name":"Coupon Savings STL","link":"http://www.facebook.com/profile.php?id=557546084284515","avatar":"https://graph.facebook.com/557546084284515/picture"},"application":"Pages Manager for Android","source":"Pages Manager for Android (121876164619130)","created_at":"Fri, 26 Jul 2013 19:39:11 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e2f62b0b691a980e066608cf545f2d6","content":"To get arm 
 and hammer laundry detergent for 1.29 go to Walgreens and get a rain check for this product. One you have the rain check go to www.thecouponclippers.com and order the arm and hammer detergent that's $1 off. The coupons are around 12 cent each. If you have any questions please post","author":{"id":"557546084284515","name":"Coupon Savings STL","link":"http://www.facebook.com/profile.php?id=557546084284515","avatar":"https://graph.facebook.com/557546084284515/picture"},"source":"Pages Manager for Android (121876164619130)","link":"http://www.facebook.com/557546084284515_565003810205409","subtype":"status","created_at":"Fri, 26 Jul 2013 19:39:25 +0000","type":"facebook"},"language":{"tag":"en","confidence":100}}
+{"w2o":{"beyatch":"yo","tags":{"topic":["Sustainability","LaundryDetergent"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":6}},"facebook":{"id":"741220477_10153006009870478","message":"Arm and Hammer-sensitive laundry detergent is really my friend right now...#shehastolearnonewayoranother","author":{"id":"741220477","name":"Nicole Reed","link":"http://www.facebook.com/profile.php?id=741220477","avatar":"https://graph.facebook.com/741220477/picture"},"source":"web","created_at":"Thu, 25 Jul 2013 16:51:28 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e2f54a72fb6a800e06682e7cdbf4b5c","content":"Arm and Hammer-sensitive laundry detergent is really my friend right now...#shehastolearnonewayoranother","author":{"id":"741220477","name":"Nicole Reed","link":"http://www.facebook.com/profile.php?id=741220477","avatar":"https://graph.facebook.com/741220477/picture"},"source":"web","subtype":"status","created_at":"Thu, 25 Jul 2013 16:51:56 +0000","type":"f
 acebook"},"language":{"tag":"en","confidence":100},"demographic":{"gender":"female"}}
+{"w2o":{"tags":{"topic":["LaundryDetergent"],"brand":["ArmAndHammer"]}},"facebook":{"id":"165282606905632_387817134652177","message":"Still Time To Get On This Deal>>>  Hot Deal At County Market On Arm & Hammer Laundry Soap w/Coupon!>>>>>>>>>>>>http://crazyforcouponsandfreebies.com/blog/?p=60571","author":{"id":"165282606905632","name":"Crazy for coupons & freebies","link":"http://www.facebook.com/profile.php?id=165282606905632","avatar":"https://graph.facebook.com/165282606905632/picture"},"source":"web","created_at":"Sat, 27 Jul 2013 02:20:01 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e2f6630a53dae80e06600495e73832a","content":"Still Time To Get On This Deal>>>  Hot Deal At County Market On Arm & Hammer Laundry Soap w/Coupon!>>>>>>>>>>>>http://crazyforcouponsandfreebies.com/blog/?p=60571","author":{"id":"165282606905632","name":"Crazy for coupons & freebies","link":"http://www.facebook.com/profile.php?id=165282606905632","avatar":"https://graph.facebook.c
 om/165282606905632/picture"},"source":"web","link":"http://www.facebook.com/165282606905632_387817134652177","subtype":"status","created_at":"Sat, 27 Jul 2013 02:20:17 +0000","type":"facebook"},"links":{"title":["Hot Deal At County Market On Arm & Hammer Laundry Soap w/Coupon! | The Daily Blog"],"normalized_url":["http://crazyforcouponsandfreebies.com/blog?p=60571"],"created_at":["Sat, 27 Jul 2013 02:20:27 +0000"],"retweet_count":[0],"code":[200],"meta":{"charset":["UTF-8"],"opengraph":[{"title":"Hot Deal At County Market On Arm & Hammer Laundry Soap w/Coupon! | The Daily Blog","description":" You Can Get Arm & Hammer On Sale At County Market For $1.99 Each Go Here And Print Your $1/3 OP-$4.96 WYB 3 + Tax GO HERE HOT DEAL!~Cheryl","image":"http://crazyforcouponsandfreebies.com/blog/wp-content/uploads/2013/07/2013-07-24_1918.png","site_name":"The Daily Blog","type":"article","url":"http://crazyforcouponsandfreebies.com/blog/?p=60571"}],"content_type":["text/html"],"lang":["en-us"]},"
 url":["http://crazyforcouponsandfreebies.com/blog/?p=60571"]},"language":{"tag":"mt","confidence":62}}
+{"w2o":{"tags":{"topic":["Sustainability","LaundryDetergent"],"brand":["Tide","ArmAndHammer"]}},"twitter":{"id":"360731330335608833","filter_level":"medium","text":"You'd have to use your ARM &amp; HAMMER to get me to drink laundry detergent. What do I  GAIN from it? The TIDE comes in &amp; SUNLIGHT disappears?","source":"<a href=\"http://favstar.fm\" rel=\"nofollow\">Favstar.FM<\/a>","created_at":"Fri, 26 Jul 2013 12:00:25 +0000","lang":"en","user":{"location":"Halifax, Canada","statuses_count":26676,"lang":"en","url":"http://favstar.fm/users/CindyMeakin/recent","id":267645953,"utc_offset":-14400,"time_zone":"Eastern Time (US & Canada)","favourites_count":156111,"description":"I wear sun glasses at night so people don't talk to me.","friends_count":2162,"name":"~Cindy~","created_at":"Thu, 17 Mar 2011 08:57:31 +0000","screen_name":"CindyMeakin","id_str":"267645953","profile_image_url":"http://a0.twimg.com/profile_images/378800000068549393/1045d699f983568a884240bf6e07ca8a_normal.jpeg
 ","followers_count":7604,"listed_count":407}},"salience":{"content":{"sentiment":0}},"klout":{"score":61},"interaction":{"schema":{"version":3},"content":"You'd have to use your ARM &amp; HAMMER to get me to drink laundry detergent. What do I  GAIN from it? The TIDE comes in &amp; SUNLIGHT disappears?","id":"1e2f5eaf4a2da280e074c2f2b84aa4f8","author":{"id":267645953,"username":"CindyMeakin","name":"~Cindy~","link":"http://twitter.com/CindyMeakin","language":"en","avatar":"http://a0.twimg.com/profile_images/378800000068549393/1045d699f983568a884240bf6e07ca8a_normal.jpeg"},"source":"Favstar.FM","link":"http://twitter.com/CindyMeakin/statuses/360731330335608833","created_at":"Fri, 26 Jul 2013 12:00:25 +0000","type":"twitter"},"language":{"tag":"en","confidence":100}}
+{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"361614949908361217","filter_level":"medium","text":"@THEmrReynolds probably a mixture of prunes, icy hot, and arm and hammer foot powder","mention_ids":[106891542],"source":"<a href=\"http://twitter.com/download/iphone\" rel=\"nofollow\">Twitter for iPhone<\/a>","in_reply_to_screen_name":"THEmrReynolds","in_reply_to_status_id":"361603144695820288","created_at":"Sun, 28 Jul 2013 22:31:37 +0000","in_reply_to_user_id":"106891542","lang":"en","mentions":["THEmrReynolds"],"user":{"geo_enabled":true,"location":"Stanford, CA","statuses_count":22223,"lang":"en","url":"http://memoirsofaGAYsh.tumblr.com","id":49340813,"utc_offset":-25200,"time_zone":"Pacific Time (US & Canada)","favourites_count":4278,"description":"?Dance is the hidden language of the soul of the body? CSRE/DRAMA Major @Stanford.  #playwright #dancer","friends_count":436,"name":"Dominique Delacroix","created_at":"Sun, 21 Jun 2009 15:29:26 +0000","screen_name":"Memoi
 rsofaGAYsh","id_str":"49340813","profile_image_url":"http://a0.twimg.com/profile_images/2258352218/MemoirsofaGAYsh_normal.jpg","followers_count":423,"listed_count":10}},"salience":{"content":{"sentiment":0}},"klout":{"score":57},"interaction":{"schema":{"version":3},"content":"@THEmrReynolds probably a mixture of prunes, icy hot, and arm and hammer foot powder","id":"1e2f7d576eeeaa80e074ae7154d45ee6","author":{"id":49340813,"username":"MemoirsofaGAYsh","name":"Dominique Delacroix","link":"http://twitter.com/MemoirsofaGAYsh","language":"en","avatar":"http://a0.twimg.com/profile_images/2258352218/MemoirsofaGAYsh_normal.jpg"},"source":"Twitter for iPhone","mention_ids":[106891542],"link":"http://twitter.com/MemoirsofaGAYsh/statuses/361614949908361217","created_at":"Sun, 28 Jul 2013 22:31:37 +0000","type":"twitter","mentions":["THEmrReynolds"]},"language":{"tag":"en","confidence":100},"demographic":{"gender":"unisex"}}
+{"w2o":{"tags":{"topic":["Sustainability","LaundryDetergent"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":0},"title":{"sentiment":0}},"youtube":{"id":"1e2e7740c1d3a700e061c997741cc686","content":"1 irish spring or softsoap body wash 15-18oz. $.50 cvs brand antacid $1/2 arm and hammer laundry detergent Blog:averagejoecouponing.blogspot.com.","author":{"name":"averagejoecouponing","link":"http://youtube.com/averagejoecouponing"},"title":"Cvs red box coupons week of 07/07","duration":"58","category":"entertainment","videolink":"http://www.youtube.com/watch?v=zRPZqYpAvnc","created_at":"Mon, 08 Jul 2013 02:13:58 +0000","contenttype":"html","type":"video"},"interaction":{"schema":{"version":3},"id":"1e2e7740c1d3a700e061c997741cc686","content":"1 irish spring or softsoap body wash 15-18oz. $.50 cvs brand antacid $1/2 arm and hammer laundry detergent Blog:averagejoecouponing.blogspot.com.","author":{"name":"averagejoecouponing","link":"http://youtube.com/averagejoecouponin
 g"},"title":"Cvs red box coupons week of 07/07","link":"http://www.youtube.com/watch?v=zRPZqYpAvnc","created_at":"Mon, 29 Jul 2013 01:22:47 +0000","type":"youtube","contenttype":"html"},"language":{"tag":"en","confidence":62}}
+{"w2o":{"tags":{"topic":["StainRemoval"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":-5}},"facebook":{"id":"602766199_10151557023101200","message":"Dust, dirt, chip crumbs, and God only knows what else are my mortal enemies as I wade in to this life or death battle armed only with this vacuum and arm and hammer odor eliminating powder. To battle!!!!","author":{"id":"602766199","name":"Chris Boothroy","link":"http://www.facebook.com/profile.php?id=602766199","avatar":"https://graph.facebook.com/602766199/picture"},"application":"Facebook for iPhone","source":"Facebook for iPhone (6628568379)","created_at":"Tue, 30 Jul 2013 00:06:43 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e2f8abea632ab80e066b5fddc080fa8","content":"Dust, dirt, chip crumbs, and God only knows what else are my mortal enemies as I wade in to this life or death battle armed only with this vacuum and arm and hammer odor eliminating powder. To battle!!!!","author":{"id":"602766
 199","name":"Chris Boothroy","link":"http://www.facebook.com/profile.php?id=602766199","avatar":"https://graph.facebook.com/602766199/picture"},"source":"Facebook for iPhone (6628568379)","subtype":"status","created_at":"Tue, 30 Jul 2013 00:06:51 +0000","type":"facebook"},"language":{"tag":"en","confidence":100},"demographic":{"gender":"mostly_male"}}
+{"w2o":{"tags":{"topic":["Sustainability","Scent","LaundryDetergent"],"brand":["ArmAndHammer"]}},"twitter":{"id":"361950303878254592","filter_level":"medium","text":"New ARM and HAMMER Sensitive Skin and Sensitive Scents?laundry detergent http://t.co/Yk2d3zqihm via @MyBitsandBleeps","mention_ids":[151080077],"source":"<a href=\"http://twitter.com/tweetbutton\" rel=\"nofollow\">Tweet Button<\/a>","domains":["wp.me"],"created_at":"Mon, 29 Jul 2013 20:44:11 +0000","links":["http://wp.me/p12Gyx-358"],"lang":"en","mentions":["MyBitsandBleeps"],"user":{"location":"Alberta,Canada ","statuses_count":208685,"lang":"en","url":"http://rocketgirl00.blogspot.com","id":23870867,"utc_offset":-21600,"time_zone":"Mountain Time (US & Canada)","favourites_count":105,"description":"I'm married,like to travel,think that friends and family are the most important thing in life.","friends_count":2842,"name":"Doris ","created_at":"Thu, 12 Mar 2009 01:36:56 +0000","screen_name":"dewinner","id_str":"23870867"
 ,"profile_image_url":"http://a0.twimg.com/profile_images/3066398820/1ac0eedaa1099ea172540dff0a4524de_normal.jpeg","followers_count":2591,"listed_count":81}},"salience":{"content":{"sentiment":0}},"klout":{"score":47},"interaction":{"schema":{"version":3},"content":"New ARM and HAMMER Sensitive Skin and Sensitive Scents?laundry detergent http://t.co/Yk2d3zqihm via @MyBitsandBleeps","id":"1e2f88f9f3b1af80e074bd3a2171a578","author":{"id":23870867,"username":"dewinner","name":"Doris ","link":"http://twitter.com/dewinner","language":"en","avatar":"http://a0.twimg.com/profile_images/3066398820/1ac0eedaa1099ea172540dff0a4524de_normal.jpeg"},"source":"Tweet Button","mention_ids":[151080077],"link":"http://twitter.com/dewinner/statuses/361950303878254592","created_at":"Mon, 29 Jul 2013 20:44:11 +0000","type":"twitter","mentions":["MyBitsandBleeps"]},"links":{"title":["New ARM and HAMMER Sensitive Skin and Sensitive Scents laundry detergent | Mybitsandbleeps&#039;s Blog"],"normalized_url":["h
 ttp://mybitsandbleeps.com/2013/07/14/new-arm-and-hammer-sensitive-skin-and-sensitive-scents-laundry-detergent"],"created_at":["Sun, 28 Jul 2013 22:08:38 +0000"],"retweet_count":[0],"code":[200],"hops":[["http://wp.me/p12Gyx-358"]],"meta":{"twitter":[{"site":"@wordpressdotcom","card":"gallery","creator":"@MyBitsandBleeps"}],"description":["A mom blog creating more buzz about your product!"],"charset":["UTF-8"],"opengraph":[{"title":"New ARM and HAMMER Sensitive Skin and Sensitive Scents laundry detergent","description":"School?s out and families are taking the fun outside, which means more muddy knees and grass-stained tees. Laundry will be piling up in no time but many Canadians will be forced to reach for unscen...","image":"http://i2.wp.com/mybitsandbleeps.files.wordpress.com/2013/07/img_00002130.jpg?fit=1000%2C1000","type":"article","site_name":"Mybitsandbleeps&#039;s Blog","url":"http://mybitsandbleeps.com/2013/07/14/new-arm-and-hammer-sensitive-skin-and-sensitive-scents-laundry
 -detergent/"}],"content_type":["text/html"],"lang":["en"]},"url":["http://mybitsandbleeps.com/2013/07/14/new-arm-and-hammer-sensitive-skin-and-sensitive-scents-laundry-detergent/"]},"language":{"tag":"en","confidence":62},"demographic":{"gender":"female"}}
+{"w2o":{"tags":{"topic":["Scent"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":0},"title":{"sentiment":0}},"interaction":{"schema":{"version":3},"id":"1e2f455369a1a000e0619912c7bf4656","content":"I like the arm and hammer scent free powder.<br /> Not worried about UV as I,m either in a blind, blind around stand or high up in a climber.<br /> Scent and movement are the killers","author":{},"title":"Scent free detergent on sale","link":"http://forum.gon.com/showthread.php?t=762688#post7957680","created_at":"Tue, 30 Jul 2013 09:44:17 +0000","type":"board","contenttype":"html"},"language":{"tag":"en","confidence":95},"board":{"id":"1e2f455369a1a000e0619912c7bf4656","content":"I like the arm and hammer scent free powder.<br /> Not worried about UV as I,m either in a blind, blind around stand or high up in a climber.<br /> Scent and movement are the killers","title":"Scent free detergent on sale","link":"http://forum.gon.com/showthread.php?t=762688#post7957680","thread":"
 http://forum.gon.com/showthread.php?t=762688","domain":"www.gon.com","created_at":"Wed, 24 Jul 2013 11:36:00 +0000","contenttype":"html","type":"post"}}
+{"w2o":{"tags":{"topic":["ConcentratedFormulas"],"brand":["ArmAndHammer"]}},"twitter":{"id":"363008881179369473","filter_level":"medium","text":"Missed a scoop? No problem! ARM &amp; HAMMER? Ultra Last? delivers long lasting odor control even when you can't scoop. http://t.co/3DvTv6UOnp","source":"<a href=\"http://twitter.com/tweetbutton\" rel=\"nofollow\">Tweet Button<\/a>","domains":["www.armandhammer.com"],"created_at":"Thu, 01 Aug 2013 18:50:36 +0000","links":["http://www.armandhammer.com/pet-care/cat-care/Products/arm-and-hammer-ultra-last.aspx"],"lang":"en","user":{"id":1262903550,"friends_count":1,"name":"serenecerulean","created_at":"Tue, 12 Mar 2013 21:31:35 +0000","screen_name":"serenecerulean","id_str":"1262903550","statuses_count":6,"profile_image_url":"http://a0.twimg.com/sticky/default_profile_images/default_profile_6_normal.png","lang":"en"}},"salience":{"content":{"sentiment":2}},"interaction":{"schema":{"version":3},"content":"Missed a scoop? No problem! ARM &amp; H
 AMMER? Ultra Last? delivers long lasting odor control even when you can't scoop. http://t.co/3DvTv6UOnp","id":"1e2fadb4069ea600e074e3962995fde4","author":{"id":1262903550,"username":"serenecerulean","name":"serenecerulean","link":"http://twitter.com/serenecerulean","language":"en","avatar":"http://a0.twimg.com/sticky/default_profile_images/default_profile_6_normal.png"},"source":"Tweet Button","link":"http://twitter.com/serenecerulean/statuses/363008881179369473","created_at":"Thu, 01 Aug 2013 18:50:36 +0000","type":"twitter"},"links":{"title":["Arm & Hammer Multi-Brand - ARM & HAMMER? Ultra Last?"],"normalized_url":["http://armandhammer.com/pet-care/cat-care/Products/arm-and-hammer-ultra-last.aspx"],"created_at":["Thu, 01 Aug 2013 12:23:26 +0000"],"retweet_count":[0],"code":[200],"meta":{"keywords":[["Missed a scoop? No problem! ARM & HAMMER? Ultra Last? delivers long lasting odor control even when you can't scoop."]],"description":["Missed a scoop? No problem! ARM & HAMMER? Ultra 
 Last? delivers long lasting odor control even when you can't scoop."],"charset":["UTF-8"],"content_type":["text/html"],"lang":["unknown"]},"url":["http://www.armandhammer.com/pet-care/cat-care/Products/arm-and-hammer-ultra-last.aspx"]},"language":{"tag":"en","confidence":100}}
+{"w2o":{"tags":{"topic":["Sustainability"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":-2,"topics":[{"hits":0,"name":"Beverages","score":1.0265922546387}],"entities":[{"sentiment":0,"confident":1,"name":"Danny","evidence":1,"about":1,"label":"Person","themes":["washing soda"],"type":"Person"}]}},"facebook":{"id":"506582967_10151624053632968","message":"Hate when you are getting ready to do something productive and realize you are missing something....need arm and hammer washing soda before I can make the detergent and Danny is napping.guess I'll have the hubs get it on his way home...","author":{"id":"506582967","name":"Bethany Bennett","link":"http://www.facebook.com/profile.php?id=506582967","avatar":"https://graph.facebook.com/506582967/picture"},"source":"web","created_at":"Sat, 03 Aug 2013 17:30:40 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e2fc626a99ea000e0664766345bbd9e","content":"Hate when you are getting ready to do something pro
 ductive and realize you are missing something....need arm and hammer washing soda before I can make the detergent and Danny is napping.guess I'll have the hubs get it on his way home...","author":{"id":"506582967","name":"Bethany Bennett","link":"http://www.facebook.com/profile.php?id=506582967","avatar":"https://graph.facebook.com/506582967/picture"},"source":"web","subtype":"status","created_at":"Sat, 03 Aug 2013 17:30:50 +0000","type":"facebook"},"language":{"tag":"en","confidence":100},"demographic":{"gender":"female"}}
+{"w2o":{"tags":{"topic":["Scent"],"brand":["ArmAndHammer"]}},"twitter":{"id":"362021838882209792","filter_level":"medium","text":"Luv da smell of gain and arm&amp;hammer washing powder","source":"<a href=\"https://path.com/\" rel=\"nofollow\">Path<\/a>","created_at":"Tue, 30 Jul 2013 01:28:27 +0000","lang":"en","user":{"statuses_count":6590,"lang":"en","utc_offset":-10800,"id":762376266,"time_zone":"Atlantic Time (Canada)","favourites_count":133,"description":"#teamproudmommy #hardworking #independent #teamjrrockojc: Thru it all I still maintain and smile, with God on my side I don't care who's against me","friends_count":280,"name":"toya","created_at":"Thu, 16 Aug 2012 21:36:25 +0000","screen_name":"1ofakind_87","id_str":"762376266","profile_image_url":"http://a0.twimg.com/profile_images/378800000133672589/4c46242befe6daf5f05e1136df5cfe19_normal.jpeg","followers_count":137}},"salience":{"content":{"sentiment":0}},"klout":{"score":30},"interaction":{"schema":{"version":3},"content":
 "Luv da smell of gain and arm&amp;hammer washing powder","id":"1e2f8b755662af80e0745b9f6321114e","author":{"id":762376266,"username":"1ofakind_87","name":"toya","link":"http://twitter.com/1ofakind_87","language":"en","avatar":"http://a0.twimg.com/profile_images/378800000133672589/4c46242befe6daf5f05e1136df5cfe19_normal.jpeg"},"source":"Path","link":"http://twitter.com/1ofakind_87/statuses/362021838882209792","created_at":"Tue, 30 Jul 2013 01:28:27 +0000","type":"twitter"},"language":{"tag":"en","confidence":100},"demographic":{"gender":"female"}}
+{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"362230621323526145","retweeted":{"id":"362229784211750912","source":"<a href=\"http://twitter.com/download/iphone\" rel=\"nofollow\">Twitter for iPhone<\/a>","created_at":"Tue, 30 Jul 2013 15:14:45 +0000","user":{"location":"LA","statuses_count":18221,"lang":"en","utc_offset":-18000,"id":223342789,"time_zone":"Central Time (US & Canada)","favourites_count":6766,"description":"Onesie gang or die","friends_count":231,"name":"Carlage","created_at":"Mon, 06 Dec 2010 03:23:42 +0000","screen_name":"legitCarll","id_str":"223342789","profile_image_url":"http://a0.twimg.com/profile_images/378800000049299664/a636d7d245455eeb8b335ed4bd6480f8_normal.jpeg","followers_count":220}},"retweet":{"id":"362230621323526145","text":"We're eating breakfast and @TheVikkiMinaj sits down and says the arm and hammer powder she put on her vagina burns. THANKS FOR THAT","source":"<a href=\"http://twitter.com/download/iphone\" rel=\"nofollow\">Twitter f
 or iPhone<\/a>","count":3,"mention_ids":[279691748],"created_at":"Tue, 30 Jul 2013 15:18:04 +0000","user":{"geo_enabled":true,"statuses_count":40607,"lang":"en","utc_offset":-18000,"id":442045360,"time_zone":"Central Time (US & Canada)","favourites_count":13074,"friends_count":190,"name":"sM","created_at":"Tue, 20 Dec 2011 17:58:45 +0000","screen_name":"SeanMeier_","id_str":"442045360","profile_image_url":"http://a0.twimg.com/profile_images/378800000156618013/8008e98a1d4634a27e65bf3517f2bf3f_normal.jpeg","followers_count":1034,"listed_count":1},"mentions":["TheVikkiMinaj"],"lang":"en"}},"salience":{"content":{"sentiment":0,"topics":[{"hits":0,"name":"Food","score":0.50305610895157}]}},"klout":{"score":38},"interaction":{"schema":{"version":3},"content":"RT @legitCarll: We're eating breakfast and @TheVikkiMinaj sits down and says the arm and hammer powder she put on her vagina burns. THANKS FOR THAT","id":"1e2f92b3acd9ae00e0745976b013340a","author":{"id":442045360,"username":"SeanMei
 er_","name":"sM","link":"http://twitter.com/SeanMeier_","language":"en","avatar":"http://a0.twimg.com/profile_images/378800000156618013/8008e98a1d4634a27e65bf3517f2bf3f_normal.jpeg"},"source":"Twitter for iPhone","mention_ids":[279691748],"link":"http://twitter.com/SeanMeier_/statuses/362230621323526145","created_at":"Tue, 30 Jul 2013 15:18:04 +0000","type":"twitter","mentions":["TheVikkiMinaj"]},"language":{"tag":"en","confidence":100}}
+{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"362037402786729986","filter_level":"medium","text":"Whippin that DIY wheat paste. So this is how the Arm &amp; Hammer powder slangers feel. I'm Pusha P lykabit","source":"<a href=\"http://twitter.com/download/android\" rel=\"nofollow\">Twitter for Android<\/a>","created_at":"Tue, 30 Jul 2013 02:30:17 +0000","lang":"en","user":{"geo_enabled":true,"location":"North Texas","statuses_count":24770,"lang":"en","url":"http://d1ligence.tumblr.com","id":224686933,"utc_offset":-18000,"time_zone":"Central Time (US & Canada)","favourites_count":638,"description":"Jussa yung nicca on the virtue of internet prosperity. Artist; ? of Elev?ted collective.","friends_count":670,"name":"Paul, The Apostle ","created_at":"Thu, 09 Dec 2010 16:26:43 +0000","screen_name":"MasterChefP","id_str":"224686933","profile_image_url":"http://a0.twimg.com/profile_images/3674596098/7a4252c6a43db5cb373102b73b90e21d_normal.jpeg","followers_count":939,"listed_co
 unt":6}},"salience":{"content":{"sentiment":0}},"klout":{"score":41},"interaction":{"schema":{"version":3},"content":"Whippin that DIY wheat paste. So this is how the Arm &amp; Hammer powder slangers feel. I'm Pusha P lykabit","id":"1e2f8bff8bb4a280e074878bb70afd4a","author":{"id":224686933,"username":"MasterChefP","name":"Paul, The Apostle ","link":"http://twitter.com/MasterChefP","language":"en","avatar":"http://a0.twimg.com/profile_images/3674596098/7a4252c6a43db5cb373102b73b90e21d_normal.jpeg"},"source":"Twitter for Android","link":"http://twitter.com/MasterChefP/statuses/362037402786729986","created_at":"Tue, 30 Jul 2013 02:30:17 +0000","type":"twitter"},"language":{"tag":"en","confidence":100},"demographic":{"gender":"male"}}
+{"w2o":{"tags":{"topic":["Sustainability","Advertising","ConcentratedFormulas","CouponUsage","LaundryDetergent"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":4,"topics":[{"hits":0,"name":"Science","score":1.2123092412949},{"hits":0,"name":"Technology","score":0.59644603729248},{"hits":0,"name":"Hardware","score":0.4546263217926}],"entities":[{"sentiment":0,"confident":1,"name":"Procter & gamble","evidence":1,"about":1,"label":"Company","themes":["liquid laundry detergent","commercial products","ea dawn","liquid offers","grease-cutting ingredients","improved formula","longer-lasting suds","sink changeover"],"type":"Company"},{"sentiment":0,"confident":1,"name":"\"Liquid Detergents (Surfactant Science)\"","evidence":1,"about":0,"label":"Quote","themes":["liquid detergents","helpful search engine","different books","actual prices","fast search"],"type":"Quote"}]}},"facebook":{"id":"1406941246186240_1407041779509520","message":"Liquid Detergents (Surfactant Science)\n\n
 If you want to find any book including \"Liquid Detergents (Surfactant Science)\" or if you want to read reviews on different books or to see the actual prices on books you may visit this website - AZBookFinder.com\n\nAZBookFinder.com is a helpful search engine and I want to share the way of fast search of books.\nBest regards.\n\nSome other books that may be interesting:\nArm & hammer 84555 liquid laundry detergent plus oxiclean he 35-loads (case of 6);\nProcter & gamble commercial products - dishwashing liquid, concentrated, 38 oz - sold as 1 ea - dawn dishwashing liquid offers more grease-cutting ingredients in this improved formula. longer-lasting suds reduce sink changeover. high-surfactant formula seeks out greasy soil, cuts through it, surrounds the removed soil and lifts it out of the way.;\nFramed print of soap bubbles from science photo library;\nPhoto jigsaw puzzle of soap bubbles from science photo library;\nHandbook of detergents, part f: production: 142 (surfactant sci
 ence);\nChemical product design: towards a perspective through case studies, volume 23 (computer aided chemical engineering).","author":{"id":"1406941246186240","name":"Bookformats","link":"http://www.facebook.com/profile.php?id=1406941246186240","avatar":"https://graph.facebook.com/1406941246186240/picture"},"application":"Filipspacename","source":"Filipspacename (104453219725181)","created_at":"Tue, 06 Aug 2013 22:40:46 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e2fee93be16ab00e066dedfa2d1c568","content":"Liquid Detergents (Surfactant Science)\n\nIf you want to find any book including \"Liquid Detergents (Surfactant Science)\" or if you want to read reviews on different books or to see the actual prices on books you may visit this website - AZBookFinder.com\n\nAZBookFinder.com is a helpful search engine and I want to share the way of fast search of books.\nBest regards.\n\nSome other books that may be interesting:\nArm & hammer 84555 liquid laundry deterg
 ent plus oxiclean he 35-loads (case of 6);\nProcter & gamble commercial products - dishwashing liquid, concentrated, 38 oz - sold as 1 ea - dawn dishwashing liquid offers more grease-cutting ingredients in this improved formula. longer-lasting suds reduce sink changeover. high-surfactant formula seeks out greasy soil, cuts through it, surrounds the removed soil and lifts it out of the way.;\nFramed print of soap bubbles from science photo library;\nPhoto jigsaw puzzle of soap bubbles from science photo library;\nHandbook of detergents, part f: production: 142 (surfactant science);\nChemical product design: towards a perspective through case studies, volume 23 (computer aided chemical engineering).","author":{"id":"1406941246186240","name":"Bookformats","link":"http://www.facebook.com/profile.php?id=1406941246186240","avatar":"https://graph.facebook.com/1406941246186240/picture"},"source":"Filipspacename (104453219725181)","subtype":"status","created_at":"Tue, 06 Aug 2013 22:41:01 +0
 000","type":"facebook"},"language":{"tag":"en","confidence":99}}
+{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"364861019413164032","filter_level":"medium","text":"Fresh laundry solution for sensitive skin Arm &amp; Hammer http://t.co/pvJC5hX28b via @Gingermommy","mention_ids":[126764623],"source":"<a href=\"http://triberr.com\" rel=\"nofollow\">Triberr<\/a>","domains":["goo.gl"],"created_at":"Tue, 06 Aug 2013 21:30:20 +0000","links":["http://goo.gl/DIOspt"],"lang":"en","mentions":["Gingermommy"],"user":{"location":"Ontario, Canada","statuses_count":19585,"lang":"en","url":"http://yeewittlethings.com","id":438700992,"utc_offset":-18000,"time_zone":"Central Time (US & Canada)","favourites_count":132,"description":"#CDN Mom of 2 wonderful kids. Wife to an amazing hubby. #PR friendly #Blogger. #Reviews, #Giveaways, Random Musings & Every day living! #KinderMom","friends_count":7875,"name":"Yee Wittle Things","created_at":"Fri, 16 Dec 2011 22:33:08 +0000","screen_name":"yeewittlethings","id_str":"438700992","profile_image_url":"http://a0
 .twimg.com/profile_images/2618536105/862tu9w2orhn68rc82lk_normal.jpeg","followers_count":8712,"listed_count":58}},"salience":{"content":{"sentiment":0}},"klout":{"score":63},"interaction":{"schema":{"version":3},"content":"Fresh laundry solution for sensitive skin Arm &amp; Hammer http://t.co/pvJC5hX28b via @Gingermommy","id":"1e2fedf64fcfae00e074af57bfa66a5c","author":{"id":438700992,"username":"yeewittlethings","name":"Yee Wittle Things","link":"http://twitter.com/yeewittlethings","language":"en","avatar":"http://a0.twimg.com/profile_images/2618536105/862tu9w2orhn68rc82lk_normal.jpeg"},"source":"Triberr","mention_ids":[126764623],"link":"http://twitter.com/yeewittlethings/statuses/364861019413164032","created_at":"Tue, 06 Aug 2013 21:30:20 +0000","type":"twitter","mentions":["Gingermommy"]},"links":{"title":["Fresh laundry solution for sensitive skin Arm & Hammer - Tales of a Ranting Ginger"],"normalized_url":["http://talesofarantingginger.com/2013/08/fresh-laundry-solution-for-se
 nsitive-skin-arm-hammer.html"],"created_at":["Tue, 06 Aug 2013 06:53:13 +0000"],"retweet_count":[0],"code":[200],"hops":[["http://goo.gl/DIOspt"]],"meta":{"description":["sensitive skin arm & hammer"],"charset":["UTF-8"],"content_type":["text/html"],"lang":["en-us"]},"url":["http://www.talesofarantingginger.com/2013/08/fresh-laundry-solution-for-sensitive-skin-arm-hammer.html"]},"language":{"tag":"en","confidence":100},"demographic":{"gender":"unisex"}}
+{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"364845410017230848","filter_level":"medium","text":"Hannah Montana without the arm &amp; hammer orrrrrr? RT @ThatGuy_Jesse10: Got that powder. Hmu","mention_ids":[326314186],"source":"<a href=\"http://twitter.com/download/iphone\" rel=\"nofollow\">Twitter for iPhone<\/a>","in_reply_to_screen_name":"ThatGuy_Jesse10","in_reply_to_status_id":"364845085571031041","created_at":"Tue, 06 Aug 2013 20:28:18 +0000","in_reply_to_user_id":"326314186","lang":"en","mentions":["ThatGuy_Jesse10"],"user":{"geo_enabled":true,"location":"Phoeniquera","statuses_count":41253,"lang":"en","utc_offset":-25200,"id":403930347,"time_zone":"Arizona","favourites_count":4362,"description":"You're gonna like THIS guy he's alright, He's a Good Fella.. 93 til.","friends_count":330,"name":"Simba","created_at":"Thu, 03 Nov 2011 06:10:20 +0000","screen_name":"JuanGTho","id_str":"403930347","profile_image_url":"http://a0.twimg.com/profile_images/37880000018266
 5838/026c863eec52a3af8e3e40af8ab5c56f_normal.jpeg","followers_count":359}},"salience":{"content":{"sentiment":0,"entities":[{"sentiment":0,"confident":1,"name":"Hannah Montana","evidence":1,"about":1,"label":"Person","type":"Person"}]}},"klout":{"score":38},"interaction":{"schema":{"version":3},"content":"Hannah Montana without the arm &amp; hammer orrrrrr? RT @ThatGuy_Jesse10: Got that powder. Hmu","id":"1e2fed6ba80dad00e074579fbdc03880","author":{"id":403930347,"username":"JuanGTho","name":"Simba","link":"http://twitter.com/JuanGTho","language":"en","avatar":"http://a0.twimg.com/profile_images/378800000182665838/026c863eec52a3af8e3e40af8ab5c56f_normal.jpeg"},"source":"Twitter for iPhone","mention_ids":[326314186],"link":"http://twitter.com/JuanGTho/statuses/364845410017230848","created_at":"Tue, 06 Aug 2013 20:28:18 +0000","type":"twitter","mentions":["ThatGuy_Jesse10"]},"language":{"tag":"en","confidence":100}}
+{"w2o":{"tags":{"topic":["Convenience","LaundryDetergent"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":-6,"topics":[{"hits":0,"name":"Beverages","score":1.056524515152}],"entities":[{"sentiment":-12,"confident":1,"name":"Target","evidence":1,"about":1,"label":"Company","themes":["brand laundry soap","cleaning team","washing soda"],"type":"Company"}]}},"facebook":{"id":"100005166043472_180980985417435","message":"A rogue ink pen exploded in my clothes dryer this morning :(  ruining two sets of my work clothes.....  I cleaned the inkout of the dryer drum with rubbing alcohol, and am trying to salvage my clothes.  Rigth now the greatest cleaning team ever assembled is at work in the washer.....  Target brand laundry soap, Fabuloso surface cleaner, half a cup of borax, and whatever was left in the box of Arm and Hammer washing soda on a small load cycle.....  Will keep posted.....","author":{"id":"100005166043472","name":"Zach Watts","link":"http://www.facebook.com/pro
 file.php?id=100005166043472","avatar":"https://graph.facebook.com/100005166043472/picture"},"application":"Mobile","source":"Mobile (2915120374)","created_at":"Wed, 07 Aug 2013 02:32:06 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e2ff098d015a700e066f80d5c4c0dd0","content":"A rogue ink pen exploded in my clothes dryer this morning :(  ruining two sets of my work clothes.....  I cleaned the inkout of the dryer drum with rubbing alcohol, and am trying to salvage my clothes.  Rigth now the greatest cleaning team ever assembled is at work in the washer.....  Target brand laundry soap, Fabuloso surface cleaner, half a cup of borax, and whatever was left in the box of Arm and Hammer washing soda on a small load cycle.....  Will keep posted.....","author":{"id":"100005166043472","name":"Zach Watts","link":"http://www.facebook.com/profile.php?id=100005166043472","avatar":"https://graph.facebook.com/100005166043472/picture"},"source":"Mobile (2915120374)","link":"http
 ://www.facebook.com/100005166043472_180980985417435","subtype":"status","created_at":"Wed, 07 Aug 2013 02:32:23 +0000","type":"facebook"},"language":{"tag":"en","confidence":100},"demographic":{"gender":"male"}}
+{"w2o":{"tags":{"topic":["LaundryDetergent"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":2}},"facebook":{"id":"753060211_10153029318745212","message":"The best carpet cleaner is arm and hammer plus oxi clean laundry soap plus a scoop of powder oxi clean hot water and elbow grease. My  carpet looks almost brand new. =)","author":{"id":"753060211","name":"Sarah McCormack","link":"http://www.facebook.com/profile.php?id=753060211","avatar":"https://graph.facebook.com/753060211/picture"},"application":"Facebook for Android","source":"Facebook for Android (350685531728)","created_at":"Thu, 25 Jul 2013 18:08:27 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e2f555341edaf80e066003d5ea01da0","content":"The best carpet cleaner is arm and hammer plus oxi clean laundry soap plus a scoop of powder oxi clean hot water and elbow grease. My  carpet looks almost brand new. =)","author":{"id":"753060211","name":"Sarah McCormack","link":"http://www.facebook.com/
 profile.php?id=753060211","avatar":"https://graph.facebook.com/753060211/picture"},"source":"Facebook for Android (350685531728)","subtype":"status","created_at":"Thu, 25 Jul 2013 18:08:51 +0000","type":"facebook"},"language":{"tag":"en","confidence":100},"demographic":{"gender":"female"}}
+{"w2o":{"tags":{"topic":["Sustainability","ConcentratedFormulas"],"brand":["ArmAndHammer"]}},"twitter":{"id":"361171385718018048","filter_level":"medium","text":"20 $1/1 ARM&amp;HAMMER 4x concentrate detergent 8/31/13 - http://t.co/DwFm08iyOj http://t.co/7XvuTjDd0v","source":"<a href=\"http://satehut.com\" rel=\"nofollow\">Satehut<\/a>","domains":["dish-washers-dryers.com"],"created_at":"Sat, 27 Jul 2013 17:09:03 +0000","links":["http://dish-washers-dryers.com/?p=3858"],"lang":"en","media":[{"id":361171385722212352,"sizes":{"small":{"w":104,"h":140,"resize":"fit"},"thumb":{"w":104,"h":140,"resize":"crop"},"large":{"w":104,"h":140,"resize":"fit"},"medium":{"w":104,"h":140,"resize":"fit"}},"media_url_https":"https://pbs.twimg.com/media/BQMjdjUCEAAMlDL.jpg","media_url":"http://pbs.twimg.com/media/BQMjdjUCEAAMlDL.jpg","expanded_url":"http://twitter.com/Sate_Hut/status/361171385718018048/photo/1","id_str":"361171385722212352","display_url":"pic.twitter.com/7XvuTjDd0v","type":"photo","url
 ":"http://t.co/7XvuTjDd0v"}],"user":{"location":"Miami, FL","statuses_count":20248,"lang":"en","url":"http://SateHut.com","utc_offset":-14400,"id":342319003,"time_zone":"Eastern Time (US & Canada)","description":"For good sate (or Sateh) you can be anywhere!  We give you the recipes and ingredients to make it at home!","name":"Sate Hut","created_at":"Mon, 25 Jul 2011 20:37:12 +0000","screen_name":"Sate_Hut","id_str":"342319003","profile_image_url":"http://a0.twimg.com/profile_images/1460610380/sate_hut_logo_normal.jpg","followers_count":15}},"salience":{"content":{"sentiment":0,"entities":[{"sentiment":0,"confident":1,"name":"8/31/13","evidence":1,"about":1,"label":"Date","type":"Pattern"}]}},"klout":{"score":13},"interaction":{"schema":{"version":3},"content":"20 $1/1 ARM&amp;HAMMER 4x concentrate detergent 8/31/13 - http://t.co/DwFm08iyOj http://t.co/7XvuTjDd0v","id":"1e2f6df3ca32a180e0745c1dc0cceda4","author":{"id":342319003,"username":"Sate_Hut","name":"Sate Hut","link":"http://
 twitter.com/Sate_Hut","language":"en","avatar":"http://a0.twimg.com/profile_images/1460610380/sate_hut_logo_normal.jpg"},"source":"Satehut","link":"http://twitter.com/Sate_Hut/statuses/361171385718018048","created_at":"Sat, 27 Jul 2013 17:09:03 +0000","type":"twitter"},"links":{"title":["20 $1/1 ARM&HAMMER 4x concentrate detergent 8/31/13 | Dish-Washers & Dryers"],"normalized_url":["http://dish-washers-dryers.com/?p=3858"],"created_at":["Sat, 27 Jul 2013 17:09:07 +0000"],"retweet_count":[0],"code":[200],"meta":{"charset":["UTF-8"],"opengraph":[{"title":"20 $1/1 ARM&HAMMER 4x concentrate detergent 8/31/13 | Dish-Washers & Dryers","description":"$0.99 (0 Bids)End Date: Saturday Jul-27-2013 19:47:26 PDTBuy It Now for only: $2.50Buy It Now | Bid now | Add to watch list","image":"http://thumbs1.ebaystatic.com/m/m5EkUMKNxAoIDYVzVioQCRg/140.jpg","site_name":"Dish-Washers & Dryers","type":"article","url":"http://dish-washers-dryers.com/?p=3858"}],"content_type":["text/html"],"lang":["en-us"
 ]},"url":["http://dish-washers-dryers.com/?p=3858"]},"language":{"tag":"en","confidence":62}}
+{"w2o":{"tags":{"topic":["Sustainability","LaundryDetergent"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":0}},"facebook":{"id":"297050503659016_614567205240676","message":"Arm & Hammer Laundry Detergent Just $1.92 at Walgreens (til 7/27)\n\nhttp://wp.me/p22sqw-j1g","author":{"id":"297050503659016","name":"Cook, Coupon, Work","link":"http://www.facebook.com/profile.php?id=297050503659016","avatar":"https://graph.facebook.com/297050503659016/picture"},"source":"web","created_at":"Fri, 26 Jul 2013 23:40:01 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e2f64cb0481ae80e0668a518d22dfe2","content":"Arm & Hammer Laundry Detergent Just $1.92 at Walgreens (til 7/27)\n\nhttp://wp.me/p22sqw-j1g","author":{"id":"297050503659016","name":"Cook, Coupon, Work","link":"http://www.facebook.com/profile.php?id=297050503659016","avatar":"https://graph.facebook.com/297050503659016/picture"},"source":"web","link":"http://www.facebook.com/297050503659016_614567205240
 676","subtype":"status","created_at":"Fri, 26 Jul 2013 23:40:22 +0000","type":"facebook"},"links":{"title":["Arm & Hammer Laundry Detergent Just $1.92 at Walgreens (til 7/27) - Cook, Coupon, Work"],"normalized_url":["http://cookcouponwork.com/arm-hammer-laundry-detergent-just-1-92-at-walgreens-til-727"],"created_at":["Fri, 26 Jul 2013 23:40:16 +0000"],"retweet_count":[0],"code":[200],"hops":[["http://wp.me/p22sqw-j1g","http://www.cookcouponwork.com/?p=73114"]],"meta":{"twitter":[{"site":"@CookCouponWork","card":"summary","creator":"@CookCouponWork"}],"charset":["UTF-8"],"opengraph":[{"title":"Arm & Hammer Laundry Detergent Just $1.92 at Walgreens (til 7/27) - Cook, Coupon, Work","description":"Need Laundry Detergent? Pick up a good deal on Arm & Hammer at Walgreens (til 7/27) Deal Idea: Buy (2) Arm & Hammer 2x Liquid Detergent, 25 ? 32 loads, $2.29 = $4.58 Use (1) $0.75/2 Arm & Hammer Liquid or Powder Detergent, or Fabric Softener Sheets, exp. 9/30/13 (SS 07/14/13) Pay $3.83 =$1.92 
 EACH!","image":"http://www.cookcouponwork.com/wp-content/uploads/2013/07/543-300x213.jpg","type":"article","site_name":"Cook, Coupon, Work","url":"http://www.cookcouponwork.com/arm-hammer-laundry-detergent-just-1-92-at-walgreens-til-727/"}],"content_type":["text/html"],"lang":["en-us"]},"url":["http://www.cookcouponwork.com/arm-hammer-laundry-detergent-just-1-92-at-walgreens-til-727/"]},"language":{"tag":"en","confidence":100},"demographic":{"gender":"unisex"}}
+{"w2o":{"tags":{"topic":["Sustainability","LaundryDetergent"],"brand":["ArmAndHammer"]}},"twitter":{"id":"362022978235531264","filter_level":"medium","text":"Arm and hammer laundry detergent gets the whites to be super white. #notracist","source":"<a href=\"http://twitter.com/download/iphone\" rel=\"nofollow\">Twitter for iPhone<\/a>","created_at":"Tue, 30 Jul 2013 01:32:58 +0000","hashtags":["notracist"],"lang":"en","user":{"location":"Knoxville, TN","statuses_count":3202,"lang":"en","utc_offset":-14400,"id":442907220,"time_zone":"Eastern Time (US & Canada)","favourites_count":379,"description":"Never had a headache. Unable to grow a full beard.","friends_count":52,"name":"Uncle_D","created_at":"Wed, 21 Dec 2011 16:05:22 +0000","screen_name":"_UncleD_","id_str":"442907220","profile_image_url":"http://a0.twimg.com/profile_images/378800000144278522/e2c248ef7011fe240871ee3beab46bfd_normal.jpeg","followers_count":59}},"salience":{"content":{"sentiment":6}},"klout":{"score":40},"interac
 tion":{"schema":{"version":3},"content":"Arm and hammer laundry detergent gets the whites to be super white. #notracist","id":"1e2f8b7f6ed8a100e074a98a4f29f3bc","author":{"id":442907220,"username":"_UncleD_","name":"Uncle_D","link":"http://twitter.com/_UncleD_","language":"en","avatar":"http://a0.twimg.com/profile_images/378800000144278522/e2c248ef7011fe240871ee3beab46bfd_normal.jpeg"},"source":"Twitter for iPhone","link":"http://twitter.com/_UncleD_/statuses/362022978235531264","created_at":"Tue, 30 Jul 2013 01:32:58 +0000","type":"twitter"},"language":{"tag":"en","confidence":100}}
+{"w2o":{"tags":{"topic":["Scent"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":4}},"facebook":{"id":"100000487215935_704899129536321","message":"Arm & hammer carpet powder $2.75.... The feeling & smell of clean priceless..... Trying to sprinkle powder on carpet in front of a fan.... Stupid! I crack myself up!","author":{"id":"100000487215935","name":"Joyce Warren Cantrell","link":"http://www.facebook.com/profile.php?id=100000487215935","avatar":"https://graph.facebook.com/100000487215935/picture"},"application":"Mobile","source":"Mobile (2915120374)","created_at":"Sat, 27 Jul 2013 16:30:08 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e2f6d9ccde6a800e06674caf5177576","content":"Arm & hammer carpet powder $2.75.... The feeling & smell of clean priceless..... Trying to sprinkle powder on carpet in front of a fan.... Stupid! I crack myself up!","author":{"id":"100000487215935","name":"Joyce Warren Cantrell","link":"http://www.facebook.com/profile
 .php?id=100000487215935","avatar":"https://graph.facebook.com/100000487215935/picture"},"source":"Mobile (2915120374)","link":"http://www.facebook.com/100000487215935_704899129536321","subtype":"status","created_at":"Sat, 27 Jul 2013 16:30:26 +0000","type":"facebook"},"language":{"tag":"en","confidence":100},"demographic":{"gender":"mostly_female"}}
+{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"361615185913462785","retweeted":{"id":"361614949908361217","source":"<a href=\"http://twitter.com/download/iphone\" rel=\"nofollow\">Twitter for iPhone<\/a>","in_reply_to_screen_name":"THEmrReynolds","in_reply_to_status_id":"361603144695820288","in_reply_to_user_id":"106891542","created_at":"Sun, 28 Jul 2013 22:31:37 +0000","user":{"geo_enabled":true,"location":"Stanford, CA","statuses_count":22223,"lang":"en","url":"http://memoirsofaGAYsh.tumblr.com","id":49340813,"utc_offset":-25200,"time_zone":"Pacific Time (US & Canada)","favourites_count":4278,"description":"?Dance is the hidden language of the soul of the body? CSRE/DRAMA Major @Stanford.  #playwright #dancer","friends_count":436,"name":"Dominique Delacroix","created_at":"Sun, 21 Jun 2009 15:29:26 +0000","screen_name":"MemoirsofaGAYsh","id_str":"49340813","profile_image_url":"http://a0.twimg.com/profile_images/2258352218/MemoirsofaGAYsh_normal.jpg","followers_count":4
 23,"listed_count":10}},"retweet":{"id":"361615185913462785","text":"@THEmrReynolds probably a mixture of prunes, icy hot, and arm and hammer foot powder","source":"<a href=\"http://twitter.com/download/android\" rel=\"nofollow\">Twitter for Android<\/a>","count":1,"mention_ids":[106891542],"created_at":"Sun, 28 Jul 2013 22:32:33 +0000","user":{"location":"soundcloud.com/mrReynoldsMusic","statuses_count":13351,"lang":"en","url":"http://www.THEmrReynolds.com","id":106891542,"utc_offset":-14400,"time_zone":"Eastern Time (US & Canada)","favourites_count":1353,"description":"I Mock The Party","friends_count":1554,"name":"Mr Reynolds","created_at":"Thu, 21 Jan 2010 00:37:45 +0000","screen_name":"THEmrReynolds","id_str":"106891542","profile_image_url":"http://a0.twimg.com/profile_images/2828785203/a097d038f964b0a6125a95c0a0e8ff7d_normal.jpeg","followers_count":7938,"listed_count":49},"mentions":["THEmrReynolds"],"lang":"en"}},"salience":{"content":{"sentiment":0}},"klout":{"score":59},"int
 eraction":{"schema":{"version":3},"content":"RT @MemoirsofaGAYsh: @THEmrReynolds probably a mixture of prunes, icy hot, and arm and hammer foot powder","id":"1e2f7d5984fda680e074135a4b824dd0","author":{"id":106891542,"username":"THEmrReynolds","name":"Mr Reynolds","link":"http://twitter.com/THEmrReynolds","language":"en","avatar":"http://a0.twimg.com/profile_images/2828785203/a097d038f964b0a6125a95c0a0e8ff7d_normal.jpeg"},"source":"Twitter for Android","mention_ids":[106891542],"link":"http://twitter.com/THEmrReynolds/statuses/361615185913462785","created_at":"Sun, 28 Jul 2013 22:32:33 +0000","type":"twitter","mentions":["THEmrReynolds"]},"language":{"tag":"en","confidence":100}}
+{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"362467813958500354","filter_level":"medium","text":"Arm &amp; Hammer Sensitive Skin?Review &amp; Giveaway http://t.co/pS413KqHv5","source":"<a href=\"http://www.networkedblogs.com/\" rel=\"nofollow\">NetworkedBlogs<\/a>","domains":["nblo.gs"],"created_at":"Wed, 31 Jul 2013 07:00:35 +0000","links":["http://nblo.gs/NEwDq"],"lang":"en","user":{"location":"Canada","statuses_count":2034,"lang":"en","url":"http://www.zeemaid.com","id":25435820,"utc_offset":-25200,"time_zone":"Pacific Time (US & Canada)","favourites_count":17,"description":"I am Zeemaid.  Momma to 3, an avid reader and an all around sassy momma.  I own my own video business, am married to my Mr. Darcy, love to throw pots and write","friends_count":1976,"name":"Zeemaid","created_at":"Fri, 20 Mar 2009 01:59:59 +0000","screen_name":"Zeemaid","id_str":"25435820","profile_image_url":"http://a0.twimg.com/profile_images/1732650108/Zeemaid_normal.jpg","followers_count":10
 27,"listed_count":30}},"salience":{"content":{"sentiment":0}},"klout":{"score":41},"interaction":{"schema":{"version":3},"content":"Arm &amp; Hammer Sensitive Skin?Review &amp; Giveaway http://t.co/pS413KqHv5","id":"1e2f9aee5d36ab80e0745a0744aef83a","author":{"id":25435820,"username":"Zeemaid","name":"Zeemaid","link":"http://twitter.com/Zeemaid","language":"en","avatar":"http://a0.twimg.com/profile_images/1732650108/Zeemaid_normal.jpg"},"source":"NetworkedBlogs","link":"http://twitter.com/Zeemaid/statuses/362467813958500354","created_at":"Wed, 31 Jul 2013 07:00:35 +0000","type":"twitter"},"links":{"title":["Arm & Hammer Sensitive Skin?Review & Giveaway"],"normalized_url":["http://networkedblogs.com/NEwDq"],"created_at":["Wed, 31 Jul 2013 07:00:43 +0000"],"retweet_count":[0],"code":[200],"hops":[["http://nblo.gs/NEwDq"]],"meta":{"charset":["UTF-8"],"opengraph":[{"title":"Arm & Hammer Sensitive Skin?Review & Giveaway","description":"When you love a product you want to stick with it bu
 t as we all know price is a huge factor as to whether we continue to buy the brand we love or go elsewhere. Fortunately, Arm & Hammer?s affordability makes it easy for me to keep my cupboard well stocked with the Arm & Hammer products I love. Not","image":"http://lh6.ggpht.com/-8PeRiK68OMk/UfhgV8guCFI/AAAAAAAACgs/ubCE0V6ffqQ/CAN_AHLL_Sensitive_203L_thumb7.jpg?imgmax=800","site_name":"In the Mommy Trenches","type":"article","url":"http://networkedblogs.com/NEwDq"}],"content_type":["text/html"],"lang":["unknown"]},"url":["http://networkedblogs.com/NEwDq"]},"language":{"tag":"en","confidence":63}}
+{"w2o":{"tags":{"topic":["Sustainability","LaundryDetergent"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":4}},"facebook":{"id":"478623348890311_497707713648541","message":"Example of what you can save......\n(regular retail)\n1 Febeze Air Effects $2.99 each  ($1)\n1 Gillette Mach 3 disposables $7.49 each ($3)\n1 Gillette Shaving Cream $2.29 each ($1)\n1 Woolite High Traffic Cleaner $6.79 each ($2)\n1 Schick Women's Razors $5.69 each ($2)\n1 Colgate Toothbrush $1.89 each  ($1)\n1 Arm and Hammer Laundry Detergent $4.99 each ($2)\n1 Snuggle Fabric Softener $4.99 each ($2)\n1 Bayer Aspirin $2.99 each ($1)\n1 Herbal Essence Shampoo $2.99 each ($1)\n1 Herbal Essence Conditioner $2.99 each ($1)\n1 Herbal Essence Styling Products $3.39 each ($1)\nTotal: $52.48\nDOLLAR DEALS TOTAL: $18.00","author":{"id":"478623348890311","name":"Dollar Deals Delivered","link":"http://www.facebook.com/profile.php?id=478623348890311","avatar":"https://graph.facebook.com/478623348890311/pictu
 re"},"source":"web","created_at":"Wed, 31 Jul 2013 06:44:42 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e2f9acadcb2a900e066515ce688d7d0","content":"Example of what you can save......\n(regular retail)\n1 Febeze Air Effects $2.99 each  ($1)\n1 Gillette Mach 3 disposables $7.49 each ($3)\n1 Gillette Shaving Cream $2.29 each ($1)\n1 Woolite High Traffic Cleaner $6.79 each ($2)\n1 Schick Women's Razors $5.69 each ($2)\n1 Colgate Toothbrush $1.89 each  ($1)\n1 Arm and Hammer Laundry Detergent $4.99 each ($2)\n1 Snuggle Fabric Softener $4.99 each ($2)\n1 Bayer Aspirin $2.99 each ($1)\n1 Herbal Essence Shampoo $2.99 each ($1)\n1 Herbal Essence Conditioner $2.99 each ($1)\n1 Herbal Essence Styling Products $3.39 each ($1)\nTotal: $52.48\nDOLLAR DEALS TOTAL: $18.00","author":{"id":"478623348890311","name":"Dollar Deals Delivered","link":"http://www.facebook.com/profile.php?id=478623348890311","avatar":"https://graph.facebook.com/478623348890311/picture"},"source":"we
 b","link":"http://www.facebook.com/478623348890311_497707713648541","subtype":"status","created_at":"Wed, 31 Jul 2013 06:44:57 +0000","type":"facebook"},"language":{"tag":"en","confidence":74}}
+{"w2o":{"tags":{"topic":["Sustainability","Scent","LaundryDetergent"],"brand":["ArmAndHammer"]}},"twitter":{"id":"362269562365943809","filter_level":"medium","text":"New ARM and HAMMER Sensitive Skin and Sensitive Scents?laundry detergent http://t.co/2HvWoZVjTt via @MyBitsandBleeps","mention_ids":[151080077],"source":"<a href=\"http://twitter.com/tweetbutton\" rel=\"nofollow\">Tweet Button<\/a>","domains":["wp.me"],"created_at":"Tue, 30 Jul 2013 17:52:48 +0000","links":["http://wp.me/p12Gyx-358"],"lang":"en","mentions":["MyBitsandBleeps"],"user":{"location":"Toronto,Ontario","statuses_count":29115,"lang":"en","utc_offset":-14400,"id":574859993,"time_zone":"Eastern Time (US & Canada)","favourites_count":13,"friends_count":1727,"name":"Andrew P","created_at":"Tue, 08 May 2012 23:07:45 +0000","screen_name":"apham17","id_str":"574859993","profile_image_url":"http://a0.twimg.com/profile_images/3226883575/148106bd4d6dcb4e8f06d8e5f0cd197f_normal.png","followers_count":455,"listed_count":7}
 },"salience":{"content":{"sentiment":0}},"klout":{"score":48},"interaction":{"schema":{"version":3},"content":"New ARM and HAMMER Sensitive Skin and Sensitive Scents?laundry detergent http://t.co/2HvWoZVjTt via @MyBitsandBleeps","id":"1e2f940d87f9a800e074438bcad545f2","author":{"id":574859993,"username":"apham17","name":"Andrew P","link":"http://twitter.com/apham17","language":"en","avatar":"http://a0.twimg.com/profile_images/3226883575/148106bd4d6dcb4e8f06d8e5f0cd197f_normal.png"},"source":"Tweet Button","mention_ids":[151080077],"link":"http://twitter.com/apham17/statuses/362269562365943809","created_at":"Tue, 30 Jul 2013 17:52:48 +0000","type":"twitter","mentions":["MyBitsandBleeps"]},"links":{"title":["New ARM and HAMMER Sensitive Skin and Sensitive Scents laundry detergent | Mybitsandbleeps&#039;s Blog"],"normalized_url":["http://mybitsandbleeps.com/2013/07/14/new-arm-and-hammer-sensitive-skin-and-sensitive-scents-laundry-detergent"],"created_at":["Mon, 29 Jul 2013 23:20:31 +00
 00"],"retweet_count":[0],"code":[200],"hops":[["http://wp.me/p12Gyx-358"]],"meta":{"twitter":[{"site":"@wordpressdotcom","card":"gallery","creator":"@MyBitsandBleeps"}],"description":["A mom blog creating more buzz about your product!"],"charset":["UTF-8"],"opengraph":[{"title":"New ARM and HAMMER Sensitive Skin and Sensitive Scents laundry detergent","description":"School?s out and families are taking the fun outside, which means more muddy knees and grass-stained tees. Laundry will be piling up in no time but many Canadians will be forced to reach for unscen...","image":"http://i2.wp.com/mybitsandbleeps.files.wordpress.com/2013/07/img_00002130.jpg?fit=1000%2C1000","type":"article","site_name":"Mybitsandbleeps&#039;s Blog","url":"http://mybitsandbleeps.com/2013/07/14/new-arm-and-hammer-sensitive-skin-and-sensitive-scents-laundry-detergent/"}],"content_type":["text/html"],"lang":["en"]},"url":["http://mybitsandbleeps.com/2013/07/14/new-arm-and-hammer-sensitive-skin-and-sensitive-sce
 nts-laundry-detergent/"]},"language":{"tag":"en","confidence":62},"demographic":{"gender":"male"}}
+{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"362229784211750912","filter_level":"medium","text":"We're eating breakfast and @TheVikkiMinaj sits down and says the arm and hammer powder she put on her vagina burns. THANKS FOR THAT","mention_ids":[279691748],"source":"<a href=\"http://twitter.com/download/iphone\" rel=\"nofollow\">Twitter for iPhone<\/a>","created_at":"Tue, 30 Jul 2013 15:14:45 +0000","lang":"en","mentions":["TheVikkiMinaj"],"user":{"location":"LA","statuses_count":18221,"lang":"en","utc_offset":-18000,"id":223342789,"time_zone":"Central Time (US & Canada)","favourites_count":6766,"description":"Onesie gang or die","friends_count":231,"name":"Carlage","created_at":"Mon, 06 Dec 2010 03:23:42 +0000","screen_name":"legitCarll","id_str":"223342789","profile_image_url":"http://a0.twimg.com/profile_images/378800000049299664/a636d7d245455eeb8b335ed4bd6480f8_normal.jpeg","followers_count":220}},"salience":{"content":{"sentiment":0,"topics":[{"hits":0,"name":"Foo
 d","score":0.50475257635117}]}},"klout":{"score":43},"interaction":{"schema":{"version":3},"content":"We're eating breakfast and @TheVikkiMinaj sits down and says the arm and hammer powder she put on her vagina burns. THANKS FOR THAT","id":"1e2f92ac430aa080e0748f373f80284e","author":{"id":223342789,"username":"legitCarll","name":"Carlage","link":"http://twitter.com/legitCarll","language":"en","avatar":"http://a0.twimg.com/profile_images/378800000049299664/a636d7d245455eeb8b335ed4bd6480f8_normal.jpeg"},"source":"Twitter for iPhone","mention_ids":[279691748],"link":"http://twitter.com/legitCarll/statuses/362229784211750912","created_at":"Tue, 30 Jul 2013 15:14:45 +0000","type":"twitter","mentions":["TheVikkiMinaj"]},"language":{"tag":"en","confidence":100}}
+{"w2o":{"tags":{"topic":["ConcentratedFormulas"],"brand":["ArmAndHammer"]}},"twitter":{"id":"365738027701645314","filter_level":"medium","text":"Missed a scoop? No problem! ARM &amp; HAMMER? Ultra Last? delivers long lasting odor control even when you can't scoop. http://t.co/VGNQ0i0KGb","source":"<a href=\"http://twitter.com/tweetbutton\" rel=\"nofollow\">Tweet Button<\/a>","domains":["www.armandhammer.com"],"created_at":"Fri, 09 Aug 2013 07:35:15 +0000","links":["http://www.armandhammer.com/pet-care/cat-care/Products/arm-and-hammer-ultra-last.aspx"],"lang":"en","user":{"id":1571552280,"friends_count":2,"name":"tim tunner","created_at":"Fri, 05 Jul 2013 23:43:28 +0000","screen_name":"timtunner0987","id_str":"1571552280","statuses_count":32,"profile_image_url":"http://a0.twimg.com/sticky/default_profile_images/default_profile_4_normal.png","lang":"en"}},"salience":{"content":{"sentiment":2}},"klout":{"score":10},"interaction":{"schema":{"version":3},"content":"Missed a scoop? No pro
 blem! ARM &amp; HAMMER? Ultra Last? delivers long lasting odor control even when you can't scoop. http://t.co/VGNQ0i0KGb","id":"1e300c63b51fab80e074e71f77da87ca","author":{"id":1571552280,"username":"timtunner0987","name":"tim tunner","link":"http://twitter.com/timtunner0987","language":"en","avatar":"http://a0.twimg.com/sticky/default_profile_images/default_profile_4_normal.png"},"source":"Tweet Button","link":"http://twitter.com/timtunner0987/statuses/365738027701645314","created_at":"Fri, 09 Aug 2013 07:35:15 +0000","type":"twitter"},"links":{"title":["Arm & Hammer Multi-Brand - ARM & HAMMER? Ultra Last?"],"normalized_url":["http://armandhammer.com/pet-care/cat-care/Products/arm-and-hammer-ultra-last.aspx"],"created_at":["Fri, 09 Aug 2013 07:35:18 +0000"],"retweet_count":[0],"code":[200],"meta":{"keywords":[["Missed a scoop? No problem! ARM & HAMMER? Ultra Last? delivers long lasting odor control even when you can't scoop."]],"description":["Missed a scoop? No problem! ARM & HAMM
 ER? Ultra Last? delivers long lasting odor control even when you can't scoop."],"charset":["UTF-8"],"content_type":["text/html"],"lang":["unknown"]},"url":["http://www.armandhammer.com/pet-care/cat-care/Products/arm-and-hammer-ultra-last.aspx"]},"language":{"tag":"en","confidence":100},"demographic":{"gender":"male"}}
+{"w2o":{"tags":{"topic":["Sustainability","StainRemoval","LaundryDetergent"],"brand":["ArmAndHammer"]}},"twitter":{"id":"364421048600510464","filter_level":"medium","text":"10 bottles Arm &amp; Hammer Plus Oxi Clean Stain Fighters Liquid Laundry Detergent $0.99 http://t.co/89pkfqEgvl #laundry","source":"<a href=\"http://uTweetDeals.com\" rel=\"nofollow\">U Tweet Deals<\/a>","domains":["bit.ly"],"created_at":"Mon, 05 Aug 2013 16:22:03 +0000","hashtags":["laundry"],"links":["http://bit.ly/15zY9H5"],"lang":"en","user":{"statuses_count":59620,"lang":"en","utc_offset":-25200,"id":1131374341,"time_zone":"Arizona","description":"We search for deals on Home and Garden related products. Bath, Kitchen, Furniture, Garden and more. *** I Follow Back ***","friends_count":1939,"name":"Home and Garden","created_at":"Tue, 29 Jan 2013 15:37:21 +0000","screen_name":"HomeGardenBuys","id_str":"1131374341","followers_count":1706,"profile_image_url":"http://a0.twimg.com/profile_images/3531065622/bc956b2a
 9da482ed071f2dbcdabea80b_normal.jpeg","listed_count":95}},"salience":{"content":{"sentiment":0}},"klout":{"score":49},"interaction":{"schema":{"version":3},"content":"10 bottles Arm &amp; Hammer Plus Oxi Clean Stain Fighters Liquid Laundry Detergent $0.99 http://t.co/89pkfqEgvl #laundry","id":"1e2fdeb29810a780e0747af2c3544504","author":{"id":1131374341,"username":"HomeGardenBuys","name":"Home and Garden","link":"http://twitter.com/HomeGardenBuys","language":"en","avatar":"http://a0.twimg.com/profile_images/3531065622/bc956b2a9da482ed071f2dbcdabea80b_normal.jpeg"},"source":"U Tweet Deals","link":"http://twitter.com/HomeGardenBuys/statuses/364421048600510464","created_at":"Mon, 05 Aug 2013 16:22:03 +0000","type":"twitter"},"links":{"title":["10 Bottles Arm Hammer Plus Oxi Clean Stain Fighters Liquid Laundry Detergent | eBay"],"normalized_url":["http://ebay.com/itm/ws/eBayISAPI.dll?ViewItem&item=121154908808&item=121154908808"],"created_at":["Mon, 05 Aug 2013 16:22:47 +0000"],"retweet_
 count":[0],"code":[200],"hops":[["http://bit.ly/15zY9H5","http://rover.ebay.com/rover/1/711-53200-19255-0/1/?type=2&campid=5337311970&toolid=10001&ext=121154908808&item=121154908808"]],"meta":{"keywords":[["10 bottles Arm & Hammer Plus Oxi Clean Stain Fighters Liquid Laundry Detergent","Home & Garden","Housekeeping & Organization","Laundry Supplies"]],"description":["10 bottles Arm & Hammer Plus Oxi Clean Stain Fighters Liquid Laundry Detergent in Home & Garden, Housekeeping & Organization, Laundry Supplies | eBay"],"charset":["UTF-8"],"opengraph":[{"title":"10 bottles Arm & Hammer Plus Oxi Clean Stain Fighters Liquid Laundry Detergent","description":"10 bottles Arm & Hammer Plus Oxi Clean Stain Fighters Liquid Laundry Detergent in Home & Garden, Housekeeping & Organization, Laundry Supplies | eBay","image":"http://thumbs1.ebaystatic.com/d/l225/m/mSRDHPf7_rrZnR75JtQxcCA.jpg","type":"ebay-objects:item","site_name":"eBay","url":"http://www.ebay.com/itm/10-bottles-Arm-Hammer-Plus-Oxi-C
 lean-Stain-Fighters-Liquid-Laundry-Detergent-/121154908808"}],"content_type":["text/html"],"lang":["en-gb"]},"url":["http://www.ebay.com/itm/ws/eBayISAPI.dll?ViewItem&item=121154908808&item=121154908808"]},"language":{"tag":"en","confidence":63}}
+{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"364879533691772928","filter_level":"medium","text":"Arm and hammer carpet powder is amazing....#justsayin","source":"<a href=\"http://twitter.com/download/android\" rel=\"nofollow\">Twitter for Android<\/a>","created_at":"Tue, 06 Aug 2013 22:43:54 +0000","hashtags":["justsayin"],"lang":"en","user":{"location":"Indiana US of A","statuses_count":1400,"lang":"en","url":"http://www.quirkycreative.blogspot.com","utc_offset":-14400,"id":93704952,"time_zone":"Eastern Time (US & Canada)","favourites_count":9,"description":"Writer~ Random ~Quirky ~Creative ~Wife ~Believer ~Extroverted Introvert ~Animal Person ~Brony ~Girly-Girl w/ Tomboy Tendencies @JAInspired","friends_count":493,"name":"Rachel M","created_at":"Mon, 30 Nov 2009 20:20:15 +0000","screen_name":"thisrandomgirl","id_str":"93704952","profile_image_url":"http://a0.twimg.com/profile_images/3376486852/bfc1a1d4c44cf09978fb2c5c0fb33892_normal.jpeg","followers_count":102}},"sa
 lience":{"content":{"sentiment":4}},"klout":{"score":18},"interaction":{"schema":{"version":3},"content":"Arm and hammer carpet powder is amazing....#justsayin","id":"1e2fee9abeffa100e074fa86d21b91e6","author":{"id":93704952,"username":"thisrandomgirl","name":"Rachel M","link":"http://twitter.com/thisrandomgirl","language":"en","avatar":"http://a0.twimg.com/profile_images/3376486852/bfc1a1d4c44cf09978fb2c5c0fb33892_normal.jpeg"},"source":"Twitter for Android","link":"http://twitter.com/thisrandomgirl/statuses/364879533691772928","created_at":"Tue, 06 Aug 2013 22:43:54 +0000","type":"twitter"},"language":{"tag":"en","confidence":61},"demographic":{"gender":"female"}}
+{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"364749039100633088","filter_level":"medium","text":"Fresh laundry solution for sensitive skin Arm &amp; Hammer http://t.co/MmPYCeqmgN via @Gingermommy","mention_ids":[126764623],"source":"<a href=\"http://triberr.com\" rel=\"nofollow\">Triberr<\/a>","domains":["goo.gl"],"created_at":"Tue, 06 Aug 2013 14:05:22 +0000","links":["http://goo.gl/DIOspt"],"lang":"en","mentions":["Gingermommy"],"user":{"statuses_count":4853,"lang":"en","url":"http://www.mykidsguide.com/","id":612438542,"favourites_count":3,"description":"Everything you need to know about educational games and  activities for kids.","friends_count":613,"name":"MyKidsGuide","created_at":"Tue, 19 Jun 2012 10:11:57 +0000","screen_name":"MyKidsGuide","id_str":"612438542","followers_count":1542,"profile_image_url":"http://a0.twimg.com/profile_images/2322033061/ryougq6v4o8gvddcx0ru_normal.jpeg","listed_count":14}},"salience":{"content":{"sentiment":0}},"klout":{"score":49
 },"interaction":{"schema":{"version":3},"content":"Fresh laundry solution for sensitive skin Arm &amp; Hammer http://t.co/MmPYCeqmgN via @Gingermommy","id":"1e2fea13bbd7ad00e0742b3a16342e3e","author":{"id":612438542,"username":"MyKidsGuide","name":"MyKidsGuide","link":"http://twitter.com/MyKidsGuide","language":"en","avatar":"http://a0.twimg.com/profile_images/2322033061/ryougq6v4o8gvddcx0ru_normal.jpeg"},"source":"Triberr","mention_ids":[126764623],"link":"http://twitter.com/MyKidsGuide/statuses/364749039100633088","created_at":"Tue, 06 Aug 2013 14:05:22 +0000","type":"twitter","mentions":["Gingermommy"]},"links":{"title":["Fresh laundry solution for sensitive skin Arm & Hammer - Tales of a Ranting Ginger"],"normalized_url":["http://talesofarantingginger.com/2013/08/fresh-laundry-solution-for-sensitive-skin-arm-hammer.html"],"created_at":["Tue, 06 Aug 2013 06:53:13 +0000"],"retweet_count":[0],"code":[200],"hops":[["http://goo.gl/DIOspt"]],"meta":{"description":["sensitive skin arm 
 & hammer"],"charset":["UTF-8"],"content_type":["text/html"],"lang":["en-us"]},"url":["http://www.talesofarantingginger.com/2013/08/fresh-laundry-solution-for-sensitive-skin-arm-hammer.html"]},"language":{"tag":"en","confidence":100}}
+{"w2o":{"tags":{"topic":["Scent","CouponUsage"],"brand":["Tide","ArmAndHammer"]}},"salience":{"content":{"sentiment":0,"entities":[{"sentiment":0,"confident":1,"name":"Gain","evidence":1,"about":1,"label":"Company","themes":["3 gallon gain"],"type":"Company"},{"sentiment":0,"confident":1,"name":"Tide","evidence":1,"about":1,"label":"Company","themes":["3 gallon gain"],"type":"Company"}]}},"facebook":{"id":"100001334708168_529689457085540","message":"SAVE  SAVE  SAVE NOW\n\nProduct Price Sheet\n\n25 lb powder Gain or Tide: $20\n\n3 gallon Gain or Tide: $25\n\n3 gallon Clear Arm & Hammer (no dye, no perfume) $25\n\n4 gallon Bleach $15\n\nAngel Soft Tissue 32 rolls $25, 96 rolls $65\n\n1 gallon Pine-sol Multi-Purpose Soap $12\n\n1 gallon Dove bodywash $15\n\n1 gallon Dawn Dish liquid $12\n\n1 gallon Downy Fabric Softener $15\n\n25 bars of Dove Soap $15\n\nTo place orders, call or text me at 678-531-1965\n\nSponsored by CarDM Mobile Mechanics and Hawaiian Breeze Auto Detailers","author"
 :{"id":"100001334708168","name":"Albert Wells","link":"http://www.facebook.com/profile.php?id=100001334708168","avatar":"https://graph.facebook.com/100001334708168/picture"},"icon":"http://static.ak.fbcdn.net/rsrc.php/v2/yx/r/og8V99JVf8G.gif","application":"Facebook for Android","source":"Facebook for Android (350685531728)","link":"http://www.facebook.com/photo.php?fbid=529689133752239&set=pcb.529689457085540&type=1&relevant_count=3","created_at":"Mon, 05 Aug 2013 13:41:25 +0000","type":"photo"},"interaction":{"schema":{"version":3},"id":"1e2fdd4b8cefa080e0663432906416b4","content":"SAVE  SAVE  SAVE NOW\n\nProduct Price Sheet\n\n25 lb powder Gain or Tide: $20\n\n3 gallon Gain or Tide: $25\n\n3 gallon Clear Arm & Hammer (no dye, no perfume) $25\n\n4 gallon Bleach $15\n\nAngel Soft Tissue 32 rolls $25, 96 rolls $65\n\n1 gallon Pine-sol Multi-Purpose Soap $12\n\n1 gallon Dove bodywash $15\n\n1 gallon Dawn Dish liquid $12\n\n1 gallon Downy Fabric Softener $15\n\n25 bars of Dove Soap $1
 5\n\nTo place orders, call or text me at 678-531-1965\n\nSponsored by CarDM Mobile Mechanics and Hawaiian Breeze Auto Detailers","author":{"id":"100001334708168","name":"Albert Wells","link":"http://www.facebook.com/profile.php?id=100001334708168","avatar":"https://graph.facebook.com/100001334708168/picture"},"source":"Facebook for Android (350685531728)","link":"http://www.facebook.com/100001334708168_529689457085540","subtype":"photo","created_at":"Mon, 05 Aug 2013 13:41:44 +0000","type":"facebook"},"links":{"title":["Photos from Albert Wells&#039;s post | Facebook"],"normalized_url":["https://facebook.com/photo.php?fbid=529689133752239&set=pcb.529689457085540&type=1&relevant_count=3"],"created_at":["Mon, 05 Aug 2013 13:41:51 +0000"],"retweet_count":[0],"code":[200],"hops":[["http://www.facebook.com/photo.php?fbid=529689133752239&set=pcb.529689457085540&type=1&relevant_count=3"]],"meta":{"charset":["UTF-8"],"content_type":["text/html"],"lang":["en"]},"url":["https://www.facebook.c
 om/photo.php?fbid=529689133752239&set=pcb.529689457085540&type=1&relevant_count=3"]},"language":{"tag":"en","confidence":100},"demographic":{"gender":"male"}}
+{"w2o":{"tags":{"topic":["Sustainability","LaundryDetergent"],"brand":["ArmAndHammer"]}},"twitter":{"id":"364070259025649666","filter_level":"medium","text":"Somebody Come Do My Laundry. I'll Pay You. U Dont Need Detergent. I Got This Arm And Hammer ?","source":"<a href=\"http://twitter.com/download/iphone\" rel=\"nofollow\">Twitter for iPhone<\/a>","created_at":"Sun, 04 Aug 2013 17:08:08 +0000","lang":"en","user":{"geo_enabled":true,"statuses_count":31708,"lang":"en","utc_offset":-18000,"id":57967571,"time_zone":"Quito","favourites_count":38,"description":"http://ask.fm/thatDudeBiggz","friends_count":727,"name":"Sen?r","created_at":"Sat, 18 Jul 2009 16:18:33 +0000","screen_name":"thatDudeBiggz","id_str":"57967571","profile_image_url":"http://a0.twimg.com/profile_images/378800000020493320/c5b8669b417c8e362e0d92ad68bb24f9_normal.jpeg","followers_count":658,"listed_count":5}},"salience":{"content":{"sentiment":0}},"klout":{"score":43},"interaction":{"schema":{"version":3},"content":"S
 omebody Come Do My Laundry. I'll Pay You. U Dont Need Detergent. I Got This Arm And Hammer ?","id":"1e2fd286f28cac00e074ec9c56b152ac","author":{"id":57967571,"username":"thatDudeBiggz","name":"Sen?r","link":"http://twitter.com/thatDudeBiggz","language":"en","avatar":"http://a0.twimg.com/profile_images/378800000020493320/c5b8669b417c8e362e0d92ad68bb24f9_normal.jpeg"},"source":"Twitter for iPhone","link":"http://twitter.com/thatDudeBiggz/statuses/364070259025649666","created_at":"Sun, 04 Aug 2013 17:08:08 +0000","type":"twitter"},"language":{"tag":"en","confidence":62}}
+{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"364267076807950339","filter_level":"medium","text":"Fresh laundry solution for sensitive skin Arm &amp; Hammer http://t.co/hkHzh1oFnq via @Gingermommy","mention_ids":[126764623],"source":"<a href=\"http://triberr.com\" rel=\"nofollow\">Triberr<\/a>","domains":["goo.gl"],"created_at":"Mon, 05 Aug 2013 06:10:13 +0000","links":["http://goo.gl/DIOspt"],"lang":"en","mentions":["Gingermommy"],"user":{"geo_enabled":true,"location":"Lumsden, Saskatchewan","statuses_count":18479,"lang":"en","url":"http://www.mommykatandkids.com/","id":106185357,"utc_offset":-21600,"time_zone":"Mountain Time (US & Canada)","favourites_count":29,"description":"Mother of two active boys, blogger and writer. Lover of hot coffee, organic chocolate and sleeping in late whenever I get the chance.","friends_count":7894,"name":"Kathryn Lavallee","created_at":"Mon, 18 Jan 2010 19:29:48 +0000","screen_name":"mommykatandkids","id_str":"106185357","profile_image
 _url":"http://a0.twimg.com/profile_images/1611498528/corel_touched-up_headshot_normal.jpg","followers_count":15439,"listed_count":306}},"salience":{"content":{"sentiment":0}},"klout":{"score":65},"interaction":{"schema":{"version":3},"content":"Fresh laundry solution for sensitive skin Arm &amp; Hammer http://t.co/hkHzh1oFnq via @Gingermommy","id":"1e2fd95b0a39a080e07405af37275d4a","author":{"id":106185357,"username":"mommykatandkids","name":"Kathryn Lavallee","link":"http://twitter.com/mommykatandkids","language":"en","avatar":"http://a0.twimg.com/profile_images/1611498528/corel_touched-up_headshot_normal.jpg"},"source":"Triberr","mention_ids":[126764623],"link":"http://twitter.com/mommykatandkids/statuses/364267076807950339","created_at":"Mon, 05 Aug 2013 06:10:13 +0000","type":"twitter","mentions":["Gingermommy"]},"links":{"title":["Fresh laundry solution for sensitive skin Arm & Hammer - Tales of a Ranting Ginger"],"normalized_url":["http://talesofarantingginger.com/2013/08/fres
 h-laundry-solution-for-sensitive-skin-arm-hammer.html"],"created_at":["Sun, 04 Aug 2013 21:00:19 +0000"],"retweet_count":[0],"code":[200],"hops":[["http://goo.gl/DIOspt"]],"meta":{"description":["sensitive skin arm & hammer"],"charset":["UTF-8"],"content_type":["text/html"],"lang":["en-us"]},"url":["http://www.talesofarantingginger.com/2013/08/fresh-laundry-solution-for-sensitive-skin-arm-hammer.html"]},"language":{"tag":"en","confidence":100},"demographic":{"gender":"female"}}
+{"w2o":{"tags":{"topic":["Sustainability"],"brand":["ArmAndHammer"]}},"twitter":{"id":"367633815277035520","filter_level":"medium","text":"Arm &amp; Hammer Detergent Only $1.99 Starting Saturday!\n\nTime to Stock Up!!  :) ~Ava~... http://t.co/LznOl9Me9k","source":"<a href=\"http://www.facebook.com/twitter\" rel=\"nofollow\">Facebook<\/a>","domains":["fb.me"],"created_at":"Wed, 14 Aug 2013 13:08:26 +0000","links":["http://fb.me/2jIdLRYWm"],"lang":"en","user":{"location":"Ontario, Canada","statuses_count":11244,"lang":"en","url":"http://savebiglivebetter.com","id":465174690,"description":"The best Canadian deals, sales, coupons, freebies, recipes, money saving articles and more updated daily at http://SaveBigLiveBetter.com! HAPPY SAVING:)","friends_count":71,"name":"Save Big Live Better","created_at":"Mon, 16 Jan 2012 01:56:38 +0000","screen_name":"SBLBCanada","id_str":"465174690","followers_count":476,"profile_image_url":"http://a0.twimg.com/profile_images/3279225640/270245999d75d401
 c696258306991b51_normal.png","listed_count":4}},"salience":{"content":{"sentiment":3}},"klout":{"score":37},"interaction":{"schema":{"version":3},"content":"Arm &amp; Hammer Detergent Only $1.99 Starting Saturday!\n\nTime to Stock Up!!  :) ~Ava~... http://t.co/LznOl9Me9k","id":"1e304e29af34a100e0742d305e733fa6","author":{"id":465174690,"username":"SBLBCanada","name":"Save Big Live Better","link":"http://twitter.com/SBLBCanada","language":"en","avatar":"http://a0.twimg.com/profile_images/3279225640/270245999d75d401c696258306991b51_normal.png"},"source":"Facebook","link":"http://twitter.com/SBLBCanada/statuses/367633815277035520","created_at":"Wed, 14 Aug 2013 13:08:26 +0000","type":"twitter"},"links":{"title":["Timeline Photos | Facebook"],"normalized_url":["https://facebook.com/photo.php?fbid=507697515973605&l=337aea86ef"],"created_at":["Wed, 14 Aug 2013 13:08:58 +0000"],"retweet_count":[0],"code":[200],"hops":[["http://fb.me/2jIdLRYWm"]],"meta":{"charset":["UTF-8"],"content_type":[
 "text/html"],"lang":["en"]},"url":["https://www.facebook.com/photo.php?fbid=507697515973605&l=337aea86ef"]},"language":{"tag":"en","confidence":62},"demographic":{"gender":"male"}}
+{"w2o":{"tags":{"topic":["Sustainability","Scent"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":1,"entities":[{"sentiment":-2,"confident":1,"name":"Vinegar","evidence":1,"about":0,"label":"Person","themes":["funky smell","washing machine","go-to product","regular detergent","vinegar smell"],"type":"Person"}]}},"facebook":{"id":"234885799896401_583141561737488","message":"One of my fans asked me how to get the funky smell out of her washing machine. Vinegar was the go-to product for this in the old days.  Although you would need to run the load a second time with regular detergent to get the vinegar smell out.  It is possible to mix the detergent with vinegar if you want to try that.\n \nI've personally found that Arm & Hammer detergent works for me.  I used to have the same problem with some of my thick towels.  The A&H removed the smell. To avoid a washing machine smell, do the following:\n1) Make sure you clean the washing machine on a regular basis.  The easiest 
 thing to do is to run an empty load with bleach.\n2) Leave the door open on the front loader between uses (if you have small children, though, make sure it's in a room here you can close the door).\n3) Make sure that the washing machine is set on the highest speed spin cycle.  Some machines allow you to crank the spin cycle to over 1000 RPM's.  That's what you need to do.  The more effective the spin cycle, the more water that is removed and the less chance of mold and mildew.","author":{"id":"234885799896401","name":"Tipman Tim - Tips, tools and tricks for life","link":"http://www.facebook.com/profile.php?id=234885799896401","avatar":"https://graph.facebook.com/234885799896401/picture"},"source":"web","created_at":"Wed, 14 Aug 2013 17:23:45 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e3050645c92a680e066aef68cf33be0","content":"One of my fans asked me how to get the funky smell out of her washing machine. Vinegar was the go-to product for this in the old day
 s.  Although you would need to run the load a second time with regular detergent to get the vinegar smell out.  It is possible to mix the detergent with vinegar if you want to try that.\n \nI've personally found that Arm & Hammer detergent works for me.  I used to have the same problem with some of my thick towels.  The A&H removed the smell. To avoid a washing machine smell, do the following:\n1) Make sure you clean the washing machine on a regular basis.  The easiest thing to do is to run an empty load with bleach.\n2) Leave the door open on the front loader between uses (if you have small children, though, make sure it's in a room here you can close the door).\n3) Make sure that the washing machine is set on the highest speed spin cycle.  Some machines allow you to crank the spin cycle to over 1000 RPM's.  That's what you need to do.  The more effective the spin cycle, the more water that is removed and the less chance of mold and mildew.","author":{"id":"234885799896401","name":
 "Tipman Tim - Tips, tools and tricks for life","link":"http://www.facebook.com/profile.php?id=234885799896401","avatar":"https://graph.facebook.com/234885799896401/picture"},"source":"web","link":"http://www.facebook.com/234885799896401_583141561737488","subtype":"status","created_at":"Wed, 14 Aug 2013 17:24:00 +0000","type":"facebook"},"language":{"tag":"en","confidence":100},"demographic":{"gender":"male"}}
+{"w2o":{"tags":{"topic":["Sustainability","CouponUsage","LaundryDetergent"],"brand":["ArmAndHammer","Purex"]}},"salience":{"content":{"sentiment":0,"topics":[{"hits":0,"name":"Beverages","score":0.92570048570633}]}},"facebook":{"id":"100000254074556_643746722310458","message":"Ashley, that was the recipe for the powder detergent (which is amazing by the way) It won't last as long as the liquid and is more expensive.  Sorry. I didn't mean to copy that one.  Here is the liquid\nLIQUID SOAP MAKES 10 GALLONS\n? C PER LOAD ? 640 LOADS\n4 cups of Hot Tap Water\n1 Fels Naptha Soap Bar\n1 Cup Arm & Hammer Super Washing Soda\n? Cup Borax\n1 cup Purex liquid softener\nGrate soap, add to sauce pan with 4 cups of  water.  Heat and stir continually until soap dissolves & is melted.\nFill 5 gallon Bucket ? full with Hot Tap Water, Add melted soap, soda, Purex and borax.  Stir well until powder is dissolved.  Fill bucket to top with more hot water, stir, cover, and let sit overnight to thicken.  S
 tir then fill a container (used laundry bottles or empty water jugs)  ? full with soap, fill the remainder with water. Shake well.","author":{"id":"100000254074556","name":"Sharon Bedwell Schluter","link":"http://www.facebook.com/profile.php?id=100000254074556","avatar":"https://graph.facebook.com/100000254074556/picture"},"source":"web","created_at":"Fri, 09 Aug 2013 15:07:21 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e3010563ad1aa80e0660e6752dee246","content":"Ashley, that was the recipe for the powder detergent (which is amazing by the way) It won't last as long as the liquid and is more expensive.  Sorry. I didn't mean to copy that one.  Here is the liquid\nLIQUID SOAP MAKES 10 GALLONS\n? C PER LOAD ? 640 LOADS\n4 cups of Hot Tap Water\n1 Fels Naptha Soap Bar\n1 Cup Arm & Hammer Super Washing Soda\n? Cup Borax\n1 cup Purex liquid softener\nGrate soap, add to sauce pan with 4 cups of  water.  Heat and stir continually until soap dissolves & is melted.\nF
 ill 5 gallon Bucket ? full with Hot Tap Water, Add melted soap, soda, Purex and borax.  Stir well until powder is dissolved.  Fill bucket to top with more hot water, stir, cover, and let sit overnight to thicken.  Stir then fill a container (used laundry bottles or empty water jugs)  ? full with soap, fill the remainder with water. Shake well.","author":{"id":"100000254074556","name":"Sharon Bedwell Schluter","link":"http://www.facebook.com/profile.php?id=100000254074556","avatar":"https://graph.facebook.com/100000254074556/picture"},"source":"web","link":"http://www.facebook.com/100000254074556_643746722310458","subtype":"status","created_at":"Fri, 09 Aug 2013 15:07:35 +0000","type":"facebook"},"language":{"tag":"en","confidence":100},"demographic":{"gender":"unisex"}}
+{"w2o":{"tags":{"topic":["ConcentratedFormulas"],"brand":["ArmAndHammer"]}},"twitter":{"id":"359694365049896960","filter_level":"medium","text":"Missed a scoop? No problem! ARM &amp; HAMMER? Ultra Last? delivers long lasting odor control even when you can't scoop. http://t.co/eZdNss2ClQ","source":"<a href=\"http://twitter.com/tweetbutton\" rel=\"nofollow\">Tweet Button<\/a>","domains":["www.armandhammer.com"],"created_at":"Tue, 23 Jul 2013 15:19:54 +0000","links":["http://www.armandhammer.com/pet-care/cat-care/Products/arm-and-hammer-ultra-last.aspx"],"lang":"en","user":{"id":1546236864,"friends_count":82,"name":"Kyra Mitchell","created_at":"Tue, 25 Jun 2013 17:32:24 +0000","screen_name":"ArmyRebel0","id_str":"1546236864","statuses_count":14,"followers_count":10,"profile_image_url":"http://a0.twimg.com/profile_images/378800000084101648/95eff16837f6e9fd03585630e8e6b562_normal.jpeg","lang":"en"}},"salience":{"content":{"sentiment":2}},"klout":{"score":12},"interaction":{"schema":{"ver
 sion":3},"content":"Missed a scoop? No problem! ARM &amp; HAMMER? Ultra Last? delivers long lasting odor control even when you can't scoop. http://t.co/eZdNss2ClQ","id":"1e2f3ab537a0a900e074ec3e0933e560","author":{"id":1546236864,"username":"ArmyRebel0","name":"Kyra Mitchell","link":"http://twitter.com/ArmyRebel0","language":"en","avatar":"http://a0.twimg.com/profile_images/378800000084101648/95eff16837f6e9fd03585630e8e6b562_normal.jpeg"},"source":"Tweet Button","link":"http://twitter.com/ArmyRebel0/statuses/359694365049896960","created_at":"Tue, 23 Jul 2013 15:19:54 +0000","type":"twitter"},"links":{"title":["Arm & Hammer Multi-Brand - ARM & HAMMER? Ultra Last?"],"normalized_url":["http://armandhammer.com/pet-care/cat-care/Products/arm-and-hammer-ultra-last.aspx"],"created_at":["Tue, 23 Jul 2013 15:20:08 +0000"],"retweet_count":[0],"code":[200],"meta":{"keywords":[["Missed a scoop? No problem! ARM & HAMMER? Ultra Last? delivers long lasting odor control even when you can't scoop."]
 ],"description":["Missed a scoop? No problem! ARM & HAMMER? Ultra Last? delivers long lasting odor control even when you can't scoop."],"charset":["UTF-8"],"content_type":["text/html"],"lang":["unknown"]},"url":["http://www.armandhammer.com/pet-care/cat-care/Products/arm-and-hammer-ultra-la

<TRUNCATED>

[3/5] adding google provider, tweaks to localbuilder and hdfs reader

Posted by sb...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/61592dc0/streams-contrib/streams-provider-google/google-gplus/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-google/google-gplus/pom.xml b/streams-contrib/streams-provider-google/google-gplus/pom.xml
new file mode 100644
index 0000000..99f9321
--- /dev/null
+++ b/streams-contrib/streams-provider-google/google-gplus/pom.xml
@@ -0,0 +1,145 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <groupId>org.apache.streams</groupId>
+        <artifactId>streams-provider-google</artifactId>
+        <version>0.1.STREAMS26-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>google-gplus</artifactId>
+
+    <repositories>
+        <repository>
+            <id>typesafe</id>
+            <name>typesafe</name>
+            <url>http://repo.typesafe.com/typesafe/repo</url>
+        </repository>
+    </repositories>
+
+    <dependencies>
+        <dependency>
+            <groupId>com.typesafe</groupId>
+            <artifactId>config</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.fasterxml.jackson.core</groupId>
+            <artifactId>jackson-core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.fasterxml.jackson.core</groupId>
+            <artifactId>jackson-annotations</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.jsonschema2pojo</groupId>
+            <artifactId>jsonschema2pojo-core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.streams</groupId>
+            <artifactId>streams-core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.streams</groupId>
+            <artifactId>streams-pojo</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.streams</groupId>
+            <artifactId>streams-config</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.google.guava</groupId>
+            <artifactId>guava</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.jayway.jsonpath</groupId>
+            <artifactId>json-path</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.jayway.jsonpath</groupId>
+            <artifactId>json-path-assert</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.google.apis</groupId>
+            <artifactId>google-api-services-plus</artifactId>
+            <version>v1-rev118-1.17.0-rc</version>
+        </dependency>
+        <dependency>
+            <groupId>com.google.api-client</groupId>
+            <artifactId>google-api-client</artifactId>
+            <version>1.17.0-rc</version>
+        </dependency>
+        <dependency>
+            <groupId>com.google.http-client</groupId>
+            <artifactId>google-http-client-jackson2</artifactId>
+            <version>1.17.0-rc</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <sourceDirectory>src/main/java</sourceDirectory>
+        <testSourceDirectory>src/test/java</testSourceDirectory>
+        <resources>
+            <resource>
+                <directory>src/main/resources</directory>
+            </resource>
+        </resources>
+        <testResources>
+            <testResource>
+                <directory>src/test/resources</directory>
+            </testResource>
+        </testResources>
+        <plugins>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>build-helper-maven-plugin</artifactId>
+                <version>1.8</version>
+                <executions>
+                    <execution>
+                        <id>add-source</id>
+                        <phase>generate-sources</phase>
+                        <goals>
+                            <goal>add-source</goal>
+                        </goals>
+                        <configuration>
+                            <sources>
+                                <source>target/generated-sources/jsonschema2pojo</source>
+                            </sources>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.jsonschema2pojo</groupId>
+                <artifactId>jsonschema2pojo-maven-plugin</artifactId>
+                <configuration>
+                    <addCompileSourceRoot>true</addCompileSourceRoot>
+                    <generateBuilders>true</generateBuilders>
+                    <sourcePaths>
+                        <sourcePath>src/main/jsonschema/com/google/gplus/GPlusConfiguration.json</sourcePath>
+                    </sourcePaths>
+                    <outputDirectory>target/generated-sources/jsonschema2pojo</outputDirectory>
+                    <targetPackage>org.apache.streams.google.gplus.pojo</targetPackage>
+                    <useLongIntegers>true</useLongIntegers>
+                    <useJodaDates>false</useJodaDates>
+                </configuration>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>generate</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+</project>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/61592dc0/streams-contrib/streams-provider-google/google-gplus/src/main/java/com/google/gplus/provider/GPlusActivitySerializer.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-google/google-gplus/src/main/java/com/google/gplus/provider/GPlusActivitySerializer.java b/streams-contrib/streams-provider-google/google-gplus/src/main/java/com/google/gplus/provider/GPlusActivitySerializer.java
new file mode 100644
index 0000000..9bb6350
--- /dev/null
+++ b/streams-contrib/streams-provider-google/google-gplus/src/main/java/com/google/gplus/provider/GPlusActivitySerializer.java
@@ -0,0 +1,117 @@
+package com.google.gplus.provider;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.SerializationFeature;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.google.common.base.Joiner;
+import com.google.common.collect.Lists;
+import org.apache.commons.lang.NotImplementedException;
+import org.apache.streams.data.ActivitySerializer;
+import org.apache.streams.pojo.json.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+* Created with IntelliJ IDEA.
+* User: mdelaet
+* Date: 9/30/13
+* Time: 9:24 AM
+* To change this template use File | Settings | File Templates.
+*/
+public class GPlusActivitySerializer implements ActivitySerializer<com.google.api.services.plus.model.Activity> {
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(GPlusActivitySerializer.class);
+
+    GPlusProvider provider;
+
+    ObjectMapper mapper = new ObjectMapper();
+
+    public GPlusActivitySerializer(GPlusProvider provider) {
+
+        this.provider = provider;
+
+        mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, Boolean.FALSE);
+
+    }
+
+    public GPlusActivitySerializer() {
+    }
+
+    @Override
+    public String serializationFormat() {
+        return "gplus.v1";
+    }
+
+    @Override
+    public com.google.api.services.plus.model.Activity serialize(Activity deserialized) {
+        throw new NotImplementedException("Not currently implemented");
+    }
+
+    @Override
+    public Activity deserialize(com.google.api.services.plus.model.Activity gplusActivity) {
+
+        // There is totally a better way to do this
+        //   1) Deep copy all jackson fields that overlap
+        //   2) Check all objects are present
+        //   3) Check essential fields have values
+        //   4) Any that don't, set them based on other fields that are present
+
+        Activity activity = new Activity();
+        activity.setId(formatId(gplusActivity.getId()));
+        activity.setPublished(new Date(gplusActivity.getPublished().getValue()));
+        Provider provider = new Provider();
+        provider.setId("http://plus.google.com");
+        provider.setDisplayName("GPlus");
+        activity.setProvider(provider);
+        Actor actor = new Actor();
+        actor.setId(gplusActivity.getActor().getId());
+        actor.setDisplayName(gplusActivity.getActor().getDisplayName());
+        actor.setUrl(gplusActivity.getActor().getUrl());
+        activity.setActor(actor);
+        activity.setVerb(gplusActivity.getVerb());
+        ActivityObject object = new ActivityObject();
+        object.setId(gplusActivity.getObject().getId());
+        object.setUrl(gplusActivity.getObject().getUrl());
+        object.setContent(gplusActivity.getObject().getContent());
+        activity.setTitle(gplusActivity.getTitle());
+        activity.setContent(gplusActivity.getObject().getContent());
+        activity.setObject(object);
+
+        return activity;
+    }
+
+    @Override
+    public List<Activity> deserializeAll(List<com.google.api.services.plus.model.Activity> serializedList) {
+        throw new NotImplementedException("Not currently implemented");
+    }
+
+    public static Generator buildGenerator(ObjectNode event) {
+        return null;
+    }
+
+    public static Icon getIcon(ObjectNode event) {
+        return null;
+    }
+
+    public static Provider buildProvider(ObjectNode event) {
+        Provider provider = new Provider();
+        provider.setId("id:providers:gmail");
+        return provider;
+    }
+
+    public static List<Object> getLinks(ObjectNode event) {
+        return null;
+    }
+
+    public static String getUrls(ObjectNode event) {
+        return null;
+    }
+
+    public static String formatId(String... idparts) {
+        return Joiner.on(":").join(Lists.asList("id:gmail", idparts));
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/61592dc0/streams-contrib/streams-provider-google/google-gplus/src/main/java/com/google/gplus/provider/GPlusConfigurator.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-google/google-gplus/src/main/java/com/google/gplus/provider/GPlusConfigurator.java b/streams-contrib/streams-provider-google/google-gplus/src/main/java/com/google/gplus/provider/GPlusConfigurator.java
new file mode 100644
index 0000000..9cd435d
--- /dev/null
+++ b/streams-contrib/streams-provider-google/google-gplus/src/main/java/com/google/gplus/provider/GPlusConfigurator.java
@@ -0,0 +1,36 @@
+package com.google.gplus.provider;
+
+import com.typesafe.config.Config;
+import org.apache.streams.config.StreamsConfigurator;
+import org.apache.streams.google.gplus.GPlusConfiguration;
+import org.apache.streams.google.gplus.GPlusOAuthConfiguration;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Created by sblackmon on 12/10/13.
+ */
+public class GPlusConfigurator {
+
+    private final static Logger LOGGER = LoggerFactory.getLogger(GPlusConfigurator.class);
+
+    public static GPlusConfiguration detectConfiguration(Config config) {
+        Config oauth = StreamsConfigurator.config.getConfig("gplus.oauth");
+
+        GPlusConfiguration gplusConfiguration = new GPlusConfiguration();
+
+        gplusConfiguration.setProtocol(config.getString("protocol"));
+        gplusConfiguration.setHost(config.getString("host"));
+        gplusConfiguration.setPort(config.getLong("port"));
+        gplusConfiguration.setVersion(config.getString("version"));
+        GPlusOAuthConfiguration gPlusOAuthConfiguration = new GPlusOAuthConfiguration();
+        gPlusOAuthConfiguration.setConsumerKey(oauth.getString("consumerKey"));
+        gPlusOAuthConfiguration.setConsumerSecret(oauth.getString("consumerSecret"));
+        gPlusOAuthConfiguration.setAccessToken(oauth.getString("accessToken"));
+        gPlusOAuthConfiguration.setAccessTokenSecret(oauth.getString("accessTokenSecret"));
+        gplusConfiguration.setOauth(gPlusOAuthConfiguration);
+
+        return gplusConfiguration;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/61592dc0/streams-contrib/streams-provider-google/google-gplus/src/main/java/com/google/gplus/provider/GPlusEventProcessor.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-google/google-gplus/src/main/java/com/google/gplus/provider/GPlusEventProcessor.java b/streams-contrib/streams-provider-google/google-gplus/src/main/java/com/google/gplus/provider/GPlusEventProcessor.java
new file mode 100644
index 0000000..579cdbf
--- /dev/null
+++ b/streams-contrib/streams-provider-google/google-gplus/src/main/java/com/google/gplus/provider/GPlusEventProcessor.java
@@ -0,0 +1,79 @@
+package com.google.gplus.provider;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import org.apache.streams.core.StreamsDatum;
+import org.apache.streams.pojo.json.Activity;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.Queue;
+import java.util.Random;
+import java.util.concurrent.BlockingQueue;
+
+/**
+ * Created by sblackmon on 12/10/13.
+ */
+public class GPlusEventProcessor implements Runnable {
+
+    private final static Logger LOGGER = LoggerFactory.getLogger(GPlusEventProcessor.class);
+
+    private ObjectMapper mapper = new ObjectMapper();
+
+    private BlockingQueue<String> inQueue;
+    private Queue<StreamsDatum> outQueue;
+
+    private Class inClass;
+    private Class outClass;
+
+    private GPlusActivitySerializer gPlusActivitySerializer = new GPlusActivitySerializer();
+
+    public final static String TERMINATE = new String("TERMINATE");
+
+    public GPlusEventProcessor(BlockingQueue<String> inQueue, Queue<StreamsDatum> outQueue, Class inClass, Class outClass) {
+        this.inQueue = inQueue;
+        this.outQueue = outQueue;
+        this.inClass = inClass;
+        this.outClass = outClass;
+    }
+
+    public GPlusEventProcessor(BlockingQueue<String> inQueue, Queue<StreamsDatum> outQueue, Class outClass) {
+        this.inQueue = inQueue;
+        this.outQueue = outQueue;
+        this.outClass = outClass;
+    }
+
+    @Override
+    public void run() {
+
+        while(true) {
+            try {
+                String item = inQueue.take();
+                Thread.sleep(new Random().nextInt(100));
+                if(item==TERMINATE) {
+                    LOGGER.info("Terminating!");
+                    break;
+                }
+
+                // first check for valid json
+                ObjectNode node = (ObjectNode)mapper.readTree(item);
+
+                // if the target is string, just pass-through
+                if( String.class.equals(outClass))
+                    outQueue.offer(new StreamsDatum(item));
+                else {
+                    // convert to desired format
+                    com.google.api.services.plus.model.Activity gplusActivity = (com.google.api.services.plus.model.Activity)mapper.readValue(item, com.google.api.services.plus.model.Activity.class);
+
+                    Activity streamsActivity = gPlusActivitySerializer.deserialize(gplusActivity);
+
+                    outQueue.offer(new StreamsDatum(streamsActivity));
+                }
+
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+    }
+
+};

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/61592dc0/streams-contrib/streams-provider-google/google-gplus/src/main/java/com/google/gplus/provider/GPlusHistoryProviderTask.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-google/google-gplus/src/main/java/com/google/gplus/provider/GPlusHistoryProviderTask.java b/streams-contrib/streams-provider-google/google-gplus/src/main/java/com/google/gplus/provider/GPlusHistoryProviderTask.java
new file mode 100644
index 0000000..1176843
--- /dev/null
+++ b/streams-contrib/streams-provider-google/google-gplus/src/main/java/com/google/gplus/provider/GPlusHistoryProviderTask.java
@@ -0,0 +1,88 @@
+package com.google.gplus.provider;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.google.api.services.plus.Plus;
+import com.google.api.services.plus.model.ActivityFeed;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.util.List;
+
+/**
+ * Created by sblackmon on 12/10/13.
+ */
+public class GPlusHistoryProviderTask implements Runnable {
+
+    private final static Logger LOGGER = LoggerFactory.getLogger(GPlusHistoryProviderTask.class);
+
+    private ObjectMapper mapper;
+
+    private GPlusProvider provider;
+    private String userid;
+    private String circle;
+
+    public GPlusHistoryProviderTask(GPlusProvider provider, String userid, String circle) {
+        this.provider = provider;
+        this.userid = userid;
+        this.circle = circle;
+    }
+
+    @Override
+    public void run() {
+
+        Plus.Activities.List listActivities = null;
+        try {
+            listActivities = provider.plus.activities().list(userid, circle);
+        } catch (IOException e) {
+            e.printStackTrace();
+            return;
+        }
+        listActivities.setMaxResults(100L);
+
+// Execute the request for the first page
+        ActivityFeed activityFeed = null;
+        try {
+            activityFeed = listActivities.execute();
+        } catch (IOException e) {
+            e.printStackTrace();
+            return;
+        }
+
+// Unwrap the request and extract the pieces we want
+        List<com.google.api.services.plus.model.Activity> activities = activityFeed.getItems();
+
+// Loop through until we arrive at an empty page
+        while (activities != null) {
+            for (com.google.api.services.plus.model.Activity gplusActivity : activities) {
+                String json = null;
+                try {
+                    json = mapper.writeValueAsString(gplusActivity);
+                } catch (JsonProcessingException e) {
+                    e.printStackTrace();
+                }
+                provider.inQueue.offer(json);
+            }
+
+            // We will know we are on the last page when the next page token is null.
+            // If this is the case, break.
+            if (activityFeed.getNextPageToken() == null) {
+                break;
+            }
+
+            // Prepare to request the next page of activities
+            listActivities.setPageToken(activityFeed.getNextPageToken());
+
+            // Execute and process the next page request
+            try {
+                activityFeed = listActivities.execute();
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+            activities = activityFeed.getItems();
+        }
+
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/61592dc0/streams-contrib/streams-provider-google/google-gplus/src/main/java/com/google/gplus/provider/GPlusProvider.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-google/google-gplus/src/main/java/com/google/gplus/provider/GPlusProvider.java b/streams-contrib/streams-provider-google/google-gplus/src/main/java/com/google/gplus/provider/GPlusProvider.java
new file mode 100644
index 0000000..523bd46
--- /dev/null
+++ b/streams-contrib/streams-provider-google/google-gplus/src/main/java/com/google/gplus/provider/GPlusProvider.java
@@ -0,0 +1,166 @@
+package com.google.gplus.provider;
+
+import com.google.api.client.googleapis.auth.oauth2.GoogleClientSecrets;
+import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
+import com.google.api.client.googleapis.auth.oauth2.GoogleTokenResponse;
+import com.google.api.client.http.HttpTransport;
+import com.google.api.client.http.javanet.NetHttpTransport;
+import com.google.api.client.json.jackson2.JacksonFactory;
+import com.google.api.services.plus.Plus;
+import com.google.common.base.Preconditions;
+import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.ListeningExecutorService;
+import com.google.common.util.concurrent.MoreExecutors;
+import com.google.gson.Gson;
+import com.typesafe.config.Config;
+import org.apache.streams.config.StreamsConfigurator;
+import org.apache.streams.core.StreamsDatum;
+import org.apache.streams.core.StreamsProvider;
+import org.apache.streams.core.StreamsResultSet;
+import org.apache.streams.google.gplus.GPlusConfiguration;
+import org.joda.time.DateTime;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.math.BigInteger;
+import java.util.Queue;
+import java.util.Random;
+import java.util.concurrent.*;
+
+/**
+ * Created by sblackmon on 12/10/13.
+ */
+public class GPlusProvider implements StreamsProvider {
+
+    private final static Logger LOGGER = LoggerFactory.getLogger(GPlusProvider.class);
+
+    private GPlusConfiguration config;
+
+    private Class klass;
+
+    public GPlusConfiguration getConfig() {
+        return config;
+    }
+
+    public void setConfig(GPlusConfiguration config) {
+        this.config = config;
+    }
+
+    protected BlockingQueue inQueue = new LinkedBlockingQueue<String>(10000);
+
+    protected volatile Queue<StreamsDatum> providerQueue = new ConcurrentLinkedQueue<StreamsDatum>();
+
+    public BlockingQueue<Object> getInQueue() {
+        return inQueue;
+    }
+
+    private static final HttpTransport TRANSPORT = new NetHttpTransport();
+    private static final JacksonFactory JSON_FACTORY = new JacksonFactory();
+    private static final Gson GSON = new Gson();
+
+    protected GoogleClientSecrets clientSecrets;
+    protected GoogleCredential credential;
+    protected Plus plus;
+
+    protected ListeningExecutorService executor = MoreExecutors.listeningDecorator(newFixedThreadPoolWithQueueSize(5, 20));
+
+    ListenableFuture providerTaskComplete;
+
+    private static ExecutorService newFixedThreadPoolWithQueueSize(int nThreads, int queueSize) {
+        return new ThreadPoolExecutor(nThreads, nThreads,
+                5000L, TimeUnit.MILLISECONDS,
+                new ArrayBlockingQueue<Runnable>(queueSize, true), new ThreadPoolExecutor.CallerRunsPolicy());
+    }
+
+    public GPlusProvider() {
+        Config config = StreamsConfigurator.config.getConfig("gplus");
+        this.config = GPlusConfigurator.detectConfiguration(config);
+    }
+
+    public GPlusProvider(GPlusConfiguration config) {
+        this.config = config;
+    }
+
+    public GPlusProvider(Class klass) {
+        Config config = StreamsConfigurator.config.getConfig("gplus");
+        this.config = GPlusConfigurator.detectConfiguration(config);
+        this.klass = klass;
+    }
+
+    public GPlusProvider(GPlusConfiguration config, Class klass) {
+        this.config = config;
+        this.klass = klass;
+    }
+
+    @Override
+    public void startStream() {
+
+        providerTaskComplete = executor.submit(new GPlusHistoryProviderTask(this, "me", "public"));
+
+        for (int i = 0; i < 1; i++) {
+            new Thread(new GPlusEventProcessor(inQueue, providerQueue, klass));
+        }
+
+    }
+
+    @Override
+    public StreamsResultSet readCurrent() {
+
+        startStream();
+
+        while( !providerTaskComplete.isDone()) {
+            try {
+                Thread.sleep(new Random().nextInt(100));
+            } catch (InterruptedException e) { }
+        }
+
+        return new StreamsResultSet(providerQueue);
+
+    }
+
+    @Override
+    public StreamsResultSet readNew(BigInteger sequence) {
+        return null;
+    }
+
+    @Override
+    public StreamsResultSet readRange(DateTime start, DateTime end) {
+        return null;
+    }
+
+    @Override
+    public void prepare(Object configurationObject) {
+
+        Preconditions.checkNotNull(this.klass);
+
+        Preconditions.checkNotNull(config.getOauth().getConsumerKey());
+        Preconditions.checkNotNull(config.getOauth().getConsumerSecret());
+        Preconditions.checkNotNull(config.getOauth().getAccessToken());
+        Preconditions.checkNotNull(config.getOauth().getAccessTokenSecret());
+
+        try {
+            credential = new GoogleCredential.Builder()
+                    .setJsonFactory(JSON_FACTORY)
+                    .setTransport(TRANSPORT)
+                    .setClientSecrets(config.getOauth().getConsumerKey(), config.getOauth().getConsumerSecret()).build()
+                    .setFromTokenResponse(JSON_FACTORY.fromString(
+                            config.getOauth().getAccessToken(), GoogleTokenResponse.class));
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+
+    @Override
+    public void cleanUp() {
+        for (int i = 0; i < 1; i++) {
+            inQueue.add(GPlusEventProcessor.TERMINATE);
+        }
+
+        try {
+            executor.awaitTermination(5, TimeUnit.SECONDS);
+        } catch (InterruptedException e) {
+            e.printStackTrace();
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/61592dc0/streams-contrib/streams-provider-google/google-gplus/src/main/jsonschema/com/google/gplus/GPlusConfiguration.json
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-google/google-gplus/src/main/jsonschema/com/google/gplus/GPlusConfiguration.json b/streams-contrib/streams-provider-google/google-gplus/src/main/jsonschema/com/google/gplus/GPlusConfiguration.json
new file mode 100644
index 0000000..e2d8130
--- /dev/null
+++ b/streams-contrib/streams-provider-google/google-gplus/src/main/jsonschema/com/google/gplus/GPlusConfiguration.json
@@ -0,0 +1,58 @@
+{
+    "type": "object",
+    "$schema": "http://json-schema.org/draft-03/schema",
+    "id": "#",
+    "javaType" : "org.apache.streams.google.gplus.GPlusConfiguration",
+    "properties": {
+        "protocol": {
+            "type": "string",
+            "description": "The protocol"
+        },
+        "host": {
+            "type": "string",
+            "description": "The host"
+        },
+        "port": {
+            "type": "integer",
+            "description": "The port"
+        },
+        "version": {
+            "type": "string",
+            "description": "The version"
+        },
+        "endpoint": {
+            "type": "string",
+            "description": "The endpoint"
+        },
+        "follow": {
+            "type": "array",
+            "description": "A list of user names, indicating the users whose activities should be delivered on the stream",
+            "items": {
+                "type": "string"
+            }
+        },
+        "oauth": {
+            "type": "object",
+            "dynamic": "true",
+            "javaType" : "org.apache.streams.google.gplus.GPlusOAuthConfiguration",
+            "javaInterfaces": ["java.io.Serializable"],
+            "properties": {
+                "appName": {
+                    "type": "string"
+                },
+                "consumerKey": {
+                    "type": "string"
+                },
+                "consumerSecret": {
+                    "type": "string"
+                },
+                "accessToken": {
+                    "type": "string"
+                },
+                "accessTokenSecret": {
+                    "type": "string"
+                }
+            }
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/61592dc0/streams-contrib/streams-provider-google/google-gplus/src/main/resources/reference.conf
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-google/google-gplus/src/main/resources/reference.conf b/streams-contrib/streams-provider-google/google-gplus/src/main/resources/reference.conf
new file mode 100644
index 0000000..c6c1e01
--- /dev/null
+++ b/streams-contrib/streams-provider-google/google-gplus/src/main/resources/reference.conf
@@ -0,0 +1,11 @@
+gplus {
+    protocol = "https"
+    host = "www.googleapis.com/plus"
+    port = 443
+    version = "v1"
+    endpoint = "people/me/activities/public?maxResults=100"
+    filter-level = "none"
+    oauth {
+        appName = "Apache Streams"
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/61592dc0/streams-contrib/streams-provider-google/google-gplus/src/test/java/com/google/gmail/test/GMailMessageSerDeTest.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-google/google-gplus/src/test/java/com/google/gmail/test/GMailMessageSerDeTest.java b/streams-contrib/streams-provider-google/google-gplus/src/test/java/com/google/gmail/test/GMailMessageSerDeTest.java
new file mode 100644
index 0000000..e9641fc
--- /dev/null
+++ b/streams-contrib/streams-provider-google/google-gplus/src/test/java/com/google/gmail/test/GMailMessageSerDeTest.java
@@ -0,0 +1,53 @@
+package com.google.gmail.test;
+
+import com.fasterxml.jackson.databind.DeserializationFeature;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.junit.Assert;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.BufferedReader;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+
+/**
+ * Created with IntelliJ IDEA.
+ * User: sblackmon
+ * Date: 8/20/13
+ * Time: 5:57 PM
+ * To change this template use File | Settings | File Templates.
+ */
+@Ignore
+public class GMailMessageSerDeTest {
+
+    private final static Logger LOGGER = LoggerFactory.getLogger(GMailMessageSerDeTest.class);
+
+    private ObjectMapper mapper = new ObjectMapper();
+
+    @Ignore
+    @Test
+    public void Tests()
+    {
+        mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, Boolean.TRUE);
+        mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, Boolean.TRUE);
+        mapper.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, Boolean.TRUE);
+
+        InputStream is = GMailMessageSerDeTest.class.getResourceAsStream("/datasift_jsons.txt");
+        InputStreamReader isr = new InputStreamReader(is);
+        BufferedReader br = new BufferedReader(isr);
+
+        try {
+            while (br.ready()) {
+                String line = br.readLine();
+                LOGGER.debug(line);
+
+                // implement
+            }
+        } catch( Exception e ) {
+            e.printStackTrace();
+            Assert.fail();
+        }
+    }
+}


[5/5] git commit: adding google provider, tweaks to localbuilder and hdfs reader

Posted by sb...@apache.org.
adding google provider, tweaks to localbuilder and hdfs reader


Project: http://git-wip-us.apache.org/repos/asf/incubator-streams/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-streams/commit/61592dc0
Tree: http://git-wip-us.apache.org/repos/asf/incubator-streams/tree/61592dc0
Diff: http://git-wip-us.apache.org/repos/asf/incubator-streams/diff/61592dc0

Branch: refs/heads/STREAMS-26
Commit: 61592dc0742bcae969c0c34c9d4158d5d164eddc
Parents: 2ec7fe8
Author: Steve Blackmon <sb...@w2odigital.com>
Authored: Fri Mar 21 14:44:13 2014 -0500
Committer: Steve Blackmon <sb...@w2odigital.com>
Committed: Fri Mar 21 14:44:13 2014 -0500

----------------------------------------------------------------------
 pom.xml                                         |   2 +-
 streams-contrib/pom.xml                         |   1 +
 .../streams-components-test.iml                 |  39 +++-
 .../apache/streams/hdfs/HdfsConfigurator.java   |  15 ++
 .../streams/hdfs/WebHdfsPersistReader.java      |  63 ++----
 .../streams/hdfs/WebHdfsPersistReaderTask.java  |  49 ++---
 .../google-gmail/pom.xml                        | 135 +++++++++++++
 .../com/google/gmail/GMailConfigurator.java     |  27 +++
 .../gmail/provider/GMailImapProviderTask.java   |  58 ++++++
 .../GMailMessageActivitySerializer.java         | 194 +++++++++++++++++++
 .../google/gmail/provider/GMailProvider.java    | 131 +++++++++++++
 .../gmail/provider/GMailRssProviderTask.java    |  36 ++++
 .../com/google/gmail/GMailConfiguration.json    |  14 ++
 .../gmail/test/GMailMessageSerDeTest.java       |  53 +++++
 .../src/test/resources/datasift_jsons.txt       | 101 ++++++++++
 .../google-gplus/pom.xml                        | 145 ++++++++++++++
 .../gplus/provider/GPlusActivitySerializer.java | 117 +++++++++++
 .../gplus/provider/GPlusConfigurator.java       |  36 ++++
 .../gplus/provider/GPlusEventProcessor.java     |  79 ++++++++
 .../provider/GPlusHistoryProviderTask.java      |  88 +++++++++
 .../google/gplus/provider/GPlusProvider.java    | 166 ++++++++++++++++
 .../com/google/gplus/GPlusConfiguration.json    |  58 ++++++
 .../src/main/resources/reference.conf           |  11 ++
 .../gmail/test/GMailMessageSerDeTest.java       |  53 +++++
 .../src/test/resources/datasift_jsons.txt       | 101 ++++++++++
 streams-contrib/streams-provider-google/pom.xml |  44 +++++
 .../core/builders/LocalStreamBuilder.java       |  11 +-
 .../streams/core/tasks/BaseStreamsTask.java     |   2 +-
 .../core/tasks/LocalStreamMonitorThread.java    |  69 +++++++
 29 files changed, 1821 insertions(+), 77 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/61592dc0/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 1fec2b7..b358dc6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -70,7 +70,7 @@
         <jaxbutil.version>1.2.6</jaxbutil.version>
         <junit.version>4.11</junit.version>
         <slf4j.version>1.7.6</slf4j.version>
-        <logback.version>1.0.9</logback.version>
+        <logback.version>1.1.1</logback.version>
         <commons-io.version>2.4</commons-io.version>
         <commons-lang3.version>3.1</commons-lang3.version>
         <typesafe.config.version>1.2.0</typesafe.config.version>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/61592dc0/streams-contrib/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/pom.xml b/streams-contrib/pom.xml
index 896bb9b..239644b 100644
--- a/streams-contrib/pom.xml
+++ b/streams-contrib/pom.xml
@@ -43,6 +43,7 @@
         <module>streams-persist-mongo</module>
         <module>streams-provider-datasift</module>
         <module>streams-provider-facebook</module>
+        <module>streams-provider-google</module>
         <module>streams-provider-gnip</module>
         <module>streams-provider-moreover</module>
         <module>streams-provider-twitter</module>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/61592dc0/streams-contrib/streams-components-test/streams-components-test.iml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-components-test/streams-components-test.iml b/streams-contrib/streams-components-test/streams-components-test.iml
index fbec879..60ae74a 100644
--- a/streams-contrib/streams-components-test/streams-components-test.iml
+++ b/streams-contrib/streams-components-test/streams-components-test.iml
@@ -11,11 +11,44 @@
     <orderEntry type="inheritedJdk" />
     <orderEntry type="sourceFolder" forTests="false" />
     <orderEntry type="module" module-name="streams-core (1)" />
+    <orderEntry type="library" name="Maven: joda-time:joda-time:2.2" level="project" />
+    <orderEntry type="module" module-name="streams-util (1)" />
+    <orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.1" level="project" />
+    <orderEntry type="library" name="Maven: com.google.guava:guava:16.0.1" level="project" />
+    <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.6" level="project" />
+    <orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.1.1" level="project" />
+    <orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.1.1" level="project" />
+    <orderEntry type="module" module-name="streams-pojo (1)" />
+    <orderEntry type="library" name="Maven: org.jsonschema2pojo:jsonschema2pojo-core:0.4.0" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.2.1" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.2.1" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.2.1" level="project" />
+    <orderEntry type="library" name="Maven: com.sun.codemodel:codemodel:2.6" level="project" />
+    <orderEntry type="library" name="Maven: commons-lang:commons-lang:2.6" level="project" />
+    <orderEntry type="library" name="Maven: javax.validation:validation-api:1.0.0.GA" level="project" />
+    <orderEntry type="library" name="Maven: org.codehaus.jackson:jackson-mapper-asl:1.9.11" level="project" />
+    <orderEntry type="library" name="Maven: org.codehaus.jackson:jackson-core-asl:1.9.11" level="project" />
+    <orderEntry type="library" name="Maven: com.google.code.gson:gson:2.2.4" level="project" />
+    <orderEntry type="library" name="Maven: com.google.code.findbugs:annotations:1.3.9" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.2.1" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.module:jackson-module-jaxb-annotations:2.2.1" level="project" />
+    <orderEntry type="library" name="Maven: org.codehaus.woodstox:stax2-api:3.1.1" level="project" />
+    <orderEntry type="library" name="Maven: javax.xml.stream:stax-api:1.0-2" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml:jackson-xml-databind:0.5.0" level="project" />
+    <orderEntry type="library" name="Maven: org.codehaus.jackson:jackson-xc:1.7.0" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml:aalto-xml:0.9.9" level="project" />
+    <orderEntry type="library" name="Maven: nz.net.ultraq.jaxb:jaxb-utilities:1.2.6" level="project" />
+    <orderEntry type="library" name="Maven: com.sun.xml.bind:jaxb-impl:2.2.7" level="project" />
+    <orderEntry type="library" name="Maven: com.sun.xml.bind:jaxb-core:2.2.7" level="project" />
+    <orderEntry type="library" name="Maven: javax.xml.bind:jaxb-api:2.2.7" level="project" />
+    <orderEntry type="library" name="Maven: com.sun.istack:istack-commons-runtime:2.16" level="project" />
+    <orderEntry type="library" name="Maven: com.sun.xml.fastinfoset:FastInfoset:1.2.12" level="project" />
+    <orderEntry type="library" name="Maven: javax.xml.bind:jsr173_api:1.0" level="project" />
+    <orderEntry type="library" name="Maven: commons-io:commons-io:2.4" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-json-org:2.2.1" level="project" />
+    <orderEntry type="library" name="Maven: org.json:json:20090211" level="project" />
     <orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.11" level="project" />
     <orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-core:1.3" level="project" />
-    <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.6" level="project" />
-    <orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.0.9" level="project" />
-    <orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.0.9" level="project" />
   </component>
   <component name="POM File Configuration" pomFile="" />
 </module>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/61592dc0/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/HdfsConfigurator.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/HdfsConfigurator.java b/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/HdfsConfigurator.java
index dc2b338..dfbc273 100644
--- a/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/HdfsConfigurator.java
+++ b/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/HdfsConfigurator.java
@@ -1,5 +1,6 @@
 package org.apache.streams.hdfs;
 
+import com.fasterxml.jackson.databind.ObjectMapper;
 import com.typesafe.config.Config;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -11,6 +12,8 @@ public class HdfsConfigurator {
 
     private final static Logger LOGGER = LoggerFactory.getLogger(HdfsConfigurator.class);
 
+    private final static ObjectMapper mapper = new ObjectMapper();
+
     public static HdfsConfiguration detectConfiguration(Config hdfs) {
         String host = hdfs.getString("host");
         Long port = hdfs.getLong("port");
@@ -29,4 +32,16 @@ public class HdfsConfigurator {
         return hdfsConfiguration;
     }
 
+    public static HdfsReaderConfiguration detectReaderConfiguration(Config hdfs) {
+
+        HdfsConfiguration hdfsConfiguration = detectConfiguration(hdfs);
+        HdfsReaderConfiguration hdfsReaderConfiguration  = mapper.convertValue(hdfsConfiguration, HdfsReaderConfiguration.class);
+
+        String readerPath = hdfs.getString("readerPath");
+
+        hdfsReaderConfiguration.setReaderPath(readerPath);
+
+        return hdfsReaderConfiguration;
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/61592dc0/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistReader.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistReader.java b/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistReader.java
index 511f684..e01d9d4 100644
--- a/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistReader.java
+++ b/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistReader.java
@@ -1,13 +1,14 @@
 package org.apache.streams.hdfs;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
-import com.google.common.base.Splitter;
-import com.google.common.base.Strings;
 import com.google.common.collect.Iterators;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Queues;
 import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.fs.*;
+import org.apache.hadoop.fs.CommonConfigurationKeysPublic;
+import org.apache.hadoop.fs.FileStatus;
+import org.apache.hadoop.fs.FileSystem;
+import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.hdfs.web.WebHdfsFileSystem;
 import org.apache.hadoop.security.UserGroupInformation;
 import org.apache.streams.core.StreamsDatum;
@@ -17,16 +18,16 @@ import org.joda.time.DateTime;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.io.BufferedReader;
 import java.io.IOException;
-import java.io.InputStreamReader;
 import java.math.BigInteger;
 import java.net.URI;
 import java.net.URISyntaxException;
 import java.security.PrivilegedExceptionAction;
 import java.util.Collection;
 import java.util.Queue;
-import java.util.concurrent.*;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.LinkedBlockingQueue;
 
 /**
  * Created by sblackmon on 2/28/14.
@@ -117,11 +118,19 @@ public class WebHdfsPersistReader implements StreamsPersistReader {
         connectToWebHDFS();
         path = new Path(hdfsConfiguration.getPath() + "/" + hdfsConfiguration.getReaderPath());
         try {
-            status = client.listStatus(path);
+            if( client.isFile(path)) {
+                FileStatus fileStatus = client.getFileStatus(path);
+                status = new FileStatus[1];
+                status[0] = fileStatus;
+            } else if( client.isDirectory(path)){
+                status = client.listStatus(path);
+            } else {
+                LOGGER.error("Neither file nor directory, wtf");
+            }
         } catch (IOException e) {
             e.printStackTrace();
         }
-        persistQueue = new ConcurrentLinkedQueue<StreamsDatum>();
+        persistQueue = new LinkedBlockingQueue<StreamsDatum>(10000);
         executor = Executors.newSingleThreadExecutor();
     }
 
@@ -132,7 +141,7 @@ public class WebHdfsPersistReader implements StreamsPersistReader {
 
     @Override
     public StreamsResultSet readAll() {
-        readSourceWritePersistQueue();
+        startStream();
         return new StreamsResultSet(persistQueue);
     }
 
@@ -167,40 +176,4 @@ public class WebHdfsPersistReader implements StreamsPersistReader {
         return null;
     }
 
-    private void readSourceWritePersistQueue() {
-        for( FileStatus fileStatus : status ) {
-            BufferedReader reader;
-            LOGGER.info("Found " + fileStatus.getPath().getName());
-            if( persistQueue.size() > 0 ) {
-                try {
-                    Thread.sleep(1000);
-                } catch (InterruptedException e) {
-                }
-            }
-            if( fileStatus.isFile() && !fileStatus.getPath().getName().startsWith("_")) {
-                LOGGER.info("Processing " + fileStatus.getPath().getName());
-                try {
-                    reader = new BufferedReader(new InputStreamReader(client.open(fileStatus.getPath())));
-
-                    String line = "";
-                    do{
-                        try {
-                            line = reader.readLine();
-                            if( !Strings.isNullOrEmpty(line) ) {
-                                String[] fields = line.split(Character.toString(DELIMITER));
-                                StreamsDatum entry = new StreamsDatum(fields[3], fields[0], new DateTime(fields[2]));
-                                persistQueue.offer(entry);
-                            }
-                        } catch (Exception e) {
-                            e.printStackTrace();
-                            LOGGER.warn(e.getMessage());
-                        }
-                    } while( line != null );
-                } catch (Exception e) {
-                    e.printStackTrace();
-                    LOGGER.warn(e.getMessage());
-                }
-            }
-        }
-    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/61592dc0/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistReaderTask.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistReaderTask.java b/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistReaderTask.java
index f0bee1f..dc6ea16 100644
--- a/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistReaderTask.java
+++ b/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistReaderTask.java
@@ -3,15 +3,11 @@ package org.apache.streams.hdfs;
 import com.google.common.base.Strings;
 import org.apache.hadoop.fs.FileStatus;
 import org.apache.streams.core.StreamsDatum;
-import org.joda.time.DateTime;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.io.BufferedReader;
-import java.io.IOException;
 import java.io.InputStreamReader;
-import java.util.Calendar;
-import java.util.Random;
 
 public class WebHdfsPersistReaderTask implements Runnable {
 
@@ -28,30 +24,39 @@ public class WebHdfsPersistReaderTask implements Runnable {
 
         for( FileStatus fileStatus : reader.status ) {
             BufferedReader bufferedReader;
-
+            LOGGER.info("Found " + fileStatus.getPath().getName());
             if( fileStatus.isFile() && !fileStatus.getPath().getName().startsWith("_")) {
+                LOGGER.info("Processing " + fileStatus.getPath().getName());
                 try {
                     bufferedReader = new BufferedReader(new InputStreamReader(reader.client.open(fileStatus.getPath())));
+                } catch (Exception e) {
+                    e.printStackTrace();
+                    LOGGER.error(e.getMessage());
+                    return;
+                }
 
-                    String line = "";
-                    do{
-                        try {
-                            line = bufferedReader.readLine();
-                            if( !Strings.isNullOrEmpty(line) ) {
-                                String[] fields = line.split(Character.toString(reader.DELIMITER));
-                                Calendar cal = Calendar.getInstance();
-                                cal.setTimeInMillis(new Long(fields[2]));
-                                StreamsDatum entry = new StreamsDatum(fields[3], fields[0], new DateTime(cal.getTime()));
-                                reader.persistQueue.offer(entry);
+                String line = "";
+                do{
+                    try {
+                        line = bufferedReader.readLine();
+                        if( !Strings.isNullOrEmpty(line) ) {
+                            String[] fields = line.split(Character.toString(reader.DELIMITER));
+                            StreamsDatum entry = new StreamsDatum(fields[3], fields[0]);
+                            boolean success;
+                            do {
+                                success = reader.persistQueue.offer(entry);
+                                Thread.yield();
                             }
-                        } catch (Exception e) {
-                            LOGGER.warn("Failed reading " + line);
+                            while( success == false );
+
                         }
-                    } while( line != null );
-                } catch (IOException e) {
-                    e.printStackTrace();
-                    break;
-                }
+                    } catch (Exception e) {
+                        e.printStackTrace();
+                        LOGGER.warn(e.getMessage());
+                    }
+                } while( !Strings.isNullOrEmpty(line) );
+                LOGGER.info("Finished Processing " + fileStatus.getPath().getName());
+
             }
         }
 

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/61592dc0/streams-contrib/streams-provider-google/google-gmail/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-google/google-gmail/pom.xml b/streams-contrib/streams-provider-google/google-gmail/pom.xml
new file mode 100644
index 0000000..84e0346
--- /dev/null
+++ b/streams-contrib/streams-provider-google/google-gmail/pom.xml
@@ -0,0 +1,135 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <groupId>org.apache.streams</groupId>
+        <artifactId>streams-provider-google</artifactId>
+        <version>0.1.STREAMS26-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>google-gmail</artifactId>
+
+    <repositories>
+        <repository>
+            <id>typesafe</id>
+            <name>typesafe</name>
+            <url>http://repo.typesafe.com/typesafe/repo</url>
+        </repository>
+    </repositories>
+
+    <dependencies>
+        <dependency>
+            <groupId>com.typesafe</groupId>
+            <artifactId>config</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.fasterxml.jackson.core</groupId>
+            <artifactId>jackson-core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.fasterxml.jackson.core</groupId>
+            <artifactId>jackson-annotations</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.jsonschema2pojo</groupId>
+            <artifactId>jsonschema2pojo-core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.streams</groupId>
+            <artifactId>streams-core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.streams</groupId>
+            <artifactId>streams-pojo</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.streams</groupId>
+            <artifactId>streams-config</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.google.guava</groupId>
+            <artifactId>guava</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.jayway.jsonpath</groupId>
+            <artifactId>json-path</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.jayway.jsonpath</groupId>
+            <artifactId>json-path-assert</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.googlecode.gmail4j</groupId>
+            <artifactId>gmail4j</artifactId>
+            <version>0.5-SNAPSHOT</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <sourceDirectory>src/main/java</sourceDirectory>
+        <testSourceDirectory>src/test/java</testSourceDirectory>
+        <resources>
+            <resource>
+                <directory>src/main/resources</directory>
+            </resource>
+        </resources>
+        <testResources>
+            <testResource>
+                <directory>src/test/resources</directory>
+            </testResource>
+        </testResources>
+        <plugins>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>build-helper-maven-plugin</artifactId>
+                <version>1.8</version>
+                <executions>
+                    <execution>
+                        <id>add-source</id>
+                        <phase>generate-sources</phase>
+                        <goals>
+                            <goal>add-source</goal>
+                        </goals>
+                        <configuration>
+                            <sources>
+                                <source>target/generated-sources/jsonschema2pojo</source>
+                            </sources>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.jsonschema2pojo</groupId>
+                <artifactId>jsonschema2pojo-maven-plugin</artifactId>
+                <configuration>
+                    <addCompileSourceRoot>true</addCompileSourceRoot>
+                    <generateBuilders>true</generateBuilders>
+                    <sourcePaths>
+                        <sourcePath>src/main/jsonschema/com/google/gmail</sourcePath>
+                    </sourcePaths>
+                    <outputDirectory>target/generated-sources/jsonschema2pojo</outputDirectory>
+                    <targetPackage>org.apache.streams.google.gmail.pojo</targetPackage>
+                    <useLongIntegers>true</useLongIntegers>
+                    <useJodaDates>false</useJodaDates>
+                </configuration>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>generate</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+</project>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/61592dc0/streams-contrib/streams-provider-google/google-gmail/src/main/java/com/google/gmail/GMailConfigurator.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-google/google-gmail/src/main/java/com/google/gmail/GMailConfigurator.java b/streams-contrib/streams-provider-google/google-gmail/src/main/java/com/google/gmail/GMailConfigurator.java
new file mode 100644
index 0000000..2d2d2aa
--- /dev/null
+++ b/streams-contrib/streams-provider-google/google-gmail/src/main/java/com/google/gmail/GMailConfigurator.java
@@ -0,0 +1,27 @@
+package com.google.gmail;
+
+import com.google.gmail.GMailConfiguration;
+import com.typesafe.config.Config;
+import com.typesafe.config.ConfigException;
+import org.apache.streams.config.StreamsConfigurator;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Created by sblackmon on 12/10/13.
+ */
+public class GMailConfigurator {
+
+    private final static Logger LOGGER = LoggerFactory.getLogger(GMailConfigurator.class);
+
+    public static GMailConfiguration detectConfiguration(Config gmail) {
+
+        GMailConfiguration gmailConfiguration = new GMailConfiguration();
+
+        gmailConfiguration.setUserName(gmail.getString("username"));
+        gmailConfiguration.setPassword(gmail.getString("password"));
+
+        return gmailConfiguration;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/61592dc0/streams-contrib/streams-provider-google/google-gmail/src/main/java/com/google/gmail/provider/GMailImapProviderTask.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-google/google-gmail/src/main/java/com/google/gmail/provider/GMailImapProviderTask.java b/streams-contrib/streams-provider-google/google-gmail/src/main/java/com/google/gmail/provider/GMailImapProviderTask.java
new file mode 100644
index 0000000..068c214
--- /dev/null
+++ b/streams-contrib/streams-provider-google/google-gmail/src/main/java/com/google/gmail/provider/GMailImapProviderTask.java
@@ -0,0 +1,58 @@
+package com.google.gmail.provider;
+
+import com.googlecode.gmail4j.GmailClient;
+import com.googlecode.gmail4j.GmailMessage;
+import org.apache.streams.core.StreamsDatum;
+import org.apache.streams.pojo.json.Activity;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.Calendar;
+import java.util.GregorianCalendar;
+import java.util.List;
+
+/**
+ * Created by sblackmon on 12/10/13.
+ */
+public class GMailImapProviderTask implements Runnable {
+
+    private final static Logger LOGGER = LoggerFactory.getLogger(GMailImapProviderTask.class);
+
+    private GMailProvider provider;
+
+    public GMailImapProviderTask(GMailProvider provider) {
+        this.provider = provider;
+    }
+
+    @Override
+    public void run() {
+
+        Calendar calendar = new GregorianCalendar();
+
+        calendar.set(Calendar.YEAR, 2000);
+        calendar.set(Calendar.MONTH, 0);
+        calendar.set(Calendar.DAY_OF_MONTH, 0);
+        calendar.set(Calendar.HOUR, 0);
+        calendar.set(Calendar.MINUTE, 0);
+        calendar.set(Calendar.SECOND, 0);
+        calendar.set(Calendar.MILLISECOND, 0);
+
+        final List<GmailMessage> messages = this.provider.imapClient.getMessagesBy(
+                GmailClient.EmailSearchStrategy.DATE_GT,
+                calendar.getTime().toString()
+        );
+
+        for (GmailMessage message : messages) {
+
+            Activity activity;
+            GMailMessageActivitySerializer serializer = new GMailMessageActivitySerializer( this.provider );
+            activity = serializer.deserialize(message);
+            StreamsDatum entry = new StreamsDatum(activity);
+            this.provider.providerQueue.offer(entry);
+
+        }
+
+    }
+
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/61592dc0/streams-contrib/streams-provider-google/google-gmail/src/main/java/com/google/gmail/provider/GMailMessageActivitySerializer.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-google/google-gmail/src/main/java/com/google/gmail/provider/GMailMessageActivitySerializer.java b/streams-contrib/streams-provider-google/google-gmail/src/main/java/com/google/gmail/provider/GMailMessageActivitySerializer.java
new file mode 100644
index 0000000..6c49bda
--- /dev/null
+++ b/streams-contrib/streams-provider-google/google-gmail/src/main/java/com/google/gmail/provider/GMailMessageActivitySerializer.java
@@ -0,0 +1,194 @@
+package com.google.gmail.provider;
+
+import com.fasterxml.jackson.annotation.JsonBackReference;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonManagedReference;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.AnnotationIntrospector;
+import com.fasterxml.jackson.databind.DeserializationFeature;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.SerializationFeature;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.fasterxml.jackson.module.jaxb.JaxbAnnotationIntrospector;
+import com.google.common.base.Joiner;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import com.googlecode.gmail4j.GmailException;
+import com.googlecode.gmail4j.GmailMessage;
+import com.googlecode.gmail4j.javamail.JavaMailGmailMessage;
+import com.sun.mail.imap.IMAPFolder;
+import com.sun.mail.imap.IMAPMessage;
+import com.sun.mail.imap.IMAPSSLStore;
+import org.apache.commons.lang.NotImplementedException;
+import org.apache.streams.data.ActivitySerializer;
+import org.apache.streams.pojo.json.*;
+import org.joda.time.DateTime;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.mail.internet.MimeMultipart;
+import java.io.IOException;
+import java.text.DateFormat;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+import static org.apache.streams.data.util.ActivityUtil.ensureExtensions;
+
+/**
+* Created with IntelliJ IDEA.
+* User: mdelaet
+* Date: 9/30/13
+* Time: 9:24 AM
+* To change this template use File | Settings | File Templates.
+*/
+public class GMailMessageActivitySerializer implements ActivitySerializer<GmailMessage> {
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(GMailMessageActivitySerializer.class);
+
+    GMailProvider provider;
+
+    ObjectMapper mapper = new ObjectMapper();
+
+    public GMailMessageActivitySerializer(GMailProvider provider) {
+
+        this.provider = provider;
+
+        mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, Boolean.FALSE);
+
+        mapper.addMixInAnnotations(IMAPSSLStore.class, MessageMixIn.class);
+        mapper.addMixInAnnotations(IMAPFolder.class, MessageMixIn.class);
+        mapper.addMixInAnnotations(IMAPMessage.class, MessageMixIn.class);
+        mapper.addMixInAnnotations(MimeMultipart.class, MessageMixIn.class);
+        mapper.addMixInAnnotations(JavaMailGmailMessage.class, MessageMixIn.class);
+
+    }
+
+    public GMailMessageActivitySerializer() {
+    }
+
+    @Override
+    public String serializationFormat() {
+        return "gmail.v1";
+    }
+
+    @Override
+    public GmailMessage serialize(Activity activity) {
+        return null;
+    }
+
+    @Override
+    public Activity deserialize(GmailMessage gmailMessage) {
+
+        Activity activity = new Activity();
+        activity.setId(formatId(this.provider.getConfig().getUserName(), String.valueOf(gmailMessage.getMessageNumber())));
+        activity.setPublished(gmailMessage.getSendDate());
+        Provider provider = new Provider();
+        provider.setId("http://gmail.com");
+        provider.setDisplayName("GMail");
+        activity.setProvider(provider);
+        Actor actor = new Actor();
+        actor.setId(gmailMessage.getFrom().getEmail());
+        actor.setDisplayName(gmailMessage.getFrom().getName());
+        activity.setActor(actor);
+        activity.setVerb("email");
+        ActivityObject object = new ActivityObject();
+        try {
+            object.setId(gmailMessage.getTo().get(0).getEmail());
+            object.setDisplayName(gmailMessage.getTo().get(0).getName());
+        } catch( GmailException e ) {
+            LOGGER.warn(e.getMessage());
+        }
+        activity.setTitle(gmailMessage.getSubject());
+        try {
+            activity.setContent(gmailMessage.getContentText());
+        } catch( GmailException e ) {
+            LOGGER.warn(e.getMessage());
+        }
+        activity.setObject(object);
+
+//        try {
+//            // if jackson can't serialize the object, find out now
+//            String jsonString = mapper.writeValueAsString(gmailMessage);
+//            ObjectNode jsonObject = mapper.valueToTree(gmailMessage);
+//            // since it can, write the entire source object to extensions.gmail
+//            Map<String, Object> extensions = Maps.newHashMap();
+//            extensions.put("gmail", gmailMessage);
+//            activity.setAdditionalProperty("extensions", extensions);
+//        } catch (JsonProcessingException e) {
+//            LOGGER.debug("Failed Json Deserialization");
+//            e.printStackTrace();
+//        }
+
+        return activity;
+    }
+
+    @Override
+    public List<Activity> deserializeAll(List<GmailMessage> serializedList) {
+        throw new NotImplementedException("Not currently implemented");
+    }
+
+    public Activity convert(ObjectNode event) {
+        return null;
+    }
+
+    public static Generator buildGenerator(ObjectNode event) {
+        return null;
+    }
+
+    public static Icon getIcon(ObjectNode event) {
+        return null;
+    }
+
+    public static Provider buildProvider(ObjectNode event) {
+        Provider provider = new Provider();
+        provider.setId("id:providers:gmail");
+        return provider;
+    }
+
+    public static List<Object> getLinks(ObjectNode event) {
+        return null;
+    }
+
+    public static String getUrls(ObjectNode event) {
+        return null;
+    }
+
+    public static void addGMailExtension(Activity activity, GmailMessage gmailMessage) {
+        Map<String, Object> extensions = ensureExtensions(activity);
+        extensions.put("gmail", gmailMessage);
+    }
+
+    public static String formatId(String... idparts) {
+        return Joiner.on(":").join(Lists.asList("id:gmail", idparts));
+    }
+
+    interface MessageMixIn {
+        @JsonManagedReference
+        @JsonIgnore
+        IMAPSSLStore getDefaultFolder(); // we don't need it!
+        @JsonManagedReference
+        @JsonIgnore
+        IMAPSSLStore getPersonalNamespaces(); // we don't need it!
+        @JsonManagedReference
+        @JsonIgnore
+        IMAPFolder getStore(); // we don't need it!
+        //        @JsonManagedReference
+//        @JsonIgnore
+//        @JsonBackReference
+        //IMAPFolder getParent(); // we don't need it!
+        @JsonManagedReference
+        @JsonIgnore
+        @JsonBackReference
+        IMAPMessage getFolder(); // we don't need it!
+        @JsonManagedReference
+        @JsonIgnore
+        @JsonProperty("parent")
+        @JsonBackReference
+        MimeMultipart getParent();
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/61592dc0/streams-contrib/streams-provider-google/google-gmail/src/main/java/com/google/gmail/provider/GMailProvider.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-google/google-gmail/src/main/java/com/google/gmail/provider/GMailProvider.java b/streams-contrib/streams-provider-google/google-gmail/src/main/java/com/google/gmail/provider/GMailProvider.java
new file mode 100644
index 0000000..7ec157e
--- /dev/null
+++ b/streams-contrib/streams-provider-google/google-gmail/src/main/java/com/google/gmail/provider/GMailProvider.java
@@ -0,0 +1,131 @@
+package com.google.gmail.provider;
+
+import com.google.common.base.Preconditions;
+import com.google.common.util.concurrent.ListeningExecutorService;
+import com.google.common.util.concurrent.MoreExecutors;
+import com.google.gmail.GMailConfiguration;
+import com.google.gmail.GMailConfigurator;
+import com.googlecode.gmail4j.GmailClient;
+import com.googlecode.gmail4j.GmailConnection;
+import com.googlecode.gmail4j.http.HttpGmailConnection;
+import com.googlecode.gmail4j.javamail.ImapGmailClient;
+import com.googlecode.gmail4j.javamail.ImapGmailConnection;
+import com.googlecode.gmail4j.rss.RssGmailClient;
+import com.typesafe.config.Config;
+import org.apache.streams.config.StreamsConfigurator;
+import org.apache.streams.core.StreamsDatum;
+import org.apache.streams.core.StreamsProvider;
+import org.apache.streams.core.StreamsResultSet;
+import org.joda.time.DateTime;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.math.BigInteger;
+import java.util.Queue;
+import java.util.concurrent.*;
+
+/**
+ * Created by sblackmon on 12/10/13.
+ */
+public class GMailProvider implements StreamsProvider {
+
+    private final static Logger LOGGER = LoggerFactory.getLogger(GMailProvider.class);
+
+    private GMailConfiguration config;
+
+    private Class klass;
+
+    public GMailConfiguration getConfig() {
+        return config;
+    }
+
+    public void setConfig(GMailConfiguration config) {
+        this.config = config;
+    }
+
+    protected BlockingQueue inQueue = new LinkedBlockingQueue<String>(10000);
+
+    protected volatile Queue<StreamsDatum> providerQueue = new ConcurrentLinkedQueue<StreamsDatum>();
+
+    public BlockingQueue<Object> getInQueue() {
+        return inQueue;
+    }
+
+    protected GmailClient rssClient;
+    protected ImapGmailClient imapClient;
+
+    protected ListeningExecutorService executor = MoreExecutors.listeningDecorator(newFixedThreadPoolWithQueueSize(5, 20));
+
+    private static ExecutorService newFixedThreadPoolWithQueueSize(int nThreads, int queueSize) {
+        return new ThreadPoolExecutor(nThreads, nThreads,
+                5000L, TimeUnit.MILLISECONDS,
+                new ArrayBlockingQueue<Runnable>(queueSize, true), new ThreadPoolExecutor.CallerRunsPolicy());
+    }
+
+    public GMailProvider() {
+        Config config = StreamsConfigurator.config.getConfig("gmail");
+        this.config = GMailConfigurator.detectConfiguration(config);
+    }
+
+    public GMailProvider(GMailConfiguration config) {
+        this.config = config;
+    }
+
+    public GMailProvider(Class klass) {
+        Config config = StreamsConfigurator.config.getConfig("gmail");
+        this.config = GMailConfigurator.detectConfiguration(config);
+        this.klass = klass;
+    }
+
+    public GMailProvider(GMailConfiguration config, Class klass) {
+        this.config = config;
+        this.klass = klass;
+    }
+
+    @Override
+    public void startStream() {
+        new Thread(new GMailImapProviderTask(this)).start();
+    }
+
+    @Override
+    public StreamsResultSet readCurrent() {
+        return null;
+    }
+
+    @Override
+    public StreamsResultSet readNew(BigInteger sequence) {
+        return null;
+    }
+
+    @Override
+    public StreamsResultSet readRange(DateTime start, DateTime end) {
+        return null;
+    }
+
+    @Override
+    public void prepare(Object configurationObject) {
+
+        Preconditions.checkNotNull(this.klass);
+
+        Preconditions.checkNotNull(config.getUserName());
+        Preconditions.checkNotNull(config.getPassword());
+
+        rssClient = new RssGmailClient();
+        GmailConnection rssConnection = new HttpGmailConnection(config.getUserName(), config.getPassword().toCharArray());
+        rssClient.setConnection(rssConnection);
+
+        imapClient = new ImapGmailClient();
+        GmailConnection imapConnection = new ImapGmailConnection();
+        imapConnection.setLoginCredentials(config.getUserName(), config.getPassword().toCharArray());
+        imapClient.setConnection(imapConnection);
+    }
+
+    @Override
+    public void cleanUp() {
+        try {
+            executor.awaitTermination(5, TimeUnit.SECONDS);
+        } catch (InterruptedException e) {
+            e.printStackTrace();
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/61592dc0/streams-contrib/streams-provider-google/google-gmail/src/main/java/com/google/gmail/provider/GMailRssProviderTask.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-google/google-gmail/src/main/java/com/google/gmail/provider/GMailRssProviderTask.java b/streams-contrib/streams-provider-google/google-gmail/src/main/java/com/google/gmail/provider/GMailRssProviderTask.java
new file mode 100644
index 0000000..73b6d77
--- /dev/null
+++ b/streams-contrib/streams-provider-google/google-gmail/src/main/java/com/google/gmail/provider/GMailRssProviderTask.java
@@ -0,0 +1,36 @@
+package com.google.gmail.provider;
+
+import com.googlecode.gmail4j.GmailMessage;
+import org.apache.streams.core.StreamsDatum;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.List;
+
+/**
+ * Created by sblackmon on 12/10/13.
+ */
+public class GMailRssProviderTask implements Runnable {
+
+    private final static Logger LOGGER = LoggerFactory.getLogger(GMailRssProviderTask.class);
+
+    private GMailProvider provider;
+
+    public GMailRssProviderTask(GMailProvider provider) {
+        this.provider = provider;
+    }
+
+    @Override
+    public void run() {
+
+        final List<GmailMessage> messages = this.provider.rssClient.getUnreadMessages();
+        for (GmailMessage message : messages) {
+
+            StreamsDatum entry = new StreamsDatum(message);
+
+            this.provider.providerQueue.offer(entry);
+        }
+
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/61592dc0/streams-contrib/streams-provider-google/google-gmail/src/main/jsonschema/com/google/gmail/GMailConfiguration.json
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-google/google-gmail/src/main/jsonschema/com/google/gmail/GMailConfiguration.json b/streams-contrib/streams-provider-google/google-gmail/src/main/jsonschema/com/google/gmail/GMailConfiguration.json
new file mode 100644
index 0000000..b25d5e0
--- /dev/null
+++ b/streams-contrib/streams-provider-google/google-gmail/src/main/jsonschema/com/google/gmail/GMailConfiguration.json
@@ -0,0 +1,14 @@
+{
+    "type": "object",
+    "$schema": "http://json-schema.org/draft-03/schema",
+    "id": "#",
+    "javaType" : "com.google.gmail.GMailConfiguration",
+    "properties": {
+        "userName": {
+            "type": "string"
+        },
+        "password": {
+            "type": "string"
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/61592dc0/streams-contrib/streams-provider-google/google-gmail/src/test/java/com/google/gmail/test/GMailMessageSerDeTest.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-google/google-gmail/src/test/java/com/google/gmail/test/GMailMessageSerDeTest.java b/streams-contrib/streams-provider-google/google-gmail/src/test/java/com/google/gmail/test/GMailMessageSerDeTest.java
new file mode 100644
index 0000000..e9641fc
--- /dev/null
+++ b/streams-contrib/streams-provider-google/google-gmail/src/test/java/com/google/gmail/test/GMailMessageSerDeTest.java
@@ -0,0 +1,53 @@
+package com.google.gmail.test;
+
+import com.fasterxml.jackson.databind.DeserializationFeature;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.junit.Assert;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.BufferedReader;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+
+/**
+ * Created with IntelliJ IDEA.
+ * User: sblackmon
+ * Date: 8/20/13
+ * Time: 5:57 PM
+ * To change this template use File | Settings | File Templates.
+ */
+@Ignore
+public class GMailMessageSerDeTest {
+
+    private final static Logger LOGGER = LoggerFactory.getLogger(GMailMessageSerDeTest.class);
+
+    private ObjectMapper mapper = new ObjectMapper();
+
+    @Ignore
+    @Test
+    public void Tests()
+    {
+        mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, Boolean.TRUE);
+        mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, Boolean.TRUE);
+        mapper.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, Boolean.TRUE);
+
+        InputStream is = GMailMessageSerDeTest.class.getResourceAsStream("/datasift_jsons.txt");
+        InputStreamReader isr = new InputStreamReader(is);
+        BufferedReader br = new BufferedReader(isr);
+
+        try {
+            while (br.ready()) {
+                String line = br.readLine();
+                LOGGER.debug(line);
+
+                // implement
+            }
+        } catch( Exception e ) {
+            e.printStackTrace();
+            Assert.fail();
+        }
+    }
+}


[2/5] adding google provider, tweaks to localbuilder and hdfs reader

Posted by sb...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/61592dc0/streams-contrib/streams-provider-google/google-gplus/src/test/resources/datasift_jsons.txt
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-google/google-gplus/src/test/resources/datasift_jsons.txt b/streams-contrib/streams-provider-google/google-gplus/src/test/resources/datasift_jsons.txt
new file mode 100644
index 0000000..858756a
--- /dev/null
+++ b/streams-contrib/streams-provider-google/google-gplus/src/test/resources/datasift_jsons.txt
@@ -0,0 +1,101 @@
+{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"361363177973366787","filter_level":"medium","text":"Arm and Hammer sounds like a good porno. Not baking powder","source":"<a href=\"http://twitter.com/download/android\" rel=\"nofollow\">Twitter for Android<\/a>","created_at":"Sun, 28 Jul 2013 05:51:10 +0000","lang":"en","user":{"geo_enabled":true,"statuses_count":7761,"lang":"en","utc_offset":-14400,"id":472480397,"time_zone":"Eastern Time (US & Canada)","favourites_count":5062,"description":"I hate everything. Especially you.","friends_count":385,"name":"Alexander","created_at":"Tue, 24 Jan 2012 00:22:21 +0000","screen_name":"InsulinLover","id_str":"472480397","profile_image_url":"http://a0.twimg.com/profile_images/3078961290/b86c753148bdaf13fcf7f0ea3ea2ff57_normal.jpeg","followers_count":241}},"salience":{"content":{"sentiment":5}},"klout":{"score":42},"interaction":{"schema":{"version":3},"content":"Arm and Hammer sounds like a good porno. Not baking powder","id":"1e2f7
 49b40d9ab00e0742908a9ff4d74","author":{"id":472480397,"username":"InsulinLover","name":"Alexander","link":"http://twitter.com/InsulinLover","language":"en","avatar":"http://a0.twimg.com/profile_images/3078961290/b86c753148bdaf13fcf7f0ea3ea2ff57_normal.jpeg"},"source":"Twitter for Android","link":"http://twitter.com/InsulinLover/statuses/361363177973366787","created_at":"Sun, 28 Jul 2013 05:51:10 +0000","type":"twitter"},"language":{"tag":"en","confidence":100},"demographic":{"gender":"male"}}
+{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"361366536625201152","retweeted":{"id":"361363177973366787","source":"<a href=\"http://twitter.com/download/android\" rel=\"nofollow\">Twitter for Android<\/a>","created_at":"Sun, 28 Jul 2013 05:51:10 +0000","user":{"geo_enabled":true,"statuses_count":7765,"lang":"en","utc_offset":-14400,"id":472480397,"time_zone":"Eastern Time (US & Canada)","favourites_count":5064,"description":"I hate everything. Especially you.","friends_count":386,"name":"Alexander","created_at":"Tue, 24 Jan 2012 00:22:21 +0000","screen_name":"InsulinLover","id_str":"472480397","profile_image_url":"http://a0.twimg.com/profile_images/3078961290/b86c753148bdaf13fcf7f0ea3ea2ff57_normal.jpeg","followers_count":242}},"retweet":{"id":"361366536625201152","text":"Arm and Hammer sounds like a good porno. Not baking powder","source":"<a href=\"http://twitter.com/#!/download/ipad\" rel=\"nofollow\">Twitter for iPad<\/a>","count":1,"created_at":"Sun, 28 Jul 2013 0
 6:04:30 +0000","user":{"location":"Henderson, NV","statuses_count":4851,"lang":"en","url":"https://www.facebook.com/DonMfPatchUFemaleDogs","utc_offset":-25200,"id":537777703,"time_zone":"Pacific Time (US & Canada)","favourites_count":1235,"description":"Otherwise known as @Slender_Sir","friends_count":240,"name":"Iram Gonzalez","created_at":"Tue, 27 Mar 2012 02:35:56 +0000","screen_name":"gonzalez_iram","id_str":"537777703","profile_image_url":"http://a0.twimg.com/profile_images/3325430053/65b2d200115a97ff3f9061e9cc672136_normal.jpeg","followers_count":232},"lang":"en"}},"salience":{"content":{"sentiment":5}},"klout":{"score":40},"interaction":{"schema":{"version":3},"content":"RT @InsulinLover: Arm and Hammer sounds like a good porno. Not baking powder","id":"1e2f74b90e3eab00e07452795b51705e","author":{"id":537777703,"username":"gonzalez_iram","name":"Iram Gonzalez","link":"http://twitter.com/gonzalez_iram","language":"en","avatar":"http://a0.twimg.com/profile_images/3325430053/65b
 2d200115a97ff3f9061e9cc672136_normal.jpeg"},"source":"Twitter for iPad","link":"http://twitter.com/gonzalez_iram/statuses/361366536625201152","created_at":"Sun, 28 Jul 2013 06:04:30 +0000","type":"twitter"},"language":{"tag":"en","confidence":100}}
+{"w2o":{"tags":{"topic":["Sustainability","LaundryDetergent"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":0,"topics":[{"hits":0,"name":"Weather","score":0.65636122226715}]}},"facebook":{"id":"557546084284515_565003810205409","message":"To get arm and hammer laundry detergent for 1.29 go to Walgreens and get a rain check for this product. One you have the rain check go to www.thecouponclippers.com and order the arm and hammer detergent that's $1 off. The coupons are around 12 cent each. If you have any questions please post","author":{"id":"557546084284515","name":"Coupon Savings STL","link":"http://www.facebook.com/profile.php?id=557546084284515","avatar":"https://graph.facebook.com/557546084284515/picture"},"application":"Pages Manager for Android","source":"Pages Manager for Android (121876164619130)","created_at":"Fri, 26 Jul 2013 19:39:11 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e2f62b0b691a980e066608cf545f2d6","content":"To get arm 
 and hammer laundry detergent for 1.29 go to Walgreens and get a rain check for this product. One you have the rain check go to www.thecouponclippers.com and order the arm and hammer detergent that's $1 off. The coupons are around 12 cent each. If you have any questions please post","author":{"id":"557546084284515","name":"Coupon Savings STL","link":"http://www.facebook.com/profile.php?id=557546084284515","avatar":"https://graph.facebook.com/557546084284515/picture"},"source":"Pages Manager for Android (121876164619130)","link":"http://www.facebook.com/557546084284515_565003810205409","subtype":"status","created_at":"Fri, 26 Jul 2013 19:39:25 +0000","type":"facebook"},"language":{"tag":"en","confidence":100}}
+{"w2o":{"beyatch":"yo","tags":{"topic":["Sustainability","LaundryDetergent"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":6}},"facebook":{"id":"741220477_10153006009870478","message":"Arm and Hammer-sensitive laundry detergent is really my friend right now...#shehastolearnonewayoranother","author":{"id":"741220477","name":"Nicole Reed","link":"http://www.facebook.com/profile.php?id=741220477","avatar":"https://graph.facebook.com/741220477/picture"},"source":"web","created_at":"Thu, 25 Jul 2013 16:51:28 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e2f54a72fb6a800e06682e7cdbf4b5c","content":"Arm and Hammer-sensitive laundry detergent is really my friend right now...#shehastolearnonewayoranother","author":{"id":"741220477","name":"Nicole Reed","link":"http://www.facebook.com/profile.php?id=741220477","avatar":"https://graph.facebook.com/741220477/picture"},"source":"web","subtype":"status","created_at":"Thu, 25 Jul 2013 16:51:56 +0000","type":"f
 acebook"},"language":{"tag":"en","confidence":100},"demographic":{"gender":"female"}}
+{"w2o":{"tags":{"topic":["LaundryDetergent"],"brand":["ArmAndHammer"]}},"facebook":{"id":"165282606905632_387817134652177","message":"Still Time To Get On This Deal>>>  Hot Deal At County Market On Arm & Hammer Laundry Soap w/Coupon!>>>>>>>>>>>>http://crazyforcouponsandfreebies.com/blog/?p=60571","author":{"id":"165282606905632","name":"Crazy for coupons & freebies","link":"http://www.facebook.com/profile.php?id=165282606905632","avatar":"https://graph.facebook.com/165282606905632/picture"},"source":"web","created_at":"Sat, 27 Jul 2013 02:20:01 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e2f6630a53dae80e06600495e73832a","content":"Still Time To Get On This Deal>>>  Hot Deal At County Market On Arm & Hammer Laundry Soap w/Coupon!>>>>>>>>>>>>http://crazyforcouponsandfreebies.com/blog/?p=60571","author":{"id":"165282606905632","name":"Crazy for coupons & freebies","link":"http://www.facebook.com/profile.php?id=165282606905632","avatar":"https://graph.facebook.c
 om/165282606905632/picture"},"source":"web","link":"http://www.facebook.com/165282606905632_387817134652177","subtype":"status","created_at":"Sat, 27 Jul 2013 02:20:17 +0000","type":"facebook"},"links":{"title":["Hot Deal At County Market On Arm & Hammer Laundry Soap w/Coupon! | The Daily Blog"],"normalized_url":["http://crazyforcouponsandfreebies.com/blog?p=60571"],"created_at":["Sat, 27 Jul 2013 02:20:27 +0000"],"retweet_count":[0],"code":[200],"meta":{"charset":["UTF-8"],"opengraph":[{"title":"Hot Deal At County Market On Arm & Hammer Laundry Soap w/Coupon! | The Daily Blog","description":" You Can Get Arm & Hammer On Sale At County Market For $1.99 Each Go Here And Print Your $1/3 OP-$4.96 WYB 3 + Tax GO HERE HOT DEAL!~Cheryl","image":"http://crazyforcouponsandfreebies.com/blog/wp-content/uploads/2013/07/2013-07-24_1918.png","site_name":"The Daily Blog","type":"article","url":"http://crazyforcouponsandfreebies.com/blog/?p=60571"}],"content_type":["text/html"],"lang":["en-us"]},"
 url":["http://crazyforcouponsandfreebies.com/blog/?p=60571"]},"language":{"tag":"mt","confidence":62}}
+{"w2o":{"tags":{"topic":["Sustainability","LaundryDetergent"],"brand":["Tide","ArmAndHammer"]}},"twitter":{"id":"360731330335608833","filter_level":"medium","text":"You'd have to use your ARM &amp; HAMMER to get me to drink laundry detergent. What do I  GAIN from it? The TIDE comes in &amp; SUNLIGHT disappears?","source":"<a href=\"http://favstar.fm\" rel=\"nofollow\">Favstar.FM<\/a>","created_at":"Fri, 26 Jul 2013 12:00:25 +0000","lang":"en","user":{"location":"Halifax, Canada","statuses_count":26676,"lang":"en","url":"http://favstar.fm/users/CindyMeakin/recent","id":267645953,"utc_offset":-14400,"time_zone":"Eastern Time (US & Canada)","favourites_count":156111,"description":"I wear sun glasses at night so people don't talk to me.","friends_count":2162,"name":"~Cindy~","created_at":"Thu, 17 Mar 2011 08:57:31 +0000","screen_name":"CindyMeakin","id_str":"267645953","profile_image_url":"http://a0.twimg.com/profile_images/378800000068549393/1045d699f983568a884240bf6e07ca8a_normal.jpeg
 ","followers_count":7604,"listed_count":407}},"salience":{"content":{"sentiment":0}},"klout":{"score":61},"interaction":{"schema":{"version":3},"content":"You'd have to use your ARM &amp; HAMMER to get me to drink laundry detergent. What do I  GAIN from it? The TIDE comes in &amp; SUNLIGHT disappears?","id":"1e2f5eaf4a2da280e074c2f2b84aa4f8","author":{"id":267645953,"username":"CindyMeakin","name":"~Cindy~","link":"http://twitter.com/CindyMeakin","language":"en","avatar":"http://a0.twimg.com/profile_images/378800000068549393/1045d699f983568a884240bf6e07ca8a_normal.jpeg"},"source":"Favstar.FM","link":"http://twitter.com/CindyMeakin/statuses/360731330335608833","created_at":"Fri, 26 Jul 2013 12:00:25 +0000","type":"twitter"},"language":{"tag":"en","confidence":100}}
+{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"361614949908361217","filter_level":"medium","text":"@THEmrReynolds probably a mixture of prunes, icy hot, and arm and hammer foot powder","mention_ids":[106891542],"source":"<a href=\"http://twitter.com/download/iphone\" rel=\"nofollow\">Twitter for iPhone<\/a>","in_reply_to_screen_name":"THEmrReynolds","in_reply_to_status_id":"361603144695820288","created_at":"Sun, 28 Jul 2013 22:31:37 +0000","in_reply_to_user_id":"106891542","lang":"en","mentions":["THEmrReynolds"],"user":{"geo_enabled":true,"location":"Stanford, CA","statuses_count":22223,"lang":"en","url":"http://memoirsofaGAYsh.tumblr.com","id":49340813,"utc_offset":-25200,"time_zone":"Pacific Time (US & Canada)","favourites_count":4278,"description":"?Dance is the hidden language of the soul of the body? CSRE/DRAMA Major @Stanford.  #playwright #dancer","friends_count":436,"name":"Dominique Delacroix","created_at":"Sun, 21 Jun 2009 15:29:26 +0000","screen_name":"Memoi
 rsofaGAYsh","id_str":"49340813","profile_image_url":"http://a0.twimg.com/profile_images/2258352218/MemoirsofaGAYsh_normal.jpg","followers_count":423,"listed_count":10}},"salience":{"content":{"sentiment":0}},"klout":{"score":57},"interaction":{"schema":{"version":3},"content":"@THEmrReynolds probably a mixture of prunes, icy hot, and arm and hammer foot powder","id":"1e2f7d576eeeaa80e074ae7154d45ee6","author":{"id":49340813,"username":"MemoirsofaGAYsh","name":"Dominique Delacroix","link":"http://twitter.com/MemoirsofaGAYsh","language":"en","avatar":"http://a0.twimg.com/profile_images/2258352218/MemoirsofaGAYsh_normal.jpg"},"source":"Twitter for iPhone","mention_ids":[106891542],"link":"http://twitter.com/MemoirsofaGAYsh/statuses/361614949908361217","created_at":"Sun, 28 Jul 2013 22:31:37 +0000","type":"twitter","mentions":["THEmrReynolds"]},"language":{"tag":"en","confidence":100},"demographic":{"gender":"unisex"}}
+{"w2o":{"tags":{"topic":["Sustainability","LaundryDetergent"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":0},"title":{"sentiment":0}},"youtube":{"id":"1e2e7740c1d3a700e061c997741cc686","content":"1 irish spring or softsoap body wash 15-18oz. $.50 cvs brand antacid $1/2 arm and hammer laundry detergent Blog:averagejoecouponing.blogspot.com.","author":{"name":"averagejoecouponing","link":"http://youtube.com/averagejoecouponing"},"title":"Cvs red box coupons week of 07/07","duration":"58","category":"entertainment","videolink":"http://www.youtube.com/watch?v=zRPZqYpAvnc","created_at":"Mon, 08 Jul 2013 02:13:58 +0000","contenttype":"html","type":"video"},"interaction":{"schema":{"version":3},"id":"1e2e7740c1d3a700e061c997741cc686","content":"1 irish spring or softsoap body wash 15-18oz. $.50 cvs brand antacid $1/2 arm and hammer laundry detergent Blog:averagejoecouponing.blogspot.com.","author":{"name":"averagejoecouponing","link":"http://youtube.com/averagejoecouponin
 g"},"title":"Cvs red box coupons week of 07/07","link":"http://www.youtube.com/watch?v=zRPZqYpAvnc","created_at":"Mon, 29 Jul 2013 01:22:47 +0000","type":"youtube","contenttype":"html"},"language":{"tag":"en","confidence":62}}
+{"w2o":{"tags":{"topic":["StainRemoval"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":-5}},"facebook":{"id":"602766199_10151557023101200","message":"Dust, dirt, chip crumbs, and God only knows what else are my mortal enemies as I wade in to this life or death battle armed only with this vacuum and arm and hammer odor eliminating powder. To battle!!!!","author":{"id":"602766199","name":"Chris Boothroy","link":"http://www.facebook.com/profile.php?id=602766199","avatar":"https://graph.facebook.com/602766199/picture"},"application":"Facebook for iPhone","source":"Facebook for iPhone (6628568379)","created_at":"Tue, 30 Jul 2013 00:06:43 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e2f8abea632ab80e066b5fddc080fa8","content":"Dust, dirt, chip crumbs, and God only knows what else are my mortal enemies as I wade in to this life or death battle armed only with this vacuum and arm and hammer odor eliminating powder. To battle!!!!","author":{"id":"602766
 199","name":"Chris Boothroy","link":"http://www.facebook.com/profile.php?id=602766199","avatar":"https://graph.facebook.com/602766199/picture"},"source":"Facebook for iPhone (6628568379)","subtype":"status","created_at":"Tue, 30 Jul 2013 00:06:51 +0000","type":"facebook"},"language":{"tag":"en","confidence":100},"demographic":{"gender":"mostly_male"}}
+{"w2o":{"tags":{"topic":["Sustainability","Scent","LaundryDetergent"],"brand":["ArmAndHammer"]}},"twitter":{"id":"361950303878254592","filter_level":"medium","text":"New ARM and HAMMER Sensitive Skin and Sensitive Scents?laundry detergent http://t.co/Yk2d3zqihm via @MyBitsandBleeps","mention_ids":[151080077],"source":"<a href=\"http://twitter.com/tweetbutton\" rel=\"nofollow\">Tweet Button<\/a>","domains":["wp.me"],"created_at":"Mon, 29 Jul 2013 20:44:11 +0000","links":["http://wp.me/p12Gyx-358"],"lang":"en","mentions":["MyBitsandBleeps"],"user":{"location":"Alberta,Canada ","statuses_count":208685,"lang":"en","url":"http://rocketgirl00.blogspot.com","id":23870867,"utc_offset":-21600,"time_zone":"Mountain Time (US & Canada)","favourites_count":105,"description":"I'm married,like to travel,think that friends and family are the most important thing in life.","friends_count":2842,"name":"Doris ","created_at":"Thu, 12 Mar 2009 01:36:56 +0000","screen_name":"dewinner","id_str":"23870867"
 ,"profile_image_url":"http://a0.twimg.com/profile_images/3066398820/1ac0eedaa1099ea172540dff0a4524de_normal.jpeg","followers_count":2591,"listed_count":81}},"salience":{"content":{"sentiment":0}},"klout":{"score":47},"interaction":{"schema":{"version":3},"content":"New ARM and HAMMER Sensitive Skin and Sensitive Scents?laundry detergent http://t.co/Yk2d3zqihm via @MyBitsandBleeps","id":"1e2f88f9f3b1af80e074bd3a2171a578","author":{"id":23870867,"username":"dewinner","name":"Doris ","link":"http://twitter.com/dewinner","language":"en","avatar":"http://a0.twimg.com/profile_images/3066398820/1ac0eedaa1099ea172540dff0a4524de_normal.jpeg"},"source":"Tweet Button","mention_ids":[151080077],"link":"http://twitter.com/dewinner/statuses/361950303878254592","created_at":"Mon, 29 Jul 2013 20:44:11 +0000","type":"twitter","mentions":["MyBitsandBleeps"]},"links":{"title":["New ARM and HAMMER Sensitive Skin and Sensitive Scents laundry detergent | Mybitsandbleeps&#039;s Blog"],"normalized_url":["h
 ttp://mybitsandbleeps.com/2013/07/14/new-arm-and-hammer-sensitive-skin-and-sensitive-scents-laundry-detergent"],"created_at":["Sun, 28 Jul 2013 22:08:38 +0000"],"retweet_count":[0],"code":[200],"hops":[["http://wp.me/p12Gyx-358"]],"meta":{"twitter":[{"site":"@wordpressdotcom","card":"gallery","creator":"@MyBitsandBleeps"}],"description":["A mom blog creating more buzz about your product!"],"charset":["UTF-8"],"opengraph":[{"title":"New ARM and HAMMER Sensitive Skin and Sensitive Scents laundry detergent","description":"School?s out and families are taking the fun outside, which means more muddy knees and grass-stained tees. Laundry will be piling up in no time but many Canadians will be forced to reach for unscen...","image":"http://i2.wp.com/mybitsandbleeps.files.wordpress.com/2013/07/img_00002130.jpg?fit=1000%2C1000","type":"article","site_name":"Mybitsandbleeps&#039;s Blog","url":"http://mybitsandbleeps.com/2013/07/14/new-arm-and-hammer-sensitive-skin-and-sensitive-scents-laundry
 -detergent/"}],"content_type":["text/html"],"lang":["en"]},"url":["http://mybitsandbleeps.com/2013/07/14/new-arm-and-hammer-sensitive-skin-and-sensitive-scents-laundry-detergent/"]},"language":{"tag":"en","confidence":62},"demographic":{"gender":"female"}}
+{"w2o":{"tags":{"topic":["Scent"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":0},"title":{"sentiment":0}},"interaction":{"schema":{"version":3},"id":"1e2f455369a1a000e0619912c7bf4656","content":"I like the arm and hammer scent free powder.<br /> Not worried about UV as I,m either in a blind, blind around stand or high up in a climber.<br /> Scent and movement are the killers","author":{},"title":"Scent free detergent on sale","link":"http://forum.gon.com/showthread.php?t=762688#post7957680","created_at":"Tue, 30 Jul 2013 09:44:17 +0000","type":"board","contenttype":"html"},"language":{"tag":"en","confidence":95},"board":{"id":"1e2f455369a1a000e0619912c7bf4656","content":"I like the arm and hammer scent free powder.<br /> Not worried about UV as I,m either in a blind, blind around stand or high up in a climber.<br /> Scent and movement are the killers","title":"Scent free detergent on sale","link":"http://forum.gon.com/showthread.php?t=762688#post7957680","thread":"
 http://forum.gon.com/showthread.php?t=762688","domain":"www.gon.com","created_at":"Wed, 24 Jul 2013 11:36:00 +0000","contenttype":"html","type":"post"}}
+{"w2o":{"tags":{"topic":["ConcentratedFormulas"],"brand":["ArmAndHammer"]}},"twitter":{"id":"363008881179369473","filter_level":"medium","text":"Missed a scoop? No problem! ARM &amp; HAMMER? Ultra Last? delivers long lasting odor control even when you can't scoop. http://t.co/3DvTv6UOnp","source":"<a href=\"http://twitter.com/tweetbutton\" rel=\"nofollow\">Tweet Button<\/a>","domains":["www.armandhammer.com"],"created_at":"Thu, 01 Aug 2013 18:50:36 +0000","links":["http://www.armandhammer.com/pet-care/cat-care/Products/arm-and-hammer-ultra-last.aspx"],"lang":"en","user":{"id":1262903550,"friends_count":1,"name":"serenecerulean","created_at":"Tue, 12 Mar 2013 21:31:35 +0000","screen_name":"serenecerulean","id_str":"1262903550","statuses_count":6,"profile_image_url":"http://a0.twimg.com/sticky/default_profile_images/default_profile_6_normal.png","lang":"en"}},"salience":{"content":{"sentiment":2}},"interaction":{"schema":{"version":3},"content":"Missed a scoop? No problem! ARM &amp; H
 AMMER? Ultra Last? delivers long lasting odor control even when you can't scoop. http://t.co/3DvTv6UOnp","id":"1e2fadb4069ea600e074e3962995fde4","author":{"id":1262903550,"username":"serenecerulean","name":"serenecerulean","link":"http://twitter.com/serenecerulean","language":"en","avatar":"http://a0.twimg.com/sticky/default_profile_images/default_profile_6_normal.png"},"source":"Tweet Button","link":"http://twitter.com/serenecerulean/statuses/363008881179369473","created_at":"Thu, 01 Aug 2013 18:50:36 +0000","type":"twitter"},"links":{"title":["Arm & Hammer Multi-Brand - ARM & HAMMER? Ultra Last?"],"normalized_url":["http://armandhammer.com/pet-care/cat-care/Products/arm-and-hammer-ultra-last.aspx"],"created_at":["Thu, 01 Aug 2013 12:23:26 +0000"],"retweet_count":[0],"code":[200],"meta":{"keywords":[["Missed a scoop? No problem! ARM & HAMMER? Ultra Last? delivers long lasting odor control even when you can't scoop."]],"description":["Missed a scoop? No problem! ARM & HAMMER? Ultra 
 Last? delivers long lasting odor control even when you can't scoop."],"charset":["UTF-8"],"content_type":["text/html"],"lang":["unknown"]},"url":["http://www.armandhammer.com/pet-care/cat-care/Products/arm-and-hammer-ultra-last.aspx"]},"language":{"tag":"en","confidence":100}}
+{"w2o":{"tags":{"topic":["Sustainability"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":-2,"topics":[{"hits":0,"name":"Beverages","score":1.0265922546387}],"entities":[{"sentiment":0,"confident":1,"name":"Danny","evidence":1,"about":1,"label":"Person","themes":["washing soda"],"type":"Person"}]}},"facebook":{"id":"506582967_10151624053632968","message":"Hate when you are getting ready to do something productive and realize you are missing something....need arm and hammer washing soda before I can make the detergent and Danny is napping.guess I'll have the hubs get it on his way home...","author":{"id":"506582967","name":"Bethany Bennett","link":"http://www.facebook.com/profile.php?id=506582967","avatar":"https://graph.facebook.com/506582967/picture"},"source":"web","created_at":"Sat, 03 Aug 2013 17:30:40 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e2fc626a99ea000e0664766345bbd9e","content":"Hate when you are getting ready to do something pro
 ductive and realize you are missing something....need arm and hammer washing soda before I can make the detergent and Danny is napping.guess I'll have the hubs get it on his way home...","author":{"id":"506582967","name":"Bethany Bennett","link":"http://www.facebook.com/profile.php?id=506582967","avatar":"https://graph.facebook.com/506582967/picture"},"source":"web","subtype":"status","created_at":"Sat, 03 Aug 2013 17:30:50 +0000","type":"facebook"},"language":{"tag":"en","confidence":100},"demographic":{"gender":"female"}}
+{"w2o":{"tags":{"topic":["Scent"],"brand":["ArmAndHammer"]}},"twitter":{"id":"362021838882209792","filter_level":"medium","text":"Luv da smell of gain and arm&amp;hammer washing powder","source":"<a href=\"https://path.com/\" rel=\"nofollow\">Path<\/a>","created_at":"Tue, 30 Jul 2013 01:28:27 +0000","lang":"en","user":{"statuses_count":6590,"lang":"en","utc_offset":-10800,"id":762376266,"time_zone":"Atlantic Time (Canada)","favourites_count":133,"description":"#teamproudmommy #hardworking #independent #teamjrrockojc: Thru it all I still maintain and smile, with God on my side I don't care who's against me","friends_count":280,"name":"toya","created_at":"Thu, 16 Aug 2012 21:36:25 +0000","screen_name":"1ofakind_87","id_str":"762376266","profile_image_url":"http://a0.twimg.com/profile_images/378800000133672589/4c46242befe6daf5f05e1136df5cfe19_normal.jpeg","followers_count":137}},"salience":{"content":{"sentiment":0}},"klout":{"score":30},"interaction":{"schema":{"version":3},"content":
 "Luv da smell of gain and arm&amp;hammer washing powder","id":"1e2f8b755662af80e0745b9f6321114e","author":{"id":762376266,"username":"1ofakind_87","name":"toya","link":"http://twitter.com/1ofakind_87","language":"en","avatar":"http://a0.twimg.com/profile_images/378800000133672589/4c46242befe6daf5f05e1136df5cfe19_normal.jpeg"},"source":"Path","link":"http://twitter.com/1ofakind_87/statuses/362021838882209792","created_at":"Tue, 30 Jul 2013 01:28:27 +0000","type":"twitter"},"language":{"tag":"en","confidence":100},"demographic":{"gender":"female"}}
+{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"362230621323526145","retweeted":{"id":"362229784211750912","source":"<a href=\"http://twitter.com/download/iphone\" rel=\"nofollow\">Twitter for iPhone<\/a>","created_at":"Tue, 30 Jul 2013 15:14:45 +0000","user":{"location":"LA","statuses_count":18221,"lang":"en","utc_offset":-18000,"id":223342789,"time_zone":"Central Time (US & Canada)","favourites_count":6766,"description":"Onesie gang or die","friends_count":231,"name":"Carlage","created_at":"Mon, 06 Dec 2010 03:23:42 +0000","screen_name":"legitCarll","id_str":"223342789","profile_image_url":"http://a0.twimg.com/profile_images/378800000049299664/a636d7d245455eeb8b335ed4bd6480f8_normal.jpeg","followers_count":220}},"retweet":{"id":"362230621323526145","text":"We're eating breakfast and @TheVikkiMinaj sits down and says the arm and hammer powder she put on her vagina burns. THANKS FOR THAT","source":"<a href=\"http://twitter.com/download/iphone\" rel=\"nofollow\">Twitter f
 or iPhone<\/a>","count":3,"mention_ids":[279691748],"created_at":"Tue, 30 Jul 2013 15:18:04 +0000","user":{"geo_enabled":true,"statuses_count":40607,"lang":"en","utc_offset":-18000,"id":442045360,"time_zone":"Central Time (US & Canada)","favourites_count":13074,"friends_count":190,"name":"sM","created_at":"Tue, 20 Dec 2011 17:58:45 +0000","screen_name":"SeanMeier_","id_str":"442045360","profile_image_url":"http://a0.twimg.com/profile_images/378800000156618013/8008e98a1d4634a27e65bf3517f2bf3f_normal.jpeg","followers_count":1034,"listed_count":1},"mentions":["TheVikkiMinaj"],"lang":"en"}},"salience":{"content":{"sentiment":0,"topics":[{"hits":0,"name":"Food","score":0.50305610895157}]}},"klout":{"score":38},"interaction":{"schema":{"version":3},"content":"RT @legitCarll: We're eating breakfast and @TheVikkiMinaj sits down and says the arm and hammer powder she put on her vagina burns. THANKS FOR THAT","id":"1e2f92b3acd9ae00e0745976b013340a","author":{"id":442045360,"username":"SeanMei
 er_","name":"sM","link":"http://twitter.com/SeanMeier_","language":"en","avatar":"http://a0.twimg.com/profile_images/378800000156618013/8008e98a1d4634a27e65bf3517f2bf3f_normal.jpeg"},"source":"Twitter for iPhone","mention_ids":[279691748],"link":"http://twitter.com/SeanMeier_/statuses/362230621323526145","created_at":"Tue, 30 Jul 2013 15:18:04 +0000","type":"twitter","mentions":["TheVikkiMinaj"]},"language":{"tag":"en","confidence":100}}
+{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"362037402786729986","filter_level":"medium","text":"Whippin that DIY wheat paste. So this is how the Arm &amp; Hammer powder slangers feel. I'm Pusha P lykabit","source":"<a href=\"http://twitter.com/download/android\" rel=\"nofollow\">Twitter for Android<\/a>","created_at":"Tue, 30 Jul 2013 02:30:17 +0000","lang":"en","user":{"geo_enabled":true,"location":"North Texas","statuses_count":24770,"lang":"en","url":"http://d1ligence.tumblr.com","id":224686933,"utc_offset":-18000,"time_zone":"Central Time (US & Canada)","favourites_count":638,"description":"Jussa yung nicca on the virtue of internet prosperity. Artist; ? of Elev?ted collective.","friends_count":670,"name":"Paul, The Apostle ","created_at":"Thu, 09 Dec 2010 16:26:43 +0000","screen_name":"MasterChefP","id_str":"224686933","profile_image_url":"http://a0.twimg.com/profile_images/3674596098/7a4252c6a43db5cb373102b73b90e21d_normal.jpeg","followers_count":939,"listed_co
 unt":6}},"salience":{"content":{"sentiment":0}},"klout":{"score":41},"interaction":{"schema":{"version":3},"content":"Whippin that DIY wheat paste. So this is how the Arm &amp; Hammer powder slangers feel. I'm Pusha P lykabit","id":"1e2f8bff8bb4a280e074878bb70afd4a","author":{"id":224686933,"username":"MasterChefP","name":"Paul, The Apostle ","link":"http://twitter.com/MasterChefP","language":"en","avatar":"http://a0.twimg.com/profile_images/3674596098/7a4252c6a43db5cb373102b73b90e21d_normal.jpeg"},"source":"Twitter for Android","link":"http://twitter.com/MasterChefP/statuses/362037402786729986","created_at":"Tue, 30 Jul 2013 02:30:17 +0000","type":"twitter"},"language":{"tag":"en","confidence":100},"demographic":{"gender":"male"}}
+{"w2o":{"tags":{"topic":["Sustainability","Advertising","ConcentratedFormulas","CouponUsage","LaundryDetergent"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":4,"topics":[{"hits":0,"name":"Science","score":1.2123092412949},{"hits":0,"name":"Technology","score":0.59644603729248},{"hits":0,"name":"Hardware","score":0.4546263217926}],"entities":[{"sentiment":0,"confident":1,"name":"Procter & gamble","evidence":1,"about":1,"label":"Company","themes":["liquid laundry detergent","commercial products","ea dawn","liquid offers","grease-cutting ingredients","improved formula","longer-lasting suds","sink changeover"],"type":"Company"},{"sentiment":0,"confident":1,"name":"\"Liquid Detergents (Surfactant Science)\"","evidence":1,"about":0,"label":"Quote","themes":["liquid detergents","helpful search engine","different books","actual prices","fast search"],"type":"Quote"}]}},"facebook":{"id":"1406941246186240_1407041779509520","message":"Liquid Detergents (Surfactant Science)\n\n
 If you want to find any book including \"Liquid Detergents (Surfactant Science)\" or if you want to read reviews on different books or to see the actual prices on books you may visit this website - AZBookFinder.com\n\nAZBookFinder.com is a helpful search engine and I want to share the way of fast search of books.\nBest regards.\n\nSome other books that may be interesting:\nArm & hammer 84555 liquid laundry detergent plus oxiclean he 35-loads (case of 6);\nProcter & gamble commercial products - dishwashing liquid, concentrated, 38 oz - sold as 1 ea - dawn dishwashing liquid offers more grease-cutting ingredients in this improved formula. longer-lasting suds reduce sink changeover. high-surfactant formula seeks out greasy soil, cuts through it, surrounds the removed soil and lifts it out of the way.;\nFramed print of soap bubbles from science photo library;\nPhoto jigsaw puzzle of soap bubbles from science photo library;\nHandbook of detergents, part f: production: 142 (surfactant sci
 ence);\nChemical product design: towards a perspective through case studies, volume 23 (computer aided chemical engineering).","author":{"id":"1406941246186240","name":"Bookformats","link":"http://www.facebook.com/profile.php?id=1406941246186240","avatar":"https://graph.facebook.com/1406941246186240/picture"},"application":"Filipspacename","source":"Filipspacename (104453219725181)","created_at":"Tue, 06 Aug 2013 22:40:46 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e2fee93be16ab00e066dedfa2d1c568","content":"Liquid Detergents (Surfactant Science)\n\nIf you want to find any book including \"Liquid Detergents (Surfactant Science)\" or if you want to read reviews on different books or to see the actual prices on books you may visit this website - AZBookFinder.com\n\nAZBookFinder.com is a helpful search engine and I want to share the way of fast search of books.\nBest regards.\n\nSome other books that may be interesting:\nArm & hammer 84555 liquid laundry deterg
 ent plus oxiclean he 35-loads (case of 6);\nProcter & gamble commercial products - dishwashing liquid, concentrated, 38 oz - sold as 1 ea - dawn dishwashing liquid offers more grease-cutting ingredients in this improved formula. longer-lasting suds reduce sink changeover. high-surfactant formula seeks out greasy soil, cuts through it, surrounds the removed soil and lifts it out of the way.;\nFramed print of soap bubbles from science photo library;\nPhoto jigsaw puzzle of soap bubbles from science photo library;\nHandbook of detergents, part f: production: 142 (surfactant science);\nChemical product design: towards a perspective through case studies, volume 23 (computer aided chemical engineering).","author":{"id":"1406941246186240","name":"Bookformats","link":"http://www.facebook.com/profile.php?id=1406941246186240","avatar":"https://graph.facebook.com/1406941246186240/picture"},"source":"Filipspacename (104453219725181)","subtype":"status","created_at":"Tue, 06 Aug 2013 22:41:01 +0
 000","type":"facebook"},"language":{"tag":"en","confidence":99}}
+{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"364861019413164032","filter_level":"medium","text":"Fresh laundry solution for sensitive skin Arm &amp; Hammer http://t.co/pvJC5hX28b via @Gingermommy","mention_ids":[126764623],"source":"<a href=\"http://triberr.com\" rel=\"nofollow\">Triberr<\/a>","domains":["goo.gl"],"created_at":"Tue, 06 Aug 2013 21:30:20 +0000","links":["http://goo.gl/DIOspt"],"lang":"en","mentions":["Gingermommy"],"user":{"location":"Ontario, Canada","statuses_count":19585,"lang":"en","url":"http://yeewittlethings.com","id":438700992,"utc_offset":-18000,"time_zone":"Central Time (US & Canada)","favourites_count":132,"description":"#CDN Mom of 2 wonderful kids. Wife to an amazing hubby. #PR friendly #Blogger. #Reviews, #Giveaways, Random Musings & Every day living! #KinderMom","friends_count":7875,"name":"Yee Wittle Things","created_at":"Fri, 16 Dec 2011 22:33:08 +0000","screen_name":"yeewittlethings","id_str":"438700992","profile_image_url":"http://a0
 .twimg.com/profile_images/2618536105/862tu9w2orhn68rc82lk_normal.jpeg","followers_count":8712,"listed_count":58}},"salience":{"content":{"sentiment":0}},"klout":{"score":63},"interaction":{"schema":{"version":3},"content":"Fresh laundry solution for sensitive skin Arm &amp; Hammer http://t.co/pvJC5hX28b via @Gingermommy","id":"1e2fedf64fcfae00e074af57bfa66a5c","author":{"id":438700992,"username":"yeewittlethings","name":"Yee Wittle Things","link":"http://twitter.com/yeewittlethings","language":"en","avatar":"http://a0.twimg.com/profile_images/2618536105/862tu9w2orhn68rc82lk_normal.jpeg"},"source":"Triberr","mention_ids":[126764623],"link":"http://twitter.com/yeewittlethings/statuses/364861019413164032","created_at":"Tue, 06 Aug 2013 21:30:20 +0000","type":"twitter","mentions":["Gingermommy"]},"links":{"title":["Fresh laundry solution for sensitive skin Arm & Hammer - Tales of a Ranting Ginger"],"normalized_url":["http://talesofarantingginger.com/2013/08/fresh-laundry-solution-for-se
 nsitive-skin-arm-hammer.html"],"created_at":["Tue, 06 Aug 2013 06:53:13 +0000"],"retweet_count":[0],"code":[200],"hops":[["http://goo.gl/DIOspt"]],"meta":{"description":["sensitive skin arm & hammer"],"charset":["UTF-8"],"content_type":["text/html"],"lang":["en-us"]},"url":["http://www.talesofarantingginger.com/2013/08/fresh-laundry-solution-for-sensitive-skin-arm-hammer.html"]},"language":{"tag":"en","confidence":100},"demographic":{"gender":"unisex"}}
+{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"364845410017230848","filter_level":"medium","text":"Hannah Montana without the arm &amp; hammer orrrrrr? RT @ThatGuy_Jesse10: Got that powder. Hmu","mention_ids":[326314186],"source":"<a href=\"http://twitter.com/download/iphone\" rel=\"nofollow\">Twitter for iPhone<\/a>","in_reply_to_screen_name":"ThatGuy_Jesse10","in_reply_to_status_id":"364845085571031041","created_at":"Tue, 06 Aug 2013 20:28:18 +0000","in_reply_to_user_id":"326314186","lang":"en","mentions":["ThatGuy_Jesse10"],"user":{"geo_enabled":true,"location":"Phoeniquera","statuses_count":41253,"lang":"en","utc_offset":-25200,"id":403930347,"time_zone":"Arizona","favourites_count":4362,"description":"You're gonna like THIS guy he's alright, He's a Good Fella.. 93 til.","friends_count":330,"name":"Simba","created_at":"Thu, 03 Nov 2011 06:10:20 +0000","screen_name":"JuanGTho","id_str":"403930347","profile_image_url":"http://a0.twimg.com/profile_images/37880000018266
 5838/026c863eec52a3af8e3e40af8ab5c56f_normal.jpeg","followers_count":359}},"salience":{"content":{"sentiment":0,"entities":[{"sentiment":0,"confident":1,"name":"Hannah Montana","evidence":1,"about":1,"label":"Person","type":"Person"}]}},"klout":{"score":38},"interaction":{"schema":{"version":3},"content":"Hannah Montana without the arm &amp; hammer orrrrrr? RT @ThatGuy_Jesse10: Got that powder. Hmu","id":"1e2fed6ba80dad00e074579fbdc03880","author":{"id":403930347,"username":"JuanGTho","name":"Simba","link":"http://twitter.com/JuanGTho","language":"en","avatar":"http://a0.twimg.com/profile_images/378800000182665838/026c863eec52a3af8e3e40af8ab5c56f_normal.jpeg"},"source":"Twitter for iPhone","mention_ids":[326314186],"link":"http://twitter.com/JuanGTho/statuses/364845410017230848","created_at":"Tue, 06 Aug 2013 20:28:18 +0000","type":"twitter","mentions":["ThatGuy_Jesse10"]},"language":{"tag":"en","confidence":100}}
+{"w2o":{"tags":{"topic":["Convenience","LaundryDetergent"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":-6,"topics":[{"hits":0,"name":"Beverages","score":1.056524515152}],"entities":[{"sentiment":-12,"confident":1,"name":"Target","evidence":1,"about":1,"label":"Company","themes":["brand laundry soap","cleaning team","washing soda"],"type":"Company"}]}},"facebook":{"id":"100005166043472_180980985417435","message":"A rogue ink pen exploded in my clothes dryer this morning :(  ruining two sets of my work clothes.....  I cleaned the inkout of the dryer drum with rubbing alcohol, and am trying to salvage my clothes.  Rigth now the greatest cleaning team ever assembled is at work in the washer.....  Target brand laundry soap, Fabuloso surface cleaner, half a cup of borax, and whatever was left in the box of Arm and Hammer washing soda on a small load cycle.....  Will keep posted.....","author":{"id":"100005166043472","name":"Zach Watts","link":"http://www.facebook.com/pro
 file.php?id=100005166043472","avatar":"https://graph.facebook.com/100005166043472/picture"},"application":"Mobile","source":"Mobile (2915120374)","created_at":"Wed, 07 Aug 2013 02:32:06 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e2ff098d015a700e066f80d5c4c0dd0","content":"A rogue ink pen exploded in my clothes dryer this morning :(  ruining two sets of my work clothes.....  I cleaned the inkout of the dryer drum with rubbing alcohol, and am trying to salvage my clothes.  Rigth now the greatest cleaning team ever assembled is at work in the washer.....  Target brand laundry soap, Fabuloso surface cleaner, half a cup of borax, and whatever was left in the box of Arm and Hammer washing soda on a small load cycle.....  Will keep posted.....","author":{"id":"100005166043472","name":"Zach Watts","link":"http://www.facebook.com/profile.php?id=100005166043472","avatar":"https://graph.facebook.com/100005166043472/picture"},"source":"Mobile (2915120374)","link":"http
 ://www.facebook.com/100005166043472_180980985417435","subtype":"status","created_at":"Wed, 07 Aug 2013 02:32:23 +0000","type":"facebook"},"language":{"tag":"en","confidence":100},"demographic":{"gender":"male"}}
+{"w2o":{"tags":{"topic":["LaundryDetergent"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":2}},"facebook":{"id":"753060211_10153029318745212","message":"The best carpet cleaner is arm and hammer plus oxi clean laundry soap plus a scoop of powder oxi clean hot water and elbow grease. My  carpet looks almost brand new. =)","author":{"id":"753060211","name":"Sarah McCormack","link":"http://www.facebook.com/profile.php?id=753060211","avatar":"https://graph.facebook.com/753060211/picture"},"application":"Facebook for Android","source":"Facebook for Android (350685531728)","created_at":"Thu, 25 Jul 2013 18:08:27 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e2f555341edaf80e066003d5ea01da0","content":"The best carpet cleaner is arm and hammer plus oxi clean laundry soap plus a scoop of powder oxi clean hot water and elbow grease. My  carpet looks almost brand new. =)","author":{"id":"753060211","name":"Sarah McCormack","link":"http://www.facebook.com/
 profile.php?id=753060211","avatar":"https://graph.facebook.com/753060211/picture"},"source":"Facebook for Android (350685531728)","subtype":"status","created_at":"Thu, 25 Jul 2013 18:08:51 +0000","type":"facebook"},"language":{"tag":"en","confidence":100},"demographic":{"gender":"female"}}
+{"w2o":{"tags":{"topic":["Sustainability","ConcentratedFormulas"],"brand":["ArmAndHammer"]}},"twitter":{"id":"361171385718018048","filter_level":"medium","text":"20 $1/1 ARM&amp;HAMMER 4x concentrate detergent 8/31/13 - http://t.co/DwFm08iyOj http://t.co/7XvuTjDd0v","source":"<a href=\"http://satehut.com\" rel=\"nofollow\">Satehut<\/a>","domains":["dish-washers-dryers.com"],"created_at":"Sat, 27 Jul 2013 17:09:03 +0000","links":["http://dish-washers-dryers.com/?p=3858"],"lang":"en","media":[{"id":361171385722212352,"sizes":{"small":{"w":104,"h":140,"resize":"fit"},"thumb":{"w":104,"h":140,"resize":"crop"},"large":{"w":104,"h":140,"resize":"fit"},"medium":{"w":104,"h":140,"resize":"fit"}},"media_url_https":"https://pbs.twimg.com/media/BQMjdjUCEAAMlDL.jpg","media_url":"http://pbs.twimg.com/media/BQMjdjUCEAAMlDL.jpg","expanded_url":"http://twitter.com/Sate_Hut/status/361171385718018048/photo/1","id_str":"361171385722212352","display_url":"pic.twitter.com/7XvuTjDd0v","type":"photo","url
 ":"http://t.co/7XvuTjDd0v"}],"user":{"location":"Miami, FL","statuses_count":20248,"lang":"en","url":"http://SateHut.com","utc_offset":-14400,"id":342319003,"time_zone":"Eastern Time (US & Canada)","description":"For good sate (or Sateh) you can be anywhere!  We give you the recipes and ingredients to make it at home!","name":"Sate Hut","created_at":"Mon, 25 Jul 2011 20:37:12 +0000","screen_name":"Sate_Hut","id_str":"342319003","profile_image_url":"http://a0.twimg.com/profile_images/1460610380/sate_hut_logo_normal.jpg","followers_count":15}},"salience":{"content":{"sentiment":0,"entities":[{"sentiment":0,"confident":1,"name":"8/31/13","evidence":1,"about":1,"label":"Date","type":"Pattern"}]}},"klout":{"score":13},"interaction":{"schema":{"version":3},"content":"20 $1/1 ARM&amp;HAMMER 4x concentrate detergent 8/31/13 - http://t.co/DwFm08iyOj http://t.co/7XvuTjDd0v","id":"1e2f6df3ca32a180e0745c1dc0cceda4","author":{"id":342319003,"username":"Sate_Hut","name":"Sate Hut","link":"http://
 twitter.com/Sate_Hut","language":"en","avatar":"http://a0.twimg.com/profile_images/1460610380/sate_hut_logo_normal.jpg"},"source":"Satehut","link":"http://twitter.com/Sate_Hut/statuses/361171385718018048","created_at":"Sat, 27 Jul 2013 17:09:03 +0000","type":"twitter"},"links":{"title":["20 $1/1 ARM&HAMMER 4x concentrate detergent 8/31/13 | Dish-Washers & Dryers"],"normalized_url":["http://dish-washers-dryers.com/?p=3858"],"created_at":["Sat, 27 Jul 2013 17:09:07 +0000"],"retweet_count":[0],"code":[200],"meta":{"charset":["UTF-8"],"opengraph":[{"title":"20 $1/1 ARM&HAMMER 4x concentrate detergent 8/31/13 | Dish-Washers & Dryers","description":"$0.99 (0 Bids)End Date: Saturday Jul-27-2013 19:47:26 PDTBuy It Now for only: $2.50Buy It Now | Bid now | Add to watch list","image":"http://thumbs1.ebaystatic.com/m/m5EkUMKNxAoIDYVzVioQCRg/140.jpg","site_name":"Dish-Washers & Dryers","type":"article","url":"http://dish-washers-dryers.com/?p=3858"}],"content_type":["text/html"],"lang":["en-us"
 ]},"url":["http://dish-washers-dryers.com/?p=3858"]},"language":{"tag":"en","confidence":62}}
+{"w2o":{"tags":{"topic":["Sustainability","LaundryDetergent"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":0}},"facebook":{"id":"297050503659016_614567205240676","message":"Arm & Hammer Laundry Detergent Just $1.92 at Walgreens (til 7/27)\n\nhttp://wp.me/p22sqw-j1g","author":{"id":"297050503659016","name":"Cook, Coupon, Work","link":"http://www.facebook.com/profile.php?id=297050503659016","avatar":"https://graph.facebook.com/297050503659016/picture"},"source":"web","created_at":"Fri, 26 Jul 2013 23:40:01 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e2f64cb0481ae80e0668a518d22dfe2","content":"Arm & Hammer Laundry Detergent Just $1.92 at Walgreens (til 7/27)\n\nhttp://wp.me/p22sqw-j1g","author":{"id":"297050503659016","name":"Cook, Coupon, Work","link":"http://www.facebook.com/profile.php?id=297050503659016","avatar":"https://graph.facebook.com/297050503659016/picture"},"source":"web","link":"http://www.facebook.com/297050503659016_614567205240
 676","subtype":"status","created_at":"Fri, 26 Jul 2013 23:40:22 +0000","type":"facebook"},"links":{"title":["Arm & Hammer Laundry Detergent Just $1.92 at Walgreens (til 7/27) - Cook, Coupon, Work"],"normalized_url":["http://cookcouponwork.com/arm-hammer-laundry-detergent-just-1-92-at-walgreens-til-727"],"created_at":["Fri, 26 Jul 2013 23:40:16 +0000"],"retweet_count":[0],"code":[200],"hops":[["http://wp.me/p22sqw-j1g","http://www.cookcouponwork.com/?p=73114"]],"meta":{"twitter":[{"site":"@CookCouponWork","card":"summary","creator":"@CookCouponWork"}],"charset":["UTF-8"],"opengraph":[{"title":"Arm & Hammer Laundry Detergent Just $1.92 at Walgreens (til 7/27) - Cook, Coupon, Work","description":"Need Laundry Detergent? Pick up a good deal on Arm & Hammer at Walgreens (til 7/27) Deal Idea: Buy (2) Arm & Hammer 2x Liquid Detergent, 25 ? 32 loads, $2.29 = $4.58 Use (1) $0.75/2 Arm & Hammer Liquid or Powder Detergent, or Fabric Softener Sheets, exp. 9/30/13 (SS 07/14/13) Pay $3.83 =$1.92 
 EACH!","image":"http://www.cookcouponwork.com/wp-content/uploads/2013/07/543-300x213.jpg","type":"article","site_name":"Cook, Coupon, Work","url":"http://www.cookcouponwork.com/arm-hammer-laundry-detergent-just-1-92-at-walgreens-til-727/"}],"content_type":["text/html"],"lang":["en-us"]},"url":["http://www.cookcouponwork.com/arm-hammer-laundry-detergent-just-1-92-at-walgreens-til-727/"]},"language":{"tag":"en","confidence":100},"demographic":{"gender":"unisex"}}
+{"w2o":{"tags":{"topic":["Sustainability","LaundryDetergent"],"brand":["ArmAndHammer"]}},"twitter":{"id":"362022978235531264","filter_level":"medium","text":"Arm and hammer laundry detergent gets the whites to be super white. #notracist","source":"<a href=\"http://twitter.com/download/iphone\" rel=\"nofollow\">Twitter for iPhone<\/a>","created_at":"Tue, 30 Jul 2013 01:32:58 +0000","hashtags":["notracist"],"lang":"en","user":{"location":"Knoxville, TN","statuses_count":3202,"lang":"en","utc_offset":-14400,"id":442907220,"time_zone":"Eastern Time (US & Canada)","favourites_count":379,"description":"Never had a headache. Unable to grow a full beard.","friends_count":52,"name":"Uncle_D","created_at":"Wed, 21 Dec 2011 16:05:22 +0000","screen_name":"_UncleD_","id_str":"442907220","profile_image_url":"http://a0.twimg.com/profile_images/378800000144278522/e2c248ef7011fe240871ee3beab46bfd_normal.jpeg","followers_count":59}},"salience":{"content":{"sentiment":6}},"klout":{"score":40},"interac
 tion":{"schema":{"version":3},"content":"Arm and hammer laundry detergent gets the whites to be super white. #notracist","id":"1e2f8b7f6ed8a100e074a98a4f29f3bc","author":{"id":442907220,"username":"_UncleD_","name":"Uncle_D","link":"http://twitter.com/_UncleD_","language":"en","avatar":"http://a0.twimg.com/profile_images/378800000144278522/e2c248ef7011fe240871ee3beab46bfd_normal.jpeg"},"source":"Twitter for iPhone","link":"http://twitter.com/_UncleD_/statuses/362022978235531264","created_at":"Tue, 30 Jul 2013 01:32:58 +0000","type":"twitter"},"language":{"tag":"en","confidence":100}}
+{"w2o":{"tags":{"topic":["Scent"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":4}},"facebook":{"id":"100000487215935_704899129536321","message":"Arm & hammer carpet powder $2.75.... The feeling & smell of clean priceless..... Trying to sprinkle powder on carpet in front of a fan.... Stupid! I crack myself up!","author":{"id":"100000487215935","name":"Joyce Warren Cantrell","link":"http://www.facebook.com/profile.php?id=100000487215935","avatar":"https://graph.facebook.com/100000487215935/picture"},"application":"Mobile","source":"Mobile (2915120374)","created_at":"Sat, 27 Jul 2013 16:30:08 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e2f6d9ccde6a800e06674caf5177576","content":"Arm & hammer carpet powder $2.75.... The feeling & smell of clean priceless..... Trying to sprinkle powder on carpet in front of a fan.... Stupid! I crack myself up!","author":{"id":"100000487215935","name":"Joyce Warren Cantrell","link":"http://www.facebook.com/profile
 .php?id=100000487215935","avatar":"https://graph.facebook.com/100000487215935/picture"},"source":"Mobile (2915120374)","link":"http://www.facebook.com/100000487215935_704899129536321","subtype":"status","created_at":"Sat, 27 Jul 2013 16:30:26 +0000","type":"facebook"},"language":{"tag":"en","confidence":100},"demographic":{"gender":"mostly_female"}}
+{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"361615185913462785","retweeted":{"id":"361614949908361217","source":"<a href=\"http://twitter.com/download/iphone\" rel=\"nofollow\">Twitter for iPhone<\/a>","in_reply_to_screen_name":"THEmrReynolds","in_reply_to_status_id":"361603144695820288","in_reply_to_user_id":"106891542","created_at":"Sun, 28 Jul 2013 22:31:37 +0000","user":{"geo_enabled":true,"location":"Stanford, CA","statuses_count":22223,"lang":"en","url":"http://memoirsofaGAYsh.tumblr.com","id":49340813,"utc_offset":-25200,"time_zone":"Pacific Time (US & Canada)","favourites_count":4278,"description":"?Dance is the hidden language of the soul of the body? CSRE/DRAMA Major @Stanford.  #playwright #dancer","friends_count":436,"name":"Dominique Delacroix","created_at":"Sun, 21 Jun 2009 15:29:26 +0000","screen_name":"MemoirsofaGAYsh","id_str":"49340813","profile_image_url":"http://a0.twimg.com/profile_images/2258352218/MemoirsofaGAYsh_normal.jpg","followers_count":4
 23,"listed_count":10}},"retweet":{"id":"361615185913462785","text":"@THEmrReynolds probably a mixture of prunes, icy hot, and arm and hammer foot powder","source":"<a href=\"http://twitter.com/download/android\" rel=\"nofollow\">Twitter for Android<\/a>","count":1,"mention_ids":[106891542],"created_at":"Sun, 28 Jul 2013 22:32:33 +0000","user":{"location":"soundcloud.com/mrReynoldsMusic","statuses_count":13351,"lang":"en","url":"http://www.THEmrReynolds.com","id":106891542,"utc_offset":-14400,"time_zone":"Eastern Time (US & Canada)","favourites_count":1353,"description":"I Mock The Party","friends_count":1554,"name":"Mr Reynolds","created_at":"Thu, 21 Jan 2010 00:37:45 +0000","screen_name":"THEmrReynolds","id_str":"106891542","profile_image_url":"http://a0.twimg.com/profile_images/2828785203/a097d038f964b0a6125a95c0a0e8ff7d_normal.jpeg","followers_count":7938,"listed_count":49},"mentions":["THEmrReynolds"],"lang":"en"}},"salience":{"content":{"sentiment":0}},"klout":{"score":59},"int
 eraction":{"schema":{"version":3},"content":"RT @MemoirsofaGAYsh: @THEmrReynolds probably a mixture of prunes, icy hot, and arm and hammer foot powder","id":"1e2f7d5984fda680e074135a4b824dd0","author":{"id":106891542,"username":"THEmrReynolds","name":"Mr Reynolds","link":"http://twitter.com/THEmrReynolds","language":"en","avatar":"http://a0.twimg.com/profile_images/2828785203/a097d038f964b0a6125a95c0a0e8ff7d_normal.jpeg"},"source":"Twitter for Android","mention_ids":[106891542],"link":"http://twitter.com/THEmrReynolds/statuses/361615185913462785","created_at":"Sun, 28 Jul 2013 22:32:33 +0000","type":"twitter","mentions":["THEmrReynolds"]},"language":{"tag":"en","confidence":100}}
+{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"362467813958500354","filter_level":"medium","text":"Arm &amp; Hammer Sensitive Skin?Review &amp; Giveaway http://t.co/pS413KqHv5","source":"<a href=\"http://www.networkedblogs.com/\" rel=\"nofollow\">NetworkedBlogs<\/a>","domains":["nblo.gs"],"created_at":"Wed, 31 Jul 2013 07:00:35 +0000","links":["http://nblo.gs/NEwDq"],"lang":"en","user":{"location":"Canada","statuses_count":2034,"lang":"en","url":"http://www.zeemaid.com","id":25435820,"utc_offset":-25200,"time_zone":"Pacific Time (US & Canada)","favourites_count":17,"description":"I am Zeemaid.  Momma to 3, an avid reader and an all around sassy momma.  I own my own video business, am married to my Mr. Darcy, love to throw pots and write","friends_count":1976,"name":"Zeemaid","created_at":"Fri, 20 Mar 2009 01:59:59 +0000","screen_name":"Zeemaid","id_str":"25435820","profile_image_url":"http://a0.twimg.com/profile_images/1732650108/Zeemaid_normal.jpg","followers_count":10
 27,"listed_count":30}},"salience":{"content":{"sentiment":0}},"klout":{"score":41},"interaction":{"schema":{"version":3},"content":"Arm &amp; Hammer Sensitive Skin?Review &amp; Giveaway http://t.co/pS413KqHv5","id":"1e2f9aee5d36ab80e0745a0744aef83a","author":{"id":25435820,"username":"Zeemaid","name":"Zeemaid","link":"http://twitter.com/Zeemaid","language":"en","avatar":"http://a0.twimg.com/profile_images/1732650108/Zeemaid_normal.jpg"},"source":"NetworkedBlogs","link":"http://twitter.com/Zeemaid/statuses/362467813958500354","created_at":"Wed, 31 Jul 2013 07:00:35 +0000","type":"twitter"},"links":{"title":["Arm & Hammer Sensitive Skin?Review & Giveaway"],"normalized_url":["http://networkedblogs.com/NEwDq"],"created_at":["Wed, 31 Jul 2013 07:00:43 +0000"],"retweet_count":[0],"code":[200],"hops":[["http://nblo.gs/NEwDq"]],"meta":{"charset":["UTF-8"],"opengraph":[{"title":"Arm & Hammer Sensitive Skin?Review & Giveaway","description":"When you love a product you want to stick with it bu
 t as we all know price is a huge factor as to whether we continue to buy the brand we love or go elsewhere. Fortunately, Arm & Hammer?s affordability makes it easy for me to keep my cupboard well stocked with the Arm & Hammer products I love. Not","image":"http://lh6.ggpht.com/-8PeRiK68OMk/UfhgV8guCFI/AAAAAAAACgs/ubCE0V6ffqQ/CAN_AHLL_Sensitive_203L_thumb7.jpg?imgmax=800","site_name":"In the Mommy Trenches","type":"article","url":"http://networkedblogs.com/NEwDq"}],"content_type":["text/html"],"lang":["unknown"]},"url":["http://networkedblogs.com/NEwDq"]},"language":{"tag":"en","confidence":63}}
+{"w2o":{"tags":{"topic":["Sustainability","LaundryDetergent"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":4}},"facebook":{"id":"478623348890311_497707713648541","message":"Example of what you can save......\n(regular retail)\n1 Febeze Air Effects $2.99 each  ($1)\n1 Gillette Mach 3 disposables $7.49 each ($3)\n1 Gillette Shaving Cream $2.29 each ($1)\n1 Woolite High Traffic Cleaner $6.79 each ($2)\n1 Schick Women's Razors $5.69 each ($2)\n1 Colgate Toothbrush $1.89 each  ($1)\n1 Arm and Hammer Laundry Detergent $4.99 each ($2)\n1 Snuggle Fabric Softener $4.99 each ($2)\n1 Bayer Aspirin $2.99 each ($1)\n1 Herbal Essence Shampoo $2.99 each ($1)\n1 Herbal Essence Conditioner $2.99 each ($1)\n1 Herbal Essence Styling Products $3.39 each ($1)\nTotal: $52.48\nDOLLAR DEALS TOTAL: $18.00","author":{"id":"478623348890311","name":"Dollar Deals Delivered","link":"http://www.facebook.com/profile.php?id=478623348890311","avatar":"https://graph.facebook.com/478623348890311/pictu
 re"},"source":"web","created_at":"Wed, 31 Jul 2013 06:44:42 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e2f9acadcb2a900e066515ce688d7d0","content":"Example of what you can save......\n(regular retail)\n1 Febeze Air Effects $2.99 each  ($1)\n1 Gillette Mach 3 disposables $7.49 each ($3)\n1 Gillette Shaving Cream $2.29 each ($1)\n1 Woolite High Traffic Cleaner $6.79 each ($2)\n1 Schick Women's Razors $5.69 each ($2)\n1 Colgate Toothbrush $1.89 each  ($1)\n1 Arm and Hammer Laundry Detergent $4.99 each ($2)\n1 Snuggle Fabric Softener $4.99 each ($2)\n1 Bayer Aspirin $2.99 each ($1)\n1 Herbal Essence Shampoo $2.99 each ($1)\n1 Herbal Essence Conditioner $2.99 each ($1)\n1 Herbal Essence Styling Products $3.39 each ($1)\nTotal: $52.48\nDOLLAR DEALS TOTAL: $18.00","author":{"id":"478623348890311","name":"Dollar Deals Delivered","link":"http://www.facebook.com/profile.php?id=478623348890311","avatar":"https://graph.facebook.com/478623348890311/picture"},"source":"we
 b","link":"http://www.facebook.com/478623348890311_497707713648541","subtype":"status","created_at":"Wed, 31 Jul 2013 06:44:57 +0000","type":"facebook"},"language":{"tag":"en","confidence":74}}
+{"w2o":{"tags":{"topic":["Sustainability","Scent","LaundryDetergent"],"brand":["ArmAndHammer"]}},"twitter":{"id":"362269562365943809","filter_level":"medium","text":"New ARM and HAMMER Sensitive Skin and Sensitive Scents?laundry detergent http://t.co/2HvWoZVjTt via @MyBitsandBleeps","mention_ids":[151080077],"source":"<a href=\"http://twitter.com/tweetbutton\" rel=\"nofollow\">Tweet Button<\/a>","domains":["wp.me"],"created_at":"Tue, 30 Jul 2013 17:52:48 +0000","links":["http://wp.me/p12Gyx-358"],"lang":"en","mentions":["MyBitsandBleeps"],"user":{"location":"Toronto,Ontario","statuses_count":29115,"lang":"en","utc_offset":-14400,"id":574859993,"time_zone":"Eastern Time (US & Canada)","favourites_count":13,"friends_count":1727,"name":"Andrew P","created_at":"Tue, 08 May 2012 23:07:45 +0000","screen_name":"apham17","id_str":"574859993","profile_image_url":"http://a0.twimg.com/profile_images/3226883575/148106bd4d6dcb4e8f06d8e5f0cd197f_normal.png","followers_count":455,"listed_count":7}
 },"salience":{"content":{"sentiment":0}},"klout":{"score":48},"interaction":{"schema":{"version":3},"content":"New ARM and HAMMER Sensitive Skin and Sensitive Scents?laundry detergent http://t.co/2HvWoZVjTt via @MyBitsandBleeps","id":"1e2f940d87f9a800e074438bcad545f2","author":{"id":574859993,"username":"apham17","name":"Andrew P","link":"http://twitter.com/apham17","language":"en","avatar":"http://a0.twimg.com/profile_images/3226883575/148106bd4d6dcb4e8f06d8e5f0cd197f_normal.png"},"source":"Tweet Button","mention_ids":[151080077],"link":"http://twitter.com/apham17/statuses/362269562365943809","created_at":"Tue, 30 Jul 2013 17:52:48 +0000","type":"twitter","mentions":["MyBitsandBleeps"]},"links":{"title":["New ARM and HAMMER Sensitive Skin and Sensitive Scents laundry detergent | Mybitsandbleeps&#039;s Blog"],"normalized_url":["http://mybitsandbleeps.com/2013/07/14/new-arm-and-hammer-sensitive-skin-and-sensitive-scents-laundry-detergent"],"created_at":["Mon, 29 Jul 2013 23:20:31 +00
 00"],"retweet_count":[0],"code":[200],"hops":[["http://wp.me/p12Gyx-358"]],"meta":{"twitter":[{"site":"@wordpressdotcom","card":"gallery","creator":"@MyBitsandBleeps"}],"description":["A mom blog creating more buzz about your product!"],"charset":["UTF-8"],"opengraph":[{"title":"New ARM and HAMMER Sensitive Skin and Sensitive Scents laundry detergent","description":"School?s out and families are taking the fun outside, which means more muddy knees and grass-stained tees. Laundry will be piling up in no time but many Canadians will be forced to reach for unscen...","image":"http://i2.wp.com/mybitsandbleeps.files.wordpress.com/2013/07/img_00002130.jpg?fit=1000%2C1000","type":"article","site_name":"Mybitsandbleeps&#039;s Blog","url":"http://mybitsandbleeps.com/2013/07/14/new-arm-and-hammer-sensitive-skin-and-sensitive-scents-laundry-detergent/"}],"content_type":["text/html"],"lang":["en"]},"url":["http://mybitsandbleeps.com/2013/07/14/new-arm-and-hammer-sensitive-skin-and-sensitive-sce
 nts-laundry-detergent/"]},"language":{"tag":"en","confidence":62},"demographic":{"gender":"male"}}
+{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"362229784211750912","filter_level":"medium","text":"We're eating breakfast and @TheVikkiMinaj sits down and says the arm and hammer powder she put on her vagina burns. THANKS FOR THAT","mention_ids":[279691748],"source":"<a href=\"http://twitter.com/download/iphone\" rel=\"nofollow\">Twitter for iPhone<\/a>","created_at":"Tue, 30 Jul 2013 15:14:45 +0000","lang":"en","mentions":["TheVikkiMinaj"],"user":{"location":"LA","statuses_count":18221,"lang":"en","utc_offset":-18000,"id":223342789,"time_zone":"Central Time (US & Canada)","favourites_count":6766,"description":"Onesie gang or die","friends_count":231,"name":"Carlage","created_at":"Mon, 06 Dec 2010 03:23:42 +0000","screen_name":"legitCarll","id_str":"223342789","profile_image_url":"http://a0.twimg.com/profile_images/378800000049299664/a636d7d245455eeb8b335ed4bd6480f8_normal.jpeg","followers_count":220}},"salience":{"content":{"sentiment":0,"topics":[{"hits":0,"name":"Foo
 d","score":0.50475257635117}]}},"klout":{"score":43},"interaction":{"schema":{"version":3},"content":"We're eating breakfast and @TheVikkiMinaj sits down and says the arm and hammer powder she put on her vagina burns. THANKS FOR THAT","id":"1e2f92ac430aa080e0748f373f80284e","author":{"id":223342789,"username":"legitCarll","name":"Carlage","link":"http://twitter.com/legitCarll","language":"en","avatar":"http://a0.twimg.com/profile_images/378800000049299664/a636d7d245455eeb8b335ed4bd6480f8_normal.jpeg"},"source":"Twitter for iPhone","mention_ids":[279691748],"link":"http://twitter.com/legitCarll/statuses/362229784211750912","created_at":"Tue, 30 Jul 2013 15:14:45 +0000","type":"twitter","mentions":["TheVikkiMinaj"]},"language":{"tag":"en","confidence":100}}
+{"w2o":{"tags":{"topic":["ConcentratedFormulas"],"brand":["ArmAndHammer"]}},"twitter":{"id":"365738027701645314","filter_level":"medium","text":"Missed a scoop? No problem! ARM &amp; HAMMER? Ultra Last? delivers long lasting odor control even when you can't scoop. http://t.co/VGNQ0i0KGb","source":"<a href=\"http://twitter.com/tweetbutton\" rel=\"nofollow\">Tweet Button<\/a>","domains":["www.armandhammer.com"],"created_at":"Fri, 09 Aug 2013 07:35:15 +0000","links":["http://www.armandhammer.com/pet-care/cat-care/Products/arm-and-hammer-ultra-last.aspx"],"lang":"en","user":{"id":1571552280,"friends_count":2,"name":"tim tunner","created_at":"Fri, 05 Jul 2013 23:43:28 +0000","screen_name":"timtunner0987","id_str":"1571552280","statuses_count":32,"profile_image_url":"http://a0.twimg.com/sticky/default_profile_images/default_profile_4_normal.png","lang":"en"}},"salience":{"content":{"sentiment":2}},"klout":{"score":10},"interaction":{"schema":{"version":3},"content":"Missed a scoop? No pro
 blem! ARM &amp; HAMMER? Ultra Last? delivers long lasting odor control even when you can't scoop. http://t.co/VGNQ0i0KGb","id":"1e300c63b51fab80e074e71f77da87ca","author":{"id":1571552280,"username":"timtunner0987","name":"tim tunner","link":"http://twitter.com/timtunner0987","language":"en","avatar":"http://a0.twimg.com/sticky/default_profile_images/default_profile_4_normal.png"},"source":"Tweet Button","link":"http://twitter.com/timtunner0987/statuses/365738027701645314","created_at":"Fri, 09 Aug 2013 07:35:15 +0000","type":"twitter"},"links":{"title":["Arm & Hammer Multi-Brand - ARM & HAMMER? Ultra Last?"],"normalized_url":["http://armandhammer.com/pet-care/cat-care/Products/arm-and-hammer-ultra-last.aspx"],"created_at":["Fri, 09 Aug 2013 07:35:18 +0000"],"retweet_count":[0],"code":[200],"meta":{"keywords":[["Missed a scoop? No problem! ARM & HAMMER? Ultra Last? delivers long lasting odor control even when you can't scoop."]],"description":["Missed a scoop? No problem! ARM & HAMM
 ER? Ultra Last? delivers long lasting odor control even when you can't scoop."],"charset":["UTF-8"],"content_type":["text/html"],"lang":["unknown"]},"url":["http://www.armandhammer.com/pet-care/cat-care/Products/arm-and-hammer-ultra-last.aspx"]},"language":{"tag":"en","confidence":100},"demographic":{"gender":"male"}}
+{"w2o":{"tags":{"topic":["Sustainability","StainRemoval","LaundryDetergent"],"brand":["ArmAndHammer"]}},"twitter":{"id":"364421048600510464","filter_level":"medium","text":"10 bottles Arm &amp; Hammer Plus Oxi Clean Stain Fighters Liquid Laundry Detergent $0.99 http://t.co/89pkfqEgvl #laundry","source":"<a href=\"http://uTweetDeals.com\" rel=\"nofollow\">U Tweet Deals<\/a>","domains":["bit.ly"],"created_at":"Mon, 05 Aug 2013 16:22:03 +0000","hashtags":["laundry"],"links":["http://bit.ly/15zY9H5"],"lang":"en","user":{"statuses_count":59620,"lang":"en","utc_offset":-25200,"id":1131374341,"time_zone":"Arizona","description":"We search for deals on Home and Garden related products. Bath, Kitchen, Furniture, Garden and more. *** I Follow Back ***","friends_count":1939,"name":"Home and Garden","created_at":"Tue, 29 Jan 2013 15:37:21 +0000","screen_name":"HomeGardenBuys","id_str":"1131374341","followers_count":1706,"profile_image_url":"http://a0.twimg.com/profile_images/3531065622/bc956b2a
 9da482ed071f2dbcdabea80b_normal.jpeg","listed_count":95}},"salience":{"content":{"sentiment":0}},"klout":{"score":49},"interaction":{"schema":{"version":3},"content":"10 bottles Arm &amp; Hammer Plus Oxi Clean Stain Fighters Liquid Laundry Detergent $0.99 http://t.co/89pkfqEgvl #laundry","id":"1e2fdeb29810a780e0747af2c3544504","author":{"id":1131374341,"username":"HomeGardenBuys","name":"Home and Garden","link":"http://twitter.com/HomeGardenBuys","language":"en","avatar":"http://a0.twimg.com/profile_images/3531065622/bc956b2a9da482ed071f2dbcdabea80b_normal.jpeg"},"source":"U Tweet Deals","link":"http://twitter.com/HomeGardenBuys/statuses/364421048600510464","created_at":"Mon, 05 Aug 2013 16:22:03 +0000","type":"twitter"},"links":{"title":["10 Bottles Arm Hammer Plus Oxi Clean Stain Fighters Liquid Laundry Detergent | eBay"],"normalized_url":["http://ebay.com/itm/ws/eBayISAPI.dll?ViewItem&item=121154908808&item=121154908808"],"created_at":["Mon, 05 Aug 2013 16:22:47 +0000"],"retweet_
 count":[0],"code":[200],"hops":[["http://bit.ly/15zY9H5","http://rover.ebay.com/rover/1/711-53200-19255-0/1/?type=2&campid=5337311970&toolid=10001&ext=121154908808&item=121154908808"]],"meta":{"keywords":[["10 bottles Arm & Hammer Plus Oxi Clean Stain Fighters Liquid Laundry Detergent","Home & Garden","Housekeeping & Organization","Laundry Supplies"]],"description":["10 bottles Arm & Hammer Plus Oxi Clean Stain Fighters Liquid Laundry Detergent in Home & Garden, Housekeeping & Organization, Laundry Supplies | eBay"],"charset":["UTF-8"],"opengraph":[{"title":"10 bottles Arm & Hammer Plus Oxi Clean Stain Fighters Liquid Laundry Detergent","description":"10 bottles Arm & Hammer Plus Oxi Clean Stain Fighters Liquid Laundry Detergent in Home & Garden, Housekeeping & Organization, Laundry Supplies | eBay","image":"http://thumbs1.ebaystatic.com/d/l225/m/mSRDHPf7_rrZnR75JtQxcCA.jpg","type":"ebay-objects:item","site_name":"eBay","url":"http://www.ebay.com/itm/10-bottles-Arm-Hammer-Plus-Oxi-C
 lean-Stain-Fighters-Liquid-Laundry-Detergent-/121154908808"}],"content_type":["text/html"],"lang":["en-gb"]},"url":["http://www.ebay.com/itm/ws/eBayISAPI.dll?ViewItem&item=121154908808&item=121154908808"]},"language":{"tag":"en","confidence":63}}
+{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"364879533691772928","filter_level":"medium","text":"Arm and hammer carpet powder is amazing....#justsayin","source":"<a href=\"http://twitter.com/download/android\" rel=\"nofollow\">Twitter for Android<\/a>","created_at":"Tue, 06 Aug 2013 22:43:54 +0000","hashtags":["justsayin"],"lang":"en","user":{"location":"Indiana US of A","statuses_count":1400,"lang":"en","url":"http://www.quirkycreative.blogspot.com","utc_offset":-14400,"id":93704952,"time_zone":"Eastern Time (US & Canada)","favourites_count":9,"description":"Writer~ Random ~Quirky ~Creative ~Wife ~Believer ~Extroverted Introvert ~Animal Person ~Brony ~Girly-Girl w/ Tomboy Tendencies @JAInspired","friends_count":493,"name":"Rachel M","created_at":"Mon, 30 Nov 2009 20:20:15 +0000","screen_name":"thisrandomgirl","id_str":"93704952","profile_image_url":"http://a0.twimg.com/profile_images/3376486852/bfc1a1d4c44cf09978fb2c5c0fb33892_normal.jpeg","followers_count":102}},"sa
 lience":{"content":{"sentiment":4}},"klout":{"score":18},"interaction":{"schema":{"version":3},"content":"Arm and hammer carpet powder is amazing....#justsayin","id":"1e2fee9abeffa100e074fa86d21b91e6","author":{"id":93704952,"username":"thisrandomgirl","name":"Rachel M","link":"http://twitter.com/thisrandomgirl","language":"en","avatar":"http://a0.twimg.com/profile_images/3376486852/bfc1a1d4c44cf09978fb2c5c0fb33892_normal.jpeg"},"source":"Twitter for Android","link":"http://twitter.com/thisrandomgirl/statuses/364879533691772928","created_at":"Tue, 06 Aug 2013 22:43:54 +0000","type":"twitter"},"language":{"tag":"en","confidence":61},"demographic":{"gender":"female"}}
+{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"364749039100633088","filter_level":"medium","text":"Fresh laundry solution for sensitive skin Arm &amp; Hammer http://t.co/MmPYCeqmgN via @Gingermommy","mention_ids":[126764623],"source":"<a href=\"http://triberr.com\" rel=\"nofollow\">Triberr<\/a>","domains":["goo.gl"],"created_at":"Tue, 06 Aug 2013 14:05:22 +0000","links":["http://goo.gl/DIOspt"],"lang":"en","mentions":["Gingermommy"],"user":{"statuses_count":4853,"lang":"en","url":"http://www.mykidsguide.com/","id":612438542,"favourites_count":3,"description":"Everything you need to know about educational games and  activities for kids.","friends_count":613,"name":"MyKidsGuide","created_at":"Tue, 19 Jun 2012 10:11:57 +0000","screen_name":"MyKidsGuide","id_str":"612438542","followers_count":1542,"profile_image_url":"http://a0.twimg.com/profile_images/2322033061/ryougq6v4o8gvddcx0ru_normal.jpeg","listed_count":14}},"salience":{"content":{"sentiment":0}},"klout":{"score":49
 },"interaction":{"schema":{"version":3},"content":"Fresh laundry solution for sensitive skin Arm &amp; Hammer http://t.co/MmPYCeqmgN via @Gingermommy","id":"1e2fea13bbd7ad00e0742b3a16342e3e","author":{"id":612438542,"username":"MyKidsGuide","name":"MyKidsGuide","link":"http://twitter.com/MyKidsGuide","language":"en","avatar":"http://a0.twimg.com/profile_images/2322033061/ryougq6v4o8gvddcx0ru_normal.jpeg"},"source":"Triberr","mention_ids":[126764623],"link":"http://twitter.com/MyKidsGuide/statuses/364749039100633088","created_at":"Tue, 06 Aug 2013 14:05:22 +0000","type":"twitter","mentions":["Gingermommy"]},"links":{"title":["Fresh laundry solution for sensitive skin Arm & Hammer - Tales of a Ranting Ginger"],"normalized_url":["http://talesofarantingginger.com/2013/08/fresh-laundry-solution-for-sensitive-skin-arm-hammer.html"],"created_at":["Tue, 06 Aug 2013 06:53:13 +0000"],"retweet_count":[0],"code":[200],"hops":[["http://goo.gl/DIOspt"]],"meta":{"description":["sensitive skin arm 
 & hammer"],"charset":["UTF-8"],"content_type":["text/html"],"lang":["en-us"]},"url":["http://www.talesofarantingginger.com/2013/08/fresh-laundry-solution-for-sensitive-skin-arm-hammer.html"]},"language":{"tag":"en","confidence":100}}
+{"w2o":{"tags":{"topic":["Scent","CouponUsage"],"brand":["Tide","ArmAndHammer"]}},"salience":{"content":{"sentiment":0,"entities":[{"sentiment":0,"confident":1,"name":"Gain","evidence":1,"about":1,"label":"Company","themes":["3 gallon gain"],"type":"Company"},{"sentiment":0,"confident":1,"name":"Tide","evidence":1,"about":1,"label":"Company","themes":["3 gallon gain"],"type":"Company"}]}},"facebook":{"id":"100001334708168_529689457085540","message":"SAVE  SAVE  SAVE NOW\n\nProduct Price Sheet\n\n25 lb powder Gain or Tide: $20\n\n3 gallon Gain or Tide: $25\n\n3 gallon Clear Arm & Hammer (no dye, no perfume) $25\n\n4 gallon Bleach $15\n\nAngel Soft Tissue 32 rolls $25, 96 rolls $65\n\n1 gallon Pine-sol Multi-Purpose Soap $12\n\n1 gallon Dove bodywash $15\n\n1 gallon Dawn Dish liquid $12\n\n1 gallon Downy Fabric Softener $15\n\n25 bars of Dove Soap $15\n\nTo place orders, call or text me at 678-531-1965\n\nSponsored by CarDM Mobile Mechanics and Hawaiian Breeze Auto Detailers","author"
 :{"id":"100001334708168","name":"Albert Wells","link":"http://www.facebook.com/profile.php?id=100001334708168","avatar":"https://graph.facebook.com/100001334708168/picture"},"icon":"http://static.ak.fbcdn.net/rsrc.php/v2/yx/r/og8V99JVf8G.gif","application":"Facebook for Android","source":"Facebook for Android (350685531728)","link":"http://www.facebook.com/photo.php?fbid=529689133752239&set=pcb.529689457085540&type=1&relevant_count=3","created_at":"Mon, 05 Aug 2013 13:41:25 +0000","type":"photo"},"interaction":{"schema":{"version":3},"id":"1e2fdd4b8cefa080e0663432906416b4","content":"SAVE  SAVE  SAVE NOW\n\nProduct Price Sheet\n\n25 lb powder Gain or Tide: $20\n\n3 gallon Gain or Tide: $25\n\n3 gallon Clear Arm & Hammer (no dye, no perfume) $25\n\n4 gallon Bleach $15\n\nAngel Soft Tissue 32 rolls $25, 96 rolls $65\n\n1 gallon Pine-sol Multi-Purpose Soap $12\n\n1 gallon Dove bodywash $15\n\n1 gallon Dawn Dish liquid $12\n\n1 gallon Downy Fabric Softener $15\n\n25 bars of Dove Soap $1
 5\n\nTo place orders, call or text me at 678-531-1965\n\nSponsored by CarDM Mobile Mechanics and Hawaiian Breeze Auto Detailers","author":{"id":"100001334708168","name":"Albert Wells","link":"http://www.facebook.com/profile.php?id=100001334708168","avatar":"https://graph.facebook.com/100001334708168/picture"},"source":"Facebook for Android (350685531728)","link":"http://www.facebook.com/100001334708168_529689457085540","subtype":"photo","created_at":"Mon, 05 Aug 2013 13:41:44 +0000","type":"facebook"},"links":{"title":["Photos from Albert Wells&#039;s post | Facebook"],"normalized_url":["https://facebook.com/photo.php?fbid=529689133752239&set=pcb.529689457085540&type=1&relevant_count=3"],"created_at":["Mon, 05 Aug 2013 13:41:51 +0000"],"retweet_count":[0],"code":[200],"hops":[["http://www.facebook.com/photo.php?fbid=529689133752239&set=pcb.529689457085540&type=1&relevant_count=3"]],"meta":{"charset":["UTF-8"],"content_type":["text/html"],"lang":["en"]},"url":["https://www.facebook.c
 om/photo.php?fbid=529689133752239&set=pcb.529689457085540&type=1&relevant_count=3"]},"language":{"tag":"en","confidence":100},"demographic":{"gender":"male"}}
+{"w2o":{"tags":{"topic":["Sustainability","LaundryDetergent"],"brand":["ArmAndHammer"]}},"twitter":{"id":"364070259025649666","filter_level":"medium","text":"Somebody Come Do My Laundry. I'll Pay You. U Dont Need Detergent. I Got This Arm And Hammer ?","source":"<a href=\"http://twitter.com/download/iphone\" rel=\"nofollow\">Twitter for iPhone<\/a>","created_at":"Sun, 04 Aug 2013 17:08:08 +0000","lang":"en","user":{"geo_enabled":true,"statuses_count":31708,"lang":"en","utc_offset":-18000,"id":57967571,"time_zone":"Quito","favourites_count":38,"description":"http://ask.fm/thatDudeBiggz","friends_count":727,"name":"Sen?r","created_at":"Sat, 18 Jul 2009 16:18:33 +0000","screen_name":"thatDudeBiggz","id_str":"57967571","profile_image_url":"http://a0.twimg.com/profile_images/378800000020493320/c5b8669b417c8e362e0d92ad68bb24f9_normal.jpeg","followers_count":658,"listed_count":5}},"salience":{"content":{"sentiment":0}},"klout":{"score":43},"interaction":{"schema":{"version":3},"content":"S
 omebody Come Do My Laundry. I'll Pay You. U Dont Need Detergent. I Got This Arm And Hammer ?","id":"1e2fd286f28cac00e074ec9c56b152ac","author":{"id":57967571,"username":"thatDudeBiggz","name":"Sen?r","link":"http://twitter.com/thatDudeBiggz","language":"en","avatar":"http://a0.twimg.com/profile_images/378800000020493320/c5b8669b417c8e362e0d92ad68bb24f9_normal.jpeg"},"source":"Twitter for iPhone","link":"http://twitter.com/thatDudeBiggz/statuses/364070259025649666","created_at":"Sun, 04 Aug 2013 17:08:08 +0000","type":"twitter"},"language":{"tag":"en","confidence":62}}
+{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"364267076807950339","filter_level":"medium","text":"Fresh laundry solution for sensitive skin Arm &amp; Hammer http://t.co/hkHzh1oFnq via @Gingermommy","mention_ids":[126764623],"source":"<a href=\"http://triberr.com\" rel=\"nofollow\">Triberr<\/a>","domains":["goo.gl"],"created_at":"Mon, 05 Aug 2013 06:10:13 +0000","links":["http://goo.gl/DIOspt"],"lang":"en","mentions":["Gingermommy"],"user":{"geo_enabled":true,"location":"Lumsden, Saskatchewan","statuses_count":18479,"lang":"en","url":"http://www.mommykatandkids.com/","id":106185357,"utc_offset":-21600,"time_zone":"Mountain Time (US & Canada)","favourites_count":29,"description":"Mother of two active boys, blogger and writer. Lover of hot coffee, organic chocolate and sleeping in late whenever I get the chance.","friends_count":7894,"name":"Kathryn Lavallee","created_at":"Mon, 18 Jan 2010 19:29:48 +0000","screen_name":"mommykatandkids","id_str":"106185357","profile_image
 _url":"http://a0.twimg.com/profile_images/1611498528/corel_touched-up_headshot_normal.jpg","followers_count":15439,"listed_count":306}},"salience":{"content":{"sentiment":0}},"klout":{"score":65},"interaction":{"schema":{"version":3},"content":"Fresh laundry solution for sensitive skin Arm &amp; Hammer http://t.co/hkHzh1oFnq via @Gingermommy","id":"1e2fd95b0a39a080e07405af37275d4a","author":{"id":106185357,"username":"mommykatandkids","name":"Kathryn Lavallee","link":"http://twitter.com/mommykatandkids","language":"en","avatar":"http://a0.twimg.com/profile_images/1611498528/corel_touched-up_headshot_normal.jpg"},"source":"Triberr","mention_ids":[126764623],"link":"http://twitter.com/mommykatandkids/statuses/364267076807950339","created_at":"Mon, 05 Aug 2013 06:10:13 +0000","type":"twitter","mentions":["Gingermommy"]},"links":{"title":["Fresh laundry solution for sensitive skin Arm & Hammer - Tales of a Ranting Ginger"],"normalized_url":["http://talesofarantingginger.com/2013/08/fres
 h-laundry-solution-for-sensitive-skin-arm-hammer.html"],"created_at":["Sun, 04 Aug 2013 21:00:19 +0000"],"retweet_count":[0],"code":[200],"hops":[["http://goo.gl/DIOspt"]],"meta":{"description":["sensitive skin arm & hammer"],"charset":["UTF-8"],"content_type":["text/html"],"lang":["en-us"]},"url":["http://www.talesofarantingginger.com/2013/08/fresh-laundry-solution-for-sensitive-skin-arm-hammer.html"]},"language":{"tag":"en","confidence":100},"demographic":{"gender":"female"}}
+{"w2o":{"tags":{"topic":["Sustainability"],"brand":["ArmAndHammer"]}},"twitter":{"id":"367633815277035520","filter_level":"medium","text":"Arm &amp; Hammer Detergent Only $1.99 Starting Saturday!\n\nTime to Stock Up!!  :) ~Ava~... http://t.co/LznOl9Me9k","source":"<a href=\"http://www.facebook.com/twitter\" rel=\"nofollow\">Facebook<\/a>","domains":["fb.me"],"created_at":"Wed, 14 Aug 2013 13:08:26 +0000","links":["http://fb.me/2jIdLRYWm"],"lang":"en","user":{"location":"Ontario, Canada","statuses_count":11244,"lang":"en","url":"http://savebiglivebetter.com","id":465174690,"description":"The best Canadian deals, sales, coupons, freebies, recipes, money saving articles and more updated daily at http://SaveBigLiveBetter.com! HAPPY SAVING:)","friends_count":71,"name":"Save Big Live Better","created_at":"Mon, 16 Jan 2012 01:56:38 +0000","screen_name":"SBLBCanada","id_str":"465174690","followers_count":476,"profile_image_url":"http://a0.twimg.com/profile_images/3279225640/270245999d75d401
 c696258306991b51_normal.png","listed_count":4}},"salience":{"content":{"sentiment":3}},"klout":{"score":37},"interaction":{"schema":{"version":3},"content":"Arm &amp; Hammer Detergent Only $1.99 Starting Saturday!\n\nTime to Stock Up!!  :) ~Ava~... http://t.co/LznOl9Me9k","id":"1e304e29af34a100e0742d305e733fa6","author":{"id":465174690,"username":"SBLBCanada","name":"Save Big Live Better","link":"http://twitter.com/SBLBCanada","language":"en","avatar":"http://a0.twimg.com/profile_images/3279225640/270245999d75d401c696258306991b51_normal.png"},"source":"Facebook","link":"http://twitter.com/SBLBCanada/statuses/367633815277035520","created_at":"Wed, 14 Aug 2013 13:08:26 +0000","type":"twitter"},"links":{"title":["Timeline Photos | Facebook"],"normalized_url":["https://facebook.com/photo.php?fbid=507697515973605&l=337aea86ef"],"created_at":["Wed, 14 Aug 2013 13:08:58 +0000"],"retweet_count":[0],"code":[200],"hops":[["http://fb.me/2jIdLRYWm"]],"meta":{"charset":["UTF-8"],"content_type":[
 "text/html"],"lang":["en"]},"url":["https://www.facebook.com/photo.php?fbid=507697515973605&l=337aea86ef"]},"language":{"tag":"en","confidence":62},"demographic":{"gender":"male"}}
+{"w2o":{"tags":{"topic":["Sustainability","Scent"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":1,"entities":[{"sentiment":-2,"confident":1,"name":"Vinegar","evidence":1,"about":0,"label":"Person","themes":["funky smell","washing machine","go-to product","regular detergent","vinegar smell"],"type":"Person"}]}},"facebook":{"id":"234885799896401_583141561737488","message":"One of my fans asked me how to get the funky smell out of her washing machine. Vinegar was the go-to product for this in the old days.  Although you would need to run the load a second time with regular detergent to get the vinegar smell out.  It is possible to mix the detergent with vinegar if you want to try that.\n \nI've personally found that Arm & Hammer detergent works for me.  I used to have the same problem with some of my thick towels.  The A&H removed the smell. To avoid a washing machine smell, do the following:\n1) Make sure you clean the washing machine on a regular basis.  The easiest 
 thing to do is to run an empty load with bleach.\n2) Leave the door open on the front loader between uses (if you have small children, though, make sure it's in a room here you can close the door).\n3) Make sure that the washing machine is set on the highest speed spin cycle.  Some machines allow you to crank the spin cycle to over 1000 RPM's.  That's what you need to do.  The more effective the spin cycle, the more water that is removed and the less chance of mold and mildew.","author":{"id":"234885799896401","name":"Tipman Tim - Tips, tools and tricks for life","link":"http://www.facebook.com/profile.php?id=234885799896401","avatar":"https://graph.facebook.com/234885799896401/picture"},"source":"web","created_at":"Wed, 14 Aug 2013 17:23:45 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e3050645c92a680e066aef68cf33be0","content":"One of my fans asked me how to get the funky smell out of her washing machine. Vinegar was the go-to product for this in the old day
 s.  Although you would need to run the load a second time with regular detergent to get the vinegar smell out.  It is possible to mix the detergent with vinegar if you want to try that.\n \nI've personally found that Arm & Hammer detergent works for me.  I used to have the same problem with some of my thick towels.  The A&H removed the smell. To avoid a washing machine smell, do the following:\n1) Make sure you clean the washing machine on a regular basis.  The easiest thing to do is to run an empty load with bleach.\n2) Leave the door open on the front loader between uses (if you have small children, though, make sure it's in a room here you can close the door).\n3) Make sure that the washing machine is set on the highest speed spin cycle.  Some machines allow you to crank the spin cycle to over 1000 RPM's.  That's what you need to do.  The more effective the spin cycle, the more water that is removed and the less chance of mold and mildew.","author":{"id":"234885799896401","name":
 "Tipman Tim - Tips, tools and tricks for life","link":"http://www.facebook.com/profile.php?id=234885799896401","avatar":"https://graph.facebook.com/234885799896401/picture"},"source":"web","link":"http://www.facebook.com/234885799896401_583141561737488","subtype":"status","created_at":"Wed, 14 Aug 2013 17:24:00 +0000","type":"facebook"},"language":{"tag":"en","confidence":100},"demographic":{"gender":"male"}}
+{"w2o":{"tags":{"topic":["Sustainability","CouponUsage","LaundryDetergent"],"brand":["ArmAndHammer","Purex"]}},"salience":{"content":{"sentiment":0,"topics":[{"hits":0,"name":"Beverages","score":0.92570048570633}]}},"facebook":{"id":"100000254074556_643746722310458","message":"Ashley, that was the recipe for the powder detergent (which is amazing by the way) It won't last as long as the liquid and is more expensive.  Sorry. I didn't mean to copy that one.  Here is the liquid\nLIQUID SOAP MAKES 10 GALLONS\n? C PER LOAD ? 640 LOADS\n4 cups of Hot Tap Water\n1 Fels Naptha Soap Bar\n1 Cup Arm & Hammer Super Washing Soda\n? Cup Borax\n1 cup Purex liquid softener\nGrate soap, add to sauce pan with 4 cups of  water.  Heat and stir continually until soap dissolves & is melted.\nFill 5 gallon Bucket ? full with Hot Tap Water, Add melted soap, soda, Purex and borax.  Stir well until powder is dissolved.  Fill bucket to top with more hot water, stir, cover, and let sit overnight to thicken.  S
 tir then fill a container (used laundry bottles or empty water jugs)  ? full with soap, fill the remainder with water. Shake well.","author":{"id":"100000254074556","name":"Sharon Bedwell Schluter","link":"http://www.facebook.com/profile.php?id=100000254074556","avatar":"https://graph.facebook.com/100000254074556/picture"},"source":"web","created_at":"Fri, 09 Aug 2013 15:07:21 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e3010563ad1aa80e0660e6752dee246","content":"Ashley, that was the recipe for the powder detergent (which is amazing by the way) It won't last as long as the liquid and is more expensive.  Sorry. I didn't mean to copy that one.  Here is the liquid\nLIQUID SOAP MAKES 10 GALLONS\n? C PER LOAD ? 640 LOADS\n4 cups of Hot Tap Water\n1 Fels Naptha Soap Bar\n1 Cup Arm & Hammer Super Washing Soda\n? Cup Borax\n1 cup Purex liquid softener\nGrate soap, add to sauce pan with 4 cups of  water.  Heat and stir continually until soap dissolves & is melted.\nF
 ill 5 gallon Bucket ? full with Hot Tap Water, Add melted soap, soda, Purex and borax.  Stir well until powder is dissolved.  Fill bucket to top with more hot water, stir, cover, and let sit overnight to thicken.  Stir then fill a container (used laundry bottles or empty water jugs)  ? full with soap, fill the remainder with water. Shake well.","author":{"id":"100000254074556","name":"Sharon Bedwell Schluter","link":"http://www.facebook.com/profile.php?id=100000254074556","avatar":"https://graph.facebook.com/100000254074556/picture"},"source":"web","link":"http://www.facebook.com/100000254074556_643746722310458","subtype":"status","created_at":"Fri, 09 Aug 2013 15:07:35 +0000","type":"facebook"},"language":{"tag":"en","confidence":100},"demographic":{"gender":"unisex"}}
+{"w2o":{"tags":{"topic":["ConcentratedFormulas"],"brand":["ArmAndHammer"]}},"twitter":{"id":"359694365049896960","filter_level":"medium","text":"Missed a scoop? No problem! ARM &amp; HAMMER? Ultra Last? delivers long lasting odor control even when you can't scoop. http://t.co/eZdNss2ClQ","source":"<a href=\"http://twitter.com/tweetbutton\" rel=\"nofollow\">Tweet Button<\/a>","domains":["www.armandhammer.com"],"created_at":"Tue, 23 Jul 2013 15:19:54 +0000","links":["http://www.armandhammer.com/pet-care/cat-care/Products/arm-and-hammer-ultra-last.aspx"],"lang":"en","user":{"id":1546236864,"friends_count":82,"name":"Kyra Mitchell","created_at":"Tue, 25 Jun 2013 17:32:24 +0000","screen_name":"ArmyRebel0","id_str":"1546236864","statuses_count":14,"followers_count":10,"profile_image_url":"http://a0.twimg.com/profile_images/378800000084101648/95eff16837f6e9fd03585630e8e6b562_normal.jpeg","lang":"en"}},"salience":{"content":{"sentiment":2}},"klout":{"score":12},"interaction":{"schema":{"ver
 sion":3},"content":"Missed a scoop? No problem! ARM &amp; HAMMER? Ultra Last? delivers long lasting odor control even when you can't scoop. http://t.co/eZdNss2ClQ","id":"1e2f3ab537a0a900e074ec3e0933e560","author":{"id":1546236864,"username":"ArmyRebel0","name":"Kyra Mitchell","link":"http://twitter.com/ArmyRebel0","language":"en","avatar":"http://a0.twimg.com/profile_images/378800000084101648/95eff16837f6e9fd03585630e8e6b562_normal.jpeg"},"source":"Tweet Button","link":"http://twitter.com/ArmyRebel0/statuses/359694365049896960","created_at":"Tue, 23 Jul 2013 15:19:54 +0000","type":"twitter"},"links":{"title":["Arm & Hammer Multi-Brand - ARM & HAMMER? Ultra Last?"],"normalized_url":["http://armandhammer.com/pet-care/cat-care/Products/arm-and-hammer-ultra-last.aspx"],"created_at":["Tue, 23 Jul 2013 15:20:08 +0000"],"retweet_count":[0],"code":[200],"meta":{"keywords":[["Missed a scoop? No problem! ARM & HAMMER? Ultra Last? delivers long lasting odor control even when you can't scoop."]
 ],"description":["Missed a scoop? No problem! ARM & HAMMER? Ultra Last? delivers long lasting odor control even when you can't scoop."],"charset":["UTF-8"],"content_type":["text/html"],"lang":["unknown"]},"url":["http://www.armandhammer.com/pet-care/cat-care/Products/arm-and-hammer-ultra-la

<TRUNCATED>