retro_casts 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/exe/retrocasts +1 -1
- data/lib/retro_casts.rb +19 -13
- data/lib/retro_casts/episode.rb +9 -0
- data/lib/retro_casts/rails_casts.rb +26 -47
- data/lib/retro_casts/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0887e40856e01457973f7ed69e1a87de193486ff
|
4
|
+
data.tar.gz: 85c8c20e982647e25aeeecc5aed2220b0f2806bc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 67c77b0e69c56f4761da8ad0379e07a52ce9e038af18d646fd070ea8a49ac107238ef4287f762209facffd93d024180de378e2412730c27fe45b9fd4a91ead20
|
7
|
+
data.tar.gz: abcbfd8f394adf23e6eefd6979614a26f32bfef9e2c2be333478afd6487d56e65ca379d2b5c65838428adf46e97e32a0ddc32a642e400c1b21422c49d336eeed
|
data/exe/retrocasts
CHANGED
data/lib/retro_casts.rb
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
require "nokogiri"
|
2
2
|
require "open-uri"
|
3
3
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
4
|
+
require_relative "./retro_casts/version"
|
5
|
+
require_relative "./retro_casts/rails_casts"
|
6
|
+
require_relative "./retro_casts/episode"
|
7
|
+
require_relative "./retro_casts/website"
|
8
|
+
require_relative "./retro_casts/null_website"
|
9
|
+
require_relative "./retro_casts/CLI"
|
10
10
|
|
11
11
|
require 'pry'
|
12
12
|
|
@@ -24,8 +24,11 @@ module RetroCasts
|
|
24
24
|
end
|
25
25
|
|
26
26
|
message = ""
|
27
|
+
exit_all_loops = false
|
27
28
|
|
28
29
|
loop do
|
30
|
+
break if exit_all_loops
|
31
|
+
|
29
32
|
display("#" * 50)
|
30
33
|
site.list_episodes
|
31
34
|
|
@@ -44,16 +47,19 @@ module RetroCasts
|
|
44
47
|
episode = site.episode(command.to_i)
|
45
48
|
site.show_episode_detail(command.to_i)
|
46
49
|
|
47
|
-
puts "Type 'back' to go back
|
50
|
+
puts "Type 'back' to go back, 'open' to open the episode in your browser, or 'exit' to exit."
|
48
51
|
print ">"
|
49
52
|
|
50
53
|
case $stdin.gets.chomp.downcase
|
54
|
+
when "exit"
|
55
|
+
exit_all_loops = true
|
56
|
+
break
|
51
57
|
when "back"
|
52
58
|
break
|
53
59
|
when "open"
|
54
|
-
`open #{
|
60
|
+
`open #{episode.link}`
|
55
61
|
else
|
56
|
-
puts "Please choose '
|
62
|
+
puts "Please choose 'back' or 'open'."
|
57
63
|
print ">"
|
58
64
|
end
|
59
65
|
end
|
@@ -63,16 +69,16 @@ module RetroCasts
|
|
63
69
|
case command.downcase
|
64
70
|
when "home"
|
65
71
|
puts "Going back to the homepage..."
|
66
|
-
site
|
72
|
+
site.get_search(nil)
|
67
73
|
when "search"
|
68
74
|
puts "Searching for \"#{argument}\"..."
|
69
|
-
site
|
75
|
+
site.get_search(argument)
|
70
76
|
when "next"
|
71
77
|
puts "Opening page #{site.page + 1}..."
|
72
|
-
site
|
78
|
+
site.next_page
|
73
79
|
when "back"
|
74
80
|
puts "Opening page #{site.page - 1}..."
|
75
|
-
site
|
81
|
+
site.prev_page
|
76
82
|
when "exit"
|
77
83
|
break
|
78
84
|
else
|
data/lib/retro_casts/episode.rb
CHANGED
@@ -1,6 +1,15 @@
|
|
1
1
|
module RetroCasts
|
2
2
|
class Episode
|
3
3
|
attr_accessor :title, :number, :date, :length, :link, :description
|
4
|
+
|
5
|
+
def initialize(attributes = {})
|
6
|
+
@title = attributes[:title]
|
7
|
+
@number = attributes[:number]
|
8
|
+
@date = attributes[:date]
|
9
|
+
@length = attributes[:length]
|
10
|
+
@link = attributes[:link]
|
11
|
+
@description = attributes[:description]
|
12
|
+
end
|
4
13
|
|
5
14
|
def date
|
6
15
|
@date.strftime("%b %-d, %Y")
|
@@ -14,10 +14,7 @@ module RetroCasts
|
|
14
14
|
@search = search
|
15
15
|
@website = website
|
16
16
|
|
17
|
-
|
18
|
-
|
19
|
-
nodeset = website.get_list(url, filter)
|
20
|
-
@episodes = parse_episodes(nodeset)
|
17
|
+
update
|
21
18
|
end
|
22
19
|
|
23
20
|
def episode?(number)
|
@@ -33,20 +30,19 @@ module RetroCasts
|
|
33
30
|
end
|
34
31
|
|
35
32
|
def get_search(search_term)
|
36
|
-
|
33
|
+
@search = search_term
|
34
|
+
update
|
37
35
|
end
|
38
36
|
|
39
37
|
def next_page
|
40
|
-
|
41
|
-
|
42
|
-
website: website)
|
38
|
+
@page += 1
|
39
|
+
update
|
43
40
|
end
|
44
41
|
|
45
42
|
def prev_page
|
46
43
|
if page > 1
|
47
|
-
|
48
|
-
|
49
|
-
website: website)
|
44
|
+
@page -= 1
|
45
|
+
update
|
50
46
|
else
|
51
47
|
self
|
52
48
|
end
|
@@ -68,6 +64,11 @@ module RetroCasts
|
|
68
64
|
end
|
69
65
|
|
70
66
|
private
|
67
|
+
def update
|
68
|
+
@url = build_url
|
69
|
+
@episodes = parse_episodes(website.get_list(url, filter))
|
70
|
+
end
|
71
|
+
|
71
72
|
def build_url
|
72
73
|
attributes = {}
|
73
74
|
|
@@ -96,42 +97,20 @@ module RetroCasts
|
|
96
97
|
end
|
97
98
|
|
98
99
|
def create_episode(node)
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
def number(node)
|
114
|
-
text = node.css(".number").text
|
115
|
-
text.match(/\d+/).to_s.to_i
|
116
|
-
end
|
117
|
-
|
118
|
-
def date(node)
|
119
|
-
text = node.css(".published_at").text
|
120
|
-
Date.parse(text)
|
121
|
-
end
|
122
|
-
|
123
|
-
def length(node)
|
124
|
-
text = node.css(".stats").text
|
125
|
-
text.match(/\d+/).to_s.to_i
|
126
|
-
end
|
127
|
-
|
128
|
-
def link(node)
|
129
|
-
node.css(".screenshot a").first.attributes["href"].value
|
130
|
-
end
|
131
|
-
|
132
|
-
def description(node)
|
133
|
-
text = node.css(".description").text
|
134
|
-
text.sub(/\(\d+ minutes\)/, '').delete("\n").strip
|
100
|
+
Episode.new({
|
101
|
+
title: node.css(".main h2 a").text,
|
102
|
+
number: extract_integer(node.css(".number")),
|
103
|
+
date: Date.parse(node.css(".published_at").text),
|
104
|
+
length: extract_integer(node.css(".stats")),
|
105
|
+
link: host + node.css(".screenshot a").first.attributes["href"].value,
|
106
|
+
description: node.css(".description")
|
107
|
+
.text.sub(/\(\d+ minutes\)/, '')
|
108
|
+
.delete("\n").strip
|
109
|
+
})
|
110
|
+
end
|
111
|
+
|
112
|
+
def extract_integer(data)
|
113
|
+
data.text.match(/\d+/).to_s.to_i
|
135
114
|
end
|
136
115
|
end
|
137
116
|
end
|
data/lib/retro_casts/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: retro_casts
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Scott Savage
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-10-
|
11
|
+
date: 2016-10-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|