posting_duo 3.85.799 → 3.87.799
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/lib/posting_duo.rb +434 -149
- 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: 67a83791a7ce92d2915b5cffce671b6f53544275e9ba4db2866f6e56b2ed7d1b
|
4
|
+
data.tar.gz: 18e3be77afb90f695963c996da341e30543dda870ce86b83d12ac7164583270c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2da8ea80e829fe359d1582c6999658d5be53a52dd46036d6d38654d355e93ae451a772315f405dc49930ebbe1a6a446c0d1e1f07b45fc6e019eadb83999b78c9
|
7
|
+
data.tar.gz: 777633900f64ac48343f988e8327301dd248a775bee92297668559be2ff49e3c29cb86066b4cb91de75082832199e97520b3c8d4f9cabfbe1dd4d75019699253
|
data/lib/posting_duo.rb
CHANGED
@@ -2943,7 +2943,49 @@ login_url = option['login_url'].to_s
|
|
2943
2943
|
end
|
2944
2944
|
end
|
2945
2945
|
rescue
|
2946
|
-
|
2946
|
+
begin
|
2947
|
+
@driver.find_element(:xpath, '//*[@class="ray-id"]')
|
2948
|
+
|
2949
|
+
# 타임아웃을 3초로 설정
|
2950
|
+
wait = Selenium::WebDriver::Wait.new(:timeout => 120)
|
2951
|
+
# 요소가 나타날 때까지 30초 동안 기다립니다.
|
2952
|
+
wait.until { @driver.find_element(:xpath, '//*[@data-state="ready"]') }
|
2953
|
+
sleep(1)
|
2954
|
+
@driver.find_element(:xpath, '//*[@data-state="ready"]').click #캡챠우회버튼
|
2955
|
+
puts '-[√] 캡챠 해제 진행 중 (약 30~60 초 소요됩니다).......'.green
|
2956
|
+
sleep(10)
|
2957
|
+
begin
|
2958
|
+
@driver.find_element(:xpath, '//*[@data-state="error"]').click
|
2959
|
+
puts '-[√] 캡챠 해제 실패 !! API번호 및 포인트를 체크해주세요.......'.red
|
2960
|
+
puts '-[√] 캡챠 해제 실패 !! API번호 및 포인트를 체크해주세요.......'.red
|
2961
|
+
@driver.window_handles.each do |handle|
|
2962
|
+
@driver.switch_to.window(handle)
|
2963
|
+
begin
|
2964
|
+
# 로딩 중이거나, 페이지가 완전히 로딩되지 않더라도 탭을 닫기
|
2965
|
+
@driver.close
|
2966
|
+
rescue Selenium::WebDriver::Error::WebDriverError => e
|
2967
|
+
puts '-[√] 다음 작업 준비로 약 1초~60초 내외 시간이 소요됩니다.......'.red
|
2968
|
+
end
|
2969
|
+
end
|
2970
|
+
return 0
|
2971
|
+
@driver.quit
|
2972
|
+
rescue
|
2973
|
+
begin
|
2974
|
+
# 타임아웃을 77초로 설정
|
2975
|
+
wait = Selenium::WebDriver::Wait.new(:timeout => 150)
|
2976
|
+
# 요소가 나타날 때까지 100초 동안 기다립니다.
|
2977
|
+
wait.until { @driver.find_element(:xpath, '//*[@data-state="solved"]') }
|
2978
|
+
sleep(1)
|
2979
|
+
@driver.find_element(:xpath, '//*[@data-state="solved"]').click
|
2980
|
+
puts '-[√] 캡챠 해제 완료 → 이어서 진행 합니다.......'.green
|
2981
|
+
|
2982
|
+
sleep(5)
|
2983
|
+
rescue
|
2984
|
+
end
|
2985
|
+
end
|
2986
|
+
rescue
|
2987
|
+
puts '-[√] 캡챠 발생 없음.......'.green
|
2988
|
+
end
|
2947
2989
|
end
|
2948
2990
|
end
|
2949
2991
|
end
|
@@ -3771,30 +3813,37 @@ login_url = option['login_url'].to_s
|
|
3771
3813
|
begin
|
3772
3814
|
@driver.find_element(:xpath, '//*[@name="mb_password"]').send_keys(user_pw)
|
3773
3815
|
sleep(1)
|
3816
|
+
puts '-[√] 패스워드 1코드 타겟.......'.yellow
|
3774
3817
|
rescue
|
3775
3818
|
begin
|
3776
3819
|
@driver.find_element(:xpath, '//*[@id="outlogin_mb_password"]').send_keys(user_pw)
|
3777
3820
|
sleep(1)
|
3821
|
+
puts '-[√] 패스워드 2코드 타겟.......'.yellow
|
3778
3822
|
rescue
|
3779
3823
|
begin
|
3780
3824
|
@driver.find_element(:xpath, '//*[@placeholder="비밀번호"]').send_keys(user_pw)
|
3781
3825
|
sleep(1)
|
3826
|
+
puts '-[√] 패스워드 3코드 타겟.......'.yellow
|
3782
3827
|
rescue
|
3783
3828
|
begin
|
3784
3829
|
@driver.find_element(:xpath, '//*[@id="login_pw"]').send_keys(user_pw)
|
3785
3830
|
sleep(1)
|
3831
|
+
puts '-[√] 패스워드 4코드 타겟.......'.yellow
|
3786
3832
|
rescue
|
3787
3833
|
begin
|
3788
3834
|
@driver.find_element(:xpath, '//*[@placeholder="Password"]').send_keys(user_pw)
|
3789
3835
|
sleep(1)
|
3836
|
+
puts '-[√] 패스워드 5코드 타겟.......'.yellow
|
3790
3837
|
rescue
|
3791
3838
|
begin
|
3792
3839
|
@driver.find_element(:xpath, '//*[@id="mb_password"]').send_keys(user_pw)
|
3793
3840
|
sleep(1)
|
3841
|
+
puts '-[√] 패스워드 6코드 타겟.......'.yellow
|
3794
3842
|
rescue
|
3795
3843
|
begin
|
3796
3844
|
@driver.find_element(:xpath, '//*[@name="password"]').send_keys(user_pw)
|
3797
3845
|
sleep(1)
|
3846
|
+
puts '-[√] 패스워드 7코드 타겟.......'.yellow
|
3798
3847
|
rescue
|
3799
3848
|
begin
|
3800
3849
|
@driver.find_element(:xpath, '//*[@title="비밀번호"]').send_keys(user_pw)
|
@@ -3848,8 +3897,13 @@ login_url = option['login_url'].to_s
|
|
3848
3897
|
@driver.find_element(:xpath, '//*[@fw-label="패스워드"]').send_keys(user_pw)
|
3849
3898
|
sleep(1)
|
3850
3899
|
rescue
|
3851
|
-
|
3852
|
-
|
3900
|
+
begin
|
3901
|
+
@driver.find_element(:xpath, '//*[@id="login_mb_password2"]').send_keys(user_pw)
|
3902
|
+
sleep(1)
|
3903
|
+
rescue
|
3904
|
+
|
3905
|
+
@driver.action.key_down(:tab).key_up(:tab).perform #x탭
|
3906
|
+
end
|
3853
3907
|
end
|
3854
3908
|
end
|
3855
3909
|
end
|
@@ -3964,12 +4018,18 @@ login_url = option['login_url'].to_s
|
|
3964
4018
|
rescue
|
3965
4019
|
begin
|
3966
4020
|
@driver.find_element(:xpath, '//*[@id="um-submit-btn"]').click
|
3967
|
-
puts '-[√] 로그인 버튼 코드
|
4021
|
+
puts '-[√] 로그인 버튼 코드 16 타겟.......'.cyan
|
3968
4022
|
sleep(3)
|
3969
4023
|
rescue
|
3970
|
-
|
3971
|
-
|
3972
|
-
|
4024
|
+
begin
|
4025
|
+
@driver.find_element(:xpath, '//*[@class="left_login_box"]//*[@class="left_login_btn"]').click
|
4026
|
+
puts '-[√] 로그인 버튼 코드 17 타겟.......'.cyan
|
4027
|
+
sleep(3)
|
4028
|
+
rescue
|
4029
|
+
|
4030
|
+
@driver.action.key_down(:enter).key_up(:enter).perform #엔터
|
4031
|
+
sleep(3)
|
4032
|
+
end
|
3973
4033
|
end
|
3974
4034
|
end
|
3975
4035
|
end
|
@@ -4370,12 +4430,21 @@ post_url = option['post_url'].to_s
|
|
4370
4430
|
puts '-[√] 글쓰기 버튼 클릭 확인 code 4 타겟.......'.green
|
4371
4431
|
sleep(3.7)
|
4372
4432
|
rescue
|
4373
|
-
|
4433
|
+
begin
|
4434
|
+
el_post_btn = @driver.find_element(:xpath, '//*[@class="pro-btn _write"]')
|
4435
|
+
@driver.execute_script("arguments[0].scrollIntoView({block: 'center', inline: 'center'})", el_post_btn)
|
4436
|
+
sleep(1)
|
4437
|
+
@driver.find_element(:xpath, '//*[@class="pro-btn _write"]').click
|
4438
|
+
puts '-[√] 글쓰기 버튼 클릭 확인 code 5 타겟.......'.green
|
4439
|
+
sleep(3.7)
|
4440
|
+
rescue
|
4441
|
+
|
4442
|
+
end
|
4374
4443
|
end
|
4375
4444
|
end
|
4376
4445
|
end
|
4377
4446
|
end
|
4378
|
-
|
4447
|
+
|
4379
4448
|
sleep(1)
|
4380
4449
|
#오른쪽 마우스 해제 코드
|
4381
4450
|
begin
|
@@ -4720,6 +4789,14 @@ post_url = option['post_url'].to_s
|
|
4720
4789
|
rescue
|
4721
4790
|
end
|
4722
4791
|
|
4792
|
+
begin
|
4793
|
+
chat_box = @driver.find_element(:xpath, '//*[@class="left_chat_box"]')
|
4794
|
+
@driver.execute_script("arguments[0].remove();", chat_box)
|
4795
|
+
|
4796
|
+
sleep(1)
|
4797
|
+
rescue
|
4798
|
+
end
|
4799
|
+
|
4723
4800
|
end
|
4724
4801
|
|
4725
4802
|
|
@@ -5560,7 +5637,13 @@ begin
|
|
5560
5637
|
sleep(1)
|
5561
5638
|
puts '-[√] 닉네임 25코드 타겟.......'.yellow
|
5562
5639
|
rescue
|
5563
|
-
|
5640
|
+
begin
|
5641
|
+
@driver.find_element(xpath: '//*[@name="board_name"]').send_keys(user_id)
|
5642
|
+
sleep(1)
|
5643
|
+
puts '-[√] 닉네임 26코드 타겟.......'.yellow
|
5644
|
+
rescue
|
5645
|
+
|
5646
|
+
end
|
5564
5647
|
end
|
5565
5648
|
end
|
5566
5649
|
end
|
@@ -5624,7 +5707,7 @@ begin
|
|
5624
5707
|
puts '-[√] 패스워드 4코드 타겟.......'.yellow
|
5625
5708
|
rescue
|
5626
5709
|
begin
|
5627
|
-
@driver.find_element(:xpath, '//*[@
|
5710
|
+
@driver.find_element(:xpath, '//*[@name="board_pass"]').send_keys(user_pw)
|
5628
5711
|
sleep(1)
|
5629
5712
|
puts '-[√] 패스워드 5코드 타겟.......'.yellow
|
5630
5713
|
rescue
|
@@ -5698,7 +5781,13 @@ begin
|
|
5698
5781
|
sleep(1)
|
5699
5782
|
puts '-[√] 패스워드 19코드 타겟.......'.yellow
|
5700
5783
|
rescue
|
5701
|
-
|
5784
|
+
begin
|
5785
|
+
@driver.find_element(:xpath, '//*[@type="password"]').send_keys(user_pw)
|
5786
|
+
sleep(1)
|
5787
|
+
puts '-[√] 패스워드 20코드 타겟.......'.yellow
|
5788
|
+
rescue
|
5789
|
+
|
5790
|
+
end
|
5702
5791
|
end
|
5703
5792
|
end
|
5704
5793
|
end
|
@@ -5778,7 +5867,13 @@ begin
|
|
5778
5867
|
@driver.find_element(:xpath, '//*[@name="b_mail"]').send_keys(more_txt1)
|
5779
5868
|
sleep(1)
|
5780
5869
|
rescue
|
5781
|
-
|
5870
|
+
begin
|
5871
|
+
@driver.find_element(:xpath, '//*[@name="board_email"]').send_keys(more_txt1)
|
5872
|
+
sleep(1)
|
5873
|
+
rescue
|
5874
|
+
|
5875
|
+
|
5876
|
+
end
|
5782
5877
|
|
5783
5878
|
end
|
5784
5879
|
|
@@ -6465,22 +6560,28 @@ begin
|
|
6465
6560
|
@driver.find_element(:xpath, '//*[@name="b_subject"]').send_keys(title)
|
6466
6561
|
sleep(1)
|
6467
6562
|
puts '-[√] 제목 code 44.......'.yellow
|
6468
|
-
rescue
|
6469
|
-
|
6470
|
-
|
6471
|
-
|
6472
|
-
|
6473
|
-
|
6474
|
-
|
6475
|
-
|
6476
|
-
|
6477
|
-
|
6478
|
-
|
6479
|
-
|
6563
|
+
rescue
|
6564
|
+
begin
|
6565
|
+
@driver.find_element(:xpath, '//*[@name="board_subject"]').send_keys(title)
|
6566
|
+
sleep(1)
|
6567
|
+
puts '-[√] 제목 code 45.......'.yellow
|
6568
|
+
rescue => e
|
6569
|
+
puts '-[√] 제목 입력 항목 코드 탐색 실패!!.......'.red
|
6570
|
+
puts '-[√] 다음 작업 준비 중으로 1~60 초 정도 기다려주세요.......'.red
|
6571
|
+
|
6572
|
+
@driver.window_handles.each do |handle|
|
6573
|
+
@driver.switch_to.window(handle)
|
6574
|
+
begin
|
6575
|
+
# 로딩 중이거나, 페이지가 완전히 로딩되지 않더라도 탭을 닫기
|
6576
|
+
@driver.close
|
6577
|
+
|
6578
|
+
rescue Selenium::WebDriver::Error::WebDriverError => e
|
6579
|
+
puts "크롬 브라우저 종료: #{e.message}"
|
6580
|
+
end
|
6480
6581
|
end
|
6481
|
-
|
6482
|
-
|
6483
|
-
|
6582
|
+
return 0
|
6583
|
+
@driver.quit
|
6584
|
+
end
|
6484
6585
|
end
|
6485
6586
|
end
|
6486
6587
|
end
|
@@ -6812,7 +6913,25 @@ begin
|
|
6812
6913
|
puts '-[√] HTML 코드 31 code.......'.yellow
|
6813
6914
|
sleep(1)
|
6814
6915
|
rescue
|
6815
|
-
|
6916
|
+
begin
|
6917
|
+
html_bb = @driver.find_element(:xpath, '//*[@name="use_html"]')
|
6918
|
+
@driver.execute_script("arguments[0].scrollIntoView({block: 'center', inline: 'center'})", html_bb)
|
6919
|
+
sleep(1)
|
6920
|
+
html_bb = @driver.find_element(:xpath, '//*[@name="use_html"]').click
|
6921
|
+
puts '-[√] HTML 코드 32 code.......'.yellow
|
6922
|
+
sleep(1)
|
6923
|
+
rescue
|
6924
|
+
begin
|
6925
|
+
html_bb = @driver.find_element(:xpath, '//*[@class="note-btn btn-codeview note-codeview-keep"]')
|
6926
|
+
@driver.execute_script("arguments[0].scrollIntoView({block: 'center', inline: 'center'})", html_bb)
|
6927
|
+
sleep(1)
|
6928
|
+
html_bb = @driver.find_element(:xpath, '//*[@class="note-btn btn-codeview note-codeview-keep"]').click
|
6929
|
+
puts '-[√] HTML 코드 32 code.......'.yellow
|
6930
|
+
sleep(1)
|
6931
|
+
rescue
|
6932
|
+
|
6933
|
+
end
|
6934
|
+
end
|
6816
6935
|
end
|
6817
6936
|
end
|
6818
6937
|
end
|
@@ -6860,7 +6979,12 @@ begin
|
|
6860
6979
|
@driver.switch_to.alert.accept
|
6861
6980
|
sleep(1)
|
6862
6981
|
rescue
|
6863
|
-
|
6982
|
+
begin
|
6983
|
+
@driver.find_element(:xpath, '//*[@class="confirm"]').click
|
6984
|
+
sleep(1)
|
6985
|
+
rescue
|
6986
|
+
|
6987
|
+
end
|
6864
6988
|
end
|
6865
6989
|
|
6866
6990
|
|
@@ -7130,7 +7254,26 @@ rescue
|
|
7130
7254
|
@driver.switch_to.default_content
|
7131
7255
|
puts '내용 항목 코드 타겟 46.......'.red
|
7132
7256
|
rescue
|
7133
|
-
|
7257
|
+
begin
|
7258
|
+
@driver.find_element(:xpath, '//*[@name="board_body"]').click
|
7259
|
+
sleep(1)
|
7260
|
+
puts '내용 항목 코드 타겟 47.......'.red
|
7261
|
+
rescue
|
7262
|
+
begin
|
7263
|
+
@driver.find_element(:xpath, '//textarea[@id="wr_content"]').click
|
7264
|
+
sleep(1)
|
7265
|
+
puts '내용 항목 코드 타겟 48.......'.red
|
7266
|
+
rescue
|
7267
|
+
begin
|
7268
|
+
textarea = @driver.find_element(:id, 'kboard_content')
|
7269
|
+
@driver.execute_script("arguments[0].scrollIntoView(true);", textarea)
|
7270
|
+
textarea.click
|
7271
|
+
|
7272
|
+
rescue
|
7273
|
+
|
7274
|
+
end
|
7275
|
+
end
|
7276
|
+
end
|
7134
7277
|
end
|
7135
7278
|
end
|
7136
7279
|
end
|
@@ -8191,7 +8334,6 @@ if check_captcha == 1
|
|
8191
8334
|
# 요소가 나타날 때까지 30초 동안 기다립니다.
|
8192
8335
|
wait.until { @driver.find_element(:xpath, '//*[@data-state="ready"]') }
|
8193
8336
|
sleep(1)
|
8194
|
-
|
8195
8337
|
el_ready = @driver.find_element(:xpath, '//*[@data-state="ready"]')
|
8196
8338
|
@driver.action.move_to(el_ready).perform
|
8197
8339
|
sleep(1)
|
@@ -8266,7 +8408,7 @@ if check_captcha == 1
|
|
8266
8408
|
|
8267
8409
|
begin
|
8268
8410
|
#2차 확인 버튼 있을시
|
8269
|
-
puts '-[√] 캡챠 해제 완료 → 이어서 진행
|
8411
|
+
puts '-[√] 캡챠 해제 완료 → 이어서 진행 합니다>>.......'.green
|
8270
8412
|
button = @driver.find_element(:xpath, '//input[@type="button" and @id="captch_button" and @value="확인"]')
|
8271
8413
|
@driver.execute_script("arguments[0].scrollIntoView({block: 'center', inline: 'center'})", button)
|
8272
8414
|
sleep(2)
|
@@ -8664,6 +8806,51 @@ if check_captcha == 0
|
|
8664
8806
|
puts '-[√] 캡챠 코드 타겟 완료1.......'.blue
|
8665
8807
|
rescue
|
8666
8808
|
|
8809
|
+
begin
|
8810
|
+
@driver.switch_to.default_content()
|
8811
|
+
el = @driver.find_element(:xpath, '//img[@id="protect_img"]')
|
8812
|
+
puts '-[√] 캡챠 발견!! 캡차 해제를 위한 환경설정 약 10초 소요.......'.red
|
8813
|
+
puts '-[√] 캡챠 해제 중~ 해제 완료까지 마우스 움직이지 마세요.......'.red
|
8814
|
+
puts '-[√] 캡챠 코드 code 14.......'.red
|
8815
|
+
sleep(1)
|
8816
|
+
@driver.execute_script("arguments[0].scrollIntoView({behavior: 'smooth', block: 'center', inline: 'center'});", el) # 화면 가운데
|
8817
|
+
sleep(1)
|
8818
|
+
mouse_move_percentage(0.3,0.02)
|
8819
|
+
sleep(0.5)
|
8820
|
+
left_click
|
8821
|
+
sleep(1)
|
8822
|
+
@driver.switch_to.window(@driver.window_handle) #핸들 주입
|
8823
|
+
@driver.action.context_click(el).perform #우 클릭
|
8824
|
+
sleep(1)
|
8825
|
+
@driver.action.key_down(:shift).key_stroke('m').key_up(:shift).perform #단축키
|
8826
|
+
sleep(1)
|
8827
|
+
puts '-[√] 캡챠 코드 타겟 완료1.......'.blue
|
8828
|
+
rescue
|
8829
|
+
begin
|
8830
|
+
@driver.switch_to.default_content()
|
8831
|
+
el = @driver.find_element(:xpath, '//img[contains(@src, "/captcha/")]')
|
8832
|
+
puts '-[√] 캡챠 발견!! 캡차 해제를 위한 환경설정 약 10초 소요.......'.red
|
8833
|
+
puts '-[√] 캡챠 해제 중~ 해제 완료까지 마우스 움직이지 마세요.......'.red
|
8834
|
+
puts '-[√] 캡챠 코드 code 14.......'.red
|
8835
|
+
sleep(1)
|
8836
|
+
@driver.execute_script("arguments[0].scrollIntoView({behavior: 'smooth', block: 'center', inline: 'center'});", el) # 화면 가운데
|
8837
|
+
sleep(1)
|
8838
|
+
mouse_move_percentage(0.3,0.02)
|
8839
|
+
sleep(0.5)
|
8840
|
+
left_click
|
8841
|
+
sleep(1)
|
8842
|
+
@driver.switch_to.window(@driver.window_handle) #핸들 주입
|
8843
|
+
@driver.action.context_click(el).perform #우 클릭
|
8844
|
+
sleep(1)
|
8845
|
+
@driver.action.key_down(:shift).key_stroke('m').key_up(:shift).perform #단축키
|
8846
|
+
sleep(1)
|
8847
|
+
puts '-[√] 캡챠 코드 타겟 완료1.......'.blue
|
8848
|
+
rescue
|
8849
|
+
|
8850
|
+
|
8851
|
+
end
|
8852
|
+
|
8853
|
+
end
|
8667
8854
|
|
8668
8855
|
end
|
8669
8856
|
end
|
@@ -9462,7 +9649,44 @@ if check_captcha == 0
|
|
9462
9649
|
puts '-[√] 캡챠 코드 타겟 완료2.......'.blue
|
9463
9650
|
sleep(1)
|
9464
9651
|
rescue
|
9465
|
-
|
9652
|
+
begin
|
9653
|
+
@driver.switch_to.default_content()
|
9654
|
+
sleep(1)
|
9655
|
+
@driver.find_element(:xpath, '//*[@id="spamcode_chk"]').click
|
9656
|
+
sleep(1)
|
9657
|
+
el2 = @driver.find_element(:xpath, '//*[@id="spamcode_chk"]')
|
9658
|
+
@driver.action.context_click(el2).perform
|
9659
|
+
|
9660
|
+
sleep(1)
|
9661
|
+
@driver.action.key_stroke('up')
|
9662
|
+
sleep(1)
|
9663
|
+
@driver.action.key_stroke('up')
|
9664
|
+
sleep(1)
|
9665
|
+
@driver.action.key_stroke('enter')
|
9666
|
+
sleep(1)
|
9667
|
+
begin
|
9668
|
+
# 요소 찾기 타임아웃을 7초로 설정
|
9669
|
+
wait = Selenium::WebDriver::Wait.new(:timeout => 7)
|
9670
|
+
#요소가 나타날 때까지 7초 동안 기다립니다.
|
9671
|
+
wait.until { @driver.find_element(:xpath, '//*[@class="captcha-solver captcha-solver_inner"]') }
|
9672
|
+
rescue
|
9673
|
+
sleep(1)
|
9674
|
+
@driver.action.key_stroke('left')
|
9675
|
+
sleep(1)
|
9676
|
+
@driver.action.key_stroke('up')
|
9677
|
+
sleep(1)
|
9678
|
+
@driver.action.key_stroke('enter')
|
9679
|
+
sleep(1)
|
9680
|
+
# 요소 찾기 타임아웃을 7초로 설정
|
9681
|
+
wait = Selenium::WebDriver::Wait.new(:timeout => 7)
|
9682
|
+
#요소가 나타날 때까지 7초 동안 기다립니다.
|
9683
|
+
wait.until { @driver.find_element(:xpath, '//*[@class="captcha-solver captcha-solver_inner"]') }
|
9684
|
+
end
|
9685
|
+
puts '-[√] 캡챠 코드 타겟 완료2.......'.blue
|
9686
|
+
sleep(1)
|
9687
|
+
rescue
|
9688
|
+
|
9689
|
+
end
|
9466
9690
|
end
|
9467
9691
|
end
|
9468
9692
|
end
|
@@ -9549,7 +9773,7 @@ sleep(10)
|
|
9549
9773
|
sleep(1)
|
9550
9774
|
@driver.find_element(:xpath, '//*[@data-state="solved"]').click
|
9551
9775
|
puts '-[√] 캡챠 해제 완료 → 이어서 진행 합니다.......'.green
|
9552
|
-
puts '-[√] 캡챠 해제 완료 → 이어서 진행
|
9776
|
+
puts '-[√] 캡챠 해제 완료 → 이어서 진행 합니다>.......'.green
|
9553
9777
|
sleep(5)
|
9554
9778
|
begin
|
9555
9779
|
@driver.find_element(:xpath, '//*[@name="user_captcha"]').click
|
@@ -9568,7 +9792,7 @@ sleep(10)
|
|
9568
9792
|
rescue
|
9569
9793
|
begin
|
9570
9794
|
#2차 확인 버튼 있을시
|
9571
|
-
puts '-[√] 캡챠 해제 완료 → 이어서 진행
|
9795
|
+
puts '-[√] 캡챠 해제 완료 → 이어서 진행 합니다>>>.......'.green
|
9572
9796
|
button = @driver.find_element(:xpath, '//input[@type="button" and @id="captch_button" and @value="확인"]')
|
9573
9797
|
@driver.execute_script("arguments[0].scrollIntoView({block: 'center', inline: 'center'})", button)
|
9574
9798
|
sleep(2)
|
@@ -9882,12 +10106,17 @@ rescue
|
|
9882
10106
|
rescue
|
9883
10107
|
begin
|
9884
10108
|
ss_button = @driver.find_element(:xpath, '//*[@type="submit"]')
|
10109
|
+
if ss_button.attribute("class") == "upload_btn1"
|
10110
|
+
raise
|
10111
|
+
end
|
10112
|
+
|
9885
10113
|
@driver.execute_script("arguments[0].scrollIntoView({block: 'center', inline: 'center'})", ss_button)
|
9886
10114
|
sleep(1)
|
9887
10115
|
|
9888
|
-
|
10116
|
+
ss_button.click
|
9889
10117
|
puts '-[√] 등록을 24번 코드로 시도하였습니다.......'.magenta
|
9890
10118
|
sleep(5)
|
10119
|
+
|
9891
10120
|
|
9892
10121
|
rescue
|
9893
10122
|
begin
|
@@ -10020,210 +10249,265 @@ rescue
|
|
10020
10249
|
sleep(5)
|
10021
10250
|
|
10022
10251
|
rescue
|
10023
|
-
########─────────────────────────────▼▼▼▼▼▼▼ 등록버튼 2차 시도 ▼▼▼▼▼▼▼──────────────────────────────#######
|
10024
|
-
begin
|
10025
|
-
puts '-[√] 등록 버튼 코드 탐색에 실패하였습니다.......'.magenta
|
10026
|
-
puts '-[√] 다른 방법으로 등록을 시도 합니다.......'.magenta
|
10027
|
-
|
10028
|
-
sleep(1)
|
10029
|
-
@driver.find_element(:xpath, '//*[@id="wr_subject"]').send_keys()
|
10030
|
-
sleep(1)
|
10031
|
-
@driver.find_element(:xpath, '//*[@id="wr_subject"]').click
|
10032
|
-
sleep(1)
|
10033
|
-
@driver.action.key_down(:enter).key_up(:enter).perform #엔터
|
10034
|
-
puts '-[√] 등록을 시도하였습니다.......'.magenta
|
10035
|
-
sleep(5)
|
10036
|
-
rescue
|
10037
10252
|
begin
|
10038
|
-
@driver.find_element(:
|
10039
|
-
|
10040
|
-
@driver.find_element(:xpath, '//*[@fw-label="제목"]').click
|
10253
|
+
ss_button = @driver.find_element(css: 'ul.bt_type li a.bt_type4_w_4')
|
10254
|
+
@driver.execute_script("arguments[0].scrollIntoView({block: 'center', inline: 'center'})", ss_button)
|
10041
10255
|
sleep(1)
|
10042
|
-
|
10043
|
-
|
10256
|
+
|
10257
|
+
ss_button = @driver.find_element(css: 'ul.bt_type li a.bt_type4_w_4').click
|
10258
|
+
puts '-[√] 등록을 36번 코드로 시도하였습니다.......'.magenta
|
10044
10259
|
sleep(5)
|
10045
|
-
|
10260
|
+
|
10261
|
+
rescue
|
10046
10262
|
begin
|
10047
|
-
@driver.find_element(:
|
10263
|
+
ss_button = @driver.find_element(id: 'btn-write')
|
10264
|
+
@driver.execute_script("arguments[0].scrollIntoView({block: 'center', inline: 'center'})", ss_button)
|
10048
10265
|
sleep(1)
|
10049
|
-
|
10050
|
-
|
10051
|
-
|
10052
|
-
puts '-[√] 등록을 시도하였습니다.......'.magenta
|
10266
|
+
|
10267
|
+
ss_button = @driver.find_element(id: 'btn-write').click
|
10268
|
+
puts '-[√] 등록을 37번 코드로 시도하였습니다.......'.magenta
|
10053
10269
|
sleep(5)
|
10054
|
-
|
10270
|
+
|
10271
|
+
rescue
|
10055
10272
|
begin
|
10056
|
-
@driver.find_element(:xpath, '
|
10273
|
+
ss_button = @driver.find_element(:xpath, '//img[contains(@src, "img/btn_confirm.gif")]')
|
10274
|
+
@driver.execute_script("arguments[0].scrollIntoView({block: 'center', inline: 'center'})", ss_button)
|
10057
10275
|
sleep(1)
|
10058
|
-
|
10059
|
-
|
10060
|
-
|
10061
|
-
puts '-[√] 등록을 시도하였습니다.......'.magenta
|
10276
|
+
|
10277
|
+
ss_button = @driver.find_element(:xpath, '//img[contains(@src, "img/btn_confirm.gif")]').click
|
10278
|
+
puts '-[√] 등록을 38번 코드로 시도하였습니다.......'.magenta
|
10062
10279
|
sleep(5)
|
10063
|
-
|
10280
|
+
|
10281
|
+
rescue
|
10064
10282
|
begin
|
10065
|
-
|
10066
|
-
|
10067
|
-
|
10283
|
+
ss_button = @driver.find_element(:xpath, '//*[@class="btn2_1"]')
|
10284
|
+
@driver.execute_script("arguments[0].scrollIntoView({block: 'center', inline: 'center'})", ss_button)
|
10285
|
+
sleep(1)
|
10286
|
+
|
10287
|
+
ss_button = @driver.find_element(:xpath, '//*[@class="btn2_1"]').click
|
10288
|
+
puts '-[√] 등록을 39번 코드로 시도하였습니다.......'.magenta
|
10289
|
+
sleep(5)
|
10290
|
+
|
10291
|
+
rescue
|
10292
|
+
begin
|
10293
|
+
ss_button = @driver.find_element(:xpath, '//*[@class="pro-btn large _write"]')
|
10294
|
+
@driver.execute_script("arguments[0].scrollIntoView({block: 'center', inline: 'center'})", ss_button)
|
10068
10295
|
sleep(1)
|
10069
|
-
|
10070
|
-
|
10296
|
+
|
10297
|
+
ss_button = @driver.find_element(:xpath, '//*[@class="pro-btn large _write"]').click
|
10298
|
+
puts '-[√] 등록을 39번 코드로 시도하였습니다.......'.magenta
|
10071
10299
|
sleep(5)
|
10072
|
-
|
10073
|
-
|
10074
|
-
|
10075
|
-
sleep(1)
|
10076
|
-
@driver.find_element(:xpath, '//*[@id="title"]').click
|
10077
|
-
sleep(1)
|
10078
|
-
@driver.action.key_down(:enter).key_up(:enter).perform #엔터
|
10079
|
-
puts '-[√] 등록을 시도하였습니다.......'.magenta
|
10080
|
-
sleep(5)
|
10081
|
-
rescue
|
10300
|
+
|
10301
|
+
rescue
|
10302
|
+
########─────────────────────────────▼▼▼▼▼▼▼ 등록버튼 2차 시도 ▼▼▼▼▼▼▼──────────────────────────────#######
|
10082
10303
|
begin
|
10083
|
-
|
10304
|
+
puts '-[√] 등록 버튼 코드 탐색에 실패하였습니다.......'.magenta
|
10305
|
+
puts '-[√] 다른 방법으로 등록을 시도 합니다.......'.magenta
|
10306
|
+
|
10084
10307
|
sleep(1)
|
10085
|
-
@driver.find_element(:xpath, '//*[@id="
|
10308
|
+
@driver.find_element(:xpath, '//*[@id="wr_subject"]').send_keys()
|
10309
|
+
sleep(1)
|
10310
|
+
@driver.find_element(:xpath, '//*[@id="wr_subject"]').click
|
10086
10311
|
sleep(1)
|
10087
10312
|
@driver.action.key_down(:enter).key_up(:enter).perform #엔터
|
10088
10313
|
puts '-[√] 등록을 시도하였습니다.......'.magenta
|
10089
10314
|
sleep(5)
|
10090
|
-
rescue
|
10091
|
-
begin
|
10092
|
-
@driver.find_element(:xpath, '//*[@title="input"]').send_keys()
|
10093
|
-
sleep(1)
|
10094
|
-
@driver.find_element(:xpath, '//*[@title="input"]').click
|
10095
|
-
sleep(1)
|
10096
|
-
@driver.action.key_down(:enter).key_up(:enter).perform #엔터
|
10097
|
-
puts '-[√] 등록을 시도하였습니다.......'.magenta
|
10098
|
-
sleep(5)
|
10099
10315
|
rescue
|
10100
10316
|
begin
|
10101
|
-
@driver.find_element(:xpath, '//*[@
|
10317
|
+
@driver.find_element(:xpath, '//*[@fw-label="제목"]').send_keys()
|
10102
10318
|
sleep(1)
|
10103
|
-
@driver.find_element(:xpath, '//*[@
|
10319
|
+
@driver.find_element(:xpath, '//*[@fw-label="제목"]').click
|
10104
10320
|
sleep(1)
|
10105
10321
|
@driver.action.key_down(:enter).key_up(:enter).perform #엔터
|
10106
10322
|
puts '-[√] 등록을 시도하였습니다.......'.magenta
|
10107
10323
|
sleep(5)
|
10108
10324
|
rescue
|
10109
10325
|
begin
|
10110
|
-
@driver.find_element(:xpath, '//*[@name="
|
10326
|
+
@driver.find_element(:xpath, '//*[@name="subject"]').send_keys()
|
10111
10327
|
sleep(1)
|
10112
|
-
@driver.find_element(:xpath, '//*[@name="
|
10328
|
+
@driver.find_element(:xpath, '//*[@name="subject"]').click
|
10113
10329
|
sleep(1)
|
10114
10330
|
@driver.action.key_down(:enter).key_up(:enter).perform #엔터
|
10115
10331
|
puts '-[√] 등록을 시도하였습니다.......'.magenta
|
10116
10332
|
sleep(5)
|
10117
10333
|
rescue
|
10118
10334
|
begin
|
10119
|
-
@driver.find_element(:xpath, '//*[@
|
10335
|
+
@driver.find_element(:xpath, '//*[@name="title"]').send_keys()
|
10120
10336
|
sleep(1)
|
10121
|
-
@driver.find_element(:xpath, '//*[@
|
10337
|
+
@driver.find_element(:xpath, '//*[@name="title"]').click
|
10122
10338
|
sleep(1)
|
10123
10339
|
@driver.action.key_down(:enter).key_up(:enter).perform #엔터
|
10124
10340
|
puts '-[√] 등록을 시도하였습니다.......'.magenta
|
10125
10341
|
sleep(5)
|
10126
10342
|
rescue
|
10127
10343
|
begin
|
10128
|
-
@driver.find_element(:xpath, '//*[@
|
10344
|
+
@driver.find_element(:xpath, '//*[@id="wr_title"]').send_keys()
|
10129
10345
|
sleep(1)
|
10130
|
-
@driver.find_element(:xpath, '//*[@
|
10346
|
+
@driver.find_element(:xpath, '//*[@id="wr_title"]').click
|
10131
10347
|
sleep(1)
|
10132
10348
|
@driver.action.key_down(:enter).key_up(:enter).perform #엔터
|
10133
10349
|
puts '-[√] 등록을 시도하였습니다.......'.magenta
|
10134
10350
|
sleep(5)
|
10135
10351
|
rescue
|
10136
10352
|
begin
|
10137
|
-
@driver.find_element(:xpath, '//*[@
|
10353
|
+
@driver.find_element(:xpath, '//*[@id="title"]').send_keys()
|
10138
10354
|
sleep(1)
|
10139
|
-
@driver.find_element(:xpath, '//*[@
|
10355
|
+
@driver.find_element(:xpath, '//*[@id="title"]').click
|
10140
10356
|
sleep(1)
|
10141
10357
|
@driver.action.key_down(:enter).key_up(:enter).perform #엔터
|
10142
10358
|
puts '-[√] 등록을 시도하였습니다.......'.magenta
|
10143
10359
|
sleep(5)
|
10144
10360
|
rescue
|
10145
10361
|
begin
|
10146
|
-
@driver.find_element(:xpath, '//*[@
|
10362
|
+
@driver.find_element(:xpath, '//*[@id="postTitle"]').send_keys()
|
10147
10363
|
sleep(1)
|
10148
|
-
@driver.find_element(:xpath, '//*[@
|
10364
|
+
@driver.find_element(:xpath, '//*[@id="postTitle"]').click
|
10149
10365
|
sleep(1)
|
10150
10366
|
@driver.action.key_down(:enter).key_up(:enter).perform #엔터
|
10151
10367
|
puts '-[√] 등록을 시도하였습니다.......'.magenta
|
10152
10368
|
sleep(5)
|
10153
10369
|
rescue
|
10154
10370
|
begin
|
10155
|
-
@driver.find_element(:xpath, '//*[@
|
10371
|
+
@driver.find_element(:xpath, '//*[@title="input"]').send_keys()
|
10156
10372
|
sleep(1)
|
10157
|
-
@driver.find_element(:xpath, '//*[@
|
10373
|
+
@driver.find_element(:xpath, '//*[@title="input"]').click
|
10158
10374
|
sleep(1)
|
10159
10375
|
@driver.action.key_down(:enter).key_up(:enter).perform #엔터
|
10160
10376
|
puts '-[√] 등록을 시도하였습니다.......'.magenta
|
10161
10377
|
sleep(5)
|
10162
10378
|
rescue
|
10163
10379
|
begin
|
10164
|
-
@driver.find_element(:xpath, '//*[@
|
10380
|
+
@driver.find_element(:xpath, '//*[@name="wr_subject"]').send_keys()
|
10165
10381
|
sleep(1)
|
10166
|
-
@driver.find_element(:xpath, '//*[@
|
10382
|
+
@driver.find_element(:xpath, '//*[@name="wr_subject"]').click
|
10167
10383
|
sleep(1)
|
10168
10384
|
@driver.action.key_down(:enter).key_up(:enter).perform #엔터
|
10169
10385
|
puts '-[√] 등록을 시도하였습니다.......'.magenta
|
10170
10386
|
sleep(5)
|
10171
10387
|
rescue
|
10172
10388
|
begin
|
10173
|
-
@driver.find_element(:xpath, '//*[@name="
|
10389
|
+
@driver.find_element(:xpath, '//*[@name="post_title"]').send_keys()
|
10174
10390
|
sleep(1)
|
10175
|
-
@driver.find_element(:xpath, '//*[@name="
|
10391
|
+
@driver.find_element(:xpath, '//*[@name="post_title"]').click
|
10176
10392
|
sleep(1)
|
10177
10393
|
@driver.action.key_down(:enter).key_up(:enter).perform #엔터
|
10178
10394
|
puts '-[√] 등록을 시도하였습니다.......'.magenta
|
10179
10395
|
sleep(5)
|
10180
|
-
|
10181
10396
|
rescue
|
10182
10397
|
begin
|
10183
|
-
@driver.find_element(:xpath, '//*[@
|
10398
|
+
@driver.find_element(:xpath, '//*[@title="제목"]').send_keys()
|
10184
10399
|
sleep(1)
|
10185
|
-
@driver.find_element(:xpath, '//*[@
|
10400
|
+
@driver.find_element(:xpath, '//*[@title="제목"]').click
|
10186
10401
|
sleep(1)
|
10187
10402
|
@driver.action.key_down(:enter).key_up(:enter).perform #엔터
|
10188
10403
|
puts '-[√] 등록을 시도하였습니다.......'.magenta
|
10189
10404
|
sleep(5)
|
10190
|
-
|
10191
|
-
|
10192
|
-
|
10193
|
-
|
10194
|
-
|
10195
|
-
|
10196
|
-
@driver.
|
10405
|
+
rescue
|
10406
|
+
begin
|
10407
|
+
@driver.find_element(:xpath, '//*[@placeholder="제목을 입력하세요"]').send_keys()
|
10408
|
+
sleep(1)
|
10409
|
+
@driver.find_element(:xpath, '//*[@placeholder="제목을 입력하세요"]').click
|
10410
|
+
sleep(1)
|
10411
|
+
@driver.action.key_down(:enter).key_up(:enter).perform #엔터
|
10412
|
+
puts '-[√] 등록을 시도하였습니다.......'.magenta
|
10413
|
+
sleep(5)
|
10414
|
+
rescue
|
10197
10415
|
begin
|
10198
|
-
|
10199
|
-
|
10200
|
-
|
10201
|
-
|
10202
|
-
|
10203
|
-
|
10204
|
-
|
10205
|
-
|
10206
|
-
|
10207
|
-
|
10208
|
-
|
10209
|
-
|
10210
|
-
|
10416
|
+
@driver.find_element(:xpath, '//*[@placeholder="제목"]').send_keys()
|
10417
|
+
sleep(1)
|
10418
|
+
@driver.find_element(:xpath, '//*[@placeholder="제목"]').click
|
10419
|
+
sleep(1)
|
10420
|
+
@driver.action.key_down(:enter).key_up(:enter).perform #엔터
|
10421
|
+
puts '-[√] 등록을 시도하였습니다.......'.magenta
|
10422
|
+
sleep(5)
|
10423
|
+
rescue
|
10424
|
+
begin
|
10425
|
+
@driver.find_element(:xpath, '//*[@hname="제목"]').send_keys()
|
10426
|
+
sleep(1)
|
10427
|
+
@driver.find_element(:xpath, '//*[@hname="제목"]').click
|
10428
|
+
sleep(1)
|
10429
|
+
@driver.action.key_down(:enter).key_up(:enter).perform #엔터
|
10430
|
+
puts '-[√] 등록을 시도하였습니다.......'.magenta
|
10431
|
+
sleep(5)
|
10432
|
+
rescue
|
10433
|
+
begin
|
10434
|
+
@driver.find_element(:xpath, '//*[@id="post_subject"]').send_keys()
|
10435
|
+
sleep(1)
|
10436
|
+
@driver.find_element(:xpath, '//*[@id="post_subject"]').click
|
10437
|
+
sleep(1)
|
10438
|
+
@driver.action.key_down(:enter).key_up(:enter).perform #엔터
|
10439
|
+
puts '-[√] 등록을 시도하였습니다.......'.magenta
|
10440
|
+
sleep(5)
|
10441
|
+
rescue
|
10442
|
+
begin
|
10443
|
+
@driver.find_element(:xpath, '//*[@id="search_bar"]').send_keys()
|
10444
|
+
sleep(1)
|
10445
|
+
@driver.find_element(:xpath, '//*[@id="search_bar"]').click
|
10446
|
+
sleep(1)
|
10447
|
+
@driver.action.key_down(:enter).key_up(:enter).perform #엔터
|
10448
|
+
puts '-[√] 등록을 시도하였습니다.......'.magenta
|
10449
|
+
sleep(5)
|
10450
|
+
rescue
|
10451
|
+
begin
|
10452
|
+
@driver.find_element(:xpath, '//*[@name="SUBJECT"]').send_keys()
|
10453
|
+
sleep(1)
|
10454
|
+
@driver.find_element(:xpath, '//*[@name="SUBJECT"]').click
|
10455
|
+
sleep(1)
|
10456
|
+
@driver.action.key_down(:enter).key_up(:enter).perform #엔터
|
10457
|
+
puts '-[√] 등록을 시도하였습니다.......'.magenta
|
10458
|
+
sleep(5)
|
10459
|
+
|
10460
|
+
rescue
|
10461
|
+
begin
|
10462
|
+
@driver.find_element(:xpath, '//*[@name="rg_title"]').send_keys()
|
10463
|
+
sleep(1)
|
10464
|
+
@driver.find_element(:xpath, '//*[@name="rg_title"]').click
|
10465
|
+
sleep(1)
|
10466
|
+
@driver.action.key_down(:enter).key_up(:enter).perform #엔터
|
10467
|
+
puts '-[√] 등록을 시도하였습니다.......'.magenta
|
10468
|
+
sleep(5)
|
10469
|
+
|
10470
|
+
rescue => e
|
10471
|
+
puts '-[√] 등록 실패.......'.red
|
10472
|
+
puts '-[√] 로딩 및 코드인식 실패등 기타 이유로 다음 게시판 작업으로 이동합니다.......'.red
|
10473
|
+
puts '-[√] 다음 작업 준비로 약 1초~60초 내외 시간이 소요됩니다.......'.red
|
10474
|
+
@driver.window_handles.each do |handle|
|
10475
|
+
@driver.switch_to.window(handle)
|
10476
|
+
begin
|
10477
|
+
# 로딩 중이거나, 페이지가 완전히 로딩되지 않더라도 탭을 닫기
|
10478
|
+
@driver.close
|
10479
|
+
rescue Selenium::WebDriver::Error::WebDriverError => e
|
10480
|
+
puts "크롬 브라우저 종료: #{e.message}"
|
10481
|
+
end
|
10482
|
+
end
|
10483
|
+
return 0
|
10484
|
+
@driver.quit
|
10485
|
+
end
|
10486
|
+
end
|
10487
|
+
end
|
10488
|
+
|
10489
|
+
end
|
10490
|
+
end
|
10491
|
+
end
|
10492
|
+
end
|
10493
|
+
end
|
10494
|
+
end
|
10495
|
+
end
|
10496
|
+
end
|
10211
10497
|
end
|
10212
|
-
end
|
10213
|
-
end
|
10498
|
+
end
|
10499
|
+
end
|
10214
10500
|
end
|
10215
|
-
end
|
10216
|
-
end
|
10217
|
-
end
|
10218
|
-
end
|
10219
|
-
|
10220
|
-
end
|
10221
|
-
|
10222
|
-
end
|
10223
|
-
end
|
10501
|
+
end
|
10502
|
+
end
|
10503
|
+
end
|
10504
|
+
end
|
10505
|
+
########─────────────────────────────▲▲▲▲▲▲▲ 등록버튼 2차 시도 ▲▲▲▲▲▲▲──────────────────────────────#######
|
10506
|
+
end
|
10507
|
+
end
|
10224
10508
|
end
|
10225
10509
|
end
|
10226
|
-
|
10510
|
+
end
|
10227
10511
|
end
|
10228
10512
|
end
|
10229
10513
|
end
|
@@ -10259,7 +10543,8 @@ rescue
|
|
10259
10543
|
end
|
10260
10544
|
end
|
10261
10545
|
end
|
10262
|
-
|
10546
|
+
|
10547
|
+
|
10263
10548
|
|
10264
10549
|
|
10265
10550
|
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: posting_duo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.87.799
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- zon
|
8
8
|
bindir: bin
|
9
9
|
cert_chain: []
|
10
|
-
date: 2025-05-
|
10
|
+
date: 2025-05-09 00:00:00.000000000 Z
|
11
11
|
dependencies: []
|
12
12
|
description: File to Clipboard gem
|
13
13
|
email: mymin26@naver.com
|