filmaffinity 0.0.3 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +81 -0
- data/filmaffinity.gemspec +1 -1
- data/lib/constants/constants.rb +19 -0
- data/lib/filmaffinity.rb +2 -0
- data/lib/filmaffinity/movie.rb +1 -1
- data/lib/filmaffinity/search.rb +1 -1
- data/lib/filmaffinity/top.rb +44 -0
- data/spec/filmaffinity/top_spec.rb +54 -0
- metadata +4 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8902c8713ff5695c57f80e2e44ba3b770b9041cd
|
4
|
+
data.tar.gz: f366e254a0e4ba6ac495af6bd25adc6b7f9906d8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5337977d4d3a5bd3f7a666d8f9334cb6f9ae5cd587f4ac02837e68267c14ff32f797100d73f7bffa2be99d322f31fc68e7cdaf11df4830cdf60eb6da2d82fcef
|
7
|
+
data.tar.gz: 0c258a0e379f73c8e7dd135b61bb2da5215f38773e3d76cf2a78beee9c1c552087c1442b2117c6a1b48a35c93445a3fd60969a3a315c9b75a7275bc1c7297e06
|
data/README.md
CHANGED
@@ -4,8 +4,89 @@
|
|
4
4
|
|
5
5
|
The filmaffinity gem allows you to easy access publicly available data from Filmaffinity.com in spanish.
|
6
6
|
|
7
|
+
## Features
|
8
|
+
|
9
|
+
- ```FilmAffinity::Search.new title``` Search movies for a title
|
10
|
+
- ```FilmAffinity::Movie.new id, title``` Retrieve complete movie info
|
11
|
+
- ```FilmAffinity::Top.new``` Retrieve the Top 30
|
12
|
+
- ```FilmAffinity::Top.new options``` Retrieve the Top with the given options
|
13
|
+
|
14
|
+
## Documentation
|
15
|
+
|
16
|
+
##### FilmAffinity::Top options
|
17
|
+
The options hash could include:
|
18
|
+
```
|
19
|
+
{
|
20
|
+
:genre => "AC",
|
21
|
+
:country => "DE",
|
22
|
+
:from_year => 2014,
|
23
|
+
:to_year => 2016,
|
24
|
+
:no_doc => true,
|
25
|
+
:no_tv => true
|
26
|
+
}
|
27
|
+
```
|
28
|
+
##### :genre
|
29
|
+
- "AC" Action
|
30
|
+
- "AV" Adventure
|
31
|
+
- "AN" Animation
|
32
|
+
- "CO" Comedy
|
33
|
+
- "DO" Documentary
|
34
|
+
- "DR" Drama
|
35
|
+
- "FAN" Fantasy
|
36
|
+
- "F-N" Film-Noir
|
37
|
+
- "TE" Horror
|
38
|
+
- "INF" Kids
|
39
|
+
- "MU" Musical
|
40
|
+
- "INT" Mystery
|
41
|
+
- "RO" Romance
|
42
|
+
- "C-F" Sci-Fi
|
43
|
+
- "TH" Thriller
|
44
|
+
- "TV_SE" TV Series
|
45
|
+
- "DESC" Unknown
|
46
|
+
- "BE" War
|
47
|
+
- "WE" Western
|
48
|
+
|
49
|
+
##### :country
|
50
|
+
2-letter code supplied by the ISO
|
51
|
+
|
52
|
+
##### :no_doc
|
53
|
+
```true``` to avoid documentaries
|
54
|
+
|
55
|
+
##### :no_tv
|
56
|
+
```true``` to avoid TV series
|
57
|
+
|
58
|
+
|
7
59
|
## Examples
|
8
60
|
|
61
|
+
### Top:
|
62
|
+
#Top FilmAffinity ever
|
63
|
+
top = FilmAffinity::Top.new
|
64
|
+
|
65
|
+
top.movies
|
66
|
+
#=> [<FilmAffinity::Movie>
|
67
|
+
<FilmAffinity::Movie>
|
68
|
+
<FilmAffinity::Movie>
|
69
|
+
...]
|
70
|
+
|
71
|
+
search.movies.first
|
72
|
+
#=> #<FilmAffinity::Movie>
|
73
|
+
|
74
|
+
#Top FilmAffinity with options
|
75
|
+
options = {
|
76
|
+
:genre => "AN",
|
77
|
+
:no_tv => true
|
78
|
+
}
|
79
|
+
top = FilmAffinity::Top.new options
|
80
|
+
|
81
|
+
top.movies
|
82
|
+
#=> [<FilmAffinity::Movie>
|
83
|
+
<FilmAffinity::Movie>
|
84
|
+
<FilmAffinity::Movie>
|
85
|
+
...]
|
86
|
+
|
87
|
+
search.movies.first
|
88
|
+
#=> #<FilmAffinity::Movie>
|
89
|
+
|
9
90
|
### Search:
|
10
91
|
|
11
92
|
search = FilmAffinity::Search.new("Padrino")
|
data/filmaffinity.gemspec
CHANGED
@@ -0,0 +1,19 @@
|
|
1
|
+
module Constants
|
2
|
+
def self.query_params
|
3
|
+
{
|
4
|
+
:genre => "genre=%s&",
|
5
|
+
:country => "country=%s&",
|
6
|
+
:from_year => "fromyear=%i&",
|
7
|
+
:to_year => "toyear=%i&",
|
8
|
+
:no_doc => "nodoc&",
|
9
|
+
:no_tv => "notvse&",
|
10
|
+
}
|
11
|
+
end
|
12
|
+
def self.urls
|
13
|
+
{
|
14
|
+
:top => "http://www.filmaffinity.com/es/topgen.php%s",
|
15
|
+
:search_by_title => "http://www.filmaffinity.com/es/search.php?stext=%s&stype=title",
|
16
|
+
:movie => "http://www.filmaffinity.com/es/film%i.html"
|
17
|
+
}
|
18
|
+
end
|
19
|
+
end
|
data/lib/filmaffinity.rb
CHANGED
data/lib/filmaffinity/movie.rb
CHANGED
data/lib/filmaffinity/search.rb
CHANGED
data/lib/filmaffinity/top.rb
CHANGED
@@ -0,0 +1,44 @@
|
|
1
|
+
require "cgi"
|
2
|
+
|
3
|
+
module FilmAffinity
|
4
|
+
class Top
|
5
|
+
def initialize options = nil
|
6
|
+
@options = options
|
7
|
+
end
|
8
|
+
|
9
|
+
def movies
|
10
|
+
@movies ||= parse_movies
|
11
|
+
end
|
12
|
+
|
13
|
+
def document_html
|
14
|
+
@document_html ||= Nokogiri::HTML(self.generate_html)
|
15
|
+
end
|
16
|
+
|
17
|
+
def generate_html
|
18
|
+
open(Constants.urls[:top] % query_options)
|
19
|
+
end
|
20
|
+
|
21
|
+
def query_options
|
22
|
+
query_options = String.new
|
23
|
+
if @options
|
24
|
+
query_options += "?"
|
25
|
+
@options.each do |key,value|
|
26
|
+
query_options += Constants.query_params[key] % value
|
27
|
+
end
|
28
|
+
end
|
29
|
+
query_options.gsub(/\&$/,"")
|
30
|
+
end
|
31
|
+
|
32
|
+
def parse_movies
|
33
|
+
movies = []
|
34
|
+
document_html.search(".movie-card.movie-card-1").each do |movie_card|
|
35
|
+
id = movie_card["data-movie-id"].to_i
|
36
|
+
title = movie_card.search(".mc-title a").first.content.strip
|
37
|
+
movie = FilmAffinity::Movie.new id, title
|
38
|
+
movies << movie
|
39
|
+
end
|
40
|
+
movies
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
require_relative "../spec_helper"
|
2
|
+
|
3
|
+
describe "FilmAffinity::Top" do
|
4
|
+
|
5
|
+
describe "#create_document_html" do
|
6
|
+
subject(:top) { FilmAffinity::Search.new("truman") }
|
7
|
+
|
8
|
+
it "#create_document_html" do
|
9
|
+
document_html = top.document_html
|
10
|
+
expect(document_html).to be_an(Nokogiri::HTML::Document)
|
11
|
+
end
|
12
|
+
|
13
|
+
end
|
14
|
+
|
15
|
+
describe "#movies" do
|
16
|
+
context "no options" do
|
17
|
+
subject(:top) { FilmAffinity::Top.new }
|
18
|
+
it "should return an array" do
|
19
|
+
movies = top.movies
|
20
|
+
expect(movies).to be_an(Array)
|
21
|
+
end
|
22
|
+
it "should return just FilmAffinity::Movie objects only" do
|
23
|
+
movies = top.movies
|
24
|
+
movies.each { |movie| expect(movie).to be_an(FilmAffinity::Movie) }
|
25
|
+
end
|
26
|
+
it "should include 'El Padrino'" do
|
27
|
+
movies = top.movies
|
28
|
+
el_padrino_movie = FilmAffinity::Movie.new 809297, "El padrino"
|
29
|
+
expect(movies).to include_movie(el_padrino_movie)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
context "with options" do
|
33
|
+
options = {
|
34
|
+
:genre => "BE",
|
35
|
+
:country => "DE"
|
36
|
+
}
|
37
|
+
subject(:top) { FilmAffinity::Top.new options }
|
38
|
+
it "should return an array" do
|
39
|
+
movies = top.movies
|
40
|
+
expect(movies).to be_an(Array)
|
41
|
+
end
|
42
|
+
it "should return just FilmAffinity::Movie objects only" do
|
43
|
+
movies = top.movies
|
44
|
+
movies.each { |movie| expect(movie).to be_an(FilmAffinity::Movie) }
|
45
|
+
end
|
46
|
+
it "should include 'Hijos del Tercer Reich (TV)'" do
|
47
|
+
movies = top.movies
|
48
|
+
hijos_del_tercer_reich_movie = FilmAffinity::Movie.new 831118, "Hijos del Tercer Reich (TV)"
|
49
|
+
expect(movies).to include_movie(hijos_del_tercer_reich_movie)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: filmaffinity
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Santos, Oriol Bellido
|
@@ -64,6 +64,7 @@ files:
|
|
64
64
|
- README.md
|
65
65
|
- Rakefile
|
66
66
|
- filmaffinity.gemspec
|
67
|
+
- lib/constants/constants.rb
|
67
68
|
- lib/filmaffinity.rb
|
68
69
|
- lib/filmaffinity/movie.rb
|
69
70
|
- lib/filmaffinity/search.rb
|
@@ -71,6 +72,7 @@ files:
|
|
71
72
|
- spec/filmaffinity/matchers/include-movie.rb
|
72
73
|
- spec/filmaffinity/movie_spec.rb
|
73
74
|
- spec/filmaffinity/search_spec.rb
|
75
|
+
- spec/filmaffinity/top_spec.rb
|
74
76
|
- spec/spec_helper.rb
|
75
77
|
homepage: https://github.com/davidsantosmerino/filmaffinity-gem
|
76
78
|
licenses:
|
@@ -100,5 +102,6 @@ test_files:
|
|
100
102
|
- spec/filmaffinity/matchers/include-movie.rb
|
101
103
|
- spec/filmaffinity/movie_spec.rb
|
102
104
|
- spec/filmaffinity/search_spec.rb
|
105
|
+
- spec/filmaffinity/top_spec.rb
|
103
106
|
- spec/spec_helper.rb
|
104
107
|
has_rdoc:
|