require 'net/http' namespace :thoughts do desc "Email a review of the last day's upvotes" task :email_upvote_report => :environment do votes = Vote.where("created_at > ?", 1.day.ago).where(upvote: 1).all unless votes.empty? VoteMailer.with(votes: votes).daily_report_email.deliver end end desc "Refresh the recently listened tracks" task :refresh_scrobbles => :environment do Scrobble.destroy_all api_key = Rails.application.credentials.lastfm_api_key url = URI.parse("http://ws.audioscrobbler.com/2.0/?method=user.getrecenttracks&user=fefferburbia&api_key=#{api_key}&format=json") req = Net::HTTP::Get.new(url.to_s) res = Net::HTTP.start(url.host, url.port) {|http| http.request(req) } output = JSON.parse(res.body) items = output["recenttracks"]["track"].map {|p| [p["name"], p["artist"]["#text"], p["album"]["#text"], p["image"][2]["#text"]]}.sort.uniq items.each do |item| Scrobble.create!(title: item[0], artist: item[1], album: item[2], image: item[3]) end end end