tg_send_zon 0.0.2 → 0.0.5
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 +97 -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: d111c3d8737a5214b473a32ce25a7aff58e65c5c49d2beeb574ff0e3e3b5cf81
|
4
|
+
data.tar.gz: 402f2093680a727052ff1ac6cd6e6a2d8c0af28ac29c47b73e9396d660ef98a6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: eb71714d5af464f7f18e1328d90bff68d5e4d00cbc888292b2cfe91513dfa8ea43633005c9c5120a2868d34a0c440ce8a232e64fcaa75a25fafed421bf5b66fb
|
7
|
+
data.tar.gz: ed6020168a7a90a678c21245460c61e1a958705712f7e2da9f97a4c320ddb43433488b6858774e50275ce0f2bff1d82922a19794c1f288748a68b917f2cdf40c
|
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,52 @@ 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
|
+
sleep(0.5)
|
474
508
|
key_down('ctrl')
|
475
509
|
key_stroke('v')
|
476
510
|
key_up('ctrl')
|
511
|
+
sleep(0.5)
|
477
512
|
key_stroke('enter')
|
478
513
|
sleep(1.5)
|
514
|
+
|
479
515
|
################### 사진 입력 ####################
|
480
516
|
|
481
|
-
|
517
|
+
|
482
518
|
################### 내용 입력 ####################
|
483
519
|
@driver.execute_script("document.getElementById('editable-message-text-modal').innerText = ''")
|
520
|
+
|
521
|
+
|
484
522
|
sleep(1)
|
485
523
|
@content = content
|
486
524
|
Clipboard.copy(content)
|
487
525
|
@driver.action.key_down(:control).send_keys('v').key_up(:control).perform #새로넣은 코드 (내용 한번에 복붙방식)
|
488
526
|
sleep(1)
|
489
527
|
################### 내용 입력 ####################
|
490
|
-
|
491
|
-
|
528
|
+
rescue
|
529
|
+
# 이미지 발송 금지 된 방 예외 처리
|
530
|
+
puts "#{url} [해당 방은 이미지 발송이 금지된 방으로 메세지만 발송합니다.]".magenta
|
531
|
+
@driver.execute_script("document.getElementById('editable-message-text').innerText = ''")
|
532
|
+
sleep(1)
|
533
|
+
@driver.find_element(:xpath, '//*[@id="editable-message-text"]').click
|
534
|
+
sleep(1)
|
535
|
+
@content = content
|
536
|
+
Clipboard.copy(content)
|
537
|
+
@driver.action.key_down(:control).send_keys('v').key_up(:control).perform #새로넣은 코드 (내용 한번에 복붙방식)
|
538
|
+
sleep(1)
|
539
|
+
end
|
540
|
+
|
492
541
|
################### 회차 옵션 ####################
|
493
542
|
if option['발송횟수추가'] == 'true'
|
494
543
|
puts '회수 추가.......'.green
|
@@ -501,7 +550,7 @@ class Naver
|
|
501
550
|
else
|
502
551
|
end
|
503
552
|
################### 회차 옵션 ####################
|
504
|
-
|
553
|
+
|
505
554
|
|
506
555
|
################### 발송 엔터 ####################
|
507
556
|
@driver.action.key_down(:enter).key_up(:enter).perform
|
@@ -682,19 +731,29 @@ class Wordpress
|
|
682
731
|
|
683
732
|
|
684
733
|
@data['table'][index][-1] = 0
|
734
|
+
|
735
|
+
|
685
736
|
if @data['이미지설정']['이미지'].length == 0
|
686
|
-
|
687
|
-
|
737
|
+
image = '' # 이미지가 없으면 빈 문자열을 할당
|
738
|
+
else
|
688
739
|
if @data['이미지설정']['랜덤사용'].checked?
|
689
|
-
|
740
|
+
image = @data['이미지설정']['이미지'].sample[1] # 랜덤으로 이미지 선택
|
690
741
|
else
|
691
|
-
|
692
|
-
|
693
|
-
|
694
|
-
|
695
|
-
|
742
|
+
image = @data['이미지설정']['이미지'][@image_counter][1] # 순차적으로 이미지 선택
|
743
|
+
@image_counter += 1
|
744
|
+
# 이미지 카운터가 이미지 배열의 길이를 초과하지 않도록 처리
|
745
|
+
if @image_counter > @data['이미지설정']['이미지'].length - 1
|
746
|
+
@image_counter = 0 # 끝까지 갔으면 0으로 리셋
|
747
|
+
end
|
696
748
|
end
|
697
|
-
|
749
|
+
end
|
750
|
+
|
751
|
+
image = image.force_encoding('UTF-8')
|
752
|
+
|
753
|
+
# 클립보드에 복사
|
754
|
+
Clipboard.copy(image)
|
755
|
+
|
756
|
+
|
698
757
|
@data['table'][index][-1] = 5
|
699
758
|
@data['table'] << []
|
700
759
|
@data['table'].pop
|
@@ -808,7 +867,7 @@ class Wordpress
|
|
808
867
|
url = @data['table'][index][1].to_s.force_encoding('utf-8')
|
809
868
|
|
810
869
|
# puts '[작업 준비!!] 포스팅 제목/내용 준비 완료.......'.green
|
811
|
-
naver.update(telegram_number,url,content,
|
870
|
+
naver.update(telegram_number,url,content,image,nomber,option)
|
812
871
|
|
813
872
|
|
814
873
|
#완료했으니 수량 카운터
|
@@ -1339,15 +1398,14 @@ class Wordpress
|
|
1339
1398
|
on_clicked{
|
1340
1399
|
file = open_file
|
1341
1400
|
if file != nil
|
1342
|
-
|
1401
|
+
file_path = file.gsub('/', '\\')
|
1343
1402
|
@data['이미지설정']['이미지'] << [false, file, file]
|
1344
1403
|
@data['이미지설정']['이미지'] << [false, file, file]
|
1345
1404
|
@data['이미지설정']['이미지'].pop
|
1346
1405
|
end
|
1347
1406
|
}
|
1348
1407
|
}
|
1349
|
-
|
1350
|
-
|
1408
|
+
|
1351
1409
|
|
1352
1410
|
button(' 전체선택 '){
|
1353
1411
|
top 0
|
@@ -1415,7 +1473,7 @@ class Wordpress
|
|
1415
1473
|
editable true
|
1416
1474
|
}
|
1417
1475
|
text_column('이미지파일'){
|
1418
|
-
|
1476
|
+
editable true
|
1419
1477
|
}
|
1420
1478
|
|
1421
1479
|
cell_rows @data['이미지설정']['이미지']
|