     (swap! video-id->message-id assoc youtube-id id)
     youtube-id))
 
-(s/def :common-specs.internet/email (s/and string? #(re-find #"\w+@\w+\.\w+" %)))
-
-(s/def :common-specs.auth/password (s/and string? (comp #(-> % (>= 8)) count)))
-(s/def :common-specs.auth/password-confirmation :common-specs.auth/password)
-
-(s/def :common-specs.auth/password+confirmation
-  (s/and (s/keys :req [:common-specs.auth/password :common-specs.auth/password-confirmation])
-         (fn [{:common-specs.auth/keys [password password-confirmation]}]
-           (= password password-confirmation))))
-
-(s/def ::new-user
-  (s/merge (s/keys :req [:common-specs.internet/email])
-           :common-specs.auth/password+confirmation))
-
 (defn youtube-queue-ids [options]
   (go
-    (->> (gmail-messages options) <!
+    (->> (gmail-messages {::gmail-query "from:noreply@youtube.com is:unread"}) <!
          (map :id)
          (distinct)
          (map #(assoc options :gmail.message/id %))

(s/def :youtube.video/dislike-count nat-int?)
(s/def :youtube.video/comment-count nat-int?)

(s/def :gmail.label/id string?)
(s/def :gmail.label/name string?)
(s/def :gmail.label/label-list-visibility #{"labelHide" "labelShow" "labelShowIfUnread"})
(s/def :gmail.label/message-list-visibility #{"show" "hide"})
(s/def :gmail.label/type #{"user" "system"})

(s/def :gmail.filter/id string?)
(s/def :gmail.filter.criteria/from string?)
(s/def :gmail.filter.criteria/to string?)
(s/def :gmail.filter.criteria/subject string?)
(s/def :gmail.filter.criteria/query string?)
(s/def :gmail.filter.criteria/negated-query string?)
(s/def :gmail.filter.criteria/has-attachment boolean?)
(s/def :gmail.filter.criteria/exclude-chats boolean?)
(s/def :gmail.filter.criteria/size nat-int?)
(s/def :gmail.filter.criteria/size-comparison string?)
(s/def :gmail.filter.action/add-label-ids (s/coll-of :gmail.label/id))
(s/def :gmail.filter.action/remove-label-ids (s/coll-of :gmail.label/id))

(defn map->flatten-ns [ns m]
  (reduce

     (.setQueryData uri (make-query query))
     (.toString uri))))

(defn gmail-messages [{::keys [gmail-query]}]
  (go
    (-> (fetch (api-uri "gmail/v1/users/me/messages" [[:includeSpamTrash false]
                                                      [:q gmail-query]]))
        <! :messages)))

(defn gmail-message [{:gmail.message/keys [id]}]
  (fetch (api-uri (str "gmail/v1/users/me/messages/" id) [])))

(s/fdef gmail-message
  :args (s/cat :request (s/keys :req [:gmail.message/id])))

(defn extract-youtube-id [msg]
  (if-let [[_ id] (re-find #"youtube\.com/watch\?v=([^&]+)" msg)]
