posting_zon 3.95.999 → 3.97.999

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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/posting_zon.rb +409 -252
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 642bb72888a8bda1c2b2bb6a120b3576454298d07c15f648ee4a1e4f6fb1d28f
4
- data.tar.gz: 48b19b788c2ecc0b46feebc3551bee13b5b9ca58f0c797495cfcbe7854fb834e
3
+ metadata.gz: 4a1736a6b08e734e1b136899876dcd57ead61b6229842109fc069304715d8336
4
+ data.tar.gz: b29484a4972698f5a101500af979cffba0a082dc3f0f9e0036daa49c5b56c317
5
5
  SHA512:
6
- metadata.gz: fbc416bc6d969031e1561c81cabe282b0e881860c2f4eaf4b098cef2e43f09bc4de5c8993131d8378a0a2bc9575efa7db3779cf54828c89250af0702d5ec91bd
7
- data.tar.gz: a9ac35574c215233e466971aefdd8cfd7ef70799d5bd1d783d168aa8cd32cc736961b89bc36cfc9dbe307ed8446b808f72e06b3807f355c2c44952c33bd71062
6
+ metadata.gz: b3cec574266c2315a832f5ea1041b5dc3614f834624f79dd42120cd7f3479ea176776e6fb2205a7f507a6996f87ba98ca2be55fdaedc17f11f58614b3a25e81f
7
+ data.tar.gz: 1dbff8785f57ca474f9f2a1570592bed7b7f19211e0257d93f5c2afb71b2686e7b9d8f4979f0d6ddef725e0d4d5e629f8455ea5ca84175bb50295ea5639a7671
data/lib/posting_zon.rb CHANGED
@@ -29,8 +29,37 @@ using Rainbow
29
29
 
30
30
  class Naver
31
31
  def initialize
32
+ kill_selenium_chrome #기존 창 모두 닫는 명령
33
+ sleep(1)
32
34
  end
33
35
 
36
+ def kill_selenium_chrome #기존 창 모두 닫는 코드
37
+ wmi = WIN32OLE.connect("winmgmts://")
38
+ chrome_procs = wmi.ExecQuery("SELECT * FROM Win32_Process WHERE Name = 'chrome.exe'")
39
+
40
+ chrome_procs.each do |proc|
41
+ cmd = proc.CommandLine
42
+ if cmd && cmd.include?("user-data-dir=C:/board_cookie")
43
+ puts "→ 크롬 창 초기화: PID #{proc.ProcessId}"
44
+ begin
45
+ proc.Terminate
46
+ rescue
47
+ #puts "→ 이미 종료된 프로세스: #{proc.ProcessId}"
48
+ end
49
+ end
50
+ end
51
+
52
+ # chromedriver도 같이 종료
53
+ chromedrivers = wmi.ExecQuery("SELECT * FROM Win32_Process WHERE Name = 'chromedriver.exe'")
54
+ chromedrivers.each do |proc|
55
+ puts "→ 크롬 창 초기화: PID #{proc.ProcessId}"
56
+ begin
57
+ proc.Terminate
58
+ rescue
59
+ #puts "→ 이미 종료된 chromedriver: #{proc.ProcessId}"
60
+ end
61
+ end
62
+ end
34
63
 
35
64
  def chrome_setup(proxy, board_cookie_dir = "C:/board_cookie")
36
65
  board_cookie_dir = "C:/board_cookie"
@@ -285,8 +314,10 @@ class Naver
285
314
  sleep(1)
286
315
  rescue
287
316
  @driver.quit
317
+ sleep(1)
288
318
  @driver.close
289
319
  return 0
320
+ sleep(1)
290
321
  end
291
322
  end
292
323
 
@@ -490,8 +521,10 @@ class Naver
490
521
  end
491
522
 
492
523
  @driver.quit
524
+ sleep(1)
493
525
  @driver.close
494
526
  return 0
527
+ sleep(1)
495
528
  end
496
529
 
497
530
 
@@ -510,8 +543,10 @@ class Naver
510
543
  end
511
544
 
512
545
  @driver.quit
546
+ sleep(1)
513
547
  @driver.close
514
548
  return 0
549
+ sleep(1)
515
550
  end
516
551
 
517
552
  end
@@ -529,8 +564,10 @@ class Naver
529
564
  end
530
565
  end
531
566
  @driver.quit
567
+ sleep(1)
532
568
  @driver.close
533
569
  return 0
570
+ sleep(1)
534
571
  end
535
572
 
536
573
 
@@ -544,7 +581,7 @@ class Naver
544
581
  wait = Selenium::WebDriver::Wait.new(:timeout => 5)
545
582
  #요소가 나타날 때까지 3초 동안 기다립니다.
546
583
  wait.until { @driver.find_element(xpath: '//section[@class="lwrbTd"]//button[@jsname="ajZLRd"]') } #추가 되어 있음
547
-
584
+ sleep(1)
548
585
  @driver.manage.window.maximize
549
586
  sleep(1)
550
587
  rescue => e
@@ -559,8 +596,10 @@ class Naver
559
596
  end
560
597
  end
561
598
  @driver.quit
599
+ sleep(1)
562
600
  @driver.close
563
- # return 0
601
+ return 0
602
+ sleep(1)
564
603
  end
565
604
  end
566
605
 
