tg_send_zon 0.0.2 → 0.0.3
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/tg_send_zon.rb +98 -39
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 17620f34faad15c2f44511fbf88ae0ca1d5f959bc36b345f37705e577c1ccd2e
|
4
|
+
data.tar.gz: e7125f2023eaf6c46ded0237a7a6be096c456b549b395350e39b56e080fa20f7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: eb60d2f732201d259f2bb05c0f99d671c8a45f721cde429d0c9647328810bc60a4ecad4f03a754890b6c1d57a249c43b4131bc6a200d1de0726db66a6dd81472
|
7
|
+
data.tar.gz: b3eb3cef822c18c5e30edfadfbd888a528186e507f41ed57b3063a752bede783e4cecc83570a5ffa8e84200fdf4746551e38457f3efb03e5287d8a463239d8ca
|
data/lib/tg_send_zon.rb
CHANGED
@@ -1,16 +1,37 @@
|
|
1
|
+
#require 'glimmer-dsl-libui'
|
2
|
+
#require 'selenium-webdriver'
|
3
|
+
#require 'nokogiri'
|
4
|
+
#require 'http'
|
5
|
+
#require 'json'
|
6
|
+
#require 'crack'
|
7
|
+
#require 'fileutils'
|
8
|
+
#require 'clipboard'
|
9
|
+
#require 'auto_click'
|
10
|
+
#require 'rainbow/refinement'
|
11
|
+
#include AutoClickMethods
|
12
|
+
#using Rainbow
|
1
13
|
require 'glimmer-dsl-libui'
|
2
14
|
require 'selenium-webdriver'
|
15
|
+
# require 'webdrivers'
|
16
|
+
require 'iconv'
|
3
17
|
require 'nokogiri'
|
4
18
|
require 'http'
|
5
19
|
require 'json'
|
6
|
-
require '
|
20
|
+
require 'down'
|
21
|
+
require 'rmagick'
|
7
22
|
require 'fileutils'
|
23
|
+
require 'rest-client'
|
24
|
+
require 'open3'
|
8
25
|
require 'clipboard'
|
26
|
+
require 'crack'
|
27
|
+
require 'uri'
|
28
|
+
require 'cgi'
|
29
|
+
require 'digest'
|
9
30
|
require 'auto_click'
|
10
31
|
require 'rainbow/refinement'
|
11
32
|
include AutoClickMethods
|
12
33
|
using Rainbow
|
13
|
-
|
34
|
+
include Glimmer
|
14
35
|
|
15
36
|
|
16
37
|
class Naver
|
@@ -224,7 +245,7 @@ class Naver
|
|
224
245
|
|
225
246
|
|
226
247
|
|
227
|
-
def update(telegram_number,url,content,
|
248
|
+
def update(telegram_number,url,content,image,nomber,option)
|
228
249
|
|
229
250
|
@nomber = nomber
|
230
251
|
|
@@ -245,7 +266,7 @@ class Naver
|
|
245
266
|
|
246
267
|
|
247
268
|
|
248
|
-
################################################################################ 프로그램에 설정한
|
269
|
+
################################################################################ 프로그램에 설정한 글만 등록
|
249
270
|
if option['세팅내용발송1'] == 'true'
|
250
271
|
|
251
272
|
wait = Selenium::WebDriver::Wait.new(:timeout => 5)
|
@@ -258,15 +279,15 @@ class Naver
|
|
258
279
|
@url = url
|
259
280
|
Clipboard.copy(url)
|
260
281
|
@driver.action.key_down(:control).send_keys('v').key_up(:control).perform
|
261
|
-
sleep(
|
262
|
-
|
263
|
-
|
282
|
+
sleep(1)
|
283
|
+
|
264
284
|
|
265
285
|
#################### 예외 1 ######################
|
266
286
|
begin
|
267
|
-
wait = Selenium::WebDriver::Wait.new(:timeout =>
|
287
|
+
wait = Selenium::WebDriver::Wait.new(:timeout => 3)
|
268
288
|
#요소가 나타날 때까지 3초 동안 기다립니다.
|
269
289
|
wait.until { @driver.find_element(:xpath, '//*[@class="search-section"]') }
|
290
|
+
sleep(1)
|
270
291
|
rescue
|
271
292
|
puts "#{url} [발송 실패 !! 그룹이 존재하지 않습니다!!]".red
|
272
293
|
@driver.close
|
@@ -280,6 +301,8 @@ class Naver
|
|
280
301
|
end
|
281
302
|
#################### 예외 1 ######################
|
282
303
|
|
304
|
+
@driver.action.key_down(:enter).key_up(:enter).perform #엔터
|
305
|
+
#sleep(1)
|
283
306
|
|
284
307
|
########### 그룹 정보 가 나와있으면 닫기 ###########
|
285
308
|
begin
|
@@ -288,6 +311,7 @@ class Naver
|
|
288
311
|
wait.until { @driver.find_element(:xpath, '//*[@title="Close"]') }
|
289
312
|
sleep(1)
|
290
313
|
@driver.find_element(:xpath, '//*[@title="Close"]').click
|
314
|
+
sleep(1)
|
291
315
|
rescue
|
292
316
|
end
|
293
317
|
########### 그룹 정보 가 나와있으면 닫기 ###########
|
@@ -299,6 +323,7 @@ class Naver
|
|
299
323
|
#요소가 나타날 때까지 3초 동안 기다립니다.
|
300
324
|
wait.until { @driver.find_element(:xpath, '//*[@id="editable-message-text"]') }
|
301
325
|
@driver.find_element(:xpath, '//*[@id="editable-message-text"]').click
|
326
|
+
sleep(1)
|
302
327
|
rescue
|
303
328
|
puts "#{url} [발송 실패 !! 그룹에 가입되지 않았거나 발송 권한이 없습니다!!]".red
|
304
329
|
@driver.close
|
@@ -315,12 +340,14 @@ class Naver
|
|
315
340
|
|
316
341
|
|
317
342
|
################### 내용 입력 ####################
|
318
|
-
|
319
|
-
|
343
|
+
@driver.execute_script("document.getElementById('editable-message-text').innerText = ''") #기존 내용 이력이 있으면 삭제
|
344
|
+
sleep(1)
|
345
|
+
|
320
346
|
sleep(1)
|
321
347
|
@content = content
|
322
348
|
Clipboard.copy(content)
|
323
349
|
@driver.action.key_down(:control).send_keys('v').key_up(:control).perform #새로넣은 코드 (내용 한번에 복붙방식)
|
350
|
+
sleep(1)
|
324
351
|
################### 내용 입력 ####################
|
325
352
|
|
326
353
|
|
@@ -406,15 +433,14 @@ class Naver
|
|
406
433
|
@url = url
|
407
434
|
Clipboard.copy(url)
|
408
435
|
@driver.action.key_down(:control).send_keys('v').key_up(:control).perform
|
409
|
-
sleep(
|
410
|
-
|
411
|
-
|
412
|
-
|
436
|
+
sleep(1)
|
437
|
+
|
413
438
|
#################### 예외 1 ######################
|
414
439
|
begin
|
415
|
-
wait = Selenium::WebDriver::Wait.new(:timeout =>
|
440
|
+
wait = Selenium::WebDriver::Wait.new(:timeout => 3)
|
416
441
|
#요소가 나타날 때까지 3초 동안 기다립니다.
|
417
442
|
wait.until { @driver.find_element(:xpath, '//*[@class="search-section"]') }
|
443
|
+
sleep(1)
|
418
444
|
rescue
|
419
445
|
puts "#{url} [발송 실패 !! 그룹이 존재하지 않습니다!!]".red
|
420
446
|
@driver.close
|
@@ -427,8 +453,9 @@ class Naver
|
|
427
453
|
return 0
|
428
454
|
end
|
429
455
|
#################### 예외 1 ######################
|
430
|
-
|
431
|
-
|
456
|
+
@driver.action.key_down(:enter).key_up(:enter).perform #엔터
|
457
|
+
#sleep(1)
|
458
|
+
|
432
459
|
########### 그룹 정보 가 나와있으면 닫기 ###########
|
433
460
|
begin
|
434
461
|
wait = Selenium::WebDriver::Wait.new(:timeout => 1.5)
|
@@ -436,17 +463,21 @@ class Naver
|
|
436
463
|
wait.until { @driver.find_element(:xpath, '//*[@title="Close"]') }
|
437
464
|
sleep(1)
|
438
465
|
@driver.find_element(:xpath, '//*[@title="Close"]').click
|
466
|
+
sleep(1)
|
439
467
|
rescue
|
440
468
|
end
|
441
469
|
########### 그룹 정보 가 나와있으면 닫기 ###########
|
442
470
|
|
443
|
-
|
471
|
+
@driver.execute_script("document.getElementById('editable-message-text').innerText = ''") #기존 내용 이력이 있으면 삭제
|
472
|
+
sleep(1)
|
473
|
+
|
444
474
|
#################### 예외 2 ######################
|
445
475
|
begin
|
446
476
|
wait = Selenium::WebDriver::Wait.new(:timeout => 1)
|
447
477
|
#요소가 나타날 때까지 3초 동안 기다립니다.
|
448
478
|
wait.until { @driver.find_element(:xpath, '//*[@id="attach-menu-button"]') }
|
449
479
|
@driver.find_element(:xpath, '//*[@id="attach-menu-button"]').click
|
480
|
+
sleep(1)
|
450
481
|
rescue
|
451
482
|
#puts url + ' [그룹에 가입되지 않았거나 발송 권한이 없습니다]'.red
|
452
483
|
puts "#{url} [발송 실패 !! 그룹에 가입되지 않았거나 발송 권한이 없습니다!!]".red
|
@@ -461,34 +492,53 @@ class Naver
|
|
461
492
|
return 0
|
462
493
|
end
|
463
494
|
#################### 예외 2 ######################
|
464
|
-
|
495
|
+
|
465
496
|
|
466
497
|
################### 사진 입력 ####################
|
498
|
+
begin
|
467
499
|
wait = Selenium::WebDriver::Wait.new(:timeout => 5)
|
468
500
|
#요소가 나타날 때까지 3초 동안 기다립니다.
|
469
501
|
wait.until { @driver.find_element(:xpath, '//*[@class="icon icon-photo"]') }
|
470
502
|
@driver.find_element(:xpath, '//*[@class="icon icon-photo"]').click
|
471
503
|
sleep(1)
|
472
|
-
@
|
473
|
-
Clipboard.copy(
|
504
|
+
@image = image
|
505
|
+
Clipboard.copy(image)
|
506
|
+
# 이미지 폴더에서 이미지 선택
|
507
|
+
puts image
|
508
|
+
sleep(0.5)
|
474
509
|
key_down('ctrl')
|
475
510
|
key_stroke('v')
|
476
511
|
key_up('ctrl')
|
512
|
+
sleep(0.5)
|
477
513
|
key_stroke('enter')
|
478
514
|
sleep(1.5)
|
515
|
+
|
479
516
|
################### 사진 입력 ####################
|
480
517
|
|
481
|
-
|
518
|
+
|
482
519
|
################### 내용 입력 ####################
|
483
520
|
@driver.execute_script("document.getElementById('editable-message-text-modal').innerText = ''")
|
521
|
+
|
522
|
+
|
484
523
|
sleep(1)
|
485
524
|
@content = content
|
486
525
|
Clipboard.copy(content)
|
487
526
|
@driver.action.key_down(:control).send_keys('v').key_up(:control).perform #새로넣은 코드 (내용 한번에 복붙방식)
|
488
527
|
sleep(1)
|
489
528
|
################### 내용 입력 ####################
|
490
|
-
|
491
|
-
|
529
|
+
rescue
|
530
|
+
# 이미지 발송 금지 된 방 예외 처리
|
531
|
+
puts "#{url} [해당 방은 이미지 발송이 금지된 방으로 메세지만 발송합니다.]".magenta
|
532
|
+
@driver.execute_script("document.getElementById('editable-message-text').innerText = ''")
|
533
|
+
sleep(1)
|
534
|
+
@driver.find_element(:xpath, '//*[@id="editable-message-text"]').click
|
535
|
+
sleep(1)
|
536
|
+
@content = content
|
537
|
+
Clipboard.copy(content)
|
538
|
+
@driver.action.key_down(:control).send_keys('v').key_up(:control).perform #새로넣은 코드 (내용 한번에 복붙방식)
|
539
|
+
sleep(1)
|
540
|
+
end
|
541
|
+
|
492
542
|
################### 회차 옵션 ####################
|
493
543
|
if option['발송횟수추가'] == 'true'
|
494
544
|
puts '회수 추가.......'.green
|
@@ -501,7 +551,7 @@ class Naver
|
|
501
551
|
else
|
502
552
|
end
|
503
553
|
################### 회차 옵션 ####################
|
504
|
-
|
554
|
+
|
505
555
|
|
506
556
|
################### 발송 엔터 ####################
|
507
557
|
@driver.action.key_down(:enter).key_up(:enter).perform
|
@@ -682,19 +732,29 @@ class Wordpress
|
|
682
732
|
|
683
733
|
|
684
734
|
@data['table'][index][-1] = 0
|
735
|
+
|
736
|
+
|
685
737
|
if @data['이미지설정']['이미지'].length == 0
|
686
|
-
|
687
|
-
|
738
|
+
image = '' # 이미지가 없으면 빈 문자열을 할당
|
739
|
+
else
|
688
740
|
if @data['이미지설정']['랜덤사용'].checked?
|
689
|
-
|
741
|
+
image = @data['이미지설정']['이미지'].sample[1] # 랜덤으로 이미지 선택
|
690
742
|
else
|
691
|
-
|
692
|
-
|
693
|
-
|
694
|
-
|
695
|
-
|
743
|
+
image = @data['이미지설정']['이미지'][@image_counter][1] # 순차적으로 이미지 선택
|
744
|
+
@image_counter += 1
|
745
|
+
# 이미지 카운터가 이미지 배열의 길이를 초과하지 않도록 처리
|
746
|
+
if @image_counter > @data['이미지설정']['이미지'].length - 1
|
747
|
+
@image_counter = 0 # 끝까지 갔으면 0으로 리셋
|
748
|
+
end
|
696
749
|
end
|
697
|
-
|
750
|
+
end
|
751
|
+
|
752
|
+
image = image.force_encoding('UTF-8')
|
753
|
+
|
754
|
+
# 클립보드에 복사
|
755
|
+
Clipboard.copy(image)
|
756
|
+
|
757
|
+
|
698
758
|
@data['table'][index][-1] = 5
|
699
759
|
@data['table'] << []
|
700
760
|
@data['table'].pop
|
@@ -808,7 +868,7 @@ class Wordpress
|
|
808
868
|
url = @data['table'][index][1].to_s.force_encoding('utf-8')
|
809
869
|
|
810
870
|
# puts '[작업 준비!!] 포스팅 제목/내용 준비 완료.......'.green
|
811
|
-
naver.update(telegram_number,url,content,
|
871
|
+
naver.update(telegram_number,url,content,image,nomber,option)
|
812
872
|
|
813
873
|
|
814
874
|
#완료했으니 수량 카운터
|
@@ -1339,15 +1399,14 @@ class Wordpress
|
|
1339
1399
|
on_clicked{
|
1340
1400
|
file = open_file
|
1341
1401
|
if file != nil
|
1342
|
-
|
1402
|
+
file_path = file.gsub('/', '\\')
|
1343
1403
|
@data['이미지설정']['이미지'] << [false, file, file]
|
1344
1404
|
@data['이미지설정']['이미지'] << [false, file, file]
|
1345
1405
|
@data['이미지설정']['이미지'].pop
|
1346
1406
|
end
|
1347
1407
|
}
|
1348
1408
|
}
|
1349
|
-
|
1350
|
-
|
1409
|
+
|
1351
1410
|
|
1352
1411
|
button(' 전체선택 '){
|
1353
1412
|
top 0
|
@@ -1415,7 +1474,7 @@ class Wordpress
|
|
1415
1474
|
editable true
|
1416
1475
|
}
|
1417
1476
|
text_column('이미지파일'){
|
1418
|
-
|
1477
|
+
editable true
|
1419
1478
|
}
|
1420
1479
|
|
1421
1480
|
cell_rows @data['이미지설정']['이미지']
|