simpsons_world 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +16 -0
- data/Gemfile +4 -0
- data/Guardfile +77 -0
- data/LICENSE +22 -0
- data/README.md +41 -0
- data/Rakefile +14 -0
- data/lib/data/.gitkeep +0 -0
- data/lib/data/season-1.yml +69 -0
- data/lib/data/season-10.yml +116 -0
- data/lib/data/season-11.yml +114 -0
- data/lib/data/season-12.yml +114 -0
- data/lib/data/season-13.yml +120 -0
- data/lib/data/season-14.yml +129 -0
- data/lib/data/season-15.yml +125 -0
- data/lib/data/season-16.yml +118 -0
- data/lib/data/season-17.yml +121 -0
- data/lib/data/season-18.yml +123 -0
- data/lib/data/season-19.yml +112 -0
- data/lib/data/season-2.yml +113 -0
- data/lib/data/season-20.yml +106 -0
- data/lib/data/season-21.yml +126 -0
- data/lib/data/season-22.yml +122 -0
- data/lib/data/season-23.yml +117 -0
- data/lib/data/season-24.yml +115 -0
- data/lib/data/season-25.yml +126 -0
- data/lib/data/season-26.yml +49 -0
- data/lib/data/season-3.yml +125 -0
- data/lib/data/season-4.yml +112 -0
- data/lib/data/season-5.yml +107 -0
- data/lib/data/season-6.yml +123 -0
- data/lib/data/season-7.yml +124 -0
- data/lib/data/season-8.yml +128 -0
- data/lib/data/season-9.yml +123 -0
- data/lib/simpsons_world/railtie.rb +9 -0
- data/lib/simpsons_world/scrape.rb +28 -0
- data/lib/simpsons_world/season.rb +36 -0
- data/lib/simpsons_world/version.rb +3 -0
- data/lib/simpsons_world/view_helpers.rb +12 -0
- data/lib/simpsons_world.rb +13 -0
- data/simpsons_world.gemspec +28 -0
- data/spec/data/.gitkeep +0 -0
- data/spec/simpsons_world_spec.rb +125 -0
- data/spec/spec_helper.rb +4 -0
- data/spec/support/helpers.rb +9 -0
- metadata +191 -0
@@ -0,0 +1,123 @@
|
|
1
|
+
---
|
2
|
+
- 9
|
3
|
+
- 1:
|
4
|
+
:title: The City of New York vs. Homer Simpson
|
5
|
+
:description: The Simpsons journey to New York City to retrieve the family car.
|
6
|
+
:url: "/video/279160899882"
|
7
|
+
2:
|
8
|
+
:title: The Principal and the Pauper
|
9
|
+
:description: A stranger claims that Principal Skinner is an impostor.
|
10
|
+
:url: "/video/279164995863"
|
11
|
+
3:
|
12
|
+
:title: Lisa's Sax
|
13
|
+
:description: Homer and Marge recount how Lisa got her saxophone.
|
14
|
+
:url: "/video/279743555749"
|
15
|
+
4:
|
16
|
+
:title: Treehouse of Horror VIII
|
17
|
+
:description: Homer battles killer mutants after Springfield is destroyed by a
|
18
|
+
nuclear blast; a matter- transportation device melds Bart with a housefly; in
|
19
|
+
Colonial times, Marge is accused of being a witch.
|
20
|
+
:url: "/video/279170627965"
|
21
|
+
5:
|
22
|
+
:title: The Cartridge Family
|
23
|
+
:description: Homer purchases a handgun to protect his family.
|
24
|
+
:url: "/video/302813251779"
|
25
|
+
6:
|
26
|
+
:title: Bart Star
|
27
|
+
:description: Homer becomes coach of the Springfield Pee Wee Football team and
|
28
|
+
appoints Bart as starting quarterback.
|
29
|
+
:url: "/video/277030979963"
|
30
|
+
7:
|
31
|
+
:title: The Two Mrs. Nahasapeemapetilons
|
32
|
+
:description: In an effort to annul an arranged marriage, Apu tells his mother
|
33
|
+
he wed Marge.
|
34
|
+
:url: "/video/279177283545"
|
35
|
+
8:
|
36
|
+
:title: Lisa the Skeptic
|
37
|
+
:description: Townspeople believe Lisa has unearthed the fossilized remains of
|
38
|
+
an angel.
|
39
|
+
:url: "/video/279180355540"
|
40
|
+
9:
|
41
|
+
:title: Realty Bites
|
42
|
+
:description: Marge gets a job with a realty firm, but her honesty costs her lucrative
|
43
|
+
sales. Homer purchases a 60s hot-rod convertible at a police auction.
|
44
|
+
:url: "/video/280404547525"
|
45
|
+
10:
|
46
|
+
:title: Miracle on Evergreen Terrace
|
47
|
+
:description: People throughout Springfield open their hearts and wallets after
|
48
|
+
Bart claims the family's Christmas presents were stolen by a burglar.
|
49
|
+
:url: "/video/306881091696"
|
50
|
+
11:
|
51
|
+
:title: All Singing, All Dancing
|
52
|
+
:description: The Simpsons recall their many musical moments from seasons past.
|
53
|
+
:url: "/video/294808131518"
|
54
|
+
12:
|
55
|
+
:title: Bart Carny
|
56
|
+
:description: A carnival worker and his son move in with the Simpsons after Homer
|
57
|
+
costs them their jobs.
|
58
|
+
:url: "/video/302818371931"
|
59
|
+
13:
|
60
|
+
:title: The Joy of Sect
|
61
|
+
:description: Marge tries her hand at deprogramming after her family is brainwashed
|
62
|
+
by a religious cult.
|
63
|
+
:url: "/video/299627075941"
|
64
|
+
14:
|
65
|
+
:title: Das Bus
|
66
|
+
:description: Bart, Lisa and their classmates fight for survival when they become
|
67
|
+
stranded on a remote island. Homer starts his own business on the Internet.
|
68
|
+
:url: "/video/307093571584"
|
69
|
+
15:
|
70
|
+
:title: The Last Temptation of Krust
|
71
|
+
:description: Krusty shuns his old routines in favor of edgier material and suddenly
|
72
|
+
becomes the hottest comic in show business.
|
73
|
+
:url: "/video/294812739638"
|
74
|
+
16:
|
75
|
+
:title: Dumbbell Indemnity
|
76
|
+
:description: When Moe goes broke romancing his new love, he enlists Homer in
|
77
|
+
a scheme to collect on an insurance policy.
|
78
|
+
:url: "/video/283910211639"
|
79
|
+
17:
|
80
|
+
:title: Lisa the Simpson
|
81
|
+
:description: Lisa fears she is genetically predisposed to lose her intelligence.
|
82
|
+
Apu uses a frozen Jasper as a tourist attraction.
|
83
|
+
:url: "/video/299651139676"
|
84
|
+
18:
|
85
|
+
:title: This Little Wiggy
|
86
|
+
:description: Bart is appalled when Marge pairs him with Ralph Wiggum.
|
87
|
+
:url: "/video/299639875678"
|
88
|
+
19:
|
89
|
+
:title: Simpson Tide
|
90
|
+
:description: Homer becomes the captain of a Navy submarine. Bart gets his ear
|
91
|
+
pierced.
|
92
|
+
:url: "/video/302809667837"
|
93
|
+
20:
|
94
|
+
:title: The Trouble with Trillions
|
95
|
+
:description: When a tax audit lands him in hot water, Homer goes undercover for
|
96
|
+
the government and attempts to retrieve a trillion dollar note from Mr. Burns.
|
97
|
+
:url: "/video/299644483816"
|
98
|
+
21:
|
99
|
+
:title: Girly Edition
|
100
|
+
:description: Bart attempts to upstage Lisa when the pair co-host a children's
|
101
|
+
news program. Homer obtains a helper monkey.
|
102
|
+
:url: "/video/299672131928"
|
103
|
+
22:
|
104
|
+
:title: Trash of the Titans
|
105
|
+
:description: Homer enters the race for Sanitation Commissioner after garbage
|
106
|
+
men refuse to collect his trash.
|
107
|
+
:url: "/video/307101763818"
|
108
|
+
23:
|
109
|
+
:title: King of the Hill
|
110
|
+
:description: After improving his physique, Homer attempts to climb a treacherous
|
111
|
+
mountain.
|
112
|
+
:url: "/video/283916867598"
|
113
|
+
24:
|
114
|
+
:title: Lost Our Lisa
|
115
|
+
:description: Lisa gets lost in an unfamiliar part of town while searching for
|
116
|
+
a museum. Bart adheres novelties to his face only to discover they cannot be
|
117
|
+
removed.
|
118
|
+
:url: "/video/288133187527"
|
119
|
+
25:
|
120
|
+
:title: Natural Born Kissers
|
121
|
+
:description: Homer and Marge discover the secret to reigniting their sex life.
|
122
|
+
Bart and Lisa hunt for hidden treasure using Grampa's old mine sweeper.
|
123
|
+
:url: "/video/307099715600"
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module SimpsonsWorld
|
2
|
+
BASE_URL = "http://www.simpsonsworld.com"
|
3
|
+
EPISODES_URL = "/watch/episodes"
|
4
|
+
|
5
|
+
class Scrape
|
6
|
+
require 'nokogiri'
|
7
|
+
require 'open-uri'
|
8
|
+
|
9
|
+
def self.all
|
10
|
+
doc = Nokogiri::HTML(open BASE_URL << EPISODES_URL)
|
11
|
+
seasons = doc.css(".chapters-wrapper")
|
12
|
+
seasons.each_with_index do |season, i|
|
13
|
+
number = season.attr 'data-season-number'
|
14
|
+
episodes = season.css("ul.items > li").map.with_index(1) { |episode, j|
|
15
|
+
[ j,
|
16
|
+
{
|
17
|
+
title: episode.css('.category-thumb-expanded .thumbnail-text').text,
|
18
|
+
description: episode.css('.category-thumb-expanded .thumbnail-extra-text').text,
|
19
|
+
url: episode.css('a')[0]['href']
|
20
|
+
}
|
21
|
+
]
|
22
|
+
}.to_h
|
23
|
+
SimpsonsWorld::Season.new(number, episodes)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
module SimpsonsWorld
|
2
|
+
class Season
|
3
|
+
require 'yaml'
|
4
|
+
attr_reader :number, :episodes
|
5
|
+
|
6
|
+
def initialize number, episodes
|
7
|
+
@number, @episodes, @@all = number.to_i, episodes, nil
|
8
|
+
save
|
9
|
+
end
|
10
|
+
|
11
|
+
def save
|
12
|
+
File.open(self.class.to_file_path(@number), 'w') do |file|
|
13
|
+
file.write [@number, @episodes].to_yaml
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
class << self
|
18
|
+
def all
|
19
|
+
@@all ||= init
|
20
|
+
end
|
21
|
+
|
22
|
+
def init
|
23
|
+
Dir.glob(to_file_path("*")).map { |file| YAML.load_file(file) }.to_h
|
24
|
+
end
|
25
|
+
|
26
|
+
def find number
|
27
|
+
all[number]
|
28
|
+
end
|
29
|
+
|
30
|
+
def to_file_path number
|
31
|
+
File.join(DATA_DIR, "season-#{number}.yml")
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
module SimpsonsWorld
|
2
|
+
module ViewHelpers
|
3
|
+
|
4
|
+
def simpsons_world_episode_url season:nil, episode:
|
5
|
+
season = 1 + Season.all.take_while { |k, episodes|
|
6
|
+
episode -= episodes.size if episode > episodes.size
|
7
|
+
}.size unless season
|
8
|
+
"#{BASE_URL}#{Season.all[season][episode][:url]}"
|
9
|
+
end
|
10
|
+
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require "simpsons_world/version"
|
2
|
+
require 'simpsons_world/season'
|
3
|
+
require 'simpsons_world/scrape'
|
4
|
+
require 'simpsons_world/view_helpers'
|
5
|
+
require 'pry'
|
6
|
+
|
7
|
+
module SimpsonsWorld
|
8
|
+
DATA_DIR = ENV['environment'] && ENV['environment'] == 'test' ?
|
9
|
+
File.join(File.dirname(__FILE__), '..', 'spec', 'data') :
|
10
|
+
File.join(File.dirname(__FILE__), 'data')
|
11
|
+
end
|
12
|
+
|
13
|
+
require 'simpsons_world/railtie' if defined?(Rails)
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'simpsons_world/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "simpsons_world"
|
8
|
+
spec.version = SimpsonsWorld::VERSION
|
9
|
+
spec.authors = ["mcianni"]
|
10
|
+
spec.email = ["mcianni@gmail.com"]
|
11
|
+
spec.summary = %q{Link to episodes on the Simpsons World website.}
|
12
|
+
spec.description = %q{Generate a full url from an episode number to a Simpsons episode streaming on SimpsonsWorld.com.}
|
13
|
+
spec.homepage = "https://github.com/mcianni/simpsonsworld"
|
14
|
+
spec.license = "MIT"
|
15
|
+
|
16
|
+
spec.files = `git ls-files -z`.split("\x0")
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ["lib"]
|
20
|
+
|
21
|
+
spec.add_development_dependency "bundler", "~> 1.7"
|
22
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
23
|
+
spec.add_development_dependency "nokogiri"
|
24
|
+
spec.add_development_dependency "rspec"
|
25
|
+
spec.add_development_dependency "rspec-nc"
|
26
|
+
spec.add_development_dependency "guard"
|
27
|
+
spec.add_development_dependency "guard-rspec"
|
28
|
+
end
|
data/spec/data/.gitkeep
ADDED
File without changes
|
@@ -0,0 +1,125 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'fileutils'
|
3
|
+
|
4
|
+
describe SimpsonsWorld do
|
5
|
+
describe "test suite" do
|
6
|
+
it 'should not touch the real data dir' do
|
7
|
+
expect( SimpsonsWorld::DATA_DIR ).to include("/spec/")
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
describe SimpsonsWorld do
|
13
|
+
include Helpers
|
14
|
+
include SimpsonsWorld::ViewHelpers
|
15
|
+
|
16
|
+
EPISODE_COUNT = 5
|
17
|
+
|
18
|
+
let(:season_one_data) { season_data }
|
19
|
+
let(:season_two_data) { season_data(season: 2) }
|
20
|
+
let(:season_three_data) { season_data(season: 3) }
|
21
|
+
|
22
|
+
def create_season data=nil
|
23
|
+
@season = SimpsonsWorld::Season.new(*(data || season_one_data))
|
24
|
+
end
|
25
|
+
|
26
|
+
def purge_test_data
|
27
|
+
FileUtils.rm_rf(Dir.glob(File.join(File.dirname(__FILE__), "/data/*.yml")))
|
28
|
+
end
|
29
|
+
|
30
|
+
#it 'successfully parses the current markup' do
|
31
|
+
# expect{ SimpsonsWorld::Scrape.all }.to_not raise_error
|
32
|
+
#end
|
33
|
+
|
34
|
+
it 'should have a legit fixture' do
|
35
|
+
expect { create_season }.to_not raise_error
|
36
|
+
end
|
37
|
+
|
38
|
+
before(:each) do
|
39
|
+
purge_test_data
|
40
|
+
create_season
|
41
|
+
end
|
42
|
+
|
43
|
+
it 'should set the season number' do
|
44
|
+
expect( @season.number ).to eql(1)
|
45
|
+
end
|
46
|
+
|
47
|
+
it 'should set the episodes' do
|
48
|
+
expect( @season.episodes ).not_to be_nil
|
49
|
+
end
|
50
|
+
|
51
|
+
it "should set #{EPISODE_COUNT} episodes" do
|
52
|
+
expect( @season.episodes.count ).to eql(EPISODE_COUNT)
|
53
|
+
end
|
54
|
+
|
55
|
+
it "should save the data to file" do
|
56
|
+
expect File.exists?(SimpsonsWorld::Season::to_file_path(@season.number))
|
57
|
+
end
|
58
|
+
|
59
|
+
it "should save multiple seasons to multiple files" do
|
60
|
+
create_season(season_two_data)
|
61
|
+
expect( Dir[File.join(SimpsonsWorld::DATA_DIR, "season-*.yml")].count ).to eql 2
|
62
|
+
end
|
63
|
+
|
64
|
+
it "should load the data on demand when looking for one season" do
|
65
|
+
expect( SimpsonsWorld::Season.find(1) ).to_not be(nil)
|
66
|
+
end
|
67
|
+
|
68
|
+
it "should load the data on demand when requesting all seasons" do
|
69
|
+
expect( SimpsonsWorld::Season.all ).to_not be(nil)
|
70
|
+
end
|
71
|
+
|
72
|
+
it "shouldn't reload the data once it's been loaded" do
|
73
|
+
expect( SimpsonsWorld::Season.all.object_id ).to eql( SimpsonsWorld::Season.all.object_id )
|
74
|
+
end
|
75
|
+
|
76
|
+
it "should reload the data if a new season has been added" do
|
77
|
+
obj_id = SimpsonsWorld::Season.all.object_id
|
78
|
+
create_season(season_two_data)
|
79
|
+
expect( SimpsonsWorld::Season.all.object_id ).not_to eql( obj_id )
|
80
|
+
end
|
81
|
+
|
82
|
+
it "should not find a non-existent season" do
|
83
|
+
expect( SimpsonsWorld::Season.find(50) ).to be(nil)
|
84
|
+
end
|
85
|
+
|
86
|
+
it 'should return the correct episode' do
|
87
|
+
expect( @season.episodes[1] ).to eql(season_one_data[1][1])
|
88
|
+
end
|
89
|
+
|
90
|
+
it 'should set the correct path' do
|
91
|
+
expect( @season.episodes[1][:url] ).to eql("/path/s1-e1")
|
92
|
+
end
|
93
|
+
|
94
|
+
describe "url finders" do
|
95
|
+
before(:all) do
|
96
|
+
@view = Object.new
|
97
|
+
@view.extend(SimpsonsWorld::ViewHelpers)
|
98
|
+
end
|
99
|
+
|
100
|
+
it 'should return the correct url for episode number' do
|
101
|
+
expect( @view.simpsons_world_episode_url(episode: 1) ).to \
|
102
|
+
eql("http://www.simpsonsworld.com/path/s1-e1")
|
103
|
+
end
|
104
|
+
|
105
|
+
it 'should return the correct url for season and episode number' do
|
106
|
+
expect( @view.simpsons_world_episode_url(season: 1, episode: 1) ).to match(/s1-e1/)
|
107
|
+
end
|
108
|
+
|
109
|
+
it 'should return the correct url for a season 2 episode' do
|
110
|
+
create_season(season_two_data)
|
111
|
+
expect( @view.simpsons_world_episode_url(episode: 6) ).to match(/s2-e1/)
|
112
|
+
end
|
113
|
+
|
114
|
+
it 'should return the correct url for a season 1 finale' do
|
115
|
+
create_season(season_two_data)
|
116
|
+
expect( @view.simpsons_world_episode_url(episode: 5) ).to match(/s1-e5/)
|
117
|
+
end
|
118
|
+
|
119
|
+
it 'should return the correct url for a season 3 episode' do
|
120
|
+
create_season(season_two_data) and create_season(season_three_data)
|
121
|
+
expect( @view.simpsons_world_episode_url(episode: 14) ).to match(/s3-e4/)
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,191 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: simpsons_world
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- mcianni
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-01-21 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.7'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.7'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '10.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '10.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: nokogiri
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rspec
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rspec-nc
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: guard
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: guard-rspec
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
description: Generate a full url from an episode number to a Simpsons episode streaming
|
112
|
+
on SimpsonsWorld.com.
|
113
|
+
email:
|
114
|
+
- mcianni@gmail.com
|
115
|
+
executables: []
|
116
|
+
extensions: []
|
117
|
+
extra_rdoc_files: []
|
118
|
+
files:
|
119
|
+
- ".gitignore"
|
120
|
+
- Gemfile
|
121
|
+
- Guardfile
|
122
|
+
- LICENSE
|
123
|
+
- README.md
|
124
|
+
- Rakefile
|
125
|
+
- lib/data/.gitkeep
|
126
|
+
- lib/data/season-1.yml
|
127
|
+
- lib/data/season-10.yml
|
128
|
+
- lib/data/season-11.yml
|
129
|
+
- lib/data/season-12.yml
|
130
|
+
- lib/data/season-13.yml
|
131
|
+
- lib/data/season-14.yml
|
132
|
+
- lib/data/season-15.yml
|
133
|
+
- lib/data/season-16.yml
|
134
|
+
- lib/data/season-17.yml
|
135
|
+
- lib/data/season-18.yml
|
136
|
+
- lib/data/season-19.yml
|
137
|
+
- lib/data/season-2.yml
|
138
|
+
- lib/data/season-20.yml
|
139
|
+
- lib/data/season-21.yml
|
140
|
+
- lib/data/season-22.yml
|
141
|
+
- lib/data/season-23.yml
|
142
|
+
- lib/data/season-24.yml
|
143
|
+
- lib/data/season-25.yml
|
144
|
+
- lib/data/season-26.yml
|
145
|
+
- lib/data/season-3.yml
|
146
|
+
- lib/data/season-4.yml
|
147
|
+
- lib/data/season-5.yml
|
148
|
+
- lib/data/season-6.yml
|
149
|
+
- lib/data/season-7.yml
|
150
|
+
- lib/data/season-8.yml
|
151
|
+
- lib/data/season-9.yml
|
152
|
+
- lib/simpsons_world.rb
|
153
|
+
- lib/simpsons_world/railtie.rb
|
154
|
+
- lib/simpsons_world/scrape.rb
|
155
|
+
- lib/simpsons_world/season.rb
|
156
|
+
- lib/simpsons_world/version.rb
|
157
|
+
- lib/simpsons_world/view_helpers.rb
|
158
|
+
- simpsons_world.gemspec
|
159
|
+
- spec/data/.gitkeep
|
160
|
+
- spec/simpsons_world_spec.rb
|
161
|
+
- spec/spec_helper.rb
|
162
|
+
- spec/support/helpers.rb
|
163
|
+
homepage: https://github.com/mcianni/simpsonsworld
|
164
|
+
licenses:
|
165
|
+
- MIT
|
166
|
+
metadata: {}
|
167
|
+
post_install_message:
|
168
|
+
rdoc_options: []
|
169
|
+
require_paths:
|
170
|
+
- lib
|
171
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
172
|
+
requirements:
|
173
|
+
- - ">="
|
174
|
+
- !ruby/object:Gem::Version
|
175
|
+
version: '0'
|
176
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - ">="
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: '0'
|
181
|
+
requirements: []
|
182
|
+
rubyforge_project:
|
183
|
+
rubygems_version: 2.4.5
|
184
|
+
signing_key:
|
185
|
+
specification_version: 4
|
186
|
+
summary: Link to episodes on the Simpsons World website.
|
187
|
+
test_files:
|
188
|
+
- spec/data/.gitkeep
|
189
|
+
- spec/simpsons_world_spec.rb
|
190
|
+
- spec/spec_helper.rb
|
191
|
+
- spec/support/helpers.rb
|