kakuyomu_agent 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/kakuyomu_agent.rb +2 -2
- data/lib/kakuyomu_agent/actions/create_episode.rb +37 -5
- data/lib/kakuyomu_agent/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: df46330ed2ed382cb48584d81784b1741617198d54ac917d8ebf81fa953a308a
|
4
|
+
data.tar.gz: 62acb18cd078c471118843930cf21a69824e00f39205ff898c5ab8a65d53c7ae
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 373249746dafa9f5cb2ad1f63aa006842f048548bba0ec3b82d8ae94c9b88ca92dde3f25dc7b5d5df78748fe82962a75f9c6efe7d51ae26604901564e0660f1e
|
7
|
+
data.tar.gz: 6c8e003cd34eee24984ef22a0cd6f02acb04b4ab5cb6a374fe33e09865e651c259928c862c0699c842ef9b682c0c2b7adc3f8b416cc55293167c26f41f8bfaad
|
data/lib/kakuyomu_agent.rb
CHANGED
@@ -30,9 +30,9 @@ class KakuyomuAgent
|
|
30
30
|
@logged_in = true
|
31
31
|
end
|
32
32
|
|
33
|
-
def create_episode(work_id:, title:, body:)
|
33
|
+
def create_episode(work_id:, title:, body:, date: nil)
|
34
34
|
raise NotLoggedInError unless logged_in?
|
35
|
-
Actions::CreateEpisode.new(self).run(work_id, title, body)
|
35
|
+
Actions::CreateEpisode.new(self).run(work_id, title, body, date)
|
36
36
|
end
|
37
37
|
|
38
38
|
def update_episode(work_id:, episode_id:, title:, body:)
|
@@ -1,7 +1,7 @@
|
|
1
1
|
class KakuyomuAgent
|
2
2
|
module Actions
|
3
3
|
class CreateEpisode < Action
|
4
|
-
def run(work_id, title, body)
|
4
|
+
def run(work_id, title, body, date = nil)
|
5
5
|
driver.get(new_episode_url(work_id))
|
6
6
|
|
7
7
|
title_input = driver.find_element(name: 'title')
|
@@ -11,16 +11,48 @@ class KakuyomuAgent
|
|
11
11
|
driver.find_element(name: 'body').send_keys(body)
|
12
12
|
|
13
13
|
driver.find_element(id: 'reserveButton').click
|
14
|
+
|
15
|
+
episode_id = if date.nil? || date < Time.now
|
16
|
+
publish
|
17
|
+
else
|
18
|
+
reserve(date)
|
19
|
+
end
|
20
|
+
|
21
|
+
episode_url(work_id, episode_id)
|
22
|
+
rescue Selenium::WebDriver::Error::WebDriverError => e
|
23
|
+
raise ActionFailedError.new(e)
|
24
|
+
end
|
25
|
+
|
26
|
+
private
|
27
|
+
|
28
|
+
def publish
|
14
29
|
driver.find_element(id: 'reservationControl-footer').find_element(tag_name: 'button').click
|
15
30
|
|
16
31
|
Selenium::WebDriver::Wait.new.until do
|
17
32
|
driver.find_element(id: 'page-my-works-episodes-published')
|
18
33
|
end
|
19
34
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
35
|
+
UrlHelper.extract_episode_id(driver.current_url)
|
36
|
+
end
|
37
|
+
|
38
|
+
def reserve(date)
|
39
|
+
driver.find_element(id: 'reservationInput-reserved').click
|
40
|
+
driver.find_element(name: 'reservation_date').tap do |date_input|
|
41
|
+
date_input.clear
|
42
|
+
date_input.send_keys(date.strftime('%F'))
|
43
|
+
end
|
44
|
+
driver.find_element(name: 'reservation_time').tap do |time_input|
|
45
|
+
time_input.clear
|
46
|
+
time_input.send_keys(date.strftime('%R'))
|
47
|
+
end
|
48
|
+
driver.find_element(id: 'reservationControl-footer').find_element(tag_name: 'button').click
|
49
|
+
|
50
|
+
Selenium::WebDriver::Wait.new.until do
|
51
|
+
driver.find_element(id: 'modelessMessage')
|
52
|
+
end
|
53
|
+
|
54
|
+
edit_episode_url = driver.find_element(xpath: "//span[@class='widget-myWork-episode-labelDate' and contains(text(), '#{date.strftime('%Y年%-m月%-d日 %R')}')]/following::a[text()='編集']")['href']
|
55
|
+
UrlHelper.extract_episode_id(edit_episode_url)
|
24
56
|
end
|
25
57
|
end
|
26
58
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kakuyomu_agent
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Fuji Nakahara
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-12-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: selenium-webdriver
|