@@ -610,22 +649,29 @@ def update(user_id, user_pw, title, content, option, post_url, signup_url, login
610
649
  if error_text
611
650
  puts '사이트 문제 발견!! 사이트에 접근할수 없습니다 창을 닫습니다.'
612
651
  @driver.quit if @driver
613
- #return 0
614
- @driver.close
652
+ return 0
615
653
  end
616
654
  rescue
617
- end
618
-
619
- begin
620
- # 이 부분을 통해 페이지 내에서 "사이트에 연결할 수 없음" 텍스트를 찾습니다.
621
- error_text = @driver.find_element(:xpath, '//*[contains(text(),"Connection timed out")]')
622
- if error_text
623
- puts '사이트 문제 발견!! 사이트에 접근할수 없습니다 창을 닫습니다.'
624
- @driver.quit if @driver
625
- #return 0
626
- @driver.close
655
+ begin
656
+ # 이 부분을 통해 페이지 내에서 "사이트에 연결할 수 없음" 텍스트를 찾습니다.
657
+ error_text = @driver.find_element(:xpath, '//*[contains(text(),"Connection timed out")]')
658
+ if error_text
659
+ puts '사이트 문제 발견!! 사이트에 접근할수 없습니다 창을 닫습니다.'
660
+ @driver.quit if @driver
661
+ return 0
662
+ end
663
+ rescue
664
+ begin
665
+ # 이 부분을 통해 페이지 내에서 "사이트에 연결할 수 없음" 텍스트를 찾습니다.
666
+ error_text = @driver.find_element(:xpath, '//h1[contains(text(),"Not Found")]')
667
+ if error_text
668
+ puts '사이트 문제 발견!! 사이트에 접근할수 없습니다 창을 닫습니다.'
669
+ @driver.quit if @driver
670
+ return 0
671
+ end
672
+ rescue
673
+ end
627
674
  end
628
- rescue
629
675
  end
630
676
 
631
677
  begin
@@ -702,9 +748,10 @@ def update(user_id, user_pw, title, content, option, post_url, signup_url, login
702
748
  puts '-[√] 다음 작업 준비로 약 1초~60초 내외 시간이 소요됩니다.......'.red
703
749
  end
704
750
  end
705
- #return 0
751
+ sleep(1)
706
752
  @driver.quit
707
- @driver.close
753
+ return 0
754
+ sleep(1)
708
755
  rescue
709
756
  begin
710
757
  # 타임아웃을 77초로 설정
@@ -720,7 +767,7 @@ def update(user_id, user_pw, title, content, option, post_url, signup_url, login
720
767
  puts '-[√] 다음 작업 준비로 약 1초~60초 내외 시간이 소요됩니다.......'.red
721
768
  puts e
722
769
  @driver.close
723
- #return 0
770
+ return 0
724
771
  end
725
772
  end
726
773
  rescue
@@ -736,23 +783,24 @@ def update(user_id, user_pw, title, content, option, post_url, signup_url, login
736
783
  @driver.find_element(:xpath, '//*[@data-state="ready"]').click #캡챠우회버튼
737
784
  puts '-[√] 캡챠 해제 진행 중 (약 30~60 초 소요됩니다).......'.green
738
785
  sleep(10)
739
- begin
740
- @driver.find_element(:xpath, '//*[@data-state="error"]').click
741
- puts '-[√] 캡챠 해제 실패 !! API번호 및 포인트를 체크해주세요.......'.red
742
- puts '-[√] 캡챠 해제 실패 !! API번호 및 포인트를 체크해주세요.......'.red
743
- @driver.window_handles.each do |handle|
744
- @driver.switch_to.window(handle)
745
- begin
746
- # 로딩 중이거나, 페이지가 완전히 로딩되지 않더라도 탭을 닫기
747
- @driver.close
748
- rescue Selenium::WebDriver::Error::WebDriverError => e
749
- puts '-[√] 다음 작업 준비로 약 1초~60초 내외 시간이 소요됩니다.......'.red
750
- end
751
- end
752
- #return 0
753
- @driver.quit
754
- @driver.close
755
- rescue
786
+ begin
787
+ @driver.find_element(:xpath, '//*[@data-state="error"]').click
788
+ puts '-[√] 캡챠 해제 실패 !! API번호 및 포인트를 체크해주세요.......'.red
789
+ puts '-[√] 캡챠 해제 실패 !! API번호 및 포인트를 체크해주세요.......'.red
790
+ @driver.window_handles.each do |handle|
791
+ @driver.switch_to.window(handle)
792
+ begin
793
+ # 로딩 중이거나, 페이지가 완전히 로딩되지 않더라도 탭을 닫기
794
+ @driver.close
795
+ rescue Selenium::WebDriver::Error::WebDriverError => e
796
+ puts '-[√] 다음 작업 준비로 약 1초~60초 내외 시간이 소요됩니다.......'.red
797
+ end
798
+ end
799
+ sleep(1)
800
+ @driver.quit
801
+ return 0
802
+ sleep(1)
803
+ rescue
756
804
  begin
757
805
  # 타임아웃을 77초로 설정
758
806
  wait = Selenium::WebDriver::Wait.new(:timeout => 150)
@@ -768,7 +816,7 @@ def update(user_id, user_pw, title, content, option, post_url, signup_url, login
768
816
  puts '-[√] 다음 작업 준비로 약 1초~60초 내외 시간이 소요됩니다.......'.red
769
817
  puts e
770
818
  @driver.close
771
- #return 0
819
+ return 0
772
820
  end
773
821
  end
774
822
  rescue
@@ -781,23 +829,24 @@ def update(user_id, user_pw, title, content, option, post_url, signup_url, login
781
829
  @driver.find_element(:xpath, '//*[@data-state="ready"]').click #캡챠우회버튼
782
830
  puts '-[√] 캡챠 해제 진행 중 (약 30~60 초 소요됩니다).......'.green
783
831
  sleep(10)
784
- begin
785
- @driver.find_element(:xpath, '//*[@data-state="error"]').click
786
- puts '-[√] 캡챠 해제 실패 !! API번호 및 포인트를 체크해주세요.......'.red
787
- puts '-[√] 캡챠 해제 실패 !! API번호 및 포인트를 체크해주세요.......'.red
788
- @driver.window_handles.each do |handle|
789
- @driver.switch_to.window(handle)
790
- begin
791
- # 로딩 중이거나, 페이지가 완전히 로딩되지 않더라도 탭을 닫기
792
- @driver.close
793
- rescue Selenium::WebDriver::Error::WebDriverError => e
794
- puts '-[√] 다음 작업 준비로 약 1초~60초 내외 시간이 소요됩니다.......'.red
795
- end
796
- end
797
- #return 0
798
- @driver.quit
799
- @driver.close
800
- rescue
832
+ begin
833
+ @driver.find_element(:xpath, '//*[@data-state="error"]').click
834
+ puts '-[√] 캡챠 해제 실패 !! API번호 및 포인트를 체크해주세요.......'.red
835
+ puts '-[√] 캡챠 해제 실패 !! API번호 및 포인트를 체크해주세요.......'.red
836
+ @driver.window_handles.each do |handle|
837
+ @driver.switch_to.window(handle)
838
+ begin
839
+ # 로딩 중이거나, 페이지가 완전히 로딩되지 않더라도 탭을 닫기
840
+ @driver.close
841
+ rescue Selenium::WebDriver::Error::WebDriverError => e
842
+ puts '-[√] 다음 작업 준비로 약 1초~60초 내외 시간이 소요됩니다.......'.red
843
+ end
844
+ end
845
+ sleep(1)
846
+ @driver.quit
847
+ return 0
848
+ sleep(1)
849
+ rescue
801
850
  begin
802
851
  # 타임아웃을 77초로 설정
803
852
  wait = Selenium::WebDriver::Wait.new(:timeout => 150)
@@ -813,7 +862,7 @@ def update(user_id, user_pw, title, content, option, post_url, signup_url, login
813
862
  puts '-[√] 다음 작업 준비로 약 1초~60초 내외 시간이 소요됩니다.......'.red
814
863
  puts e
815
864
  @driver.close
816
- #return 0
865
+ return 0
817
866
  end
818
867
  end
819
868
  rescue
@@ -849,7 +898,7 @@ def update(user_id, user_pw, title, content, option, post_url, signup_url, login
849
898
  puts '-[√] 다음 작업 준비로 약 1초~60초 내외 시간이 소요됩니다.......'.red
850
899
  puts e
851
900
  @driver.close
852
- #return 0
901
+ return 0
853
902
  end
854
903
  end
855
904
  begin
@@ -863,13 +912,31 @@ def update(user_id, user_pw, title, content, option, post_url, signup_url, login
863
912
  # 이 부분을 통해 페이지 내에서 "사이트에 연결할 수 없음" 텍스트를 찾습니다.
864
913
  error_text = @driver.find_element(:xpath, '//*[contains(text(),"사이트에 연결할 수 없음")]')
865
914
  if error_text
866
- puts '사이트에 연결할 없음 텍스트가 발견되었습니다. 창을 닫습니다.'
915
+ puts '사이트 문제 발견!! 사이트에 접근할수 없습니다 창을 닫습니다.'
867
916
  @driver.quit if @driver
868
- @driver.close
869
- #return 0
917
+ return 0
918
+ end
919
+ rescue
920
+ begin
921
+ # 이 부분을 통해 페이지 내에서 "사이트에 연결할 수 없음" 텍스트를 찾습니다.
922
+ error_text = @driver.find_element(:xpath, '//*[contains(text(),"Connection timed out")]')
923
+ if error_text
924
+ puts '사이트 문제 발견!! 사이트에 접근할수 없습니다 창을 닫습니다.'
925
+ @driver.quit if @driver
926
+ return 0
927
+ end
928
+ rescue
929
+ begin
930
+ # 이 부분을 통해 페이지 내에서 "사이트에 연결할 수 없음" 텍스트를 찾습니다.
931
+ error_text = @driver.find_element(:xpath, '//h1[contains(text(),"Not Found")]')
932
+ if error_text
933
+ puts '사이트 문제 발견!! 사이트에 접근할수 없습니다 창을 닫습니다.'
934
+ @driver.quit if @driver
935
+ return 0
936
+ end
937
+ rescue
938
+ end
870
939
  end
871
- rescue Selenium::WebDriver::Error::NoSuchElementError
872
- # 해당 텍스트가 없으면 아무 작업 안함
873
940
  end
874
941
 
875
942
 
@@ -1062,8 +1129,10 @@ def update(user_id, user_pw, title, content, option, post_url, signup_url, login
1062
1129
  puts '-[√] 회원가입 1차 페이지 접속 시도 실패 (페이지 로딩 지연 및 접속 불량).......'.red
1063
1130
  puts '-[√] 다음 작업 준비로 약 1초~60초 내외 시간이 소요됩니다.......'.red
1064
1131
  puts e
1132
+ sleep(1)
1065
1133
  @driver.close
1066
- #return 0
1134
+ return 0
1135
+ sleep(1)
1067
1136
 
1068
1137
  end
1069
1138
  end
@@ -1126,9 +1195,8 @@ def update(user_id, user_pw, title, content, option, post_url, signup_url, login
1126
1195
  puts '-[√] 다음 작업 준비로 약 1초~60초 내외 시간이 소요됩니다.......'.red
1127
1196
  end
1128
1197
  end
1129
- #return 0
1130
1198
  @driver.quit
1131
- @driver.close
1199
+ return 0
1132
1200
  rescue
1133
1201
  # 타임아웃을 77초로 설정
1134
1202
  wait = Selenium::WebDriver::Wait.new(:timeout => 150)
@@ -3397,9 +3465,8 @@ sleep(10)
3397
3465
  puts '-[√] 다음 작업 준비로 약 1초~60초 내외 시간이 소요됩니다.......'.red
3398
3466
  end
3399
3467
  end
3400
- #return 0
3401
3468
  @driver.quit
3402
- @driver.close
3469
+ return 0
3403
3470
  rescue
3404
3471
  # 타임아웃을 77초로 설정
3405
3472
  wait = Selenium::WebDriver::Wait.new(:timeout => 150)
@@ -3535,7 +3602,7 @@ end
3535
3602
  puts '-[√] 다음 작업 준비로 약 1초~60초 내외 시간이 소요됩니다.......'.red
3536
3603
  puts e
3537
3604
  @driver.close
3538
- #return 0
3605
+ return 0
3539
3606
  end
3540
3607
 
3541
3608
 
@@ -3579,24 +3646,32 @@ login_url = option['login_url'].to_s
3579
3646
  if error_text
3580
3647
  puts '사이트 문제 발견!! 사이트에 접근할수 없습니다 창을 닫습니다.'
3581
3648
  @driver.quit if @driver
3582
- @driver.close
3583
- #return 0
3649
+ return 0
3584
3650
  end
3585
3651
  rescue
3586
- end
3587
-
3588
- begin
3589
- # 이 부분을 통해 페이지 내에서 "사이트에 연결할 수 없음" 텍스트를 찾습니다.
3590
- error_text = @driver.find_element(:xpath, '//*[contains(text(),"Connection timed out")]')
3591
- if error_text
3592
- puts '사이트 문제 발견!! 사이트에 접근할수 없습니다 창을 닫습니다.'
3593
- @driver.quit if @driver
3594
- @driver.close
3595
- #return 0
3652
+ begin
3653
+ # 이 부분을 통해 페이지 내에서 "사이트에 연결할 수 없음" 텍스트를 찾습니다.
3654
+ error_text = @driver.find_element(:xpath, '//*[contains(text(),"Connection timed out")]')
3655
+ if error_text
3656
+ puts '사이트 문제 발견!! 사이트에 접근할수 없습니다 창을 닫습니다.'
3657
+ @driver.quit if @driver
3658
+ return 0
3659
+ end
3660
+ rescue
3661
+ begin
3662
+ # 이 부분을 통해 페이지 내에서 "사이트에 연결할 수 없음" 텍스트를 찾습니다.
3663
+ error_text = @driver.find_element(:xpath, '//h1[contains(text(),"Not Found")]')
3664
+ if error_text
3665
+ puts '사이트 문제 발견!! 사이트에 접근할수 없습니다 창을 닫습니다.'
3666
+ @driver.quit if @driver
3667
+ return 0
3668
+ end
3669
+ rescue
3670
+ end
3596
3671
  end
3597
- rescue
3598
3672
  end
3599
3673
 
3674
+
3600
3675
  begin
3601
3676
  wait = Selenium::WebDriver::Wait.new(:timeout => 2) # 3초 대기
3602
3677
  alert = wait.until { @driver.switch_to.alert } # alert가 나타날 때까지 기다림
@@ -3656,9 +3731,8 @@ login_url = option['login_url'].to_s
3656
3731
  puts '-[√] 다음 작업 준비로 약 1초~60초 내외 시간이 소요됩니다.......'.red
3657
3732
  end
3658
3733
  end
3659
- #return 0
3660
3734
  @driver.quit
3661
- @driver.close
3735
+ return 0
3662
3736
  rescue
3663
3737
  begin
3664
3738
  # 타임아웃을 77초로 설정
@@ -3698,9 +3772,8 @@ login_url = option['login_url'].to_s
3698
3772
  puts '-[√] 다음 작업 준비로 약 1초~60초 내외 시간이 소요됩니다.......'.red
3699
3773
  end
3700
3774
  end
3701
- #return 0
3702
3775
  @driver.quit
3703
- @driver.close
3776
+ return 0
3704
3777
  rescue
3705
3778
  begin
3706
3779
  # 타임아웃을 77초로 설정
@@ -3738,9 +3811,8 @@ login_url = option['login_url'].to_s
3738
3811
  puts '-[√] 다음 작업 준비로 약 1초~60초 내외 시간이 소요됩니다.......'.red
3739
3812
  end
3740
3813
  end
3741
- #return 0
3742
3814
  @driver.quit
3743
- @driver.close
3815
+ return 0
3744
3816
  rescue
3745
3817
  begin
3746
3818
  # 타임아웃을 77초로 설정
@@ -3780,9 +3852,8 @@ login_url = option['login_url'].to_s
3780
3852
  puts '-[√] 다음 작업 준비로 약 1초~60초 내외 시간이 소요됩니다.......'.red
3781
3853
  end
3782
3854
  end
3783
- #return 0
3784
3855
  @driver.quit
3785
- @driver.close
3856
+ return 0
3786
3857
  rescue
3787
3858
  begin
3788
3859
  # 타임아웃을 77초로 설정
@@ -4477,19 +4548,38 @@ login_url = option['login_url'].to_s
4477
4548
  end
4478
4549
  ##<─────────────────────────────────────────────────────────────────────팝업 코드 확인 및 제거 부분
4479
4550
 
4551
+ begin
4552
+ # 이 부분을 통해 페이지 내에서 "사이트에 연결할 수 없음" 텍스트를 찾습니다.
4553
+ error_text = @driver.find_element(:xpath, '//*[contains(text(),"사이트에 연결할 수 없음")]')
4554
+ if error_text
4555
+ puts '사이트 문제 발견!! 사이트에 접근할수 없습니다 창을 닫습니다.'
4556
+ @driver.quit if @driver
4557
+ return 0
4558
+ end
4559
+ rescue
4560
+ begin
4561
+ # 이 부분을 통해 페이지 내에서 "사이트에 연결할 수 없음" 텍스트를 찾습니다.
4562
+ error_text = @driver.find_element(:xpath, '//*[contains(text(),"Connection timed out")]')
4563
+ if error_text
4564
+ puts '사이트 문제 발견!! 사이트에 접근할수 없습니다 창을 닫습니다.'
4565
+ @driver.quit if @driver
4566
+ return 0
4567
+ end
4568
+ rescue
4569
+ begin
4570
+ # 이 부분을 통해 페이지 내에서 "사이트에 연결할 수 없음" 텍스트를 찾습니다.
4571
+ error_text = @driver.find_element(:xpath, '//h1[contains(text(),"Not Found")]')
4572
+ if error_text
4573
+ puts '사이트 문제 발견!! 사이트에 접근할수 없습니다 창을 닫습니다.'
4574
+ @driver.quit if @driver
4575
+ return 0
4576
+ end
4577
+ rescue Selenium::WebDriver::Error::NoSuchElementError
4578
+ @driver.action.key_down(:tab).key_up(:tab).perform #x탭
4579
+ end
4580
+ end
4581
+ end
4480
4582
 
4481
- begin
4482
- # 이 부분을 통해 페이지 내에서 "사이트에 연결할 수 없음" 텍스트를 찾습니다.
4483
- error_text = @driver.find_element(:xpath, '//*[contains(text(),"사이트에 연결할 수 없음")]')
4484
- if error_text
4485
- puts '사이트에 연결할 수 없음 텍스트가 발견되었습니다. 창을 닫습니다.'
4486
- @driver.quit if @driver
4487
- @driver.close
4488
- #return 0
4489
- end
4490
- rescue Selenium::WebDriver::Error::NoSuchElementError
4491
- @driver.action.key_down(:tab).key_up(:tab).perform #x탭
4492
- end
4493
4583
 
4494
4584
  ##아이디 입력 코드 부분─────────────────────────────────────────────────────────────────────>
4495
4585
 
@@ -4960,22 +5050,29 @@ begin
4960
5050
  if error_text
4961
5051
  puts '사이트 문제 발견!! 사이트에 접근할수 없습니다 창을 닫습니다.'
4962
5052
  @driver.quit if @driver
4963
- @driver.close
4964
- #return 0
5053
+ return 0
4965
5054
  end
4966
5055
  rescue
4967
- end
4968
-
4969
- begin
4970
- # 이 부분을 통해 페이지 내에서 "사이트에 연결할 수 없음" 텍스트를 찾습니다.
4971
- error_text = @driver.find_element(:xpath, '//*[contains(text(),"Connection timed out")]')
4972
- if error_text
4973
- puts '사이트 문제 발견!! 사이트에 접근할수 없습니다 창을 닫습니다.'
4974
- @driver.quit if @driver
4975
- @driver.close
4976
- #return 0
5056
+ begin
5057
+ # 이 부분을 통해 페이지 내에서 "사이트에 연결할 수 없음" 텍스트를 찾습니다.
5058
+ error_text = @driver.find_element(:xpath, '//*[contains(text(),"Connection timed out")]')
5059
+ if error_text
5060
+ puts '사이트 문제 발견!! 사이트에 접근할수 없습니다 창을 닫습니다.'
5061
+ @driver.quit if @driver
5062
+ return 0
5063
+ end
5064
+ rescue
5065
+ begin
5066
+ # 이 부분을 통해 페이지 내에서 "사이트에 연결할 수 없음" 텍스트를 찾습니다.
5067
+ error_text = @driver.find_element(:xpath, '//h1[contains(text(),"Not Found")]')
5068
+ if error_text
5069
+ puts '사이트 문제 발견!! 사이트에 접근할수 없습니다 창을 닫습니다.'
5070
+ @driver.quit if @driver
5071
+ return 0
5072
+ end
5073
+ rescue
5074
+ end
4977
5075
  end
4978
- rescue
4979
5076
  end
4980
5077
 
4981
5078
  begin
@@ -5007,45 +5104,43 @@ begin
5007
5104
  rescue
5008
5105
  end
5009
5106
  ##캡챠 해제 입력 코드 부분─────────────────────────────────────────────────────────────────────>
5010
- begin
5011
- sleep(5)
5012
-
5013
-
5014
-
5015
- # 타임아웃을 3초로 설정
5016
- wait = Selenium::WebDriver::Wait.new(:timeout => 3)
5017
- # 요소가 나타날 때까지 30초 동안 기다립니다.
5018
- wait.until { @driver.find_element(:xpath, '//*[@data-state="ready"]') }
5019
- sleep(1)
5020
- @driver.find_element(:xpath, '//*[@data-state="ready"]').click #캡챠우회버튼
5021
- puts '-[√] 캡챠 해제 진행 중 (약 30~60 초 소요됩니다).......'.green
5022
- sleep(10)
5023
- begin
5024
- @driver.find_element(:xpath, '//*[@data-state="error"]').click
5025
- puts '-[√] 캡챠 해제 실패 !! API번호 및 포인트를 체크해주세요.......'.red
5026
- puts '-[√] 캡챠 해제 실패 !! API번호 및 포인트를 체크해주세요.......'.red
5027
- @driver.window_handles.each do |handle|
5028
- @driver.switch_to.window(handle)
5029
- begin
5030
- # 로딩 중이거나, 페이지가 완전히 로딩되지 않더라도 탭을 닫기
5031
- @driver.close
5032
- rescue Selenium::WebDriver::Error::WebDriverError => e
5033
- puts '-[√] 다음 작업 준비로 약 1초~60초 내외 시간이 소요됩니다.......'.red
5034
- end
5035
- end
5036
- #return 0
5037
- @driver.quit
5038
- @driver.close
5039
- rescue
5040
- # 타임아웃을 77초로 설정
5041
- wait = Selenium::WebDriver::Wait.new(:timeout => 150)
5042
- # 요소가 나타날 때까지 100초 동안 기다립니다.
5043
- wait.until { @driver.find_element(:xpath, '//*[@data-state="solved"]') }
5044
- sleep(1)
5045
- @driver.find_element(:xpath, '//*[@data-state="solved"]').click
5046
- puts '-[√] 캡챠 해제 완료 → 이어서 진행 합니다.......'.green
5047
- sleep(3)
5048
- end
5107
+ begin
5108
+ sleep(5)
5109
+ # 타임아웃을 3초로 설정
5110
+ wait = Selenium::WebDriver::Wait.new(:timeout => 3)
5111
+ # 요소가 나타날 때까지 30초 동안 기다립니다.
5112
+ wait.until { @driver.find_element(:xpath, '//*[@data-state="ready"]') }
5113
+ sleep(1)
5114
+ @driver.find_element(:xpath, '//*[@data-state="ready"]').click #캡챠우회버튼
5115
+ puts '-[√] 캡챠 해제 진행 중 ( 30~60 초 소요됩니다).......'.green
5116
+ sleep(10)
5117
+ begin
5118
+ @driver.find_element(:xpath, '//*[@data-state="error"]').click
5119
+ puts '-[√] 캡챠 해제 실패 !! API번호 및 포인트를 체크해주세요.......'.red
5120
+ puts '-[√] 캡챠 해제 실패 !! API번호 및 포인트를 체크해주세요.......'.red
5121
+ @driver.window_handles.each do |handle|
5122
+ @driver.switch_to.window(handle)
5123
+ begin
5124
+ # 로딩 중이거나, 페이지가 완전히 로딩되지 않더라도 탭을 닫기
5125
+ @driver.close
5126
+ rescue Selenium::WebDriver::Error::WebDriverError => e
5127
+ puts '-[√] 다음 작업 준비로 1초~60초 내외 시간이 소요됩니다.......'.red
5128
+ end
5129
+ end
5130
+ sleep(1)
5131
+ @driver.quit
5132
+ return 0
5133
+ sleep(1)
5134
+ rescue
5135
+ # 타임아웃을 77초로 설정
5136
+ wait = Selenium::WebDriver::Wait.new(:timeout => 150)
5137
+ # 요소가 나타날 때까지 100초 동안 기다립니다.
5138
+ wait.until { @driver.find_element(:xpath, '//*[@data-state="solved"]') }
5139
+ sleep(1)
5140
+ @driver.find_element(:xpath, '//*[@data-state="solved"]').click
5141
+ puts '-[√] 캡챠 해제 완료 → 이어서 진행 합니다.......'.green
5142
+ sleep(3)
5143
+ end
5049
5144
  rescue
5050
5145
  puts '-[√] 캡챠 발생 없음.......'.green
5051
5146
  end
@@ -5072,7 +5167,7 @@ begin
5072
5167
  puts '-[√] 다음 작업 준비로 약 1초~60초 내외 시간이 소요됩니다.......'.red
5073
5168
  puts e
5074
5169
  @driver.close
5075
- #return 0
5170
+ return 0
5076
5171
  end
5077
5172
  end
5078
5173
 
@@ -5080,13 +5175,31 @@ begin
5080
5175
  # 이 부분을 통해 페이지 내에서 "사이트에 연결할 수 없음" 텍스트를 찾습니다.
5081
5176
  error_text = @driver.find_element(:xpath, '//*[contains(text(),"사이트에 연결할 수 없음")]')
5082
5177
  if error_text
5083
- puts '사이트에 연결할 없음 텍스트가 발견되었습니다. 창을 닫습니다.'
5178
+ puts '사이트 문제 발견!! 사이트에 접근할수 없습니다 창을 닫습니다.'
5084
5179
  @driver.quit if @driver
5085
- @driver.close
5086
- #return 0
5180
+ return 0
5181
+ end
5182
+ rescue
5183
+ begin
5184
+ # 이 부분을 통해 페이지 내에서 "사이트에 연결할 수 없음" 텍스트를 찾습니다.
5185
+ error_text = @driver.find_element(:xpath, '//*[contains(text(),"Connection timed out")]')
5186
+ if error_text
5187
+ puts '사이트 문제 발견!! 사이트에 접근할수 없습니다 창을 닫습니다.'
5188
+ @driver.quit if @driver
5189
+ return 0
5190
+ end
5191
+ rescue
5192
+ begin
5193
+ # 이 부분을 통해 페이지 내에서 "사이트에 연결할 수 없음" 텍스트를 찾습니다.
5194
+ error_text = @driver.find_element(:xpath, '//h1[contains(text(),"Not Found")]')
5195
+ if error_text
5196
+ puts '사이트 문제 발견!! 사이트에 접근할수 없습니다 창을 닫습니다.'
5197
+ @driver.quit if @driver
5198
+ return 0
5199
+ end
5200
+ rescue
5201
+ end
5087
5202
  end
5088
- rescue Selenium::WebDriver::Error::NoSuchElementError
5089
- # 해당 텍스트가 없으면 아무 작업 안함
5090
5203
  end
5091
5204
 
5092
5205
 
@@ -5278,22 +5391,29 @@ post_url = option['post_url'].to_s
5278
5391
  if error_text
5279
5392
  puts '사이트 문제 발견!! 사이트에 접근할수 없습니다 창을 닫습니다.'
5280
5393
  @driver.quit if @driver
5281
- @driver.close
5282
- #return 0
5394
+ return 0
5283
5395
  end
5284
5396
  rescue
5285
- end
5286
-
5287
- begin
5288
- # 이 부분을 통해 페이지 내에서 "사이트에 연결할 수 없음" 텍스트를 찾습니다.
5289
- error_text = @driver.find_element(:xpath, '//*[contains(text(),"Connection timed out")]')
5290
- if error_text
5291
- puts '사이트 문제 발견!! 사이트에 접근할수 없습니다 창을 닫습니다.'
5292
- @driver.quit if @driver
5293
- @driver.close
5294
- #return 0
5397
+ begin
5398
+ # 이 부분을 통해 페이지 내에서 "사이트에 연결할 수 없음" 텍스트를 찾습니다.
5399
+ error_text = @driver.find_element(:xpath, '//*[contains(text(),"Connection timed out")]')
5400
+ if error_text
5401
+ puts '사이트 문제 발견!! 사이트에 접근할수 없습니다 창을 닫습니다.'
5402
+ @driver.quit if @driver
5403
+ return 0
5404
+ end
5405
+ rescue
5406
+ begin
5407
+ # 이 부분을 통해 페이지 내에서 "사이트에 연결할 수 없음" 텍스트를 찾습니다.
5408
+ error_text = @driver.find_element(:xpath, '//h1[contains(text(),"Not Found")]')
5409
+ if error_text
5410
+ puts '사이트 문제 발견!! 사이트에 접근할수 없습니다 창을 닫습니다.'
5411
+ @driver.quit if @driver
5412
+ return 0
5413
+ end
5414
+ rescue
5415
+ end
5295
5416
  end
5296
- rescue
5297
5417
  end
5298
5418
 
5299
5419
  begin
@@ -5407,8 +5527,10 @@ post_url = option['post_url'].to_s
5407
5527
  end
5408
5528
  end
5409
5529
  #return 0
5530
+ sleep(1)
5410
5531
  @driver.quit
5411
- @driver.close
5532
+ return 0
5533
+ sleep(1)
5412
5534
  rescue
5413
5535
  begin
5414
5536
  # 타임아웃을 77초로 설정
@@ -5424,7 +5546,7 @@ post_url = option['post_url'].to_s
5424
5546
  puts '-[√] 다음 작업 준비로 약 1초~60초 내외 시간이 소요됩니다.......'.red
5425
5547
  puts e
5426
5548
  @driver.close
5427
- #return 0
5549
+ return 0
5428
5550
  end
5429
5551
  end
5430
5552
  rescue
@@ -5454,8 +5576,10 @@ post_url = option['post_url'].to_s
5454
5576
  end
5455
5577
  end
5456
5578
  #return 0
5579
+ sleep(1)
5457
5580
  @driver.quit
5458
- @driver.close
5581
+ return 0
5582
+ sleep(1)
5459
5583
  rescue
5460
5584
  begin
5461
5585
  # 타임아웃을 77초로 설정
@@ -5472,7 +5596,7 @@ post_url = option['post_url'].to_s
5472
5596
  puts '-[√] 다음 작업 준비로 약 1초~60초 내외 시간이 소요됩니다.......'.red
5473
5597
  puts e
5474
5598
  @driver.close
5475
- #return 0
5599
+ return 0
5476
5600
  end
5477
5601
  end
5478
5602
  rescue
@@ -5521,8 +5645,9 @@ post_url = option['post_url'].to_s
5521
5645
  puts '-[√] 다음 작업 준비로 약 1초~60초 내외 시간이 소요됩니다.......'.red
5522
5646
  puts e
5523
5647
  @driver.quit
5524
- @driver.close
5525
- #return 0
5648
+ sleep(1)
5649
+ return 0
5650
+ sleep(1)
5526
5651
  end
5527
5652
  end
5528
5653
 
@@ -5533,16 +5658,34 @@ post_url = option['post_url'].to_s
5533
5658
  end
5534
5659
 
5535
5660
  begin
5536
- # 이 부분을 통해 페이지 내에서 "사이트에 연결할 수 없음" 텍스트를 찾습니다.
5537
- error_text = @driver.find_element(:xpath, '//*[contains(text(),"사이트에 연결할 수 없음")]')
5538
- if error_text
5539
- puts '사이트에 연결할 없음 텍스트가 발견되었습니다. 창을 닫습니다.'
5661
+ # 이 부분을 통해 페이지 내에서 "사이트에 연결할 수 없음" 텍스트를 찾습니다.
5662
+ error_text = @driver.find_element(:xpath, '//*[contains(text(),"사이트에 연결할 수 없음")]')
5663
+ if error_text
5664
+ puts '사이트 문제 발견!! 사이트에 접근할수 없습니다 창을 닫습니다.'
5665
+ @driver.quit if @driver
5666
+ return 0
5667
+ end
5668
+ rescue
5669
+ begin
5670
+ # 이 부분을 통해 페이지 내에서 "사이트에 연결할 수 없음" 텍스트를 찾습니다.
5671
+ error_text = @driver.find_element(:xpath, '//*[contains(text(),"Connection timed out")]')
5672
+ if error_text
5673
+ puts '사이트 문제 발견!! 사이트에 접근할수 없습니다 창을 닫습니다.'
5540
5674
  @driver.quit if @driver
5541
- @driver.close
5542
- #return 0
5543
- end
5544
- rescue Selenium::WebDriver::Error::NoSuchElementError
5545
- # 해당 텍스트가 없으면 아무 작업 안함
5675
+ return 0
5676
+ end
5677
+ rescue
5678
+ begin
5679
+ # 부분을 통해 페이지 내에서 "사이트에 연결할 수 없음" 텍스트를 찾습니다.
5680
+ error_text = @driver.find_element(:xpath, '//h1[contains(text(),"Not Found")]')
5681
+ if error_text
5682
+ puts '사이트 문제 발견!! 사이트에 접근할수 없습니다 창을 닫습니다.'
5683
+ @driver.quit if @driver
5684
+ return 0
5685
+ end
5686
+ rescue
5687
+ end
5688
+ end
5546
5689
  end
5547
5690
 
5548
5691
 
@@ -7516,7 +7659,9 @@ end
7516
7659
  end
7517
7660
  #return 0
7518
7661
  @driver.quit
7519
- @driver.close
7662
+ sleep(1)
7663
+ return 0
7664
+ sleep(1)
7520
7665
  end
7521
7666
  end
7522
7667
  end
@@ -9329,7 +9474,9 @@ if check_captcha == 1
9329
9474
  end
9330
9475
  #return 0
9331
9476
  @driver.quit
9332
- @driver.close
9477
+ sleep(1)
9478
+ return 0
9479
+ sleep(1)
9333
9480
  rescue
9334
9481
  # 타임아웃을 77초로 설정
9335
9482
  wait = Selenium::WebDriver::Wait.new(:timeout => 150)
@@ -9343,7 +9490,7 @@ if check_captcha == 1
9343
9490
  @driver.find_element(:xpath, '//*[@name="user_captcha"]').click
9344
9491
  sleep(1)
9345
9492
  @driver.action.key_down(:right).key_up(:right).perform
9346
- rescuem
9493
+ rescue
9347
9494
  begin
9348
9495
  @driver.find_element(:xpath, '//*[@id="user_captcha"]').click
9349
9496
  sleep(1)
@@ -10846,65 +10993,67 @@ puts '-[√] 캡챠 해제 진행 중 (약 30~60 초 소요됩니다).......'.gr
10846
10993
 
10847
10994
  sleep(10)
10848
10995
  begin
10849
- @driver.find_element(:xpath, '//*[@data-state="error"]').click
10850
- puts '-[√] 캡챠 해제 실패 !! API번호 및 포인트를 체크해주세요.......'.red
10851
- puts '-[√] 캡챠 해제 실패 !! API번호 및 포인트를 체크해주세요.......'.red
10852
- @driver.window_handles.each do |handle|
10853
- @driver.switch_to.window(handle)
10854
- begin
10855
- # 로딩 중이거나, 페이지가 완전히 로딩되지 않더라도 탭을 닫기
10856
- @driver.close
10857
- rescue Selenium::WebDriver::Error::WebDriverError => e
10858
- puts '-[√] 다음 작업 준비로 약 1초~60초 내외 시간이 소요됩니다.......'.red
10859
- end
10860
- end
10861
- #return 0
10862
- @driver.quit
10863
- @driver.close
10996
+ @driver.find_element(:xpath, '//*[@data-state="error"]').click
10997
+ puts '-[√] 캡챠 해제 실패 !! API번호 및 포인트를 체크해주세요.......'.red
10998
+ puts '-[√] 캡챠 해제 실패 !! API번호 및 포인트를 체크해주세요.......'.red
10999
+ @driver.window_handles.each do |handle|
11000
+ @driver.switch_to.window(handle)
11001
+ begin
11002
+ # 로딩 중이거나, 페이지가 완전히 로딩되지 않더라도 탭을 닫기
11003
+ @driver.close
11004
+ rescue Selenium::WebDriver::Error::WebDriverError => e
11005
+ puts '-[√] 다음 작업 준비로 약 1초~60초 내외 시간이 소요됩니다.......'.red
11006
+ end
11007
+ end
11008
+ #return 0
11009
+ @driver.quit
11010
+ sleep(1)
11011
+ return 0
11012
+ sleep(1)
10864
11013
  rescue
10865
- # 타임아웃을 77초로 설정
10866
- wait = Selenium::WebDriver::Wait.new(:timeout => 150)
10867
- # 요소가 나타날 때까지 100초 동안 기다립니다.
10868
- wait.until { @driver.find_element(:xpath, '//*[@data-state="solved"]') }
10869
- sleep(1)
10870
- @driver.find_element(:xpath, '//*[@data-state="solved"]').click
10871
- puts '-[√] 캡챠 해제 완료 → 이어서 진행 합니다.......'.green
10872
- puts '-[√] 캡챠 해제 완료 → 이어서 진행 합니다>.......'.green
10873
- sleep(5)
10874
- begin
10875
- @driver.find_element(:xpath, '//*[@name="user_captcha"]').click
10876
- sleep(1)
10877
- @driver.action.key_down(:right).key_up(:right).perform
10878
- rescue
11014
+ # 타임아웃을 77초로 설정
11015
+ wait = Selenium::WebDriver::Wait.new(:timeout => 150)
11016
+ # 요소가 나타날 때까지 100초 동안 기다립니다.
11017
+ wait.until { @driver.find_element(:xpath, '//*[@data-state="solved"]') }
11018
+ sleep(1)
11019
+ @driver.find_element(:xpath, '//*[@data-state="solved"]').click
11020
+ puts '-[√] 캡챠 해제 완료 → 이어서 진행 합니다.......'.green
11021
+ puts '-[√] 캡챠 해제 완료 → 이어서 진행 합니다>.......'.green
11022
+ sleep(5)
10879
11023
  begin
10880
- @driver.find_element(:xpath, '//*[@id="user_captcha"]').click
11024
+ @driver.find_element(:xpath, '//*[@name="user_captcha"]').click
10881
11025
  sleep(1)
10882
- @driver.action.key_down(:right).key_up(:right).perform
11026
+ @driver.action.key_down(:right).key_up(:right).perform
10883
11027
  rescue
10884
11028
  begin
10885
- @driver.find_element(:xpath, '//*[@title="자동글쓰기방지"]').click
11029
+ @driver.find_element(:xpath, '//*[@id="user_captcha"]').click
10886
11030
  sleep(1)
10887
- @driver.action.key_down(:right).key_up(:right).perform
11031
+ @driver.action.key_down(:right).key_up(:right).perform
10888
11032
  rescue
10889
11033
  begin
10890
- #2차 확인 버튼 있을시
10891
- puts '-[√] 캡챠 해제 완료 → 이어서 진행 합니다>>>.......'.green
10892
- button = @driver.find_element(:xpath, '//input[@type="button" and @id="captch_button" and @value="확인"]')
10893
- @driver.execute_script("arguments[0].scrollIntoView({block: 'center', inline: 'center'})", button)
10894
- sleep(2)
10895
- @driver.execute_script("arguments[0].click();", button)
10896
-
11034
+ @driver.find_element(:xpath, '//*[@title="자동글쓰기방지"]').click
11035
+ sleep(1)
11036
+ @driver.action.key_down(:right).key_up(:right).perform
11037
+ rescue
10897
11038
  begin
10898
- wait = Selenium::WebDriver::Wait.new(timeout: 3)
10899
- wait.until { @driver.switch_to.alert }
10900
- @driver.switch_to.alert.accept
10901
- rescue
11039
+ #2차 확인 버튼 있을시
11040
+ puts '-[√] 캡챠 해제 완료 → 이어서 진행 합니다>>>.......'.green
11041
+ button = @driver.find_element(:xpath, '//input[@type="button" and @id="captch_button" and @value="확인"]')
11042
+ @driver.execute_script("arguments[0].scrollIntoView({block: 'center', inline: 'center'})", button)
11043
+ sleep(2)
11044
+ @driver.execute_script("arguments[0].click();", button)
11045
+
11046
+ begin
11047
+ wait = Selenium::WebDriver::Wait.new(timeout: 3)
11048
+ wait.until { @driver.switch_to.alert }
11049
+ @driver.switch_to.alert.accept
11050
+ rescue
11051
+ end
11052
+ rescue
10902
11053
  end
10903
- rescue
10904
11054
  end
10905
11055
  end
10906
11056
  end
10907
- end
10908
11057
  sleep(1)
10909
11058
  end
10910
11059
  rescue
@@ -11679,7 +11828,9 @@ rescue => e
11679
11828
  end
11680
11829
  #return 0
11681
11830
  @driver.quit
11682
- @driver.close
11831
+ sleep(1)
11832
+ return 0
11833
+ sleep(1)
11683
11834
  end
11684
11835
 
11685
11836
 
@@ -11704,7 +11855,6 @@ end
11704
11855
  banned_word = $1
11705
11856
  end
11706
11857
 
11707
-
11708
11858
  if banned_word
11709
11859
  puts "금지단어 발견: [#{banned_word}]".red
11710
11860
  puts "[#{banned_word}] 금지단어 제거 후 재 시도 진행!!".red
@@ -11740,26 +11890,33 @@ end #반복루프
11740
11890
 
11741
11891
 
11742
11892
  begin
11893
+ # log 디렉토리가 없다면 생성
11894
+ Dir.mkdir('./log') unless Dir.exist?('./log')
11895
+
11743
11896
  posting_url = @driver.current_url
11744
- File.open('./log/posting_log.txt', 'a') do |ff|
11745
- ff.write('[')
11746
- ff.write(DateTime.now.strftime("%Y년%m월%d일%H시%M분"))
11747
- ff.write(']')
11748
- ff.write(user_id)
11749
- ff.write(',')
11750
- ff.write(user_pw)
11751
- ff.write(',')
11752
- ff.write(posting_url)
11753
-
11754
- if alert_text # alert가 있었다면 텍스트도 기록
11897
+
11898
+ # 오늘 날짜로 파일명 생성
11899
+ today_str = Date.today.strftime("%Y-%m-%d")
11900
+ file_path = "./log/#{today_str}-posting_log.txt"
11901
+
11902
+ File.open(file_path, 'a') do |ff|
11903
+ ff.write('[')
11904
+ ff.write(DateTime.now.strftime("%Y년%m월%d일 %H시%M분"))
11905
+ ff.write(']')
11906
+ ff.write(user_id)
11907
+ ff.write(',')
11908
+ ff.write(user_pw)
11909
+ ff.write(',')
11910
+ ff.write(posting_url)
11911
+
11912
+ if alert_text
11755
11913
  ff.write(' ▶')
11756
11914
  ff.write("팝업내용: #{alert_text}")
11757
- end
11915
+ end
11758
11916
 
11759
- ff.write("\n")
11760
- ff.close()
11761
- puts '-[√] 로그 파일 생성 완료.......'.yellow
11762
- end
11917
+ ff.write("\n")
11918
+ puts '-[√] 로그 파일 기록 완료.......'.yellow
11919
+ end
11763
11920
  rescue
11764
11921
  end
11765
11922
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: posting_zon
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.95.999
4
+ version: 3.97.999
5
5
  platform: ruby
6
6
  authors:
7
7
  - zon
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-05-27 00:00:00.000000000 Z
10
+ date: 2025-05-28 00:00:00.000000000 Z
11
11
  dependencies: []
12
12
  description: posting app
13
13
  email: mymin26@naver.com