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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5402095c5853b227b4f10d74fdb79430e6352af2b5a005c3a89ad5ab2a317714
4
- data.tar.gz: 5e309384fb7094fb5a74203fd605e33c4d3150fd8d16dbc76aded9d3179f830a
3
+ metadata.gz: df46330ed2ed382cb48584d81784b1741617198d54ac917d8ebf81fa953a308a
4
+ data.tar.gz: 62acb18cd078c471118843930cf21a69824e00f39205ff898c5ab8a65d53c7ae
5
5
  SHA512:
6
- metadata.gz: 455b5695ee51d1a9c231292cc4249cf58df425abd590c1cfd0ca530fd5d34d7815759cfc223f92f2b305088b0727942b0bb1af7525979be5563220e37441a429
7
- data.tar.gz: c4ee9b0911c4fe852cea0a79454afe37839f7de58d9cd3546f7ca73866e314ef9def5ee2881d491db1db3fb1d45c76f49fe7c727af99c2f8f38ee565863987b0
6
+ metadata.gz: 373249746dafa9f5cb2ad1f63aa006842f048548bba0ec3b82d8ae94c9b88ca92dde3f25dc7b5d5df78748fe82962a75f9c6efe7d51ae26604901564e0660f1e
7
+ data.tar.gz: 6c8e003cd34eee24984ef22a0cd6f02acb04b4ab5cb6a374fe33e09865e651c259928c862c0699c842ef9b682c0c2b7adc3f8b416cc55293167c26f41f8bfaad
@@ -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
- episode_id = UrlHelper.extract_episode_id(driver.current_url)
21
- episode_url(work_id, episode_id)
22
- rescue Selenium::WebDriver::Error::WebDriverError => e
23
- raise ActionFailedError.new(e)
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
@@ -1,3 +1,3 @@
1
1
  class KakuyomuAgent
2
- VERSION = '0.2.0'
2
+ VERSION = '0.3.0'
3
3
  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.2.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-11 00:00:00.000000000 Z
11
+ date: 2018-12-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: selenium-webdriver