Class: Scraperd::Activity

Inherits:
OpenStruct
  • Object
show all
Defined in:
lib/scraperd/activity.rb

Instance Method Summary collapse

Constructor Details

#initialize(item) ⇒ Activity

Returns a new instance of Activity.



8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/scraperd/activity.rb', line 8

def initialize(item)
  super(Hashie::Mash.new({
      id:         item[:guid].force_encoding("UTF-8"),
      title:      title_from_title(item[:title]),
      year:       year_from_title(item[:title]),
      score:      score_from_title(item[:title]),
      link:       item[:link].force_encoding("UTF-8"),
      film_link:  "http://letterboxd.com/film/#{nicetitle_from_url(item[:link])}/".force_encoding("UTF-8"),
      watched_at: watched_at_from_description(item[:description]),
      added_at:   item[:pubDate]
    })
  )      
end

Instance Method Details

#nicetitle_from_url(url) ⇒ Object



22
23
24
# File 'lib/scraperd/activity.rb', line 22

def nicetitle_from_url(url)
  url.split('/').last
end

#score_from_title(title) ⇒ Object



45
46
47
48
49
# File 'lib/scraperd/activity.rb', line 45

def score_from_title(title)
  html_score = title.split(' - ').last
  html_score.force_encoding("UTF-8")
  html_score.split(//).map{|ind_score| ind_score == "" ? 2 : 1 }.inject{|sum,x| sum + x }
end

#title_from_title(title) ⇒ Object



31
32
33
34
35
36
# File 'lib/scraperd/activity.rb', line 31

def title_from_title(title)
  title.split(' - ')[0..-2].join(' - ')
    .split(',')[0..-2].join(',')
    .strip
    .force_encoding("UTF-8")
end

#watched_at_from_description(description) ⇒ Object



26
27
28
29
# File 'lib/scraperd/activity.rb', line 26

def watched_at_from_description(description)
  string_date = description.match(/<p>Watched on (.*)<\/p>/)[1]
  Time.parse string_date
end

#year_from_title(title) ⇒ Object



38
39
40
41
42
43
# File 'lib/scraperd/activity.rb', line 38

def year_from_title(title)
  title.split(' - ')[0..-2].join(' - ')
    .split(',').last
    .strip
    .force_encoding("UTF-8")
end