about summary refs log tree commit diff stats
path: root/lib/tasks/tasks.rake
blob: 91e196fde24868d4b326acb0a0261986ab45d9ac (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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