qiita_trend 0.2.8 → 0.2.9
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/.circleci/config.yml +9 -0
- data/.gitignore +1 -0
- data/Gemfile.lock +3 -1
- data/README.md +82 -39
- data/lib/qiita_trend/cache.rb +20 -4
- data/lib/qiita_trend/configuration.rb +9 -1
- data/lib/qiita_trend/error/login_failure_error.rb +11 -0
- data/lib/qiita_trend/error/not_exists_cache_error.rb +10 -0
- data/lib/qiita_trend/error/syntax_error.rb +1 -0
- data/lib/qiita_trend/page.rb +24 -1
- data/lib/qiita_trend/target.rb +23 -1
- data/lib/qiita_trend/trend.rb +14 -0
- data/lib/qiita_trend/trend_type.rb +4 -0
- data/lib/qiita_trend/version.rb +1 -1
- data/qiita_trend.gemspec +3 -2
- metadata +18 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8557280f29f19f12c0b2f4231de327a2434fde8d00a851d2c32b4e1e6e3f654d
|
4
|
+
data.tar.gz: 673102ee7ada1e88546afa02d69d0b3bf74d905d0cdeef8f489e0f9b0e5d8fc7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 61a8dcc3e28f98f7c4d4c1379f902a9a62c004e692b8a7f77bc0e3ff55cdd932d06276059a87650a7a4c0920e7faa78ab836c06bcfc215b523eb29a9e02732b8
|
7
|
+
data.tar.gz: fbcbb3787ffe7b8394fb2651507255d652f358b36493abc2d6c6bf0e20a1ba8d30c993b3f656ffc8e2495da75a0906e20d41f63e08b468645aa09744c35934da
|
data/.circleci/config.yml
CHANGED
@@ -62,6 +62,11 @@ jobs:
|
|
62
62
|
--out test_results/rspec.xml \
|
63
63
|
--format progress \
|
64
64
|
$TEST_FILES
|
65
|
+
# create document
|
66
|
+
- run:
|
67
|
+
name: create document
|
68
|
+
command: |
|
69
|
+
bundle exec yard
|
65
70
|
# collect reports
|
66
71
|
- store_test_results:
|
67
72
|
path: test_results
|
@@ -73,6 +78,10 @@ jobs:
|
|
73
78
|
# カバレッジの結果をcoverage-resultsディレクトリに吐き出す
|
74
79
|
path: coverage
|
75
80
|
destination: coverage-results
|
81
|
+
- store_artifacts:
|
82
|
+
# ドキュメントの結果をyard-resultsディレクトリに吐き出す
|
83
|
+
path: ./doc
|
84
|
+
destination: yard-results
|
76
85
|
# deploy RubyGems
|
77
86
|
- deploy:
|
78
87
|
command: |
|
data/.gitignore
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
qiita_trend (0.2.
|
4
|
+
qiita_trend (0.2.9)
|
5
5
|
mechanize
|
6
6
|
nokogiri (~> 1.9)
|
7
7
|
|
@@ -89,6 +89,7 @@ GEM
|
|
89
89
|
crack (>= 0.3.2)
|
90
90
|
hashdiff (>= 0.4.0, < 2.0.0)
|
91
91
|
webrobots (0.1.2)
|
92
|
+
yard (0.9.20)
|
92
93
|
|
93
94
|
PLATFORMS
|
94
95
|
ruby
|
@@ -104,6 +105,7 @@ DEPENDENCIES
|
|
104
105
|
simplecov
|
105
106
|
vcr
|
106
107
|
webmock
|
108
|
+
yard
|
107
109
|
|
108
110
|
BUNDLED WITH
|
109
111
|
2.0.2
|
data/README.md
CHANGED
@@ -14,37 +14,23 @@ Qiitaのトレンドを10秒で取得することができます
|
|
14
14
|
- 過去のトレンドを取得することができます(**あくまでもキャッシュファイルから復元するためキャッシュファイルの無い過去のトレンドは取得することができません**)
|
15
15
|
- いいね数は性質上取得した時の時間に依存します。どうしても現在時刻のいいね数が欲しい場合はキャシュファイルを手動で削除してもう一度実行してください
|
16
16
|
|
17
|
-
##
|
17
|
+
## ドキュメント
|
18
18
|
|
19
|
-
|
19
|
+
[RubyDoc.info](https://rubydoc.info/github/dodonki1223/qiita_trend)
|
20
20
|
|
21
|
-
|
22
|
-
gem 'qiita_trend'
|
23
|
-
```
|
24
|
-
|
25
|
-
And then execute:
|
26
|
-
|
27
|
-
$ bundle
|
28
|
-
|
29
|
-
Or install it yourself as:
|
21
|
+
## 使用方法
|
30
22
|
|
31
|
-
|
23
|
+
`gem install qiita_trend`を実行する
|
32
24
|
|
33
|
-
|
25
|
+
```shell
|
26
|
+
$ gem install qiita_trend
|
27
|
+
```
|
34
28
|
|
35
29
|
### QiitaのDailyのトレンドを10秒で取得する
|
36
30
|
|
37
|
-
|
31
|
+
ターミナルで`ruby -r qiita_trend -e "pp QiitaTrend::Trend.new.items"`を実行することでQiitaのトレンドを10秒(**gem install qiita_trendも含めて**)で取得できます
|
38
32
|
|
39
33
|
```shell
|
40
|
-
$ gem install qiita_trend
|
41
|
-
Fetching qiita_trend-0.2.3.gem
|
42
|
-
Successfully installed qiita_trend-0.2.3
|
43
|
-
Parsing documentation for qiita_trend-0.2.3
|
44
|
-
Installing ri documentation for qiita_trend-0.2.3
|
45
|
-
Done installing documentation for qiita_trend after 0 seconds
|
46
|
-
1 gem installed
|
47
|
-
|
48
34
|
$ ruby -r qiita_trend -e "pp QiitaTrend::Trend.new.items"
|
49
35
|
[{"title"=>"2行でwebpack.config.jsで補完を効かせる方法",
|
50
36
|
"user_name"=>"akameco",
|
@@ -66,11 +52,7 @@ $ ruby -r qiita_trend -e "pp QiitaTrend::Trend.new.items"
|
|
66
52
|
...
|
67
53
|
```
|
68
54
|
|
69
|
-
###
|
70
|
-
|
71
|
-
先に`gem install qiita_trend`を実行しておくこと
|
72
|
-
|
73
|
-
#### Dailyのトレンドの簡易表示
|
55
|
+
### Dailyのトレンドの簡易表示
|
74
56
|
|
75
57
|
index + タイトル名 + いいね数 + ユーザー名
|
76
58
|
|
@@ -85,7 +67,7 @@ $ ruby -r qiita_trend -e "QiitaTrend::Trend.new.items.each_with_index {|t, i| pu
|
|
85
67
|
[5]畳み込みニューラルネットワークは何を見ているか(69) - okn-yu
|
86
68
|
```
|
87
69
|
|
88
|
-
|
70
|
+
### Dailyのトレンドのタイトル一覧
|
89
71
|
|
90
72
|
```shell
|
91
73
|
$ ruby -r qiita_trend -e "QiitaTrend::Trend.new.items.each {|t| puts t['title']}"
|
@@ -98,7 +80,7 @@ KAGGLEでどこから手を付けていいか分からず学ぶことが多す
|
|
98
80
|
畳み込みニューラルネットワークは何を見ているか
|
99
81
|
```
|
100
82
|
|
101
|
-
|
83
|
+
### Dailyのトレンドのうち`new`がついているものをブラウザで一括で開く
|
102
84
|
|
103
85
|
```shell
|
104
86
|
$ ruby -r qiita_trend -e "QiitaTrend::Trend.new.new_items.each {|t| system('open ' + t['article'])}"
|
@@ -129,6 +111,7 @@ p daily_trend.new_items
|
|
129
111
|
### Weekly、Monthlyのトレンドを取得する
|
130
112
|
|
131
113
|
WeeklyとMonthlyのトレンドを取得する時はQiitaにログインしている必要があるため、ログイン出来るユーザーとパスワードの設定が必要です
|
114
|
+
ログインできないユーザー名とパスワードを指定している時は`LoginFailureError`の例外が発生します
|
132
115
|
|
133
116
|
```ruby
|
134
117
|
# Qiitaにログインするためのユーザーとパスワードの設定をする
|
@@ -148,6 +131,25 @@ p monthly_trend.items
|
|
148
131
|
p monthly_trend.new_items
|
149
132
|
```
|
150
133
|
|
134
|
+
### キャッシュファイルからトレンドを取得する
|
135
|
+
|
136
|
+
キャッシュファイルが存在しない場合は`NotExistsCacheError`の例外が発生します
|
137
|
+
WeeklyもMonthlyの取得方法もDailyと同様です
|
138
|
+
|
139
|
+
```ruby
|
140
|
+
# 2019年8月8日5時更新分のDailyのトレンドを取得する
|
141
|
+
daily_trend_05 = QiitaTrend::Trend.new(QiitaTrend::TrendType::DAILY, '2019080805')
|
142
|
+
|
143
|
+
p daily_trend_05.items
|
144
|
+
p daily_trend_05.new_items
|
145
|
+
|
146
|
+
# 2019年8月8日17時更新分のDailyのトレンドを取得する
|
147
|
+
daily_trend_17 = QiitaTrend::Trend.new(QiitaTrend::TrendType::DAILY, '2019080817')
|
148
|
+
|
149
|
+
p daily_trend_17.items
|
150
|
+
p daily_trend_17.new_items
|
151
|
+
```
|
152
|
+
|
151
153
|
### itemsメソッド、new_itemsメソッドについて
|
152
154
|
|
153
155
|
itemsメソッド、new_itemsメソッドは`Array`を返します
|
@@ -175,16 +177,57 @@ irb(main):001:0> pp QiitaTrend::Trend.new.items[0]
|
|
175
177
|
"is_new_arrival"=>false}
|
176
178
|
```
|
177
179
|
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
180
|
+
<table>
|
181
|
+
<thead>
|
182
|
+
<tr>
|
183
|
+
<th>key</th>
|
184
|
+
<th>内容</th>
|
185
|
+
<th>備考</th>
|
186
|
+
</tr>
|
187
|
+
</thead>
|
188
|
+
<tbody>
|
189
|
+
<tr>
|
190
|
+
<td>title</td>
|
191
|
+
<td>記事タイトル</td>
|
192
|
+
<td></td>
|
193
|
+
</tr>
|
194
|
+
<tr>
|
195
|
+
<td>user_name</td>
|
196
|
+
<td>ユーザー名</td>
|
197
|
+
<td></td>
|
198
|
+
</tr>
|
199
|
+
<tr>
|
200
|
+
<td>user_image</td>
|
201
|
+
<td>ユーザー画像URL</td>
|
202
|
+
<td></td>
|
203
|
+
</tr>
|
204
|
+
<tr>
|
205
|
+
<td>user_page</td>
|
206
|
+
<td>ユーザーページ</td>
|
207
|
+
<td></td>
|
208
|
+
</tr>
|
209
|
+
<tr>
|
210
|
+
<td>article</td>
|
211
|
+
<td>記事のURL</td>
|
212
|
+
<td></td>
|
213
|
+
</tr>
|
214
|
+
<tr>
|
215
|
+
<td>created_at</td>
|
216
|
+
<td>記事作成日</td>
|
217
|
+
<td></td>
|
218
|
+
</tr>
|
219
|
+
<tr>
|
220
|
+
<td>likes_count</td>
|
221
|
+
<td>いいね数</td>
|
222
|
+
<td>数値が入ります</td>
|
223
|
+
</tr>
|
224
|
+
<tr>
|
225
|
+
<td>is_new_arrival</td>
|
226
|
+
<td>「NEW」のついている記事か</td>
|
227
|
+
<td>TrueかFalseが入ります</td>
|
228
|
+
</tr>
|
229
|
+
</tbody>
|
230
|
+
</table>
|
188
231
|
|
189
232
|
### キャシュファイルの出力先を変更する
|
190
233
|
|
data/lib/qiita_trend/cache.rb
CHANGED
@@ -1,14 +1,23 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module QiitaTrend
|
4
|
+
# Qiitaのトレンドをキャッシュする機能を提供する
|
4
5
|
class Cache
|
5
|
-
|
6
|
+
# @return [String] ファイル名
|
7
|
+
attr_reader :file_name
|
8
|
+
# @return [String] キャッシュファイルを格納するディレクトリ(デフォルト値はDEFAULT_CACHE_DIRECTORYになります)
|
9
|
+
attr_reader :directory
|
10
|
+
# @return [String] キャッシュファイルへのフルパス
|
11
|
+
attr_reader :full_path
|
6
12
|
|
7
13
|
# キャッシュファイルが格納されるデフォルトのディレクトリ
|
8
14
|
DEFAULT_CACHE_DIRECTORY = Dir.home + '/qiita_cache/'
|
9
15
|
|
10
16
|
# コンストラクタ
|
11
|
-
#
|
17
|
+
# Cacheクラスのインスタンスを返します
|
18
|
+
#
|
19
|
+
# @param [String] file_name ファイル名
|
20
|
+
# @param [String] directory キャッシュが格納する・されているディレクトリ
|
12
21
|
def initialize(file_name, directory = DEFAULT_CACHE_DIRECTORY)
|
13
22
|
@file_name = file_name
|
14
23
|
@directory = directory
|
@@ -16,7 +25,9 @@ module QiitaTrend
|
|
16
25
|
end
|
17
26
|
|
18
27
|
# キャッシュファイルを作成する
|
19
|
-
#
|
28
|
+
# ※キャッシュフォルダが存在しない場合は作成します
|
29
|
+
#
|
30
|
+
# @param [String] content 書き込む内容
|
20
31
|
def create_cache(content)
|
21
32
|
Dir.mkdir(@directory) unless Dir.exist?(@directory)
|
22
33
|
File.open(@full_path, 'wb') do |file|
|
@@ -25,11 +36,16 @@ module QiitaTrend
|
|
25
36
|
end
|
26
37
|
|
27
38
|
# キャッシュファイルを読み込む
|
39
|
+
# File.openを使用しファイルを読み込みます
|
40
|
+
#
|
41
|
+
# @return [Object]
|
28
42
|
def load_cache
|
29
43
|
File.open(@full_path, 'r', &:read)
|
30
44
|
end
|
31
45
|
|
32
|
-
#
|
46
|
+
# キャッシュファイルが存在するかどうかを判定します
|
47
|
+
#
|
48
|
+
# @return [Boolean]
|
33
49
|
def cached?
|
34
50
|
File.exist?(@full_path)
|
35
51
|
end
|
@@ -11,9 +11,17 @@ module QiitaTrend
|
|
11
11
|
end
|
12
12
|
end
|
13
13
|
|
14
|
+
# QiitaTrendのConfigの設定する機能を提供する
|
14
15
|
class Configuration
|
15
|
-
|
16
|
+
# @return [String] Qiitaにログインするためのユーザー名
|
17
|
+
attr_accessor :user_name
|
18
|
+
# @return [String] Qiitaにログインするためのパスワード
|
19
|
+
attr_accessor :password
|
20
|
+
# @return [String] キャッシュファイルを保存するディレクトリ
|
21
|
+
attr_accessor :cache_directory
|
16
22
|
|
23
|
+
# コンストラクタ
|
24
|
+
# Configurationクラスのインスタンスを返します
|
17
25
|
def initialize
|
18
26
|
@user_name = nil
|
19
27
|
@password = nil
|
@@ -2,15 +2,26 @@
|
|
2
2
|
|
3
3
|
module QiitaTrend
|
4
4
|
module Error
|
5
|
+
# Qiitaへログイン失敗時に発生するエラークラス
|
5
6
|
class LoginFailureError < ::QiitaTrend::Error::SyntaxError
|
7
|
+
# エラーメッセージを返します
|
8
|
+
# ログインに失敗した時のユーザー名とパスワードを含んだ形でメッセージを返します
|
9
|
+
#
|
10
|
+
# @return [String] エラーメッセージ
|
6
11
|
def message
|
7
12
|
"Login failed, Please confilm user_name and password(user:#{user_name},password:#{password})"
|
8
13
|
end
|
9
14
|
|
15
|
+
# ログインに失敗した時のユーザー名を返します
|
16
|
+
#
|
17
|
+
# @return [String] ユーザー名(Configの設定したユーザー名)
|
10
18
|
def user_name
|
11
19
|
QiitaTrend.configuration.user_name
|
12
20
|
end
|
13
21
|
|
22
|
+
# ログインに失敗した時のパスワードを返します
|
23
|
+
#
|
24
|
+
# @return [String] パスワード(Configの設定したパスワード)
|
14
25
|
def password
|
15
26
|
QiitaTrend.configuration.password
|
16
27
|
end
|
@@ -2,13 +2,23 @@
|
|
2
2
|
|
3
3
|
module QiitaTrend
|
4
4
|
module Error
|
5
|
+
# キャッシュファイルが存在しない時に発生するエラークラス
|
6
|
+
# キャッシュファイルからトレンドを取得する時、存在しないキャッシュファイルを指定した時に発生する
|
5
7
|
class NotExistsCacheError < ::QiitaTrend::Error::SyntaxError
|
8
|
+
# @return [Cache] Cacheクラス
|
6
9
|
attr_reader :cache
|
7
10
|
|
11
|
+
# コンストラクタ
|
12
|
+
#
|
13
|
+
# @param [Cache] cache キャッシュクラス
|
8
14
|
def initialize(cache)
|
9
15
|
@cache = cache
|
10
16
|
end
|
11
17
|
|
18
|
+
# エラーメッセージを返します
|
19
|
+
# 読み込もうとしたキャッシュファイルのフルパス含んだ形でメッセージを返します
|
20
|
+
#
|
21
|
+
# @return [String] エラーメッセージ
|
12
22
|
def message
|
13
23
|
"Does not exist cache file #{@cache.full_path}"
|
14
24
|
end
|
data/lib/qiita_trend/page.rb
CHANGED
@@ -3,12 +3,26 @@
|
|
3
3
|
require 'mechanize'
|
4
4
|
|
5
5
|
module QiitaTrend
|
6
|
+
# Qiitaのページをスクレイピングしページ情報を取得する機能を提供する
|
6
7
|
class Page
|
7
|
-
|
8
|
+
# @return [TrendType] トレンドタイプ(TrendType::DAILY,TrendType::WEEKLY,TrendType::MONTHLY)
|
9
|
+
attr_reader :target
|
10
|
+
# @return [String] Qiitaページのスクレイピング結果
|
11
|
+
attr_reader :html
|
12
|
+
# @return [Cache] Cacheクラス
|
13
|
+
attr_reader :cache
|
8
14
|
|
15
|
+
# QiitaのTOPページURL
|
9
16
|
QIITA_URI = 'https://qiita.com/'
|
17
|
+
# QiitaのログインページURL
|
10
18
|
QIITA_LOGIN_URI = 'https://qiita.com/login'
|
11
19
|
|
20
|
+
# コンストラクタ
|
21
|
+
#
|
22
|
+
# @param [TrendType] trend_type トレンドタイプ
|
23
|
+
# @param [String] date 「YYYYMMDD05」,「YYYYMMDD17」形式のどちらか
|
24
|
+
# @raise [LoginFailureError] ログインに失敗した時に発生する
|
25
|
+
# @raise [NotExistsCacheError] 存在しないキャッシュファイルを指定した時に発生する
|
12
26
|
def initialize(trend_type = TrendType::DAILY, date = nil)
|
13
27
|
@target = Target.new(trend_type, date)
|
14
28
|
save_cache_directory = QiitaTrend.configuration.cache_directory.nil? ? Cache::DEFAULT_CACHE_DIRECTORY : QiitaTrend.configuration.cache_directory
|
@@ -28,6 +42,11 @@ module QiitaTrend
|
|
28
42
|
|
29
43
|
private
|
30
44
|
|
45
|
+
# Qiitaのページをスクレイピングした結果を取得します
|
46
|
+
#
|
47
|
+
# @param [Target] target Targetクラス
|
48
|
+
# @raise [LoginFailureError] ログインに失敗した時に発生する
|
49
|
+
# @return [String] Qiitaをスクレイピングした結果
|
31
50
|
def create_html(target)
|
32
51
|
agent = Mechanize.new
|
33
52
|
agent.user_agent_alias = 'Mac Safari'
|
@@ -35,6 +54,10 @@ module QiitaTrend
|
|
35
54
|
agent.get(target.url).body
|
36
55
|
end
|
37
56
|
|
57
|
+
# Qiitaへログインする
|
58
|
+
#
|
59
|
+
# @param [Mechanize] agent Mechanizeクラス
|
60
|
+
# @raise [LoginFailureError] ログインに失敗した時に発生する
|
38
61
|
def login_qiita(agent)
|
39
62
|
form = agent.get(QIITA_LOGIN_URI).forms.first
|
40
63
|
form['identity'] = QiitaTrend.configuration.user_name
|
data/lib/qiita_trend/target.rb
CHANGED
@@ -1,9 +1,21 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module QiitaTrend
|
4
|
+
# Qiitaの対象のトレンドの機能を提供する
|
4
5
|
class Target
|
5
|
-
|
6
|
+
# @return [TrendType] トレンドタイプ(TrendType::DAILY,TrendType::WEEKLY,TrendType::MONTHLY)
|
7
|
+
attr_reader :type
|
8
|
+
# @return [String] トレンドを取得するQiitaのページURL
|
9
|
+
attr_reader :url
|
10
|
+
# @return [Boolean] Qiitaへのログインが必要かどうか
|
11
|
+
attr_reader :need_login
|
12
|
+
# @return [String] キャッシュファイル名
|
13
|
+
attr_reader :cache
|
6
14
|
|
15
|
+
# コンストラクタ
|
16
|
+
#
|
17
|
+
# @param [TrendType] trend_type トレンドタイプ
|
18
|
+
# @param [String] date 「YYYYMMDD05」,「YYYYMMDD17」形式のどちらか
|
7
19
|
def initialize(trend_type = TrendType::DAILY, date = nil)
|
8
20
|
@type = trend_type
|
9
21
|
@url = trend_url(trend_type)
|
@@ -13,6 +25,10 @@ module QiitaTrend
|
|
13
25
|
|
14
26
|
private
|
15
27
|
|
28
|
+
# トレンドのURLを取得する
|
29
|
+
#
|
30
|
+
# @param [TrendType] type トレンドタイプ
|
31
|
+
# @return [String] トレンドを取得するQiitaのページURL
|
16
32
|
def trend_url(type)
|
17
33
|
case type
|
18
34
|
when TrendType::DAILY then 'https://qiita.com/'
|
@@ -21,6 +37,12 @@ module QiitaTrend
|
|
21
37
|
end
|
22
38
|
end
|
23
39
|
|
40
|
+
# キャッシュ名を取得する
|
41
|
+
# キャシュ名はYYYYMMDD05_daily.html,YYYYMMDD17_weekly.htmlなどの形式になります
|
42
|
+
# dateが指定されていなかったら現在時刻からキャッシュファイル名を作成し指定されていたらそのdateからキャッシュ名を取得する
|
43
|
+
#
|
44
|
+
# @param [TrendType] type トレンドタイプ
|
45
|
+
# @param [String] date 「YYYYMMDD05」,「YYYYMMDD17」形式のどちらか
|
24
46
|
def cache_name(type, date)
|
25
47
|
return "#{date}_#{type}.html" unless date.nil?
|
26
48
|
|
data/lib/qiita_trend/trend.rb
CHANGED
@@ -5,9 +5,17 @@ require 'open-uri'
|
|
5
5
|
require 'json'
|
6
6
|
|
7
7
|
module QiitaTrend
|
8
|
+
# Qiitaのトレンドの機能を提供する
|
8
9
|
class Trend
|
10
|
+
# @return [Array] トレンドデータ
|
9
11
|
attr_reader :data
|
10
12
|
|
13
|
+
# コンストラクタ
|
14
|
+
#
|
15
|
+
# @param [TrendType] trend_type トレンドタイプ
|
16
|
+
# @param [String] date 「YYYYMMDD05」,「YYYYMMDD17」形式のどちらか
|
17
|
+
# @raise [LoginFailureError] ログインに失敗した時に発生する
|
18
|
+
# @raise [NotExistsCacheError] 存在しないキャッシュファイルを指定した時に発生する
|
11
19
|
def initialize(trend_type = TrendType::DAILY, date = nil)
|
12
20
|
page = Page.new(trend_type, date)
|
13
21
|
parsed_html = Nokogiri::HTML.parse(page.html)
|
@@ -16,6 +24,9 @@ module QiitaTrend
|
|
16
24
|
@data = trends_data['trend']['edges']
|
17
25
|
end
|
18
26
|
|
27
|
+
# Qiitaの対象のトレンドをすべて取得
|
28
|
+
#
|
29
|
+
# @return [Array] Qiitaの対象のトレンドすべて
|
19
30
|
def items
|
20
31
|
@data.each_with_object([]) do |trend, value|
|
21
32
|
result = {}
|
@@ -31,6 +42,9 @@ module QiitaTrend
|
|
31
42
|
end
|
32
43
|
end
|
33
44
|
|
45
|
+
# Qiitaの対象のトレンドからNEWのものだけ取得
|
46
|
+
#
|
47
|
+
# @return [Array] Qiitaの対象のトレンドからNEWのものだけ
|
34
48
|
def new_items
|
35
49
|
items.select do |trend|
|
36
50
|
trend['is_new_arrival'] == true
|
data/lib/qiita_trend/version.rb
CHANGED
data/qiita_trend.gemspec
CHANGED
@@ -10,8 +10,8 @@ Gem::Specification.new do |spec|
|
|
10
10
|
spec.authors = ['dodonki1223']
|
11
11
|
spec.email = ['make.an.effort.wish.come.true@gmail.com']
|
12
12
|
|
13
|
-
spec.summary = '
|
14
|
-
spec.description = '
|
13
|
+
spec.summary = 'Easy to get trend for Qiita in 10 seconds'
|
14
|
+
spec.description = 'Easy to get trend for Qiita in 10 seconds'
|
15
15
|
spec.homepage = 'https://github.com/dodonki1223/qiita_trend'
|
16
16
|
spec.license = 'MIT'
|
17
17
|
|
@@ -50,4 +50,5 @@ Gem::Specification.new do |spec|
|
|
50
50
|
spec.add_development_dependency 'simplecov'
|
51
51
|
spec.add_development_dependency 'vcr'
|
52
52
|
spec.add_development_dependency 'webmock'
|
53
|
+
spec.add_development_dependency 'yard'
|
53
54
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: qiita_trend
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- dodonki1223
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-08-
|
11
|
+
date: 2019-08-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mechanize
|
@@ -164,7 +164,21 @@ dependencies:
|
|
164
164
|
- - ">="
|
165
165
|
- !ruby/object:Gem::Version
|
166
166
|
version: '0'
|
167
|
-
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: yard
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - ">="
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '0'
|
174
|
+
type: :development
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - ">="
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: '0'
|
181
|
+
description: Easy to get trend for Qiita in 10 seconds
|
168
182
|
email:
|
169
183
|
- make.an.effort.wish.come.true@gmail.com
|
170
184
|
executables: []
|
@@ -218,5 +232,5 @@ requirements: []
|
|
218
232
|
rubygems_version: 3.0.4
|
219
233
|
signing_key:
|
220
234
|
specification_version: 4
|
221
|
-
summary:
|
235
|
+
summary: Easy to get trend for Qiita in 10 seconds
|
222
236
|
test_files: []
|