qiita_trend 0.4.3 → 0.4.8
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 +15 -76
- data/.rubocop.yml +2 -0
- data/Gemfile.lock +62 -54
- data/README.md +4 -4
- data/lib/qiita_trend/cache.rb +1 -1
- data/lib/qiita_trend/error/not_exists_cache_error.rb +1 -0
- data/lib/qiita_trend/page.rb +3 -3
- data/lib/qiita_trend/target.rb +13 -10
- data/lib/qiita_trend/trend.rb +11 -4
- data/lib/qiita_trend/trend_type.rb +4 -6
- data/lib/qiita_trend/version.rb +1 -1
- data/qiita_trend.gemspec +2 -1
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f340c9bd896889d3328ca2e2df7127fcbd9ec03e0452baef8fc1960ed508b2aa
|
4
|
+
data.tar.gz: 9b446ac321c031d503b73d694e68295acf485ba23a6a8d4dd7c27dcab3446434
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 065a262b04b7e9f3b19d72a5cf9471d8e7cbed1465465193098190f0490211d199e9f771a970f813822eefe7b13adaef6d849d8b07d2bf89d86ff9735a77323e
|
7
|
+
data.tar.gz: f2bbf97d05c5bea4c6137398312742f542b33278ba658cfe120a59d300152eec466a17b5987117dd9c8c8b7ba0742d769d60f38af72012e2f787344e0df4d79f
|
data/.circleci/config.yml
CHANGED
@@ -1,10 +1,14 @@
|
|
1
1
|
version: 2.1
|
2
2
|
orbs:
|
3
|
+
ruby: circleci/ruby@1.1.2
|
3
4
|
slack: circleci/slack@3.4.2
|
4
5
|
executors:
|
5
6
|
base:
|
6
7
|
docker:
|
7
|
-
- image:
|
8
|
+
- image: cimg/ruby:2.6.6
|
9
|
+
auth:
|
10
|
+
username: dodonki1223
|
11
|
+
password: $DOCKERHUB_PASSWORD
|
8
12
|
environment:
|
9
13
|
# Bundlerのパス設定が書き換えられ`vendor/bundle`ではなくて`/usr/local/bundle`を参照してしまい`bundle exec`でエラーになる
|
10
14
|
# Bundlerのconfigファイル(pathの設定がされたもの)をworkspaceで永続化し`vendor/bundle`を参照するようにするための設定
|
@@ -14,36 +18,6 @@ executors:
|
|
14
18
|
working_directory: ~/dodonki1223/qiita_trend
|
15
19
|
|
16
20
|
commands:
|
17
|
-
install-bundler:
|
18
|
-
steps:
|
19
|
-
- run:
|
20
|
-
name: Install bundler(2.1.0)
|
21
|
-
command: gem install bundler:2.1.0
|
22
|
-
|
23
|
-
# Read about caching dependencies: https://circleci.com/docs/2.0/caching/
|
24
|
-
restore-gem-cache:
|
25
|
-
steps:
|
26
|
-
- restore_cache:
|
27
|
-
keys:
|
28
|
-
- v1-dependencies-{{ checksum "Gemfile.lock" }}
|
29
|
-
# fallback to using the latest cache if no exact match is found
|
30
|
-
- v1-dependencies-
|
31
|
-
|
32
|
-
install-gem:
|
33
|
-
steps:
|
34
|
-
- run:
|
35
|
-
name: Install gem
|
36
|
-
command: |
|
37
|
-
# jobs=4は並列処理をして高速化するための設定(4つのjobで実行するって意味)
|
38
|
-
bundle check --path=vendor/bundle || bundle install --path=vendor/bundle --jobs=4 --retry=3
|
39
|
-
|
40
|
-
save-gem-cache:
|
41
|
-
steps:
|
42
|
-
- save_cache:
|
43
|
-
paths:
|
44
|
-
- ./vendor/bundle
|
45
|
-
key: v1-dependencies-{{ checksum "Gemfile.lock" }}
|
46
|
-
|
47
21
|
save-workspace:
|
48
22
|
steps:
|
49
23
|
- persist_to_workspace:
|
@@ -57,35 +31,8 @@ commands:
|
|
57
31
|
# working_directory からの相対パスか絶対パスを指定します
|
58
32
|
at: .
|
59
33
|
|
60
|
-
run-rubocop:
|
61
|
-
steps:
|
62
|
-
- run:
|
63
|
-
name: Run RuboCop
|
64
|
-
command: |
|
65
|
-
bundle exec rubocop
|
66
|
-
|
67
|
-
run-tests:
|
68
|
-
steps:
|
69
|
-
- run:
|
70
|
-
name: Run tests
|
71
|
-
command: |
|
72
|
-
TEST_FILES="$(circleci tests glob "spec/**/*_spec.rb" | circleci tests split --split-by=timings)"
|
73
|
-
bundle exec rspec \
|
74
|
-
--format progress \
|
75
|
-
--format RspecJunitFormatter \
|
76
|
-
--out test_results/rspec/rspec.xml \
|
77
|
-
--format progress \
|
78
|
-
$TEST_FILES
|
79
|
-
|
80
34
|
collect-reports:
|
81
35
|
steps:
|
82
|
-
# ref:https://circleci.com/docs/ja/2.0/configuration-reference/#store_test_results
|
83
|
-
- store_test_results:
|
84
|
-
path: test_results
|
85
|
-
- store_artifacts:
|
86
|
-
# テスト結果をtest-resultsディレクトリに吐き出す
|
87
|
-
path: test_results
|
88
|
-
destination: test-results
|
89
36
|
- store_artifacts:
|
90
37
|
# カバレッジの結果をcoverage-resultsディレクトリに吐き出す
|
91
38
|
path: coverage
|
@@ -104,19 +51,13 @@ commands:
|
|
104
51
|
|
105
52
|
deploy-rubygems:
|
106
53
|
steps:
|
107
|
-
#
|
108
|
-
#
|
109
|
-
- add_ssh_keys:
|
110
|
-
fingerprints:
|
111
|
-
- "38:d2:72:5e:9f:67:93:9a:ec:95:94:a2:0e:bf:41:9e"
|
112
|
-
|
113
|
-
# ref:https://circleci.com/docs/2.0/gh-bb-integration/#establishing-the-authenticity-of-an-ssh-host
|
54
|
+
# https://discuss.circleci.com/t/the-authenticity-of-github-host-cant-be-stablished/33133 と同じ現象で job が進まなくなるので以下の記事を参考に実装
|
55
|
+
# ref:https://circleci.com/docs/ja/2.0/gh-bb-integration/#ssh-%E3%83%9B%E3%82%B9%E3%83%88%E3%81%AE%E4%BF%A1%E9%A0%BC%E6%80%A7%E3%81%AE%E7%A2%BA%E7%AB%8B
|
114
56
|
- run:
|
115
57
|
name: Avoid hosts unknown for github
|
116
58
|
command: |
|
117
59
|
mkdir -p ~/.ssh
|
118
60
|
echo 'github.com ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==
|
119
|
-
bitbucket.org ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAubiN81eDcafrgMeLzaFPsw2kNvEcqTKl/VqLat/MaB33pZy0y3rJZtnqwR2qOOvbwKZYKiEO1O6VqNEBxKvJJelCq0dTXWT5pbO2gDXC6h6QDXCaHo6pOHGPUy+YBaGQRGuSusMEASYiWunYN0vCAI8QaXnWMXNMdFP3jHAJH0eDsoiGnLPBlBp4TNm6rYI74nMzgz3B9IikW4WVK+dc8KZJZWYjAuORU3jc1c/NPskD2ASinf8v3xnfXeukU0sJ5N6m5E8VLjObPEO+mN2t/FZTMZLiFqPWc/ALSqnMnnhwrNi2rbfg/rd/IpL8Le3pSBne8+seeFVBoGqzHM9yXw==
|
120
61
|
' >> ~/.ssh/known_hosts
|
121
62
|
|
122
63
|
- run:
|
@@ -140,39 +81,37 @@ jobs:
|
|
140
81
|
executor: base
|
141
82
|
steps:
|
142
83
|
- checkout
|
143
|
-
- install-
|
144
|
-
- restore-gem-cache
|
145
|
-
- install-gem
|
146
|
-
- save-gem-cache
|
84
|
+
- ruby/install-deps
|
147
85
|
- save-workspace
|
148
86
|
|
149
87
|
lint:
|
150
88
|
executor: base
|
151
89
|
steps:
|
152
90
|
- using-workspace
|
153
|
-
- install-
|
154
|
-
-
|
91
|
+
- ruby/install-deps
|
92
|
+
- ruby/rubocop-check
|
155
93
|
|
156
94
|
test:
|
157
95
|
executor: base
|
158
96
|
steps:
|
159
97
|
- using-workspace
|
160
|
-
- install-
|
161
|
-
-
|
98
|
+
- ruby/install-deps
|
99
|
+
- ruby/rspec-test:
|
100
|
+
out-path: 'test_results/rspec/'
|
162
101
|
- collect-reports
|
163
102
|
|
164
103
|
document:
|
165
104
|
executor: base
|
166
105
|
steps:
|
167
106
|
- using-workspace
|
168
|
-
- install-
|
107
|
+
- ruby/install-deps
|
169
108
|
- create-document
|
170
109
|
|
171
110
|
deploy:
|
172
111
|
executor: base
|
173
112
|
steps:
|
174
113
|
- using-workspace
|
175
|
-
- install-
|
114
|
+
- ruby/install-deps
|
176
115
|
- deploy-rubygems
|
177
116
|
- deploy-notification
|
178
117
|
|
data/.rubocop.yml
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,52 +1,51 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
qiita_trend (0.4.
|
4
|
+
qiita_trend (0.4.8)
|
5
5
|
mechanize (~> 2.7)
|
6
|
-
nokogiri (~> 1.
|
6
|
+
nokogiri (~> 1.11)
|
7
7
|
|
8
8
|
GEM
|
9
9
|
remote: https://rubygems.org/
|
10
10
|
specs:
|
11
11
|
addressable (2.7.0)
|
12
12
|
public_suffix (>= 2.0.2, < 5.0)
|
13
|
-
ast (2.4.
|
13
|
+
ast (2.4.2)
|
14
14
|
byebug (11.1.3)
|
15
|
-
coderay (1.1.
|
16
|
-
connection_pool (2.2.
|
17
|
-
crack (0.4.
|
18
|
-
|
19
|
-
diff-lcs (1.
|
20
|
-
docile (1.3.
|
15
|
+
coderay (1.1.3)
|
16
|
+
connection_pool (2.2.3)
|
17
|
+
crack (0.4.5)
|
18
|
+
rexml
|
19
|
+
diff-lcs (1.4.4)
|
20
|
+
docile (1.3.5)
|
21
21
|
domain_name (0.5.20190701)
|
22
22
|
unf (>= 0.0.5, < 1.0.0)
|
23
23
|
hashdiff (1.0.1)
|
24
24
|
http-cookie (1.0.3)
|
25
25
|
domain_name (~> 0.5)
|
26
|
-
|
27
|
-
|
28
|
-
domain_name (~> 0.5, >= 0.5.
|
29
|
-
http-cookie (~> 1.0)
|
30
|
-
mime-types (
|
31
|
-
net-http-digest_auth (~> 1.
|
32
|
-
net-http-persistent (>= 2.5.2)
|
33
|
-
nokogiri (~> 1.
|
34
|
-
|
35
|
-
|
26
|
+
mechanize (2.8.0)
|
27
|
+
addressable (~> 2.7)
|
28
|
+
domain_name (~> 0.5, >= 0.5.20190701)
|
29
|
+
http-cookie (~> 1.0, >= 1.0.3)
|
30
|
+
mime-types (~> 3.0)
|
31
|
+
net-http-digest_auth (~> 1.4, >= 1.4.1)
|
32
|
+
net-http-persistent (>= 2.5.2, < 5.0.dev)
|
33
|
+
nokogiri (~> 1.11, >= 1.11.2)
|
34
|
+
rubyntlm (~> 0.6, >= 0.6.3)
|
35
|
+
webrick (~> 1.7)
|
36
|
+
webrobots (~> 0.1.2)
|
36
37
|
method_source (1.0.0)
|
37
38
|
mime-types (3.3.1)
|
38
39
|
mime-types-data (~> 3.2015)
|
39
|
-
mime-types-data (3.
|
40
|
-
mini_portile2 (2.4.0)
|
40
|
+
mime-types-data (3.2021.0225)
|
41
41
|
net-http-digest_auth (1.4.1)
|
42
|
-
net-http-persistent (4.0.
|
42
|
+
net-http-persistent (4.0.1)
|
43
43
|
connection_pool (~> 2.2)
|
44
|
-
nokogiri (1.
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
ast (~> 2.4.0)
|
44
|
+
nokogiri (1.11.2)
|
45
|
+
racc (~> 1.4)
|
46
|
+
parallel (1.20.1)
|
47
|
+
parser (3.0.1.0)
|
48
|
+
ast (~> 2.4.1)
|
50
49
|
pry (0.13.1)
|
51
50
|
coderay (~> 1.1)
|
52
51
|
method_source (~> 1.0)
|
@@ -56,52 +55,61 @@ GEM
|
|
56
55
|
pry-doc (1.1.0)
|
57
56
|
pry (~> 0.11)
|
58
57
|
yard (~> 0.9.11)
|
59
|
-
public_suffix (4.0.
|
58
|
+
public_suffix (4.0.6)
|
59
|
+
racc (1.5.2)
|
60
60
|
rainbow (3.0.0)
|
61
|
-
rake (13.0.
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
rspec-
|
66
|
-
rspec-
|
67
|
-
|
68
|
-
|
69
|
-
|
61
|
+
rake (13.0.3)
|
62
|
+
regexp_parser (2.1.1)
|
63
|
+
rexml (3.2.5)
|
64
|
+
rspec (3.10.0)
|
65
|
+
rspec-core (~> 3.10.0)
|
66
|
+
rspec-expectations (~> 3.10.0)
|
67
|
+
rspec-mocks (~> 3.10.0)
|
68
|
+
rspec-core (3.10.1)
|
69
|
+
rspec-support (~> 3.10.0)
|
70
|
+
rspec-expectations (3.10.1)
|
70
71
|
diff-lcs (>= 1.2.0, < 2.0)
|
71
|
-
rspec-support (~> 3.
|
72
|
-
rspec-mocks (3.
|
72
|
+
rspec-support (~> 3.10.0)
|
73
|
+
rspec-mocks (3.10.2)
|
73
74
|
diff-lcs (>= 1.2.0, < 2.0)
|
74
|
-
rspec-support (~> 3.
|
75
|
-
rspec-support (3.
|
75
|
+
rspec-support (~> 3.10.0)
|
76
|
+
rspec-support (3.10.2)
|
76
77
|
rspec_junit_formatter (0.4.1)
|
77
78
|
rspec-core (>= 2, < 4, != 2.12.0)
|
78
|
-
rubocop (0.
|
79
|
-
jaro_winkler (~> 1.5.1)
|
79
|
+
rubocop (0.93.1)
|
80
80
|
parallel (~> 1.10)
|
81
|
-
parser (>= 2.7.
|
81
|
+
parser (>= 2.7.1.5)
|
82
82
|
rainbow (>= 2.2.2, < 4.0)
|
83
|
+
regexp_parser (>= 1.8)
|
83
84
|
rexml
|
85
|
+
rubocop-ast (>= 0.6.0)
|
84
86
|
ruby-progressbar (~> 1.7)
|
85
87
|
unicode-display_width (>= 1.4.0, < 2.0)
|
86
|
-
rubocop-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
88
|
+
rubocop-ast (1.4.1)
|
89
|
+
parser (>= 2.7.1.5)
|
90
|
+
rubocop-rspec (1.44.1)
|
91
|
+
rubocop (~> 0.87)
|
92
|
+
rubocop-ast (>= 0.7.1)
|
93
|
+
ruby-progressbar (1.11.0)
|
94
|
+
rubyntlm (0.6.3)
|
95
|
+
simplecov (0.21.2)
|
91
96
|
docile (~> 1.1)
|
92
97
|
simplecov-html (~> 0.11)
|
93
|
-
|
98
|
+
simplecov_json_formatter (~> 0.1)
|
99
|
+
simplecov-html (0.12.3)
|
100
|
+
simplecov_json_formatter (0.1.2)
|
94
101
|
unf (0.1.4)
|
95
102
|
unf_ext
|
96
103
|
unf_ext (0.0.7.7)
|
97
104
|
unicode-display_width (1.7.0)
|
98
105
|
vcr (5.1.0)
|
99
|
-
webmock (3.
|
106
|
+
webmock (3.12.2)
|
100
107
|
addressable (>= 2.3.6)
|
101
108
|
crack (>= 0.3.2)
|
102
109
|
hashdiff (>= 0.4.0, < 2.0.0)
|
110
|
+
webrick (1.7.0)
|
103
111
|
webrobots (0.1.2)
|
104
|
-
yard (0.9.
|
112
|
+
yard (0.9.26)
|
105
113
|
|
106
114
|
PLATFORMS
|
107
115
|
ruby
|
@@ -123,4 +131,4 @@ DEPENDENCIES
|
|
123
131
|
yard (~> 0.9)
|
124
132
|
|
125
133
|
BUNDLED WITH
|
126
|
-
2.
|
134
|
+
2.2.4
|
data/README.md
CHANGED
@@ -39,7 +39,7 @@ $ ruby -r qiita_trend -e "pp QiitaTrend::Trend.new.items"
|
|
39
39
|
"https://qiita-image-store.s3.amazonaws.com/0/15319/profile-images/1473684249",
|
40
40
|
"user_page"=>"https://qiita.com/akameco",
|
41
41
|
"article"=>"https://qiita.com/akameco/items/e12377e55e379d29636e",
|
42
|
-
"
|
42
|
+
"published_at"=>"2019-08-05T01:17:34Z",
|
43
43
|
"likes_count"=>158,
|
44
44
|
"is_new_arrival"=>false},
|
45
45
|
{"title"=>"Excelで誰でも簡単言語処理 (感情推定, 固有表現抽出, キーワード抽出, 文類似度推定 etc...)",
|
@@ -47,7 +47,7 @@ $ ruby -r qiita_trend -e "pp QiitaTrend::Trend.new.items"
|
|
47
47
|
"user_image"=>"https://avatars2.githubusercontent.com/u/19549989?v=4",
|
48
48
|
"user_page"=>"https://qiita.com/Harusugi",
|
49
49
|
"article"=>"https://qiita.com/Harusugi/items/535874c0456dbc4db231",
|
50
|
-
"
|
50
|
+
"published_at"=>"2019-08-04T23:01:22Z",
|
51
51
|
"likes_count"=>103,
|
52
52
|
"is_new_arrival"=>false},
|
53
53
|
...
|
@@ -173,7 +173,7 @@ irb(main):001:0> pp QiitaTrend::Trend.new.items[0]
|
|
173
173
|
"https://qiita-image-store.s3.amazonaws.com/0/15319/profile-images/1473684249",
|
174
174
|
"user_page"=>"https://qiita.com/akameco",
|
175
175
|
"article"=>"https://qiita.com/akameco/items/e12377e55e379d29636e",
|
176
|
-
"
|
176
|
+
"published_at"=>"2019-08-05T01:17:34Z",
|
177
177
|
"likes_count"=>158,
|
178
178
|
"is_new_arrival"=>false}
|
179
179
|
```
|
@@ -213,7 +213,7 @@ irb(main):001:0> pp QiitaTrend::Trend.new.items[0]
|
|
213
213
|
<td></td>
|
214
214
|
</tr>
|
215
215
|
<tr>
|
216
|
-
<td>
|
216
|
+
<td>published_at</td>
|
217
217
|
<td>記事作成日</td>
|
218
218
|
<td></td>
|
219
219
|
</tr>
|
data/lib/qiita_trend/cache.rb
CHANGED
data/lib/qiita_trend/page.rb
CHANGED
@@ -23,14 +23,14 @@ module QiitaTrend
|
|
23
23
|
# @param [String] date 「YYYYMMDD05」,「YYYYMMDD17」形式のどちらか
|
24
24
|
# @raise [LoginFailureError] ログインに失敗した時に発生する
|
25
25
|
# @raise [NotExistsCacheError] 存在しないキャッシュファイルを指定した時に発生する
|
26
|
-
def initialize(trend_type = TrendType::
|
26
|
+
def initialize(trend_type = TrendType::NORMAL, date = nil)
|
27
27
|
@target = Target.new(trend_type, date)
|
28
28
|
save_cache_directory = QiitaTrend.configuration.cache_directory.nil? ? Cache::DEFAULT_CACHE_DIRECTORY : QiitaTrend.configuration.cache_directory
|
29
29
|
@cache = Cache.new(target.cache, save_cache_directory)
|
30
30
|
|
31
31
|
# 指定されたキャッシュファイルが存在しない場合は処理を終了
|
32
|
-
|
33
|
-
raise Error::NotExistsCacheError, @cache
|
32
|
+
if !date.nil? && !@cache.cached?
|
33
|
+
raise Error::NotExistsCacheError, @cache
|
34
34
|
end
|
35
35
|
|
36
36
|
# キャッシュが存在する場合はキャッシュから取得
|
data/lib/qiita_trend/target.rb
CHANGED
@@ -16,10 +16,10 @@ module QiitaTrend
|
|
16
16
|
#
|
17
17
|
# @param [TrendType] trend_type トレンドタイプ
|
18
18
|
# @param [String] date 「YYYYMMDD05」,「YYYYMMDD17」形式のどちらか
|
19
|
-
def initialize(trend_type = TrendType::
|
19
|
+
def initialize(trend_type = TrendType::NORMAL, date = nil)
|
20
20
|
@type = trend_type
|
21
|
-
@url = trend_url
|
22
|
-
@need_login = trend_type
|
21
|
+
@url = trend_url
|
22
|
+
@need_login = need_login?(trend_type)
|
23
23
|
@cache = cache_name(trend_type, date)
|
24
24
|
end
|
25
25
|
|
@@ -27,14 +27,17 @@ module QiitaTrend
|
|
27
27
|
|
28
28
|
# トレンドのURLを取得する
|
29
29
|
#
|
30
|
-
# @param [TrendType] type トレンドタイプ
|
31
30
|
# @return [String] トレンドを取得するQiitaのページURL
|
32
|
-
def trend_url
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
31
|
+
def trend_url
|
32
|
+
Page::QIITA_URI
|
33
|
+
end
|
34
|
+
|
35
|
+
# Qiitaにログインが必要か
|
36
|
+
#
|
37
|
+
# @param [TrendType] trend_type トレンドタイプ
|
38
|
+
# @return [Boolean] True:Qiitaへログインが必要、False:Qiitaへログイン不要
|
39
|
+
def need_login?(trend_type)
|
40
|
+
trend_type != TrendType::NORMAL
|
38
41
|
end
|
39
42
|
|
40
43
|
# キャッシュ名を取得する
|
data/lib/qiita_trend/trend.rb
CHANGED
@@ -17,11 +17,11 @@ module QiitaTrend
|
|
17
17
|
# @param [String] date 「YYYYMMDD05」,「YYYYMMDD17」形式のどちらか
|
18
18
|
# @raise [LoginFailureError] ログインに失敗した時に発生する
|
19
19
|
# @raise [NotExistsCacheError] 存在しないキャッシュファイルを指定した時に発生する
|
20
|
-
def initialize(trend_type = TrendType::
|
20
|
+
def initialize(trend_type = TrendType::NORMAL, date = nil)
|
21
21
|
page = Page.new(trend_type, date)
|
22
22
|
parsed_html = Nokogiri::HTML.parse(page.html)
|
23
|
-
|
24
|
-
trends_data = JSON.parse(parsed_html.xpath(
|
23
|
+
xpath_str = "//script[@data-component-name=\"#{data_component_name(trend_type)}\"]"
|
24
|
+
trends_data = JSON.parse(parsed_html.xpath(xpath_str)[0].text)
|
25
25
|
@data = trends_data['trend']['edges']
|
26
26
|
end
|
27
27
|
|
@@ -36,7 +36,7 @@ module QiitaTrend
|
|
36
36
|
result['user_image'] = user_image(trend['node']['author']['profileImageUrl'])
|
37
37
|
result['user_page'] = "#{Page::QIITA_URI}#{trend['node']['author']['urlName']}"
|
38
38
|
result['article'] = "#{Page::QIITA_URI}#{trend['node']['author']['urlName']}/items/#{trend['node']['uuid']}"
|
39
|
-
result['
|
39
|
+
result['published_at'] = trend['node']['publishedAt']
|
40
40
|
result['likes_count'] = trend['node']['likesCount']
|
41
41
|
result['is_new_arrival'] = trend['isNewArrival']
|
42
42
|
value << result
|
@@ -54,6 +54,13 @@ module QiitaTrend
|
|
54
54
|
|
55
55
|
private
|
56
56
|
|
57
|
+
# QiitaのトレンドのFeed名を取得する
|
58
|
+
#
|
59
|
+
# @return [String] トレンドタイプによるFeed名
|
60
|
+
def data_component_name(trend_type)
|
61
|
+
trend_type == TrendType::PERSONAL ? 'HomePersonalizedFeed' : 'NewHomeArticleTrendFeed'
|
62
|
+
end
|
63
|
+
|
57
64
|
# ユーザーの画像のURLを取得する
|
58
65
|
# URLデコードしクエリーパラメータを排除する
|
59
66
|
#
|
@@ -3,11 +3,9 @@
|
|
3
3
|
module QiitaTrend
|
4
4
|
# トレンドタイプの機能を提供する
|
5
5
|
class TrendType
|
6
|
-
# トレンドタイプ:
|
7
|
-
|
8
|
-
# トレンドタイプ:
|
9
|
-
|
10
|
-
# トレンドタイプ:Monthly
|
11
|
-
MONTHLY = 'monthly'
|
6
|
+
# トレンドタイプ:Normal
|
7
|
+
NORMAL = 'normal'
|
8
|
+
# トレンドタイプ:Personal
|
9
|
+
PERSONAL = 'personal'
|
12
10
|
end
|
13
11
|
end
|
data/lib/qiita_trend/version.rb
CHANGED
data/qiita_trend.gemspec
CHANGED
@@ -9,6 +9,7 @@ Gem::Specification.new do |spec|
|
|
9
9
|
spec.version = QiitaTrend::VERSION
|
10
10
|
spec.authors = ['dodonki1223']
|
11
11
|
spec.email = ['make.an.effort.wish.come.true@gmail.com']
|
12
|
+
spec.required_ruby_version = '>= 2.6.5'
|
12
13
|
|
13
14
|
spec.summary = 'Easy to get trend for Qiita in 10 seconds'
|
14
15
|
spec.description = 'Easy to get trend for Qiita in 10 seconds'
|
@@ -39,7 +40,7 @@ Gem::Specification.new do |spec|
|
|
39
40
|
|
40
41
|
# qiita_trendに必要な依存gem設定(ここは最小限にすること)
|
41
42
|
spec.add_dependency 'mechanize', '~> 2.7'
|
42
|
-
spec.add_dependency 'nokogiri', '~> 1.
|
43
|
+
spec.add_dependency 'nokogiri', '~> 1.11'
|
43
44
|
# 開発中のみ必要なgem設定
|
44
45
|
spec.add_development_dependency 'bundler', '~> 2.0'
|
45
46
|
spec.add_development_dependency 'pry', '~> 0.13'
|
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.4.
|
4
|
+
version: 0.4.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- dodonki1223
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-04-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mechanize
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '1.
|
33
|
+
version: '1.11'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '1.
|
40
|
+
version: '1.11'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: bundler
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -264,14 +264,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
264
264
|
requirements:
|
265
265
|
- - ">="
|
266
266
|
- !ruby/object:Gem::Version
|
267
|
-
version:
|
267
|
+
version: 2.6.5
|
268
268
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
269
269
|
requirements:
|
270
270
|
- - ">="
|
271
271
|
- !ruby/object:Gem::Version
|
272
272
|
version: '0'
|
273
273
|
requirements: []
|
274
|
-
rubygems_version: 3.
|
274
|
+
rubygems_version: 3.1.3
|
275
275
|
signing_key:
|
276
276
|
specification_version: 4
|
277
277
|
summary: Easy to get trend for Qiita in 10 seconds
|