retro_casts 0.1.1 → 0.1.2
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/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
|