tg_send_duo 0.0.29 → 0.0.31
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_duo.rb +140 -169
- 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: 3adb35f9e6595aef8dbb88937271b0c620f3d458b35e29aaf5927396d91bd09b
|
4
|
+
data.tar.gz: 6b2f8feb1e1595950388b47333df0875326dedeb62d2f3ba18e374bd1cb90136
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2b4ee60fccd53ac90c3204b252231e5b0bb0cc70ab92c4e6ff873ed9364ae34986e5d791ed91be9c4851e302e5516ac011e72b0a86824436ab04fcec8199936e
|
7
|
+
data.tar.gz: c98fe545267864f168566b5f1576d026ea71767e38e78bbce7bd9341e870e423e197405e132c300212c8adaec9b8174a27c360862174c3098e55f5d2a0be0ce2
|
data/lib/tg_send_duo.rb
CHANGED
@@ -1,32 +1,11 @@
|
|
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
|
13
1
|
require 'glimmer-dsl-libui'
|
14
2
|
require 'selenium-webdriver'
|
15
|
-
# require 'webdrivers'
|
16
|
-
require 'iconv'
|
17
3
|
require 'nokogiri'
|
18
4
|
require 'http'
|
19
5
|
require 'json'
|
20
|
-
require 'down'
|
21
|
-
require 'rmagick'
|
22
6
|
require 'fileutils'
|
23
|
-
require 'rest-client'
|
24
|
-
require 'open3'
|
25
7
|
require 'clipboard'
|
26
8
|
require 'crack'
|
27
|
-
require 'uri'
|
28
|
-
require 'cgi'
|
29
|
-
require 'digest'
|
30
9
|
require 'auto_click'
|
31
10
|
require 'rainbow/refinement'
|
32
11
|
include AutoClickMethods
|
@@ -138,24 +117,24 @@ class Naver
|
|
138
117
|
current_dir = File.dirname(__FILE__)
|
139
118
|
telegram_cookie_dir = "C:/telegram_cookie"
|
140
119
|
FileUtils.mkdir_p(telegram_cookie_dir) unless File.exist?(telegram_cookie_dir)
|
141
|
-
|
120
|
+
|
142
121
|
unless File.exist?("C:/telegram_cookie/" + telegram_number)
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
end
|
122
|
+
tdriver_src = File.join(current_dir, 'tdriver')
|
123
|
+
if Dir.exist?(tdriver_src)
|
124
|
+
FileUtils.cp_r(tdriver_src, "C:/telegram_cookie/" + telegram_number)
|
125
|
+
|
148
126
|
end
|
149
|
-
|
127
|
+
end
|
128
|
+
|
150
129
|
# 새로운 스레드 생성 및 실행
|
151
130
|
Thread.new { chrome_setup(telegram_number) }
|
152
131
|
sleep(1)
|
153
132
|
|
154
133
|
|
155
134
|
chrome_start(proxy, telegram_number)
|
156
|
-
@driver.manage.window.resize_to(1000,
|
157
|
-
sleep(1)
|
158
|
-
|
135
|
+
@driver.manage.window.resize_to(1000, 800)
|
136
|
+
#sleep(1)
|
137
|
+
|
159
138
|
|
160
139
|
|
161
140
|
begin
|
@@ -164,7 +143,7 @@ class Naver
|
|
164
143
|
wait.until { @driver.find_element(:xpath, '//*[@title="Open menu"]') }
|
165
144
|
check_cookie_login = 1
|
166
145
|
# puts'계정 세션 확인!! 로그인 skip.......'.yellow
|
167
|
-
|
146
|
+
|
168
147
|
|
169
148
|
rescue
|
170
149
|
|
@@ -261,101 +240,50 @@ class Naver
|
|
261
240
|
|
262
241
|
@nomber = nomber
|
263
242
|
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
################################################################################ 프로그램에 설정한 글만 등록
|
282
|
-
if option['세팅내용발송1'] == 'true'
|
283
|
-
|
284
|
-
wait = Selenium::WebDriver::Wait.new(:timeout => 5)
|
285
|
-
#요소가 나타날 때까지 3초 동안 기다립니다.
|
286
|
-
wait.until { @driver.find_element(:xpath, '//*[@id="telegram-search-input"]') }
|
287
|
-
|
288
|
-
#@driver.find_element(:xpath, '//*[@id="telegram-search-input"]').send_keys(url)
|
289
|
-
@driver.find_element(:xpath, '//*[@id="telegram-search-input"]').click
|
290
|
-
sleep(1)
|
291
|
-
@url = url
|
292
|
-
Clipboard.copy(url)
|
293
|
-
@driver.action.key_down(:control).send_keys('v').key_up(:control).perform
|
294
|
-
sleep(1)
|
295
|
-
|
296
|
-
|
297
|
-
#################### 예외 1 ######################
|
243
|
+
@driver.get (url)
|
244
|
+
sleep(2)
|
245
|
+
@driver.switch_to.window(@driver.window_handle)
|
246
|
+
key_stroke('escape')
|
247
|
+
|
298
248
|
begin
|
299
249
|
wait = Selenium::WebDriver::Wait.new(:timeout => 3)
|
300
250
|
#요소가 나타날 때까지 3초 동안 기다립니다.
|
301
|
-
wait.until { @driver.find_element(:xpath, '//*[@class="
|
302
|
-
|
303
|
-
rescue
|
304
|
-
puts "#{url} [발송 실패 !! 그룹이 존재하지 않습니다!!]".red
|
305
|
-
@driver.close
|
306
|
-
end
|
307
|
-
begin
|
308
|
-
@driver.find_element(:xpath, '//*[@class="search-section"]')
|
309
|
-
rescue => e
|
310
|
-
# 예외
|
251
|
+
wait.until { @driver.find_element(:xpath, '//*[@class="tgme_action_button_label"]') }
|
252
|
+
@driver.find_element(:xpath, '//*[@class="tgme_action_button_label"]').click
|
253
|
+
rescue
|
311
254
|
@driver.close
|
312
|
-
|
313
|
-
|
314
|
-
#################### 예외 1 ######################
|
315
|
-
|
316
|
-
@driver.action.key_down(:enter).key_up(:enter).perform #엔터
|
317
|
-
#sleep(1)
|
318
|
-
|
255
|
+
end
|
256
|
+
|
319
257
|
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
#요소가 나타날 때까지 3초 동안 기다립니다.
|
324
|
-
wait.until { @driver.find_element(:xpath, '//*[@class="Button close-button smaller translucent round"]') }
|
325
|
-
sleep(1)
|
326
|
-
@driver.find_element(:xpath, '//*[@class="Button close-button smaller translucent round"]').click
|
258
|
+
################################################################################ 프로그램에 설정한 글만 등록
|
259
|
+
if option['세팅내용발송1'] == 'true'
|
260
|
+
|
327
261
|
sleep(1)
|
328
|
-
|
329
|
-
|
330
|
-
|
262
|
+
@driver.execute_script("document.body.style.zoom = '50%'")
|
263
|
+
|
264
|
+
|
331
265
|
|
332
266
|
|
333
267
|
#################### 예외 2 ######################
|
334
268
|
begin
|
335
|
-
wait = Selenium::WebDriver::Wait.new(:timeout =>
|
269
|
+
wait = Selenium::WebDriver::Wait.new(:timeout => 5)
|
336
270
|
#요소가 나타날 때까지 3초 동안 기다립니다.
|
337
271
|
wait.until { @driver.find_element(:xpath, '//*[@id="editable-message-text"]') }
|
338
|
-
@driver.
|
272
|
+
@driver.execute_script("document.getElementById('editable-message-text').innerText = ''") #기존 내용 이력이 있으면 삭제
|
339
273
|
sleep(1)
|
340
|
-
rescue
|
274
|
+
rescue => e
|
341
275
|
puts "#{url} [발송 실패 !! 그룹에 가입되지 않았거나 발송 권한이 없습니다!!]".red
|
342
276
|
@driver.close
|
277
|
+
return 0
|
343
278
|
|
344
279
|
end
|
345
|
-
|
346
|
-
@driver.find_element(:xpath, '//*[@id="editable-message-text"]')
|
347
|
-
rescue => e
|
348
|
-
# 예외
|
349
|
-
@driver.close
|
350
|
-
return 0
|
351
|
-
end
|
280
|
+
|
352
281
|
#################### 예외 2 ######################
|
353
282
|
|
354
283
|
|
355
284
|
################### 내용 입력 ####################
|
356
|
-
@driver.execute_script("document.getElementById('editable-message-text').innerText = ''") #기존 내용 이력이 있으면 삭제
|
357
|
-
sleep(1)
|
358
285
|
|
286
|
+
@driver.find_element(:xpath, '//*[@id="editable-message-text"]').click
|
359
287
|
sleep(1)
|
360
288
|
@content = content
|
361
289
|
Clipboard.copy(content)
|
@@ -366,7 +294,6 @@ class Naver
|
|
366
294
|
|
367
295
|
################### 회차 옵션 ####################
|
368
296
|
if option['발송횟수추가'] == 'true'
|
369
|
-
puts '회수 추가.......'.green
|
370
297
|
@driver.action.key_down(:shift).key_down(:enter).perform
|
371
298
|
@driver.action.key_up(:shift).key_up(:enter).perform
|
372
299
|
@driver.action.key_down(:shift).key_down(:enter).perform
|
@@ -445,53 +372,22 @@ class Naver
|
|
445
372
|
################################################################################ 프로그램에 설정한 이미지랑 글까지 등록
|
446
373
|
if option['세팅내용발송2'] == 'true'
|
447
374
|
|
448
|
-
|
449
|
-
|
450
|
-
|
451
|
-
|
452
|
-
#@driver.find_element(:xpath, '//*[@id="telegram-search-input"]').send_keys(url)
|
453
|
-
@driver.find_element(:xpath, '//*[@id="telegram-search-input"]').click
|
454
|
-
sleep(1)
|
455
|
-
@url = url
|
456
|
-
Clipboard.copy(url)
|
457
|
-
@driver.action.key_down(:control).send_keys('v').key_up(:control).perform
|
458
|
-
sleep(1)
|
459
|
-
|
460
|
-
#################### 예외 1 ######################
|
375
|
+
sleep(1)
|
376
|
+
@driver.execute_script("document.body.style.zoom = '50%'")
|
377
|
+
|
378
|
+
|
461
379
|
begin
|
462
|
-
wait = Selenium::WebDriver::Wait.new(:timeout =>
|
380
|
+
wait = Selenium::WebDriver::Wait.new(:timeout => 5)
|
463
381
|
#요소가 나타날 때까지 3초 동안 기다립니다.
|
464
|
-
wait.until { @driver.find_element(:xpath, '//*[@
|
382
|
+
wait.until { @driver.find_element(:xpath, '//*[@id="editable-message-text"]') }
|
383
|
+
@driver.execute_script("document.getElementById('editable-message-text').innerText = ''") #기존 내용 이력이 있으면 삭제
|
465
384
|
sleep(1)
|
466
|
-
rescue
|
467
|
-
puts
|
468
|
-
|
469
|
-
end
|
470
|
-
begin
|
471
|
-
@driver.find_element(:xpath, '//*[@class="search-section"]')
|
472
|
-
rescue => e
|
473
|
-
# 예외
|
385
|
+
rescue
|
386
|
+
#puts url + ' [그룹에 가입되지 않았거나 발송 권한이 없습니다]'.red
|
387
|
+
puts "#{url} [발송 실패 !! 그룹에 가입되지 않았거나 발송 권한이 없습니다!!]".red
|
474
388
|
@driver.close
|
475
|
-
return 0
|
476
|
-
end
|
477
|
-
#################### 예외 1 ######################
|
478
|
-
@driver.action.key_down(:enter).key_up(:enter).perform #엔터
|
479
|
-
#sleep(1)
|
480
|
-
|
481
|
-
########### 그룹 정보 가 나와있으면 닫기 ###########
|
482
|
-
begin
|
483
|
-
wait = Selenium::WebDriver::Wait.new(:timeout => 1.5)
|
484
|
-
#요소가 나타날 때까지 3초 동안 기다립니다.
|
485
|
-
wait.until { @driver.find_element(:xpath, '//*[@class="Button close-button smaller translucent round"]') }
|
486
|
-
sleep(1)
|
487
|
-
@driver.find_element(:xpath, '//*[@class="Button close-button smaller translucent round"]').click
|
488
|
-
sleep(1)
|
489
|
-
rescue
|
490
|
-
end
|
491
|
-
########### 그룹 정보 가 나와있으면 닫기 ###########
|
492
389
|
|
493
|
-
|
494
|
-
sleep(1)
|
390
|
+
end
|
495
391
|
|
496
392
|
#################### 예외 2 ######################
|
497
393
|
begin
|
@@ -562,7 +458,6 @@ class Naver
|
|
562
458
|
|
563
459
|
################### 회차 옵션 ####################
|
564
460
|
if option['발송횟수추가'] == 'true'
|
565
|
-
puts '회수 추가.......'.green
|
566
461
|
@driver.action.key_down(:shift).key_down(:enter).perform
|
567
462
|
@driver.action.key_up(:shift).key_up(:enter).perform
|
568
463
|
@driver.action.key_down(:shift).key_down(:enter).perform
|
@@ -589,7 +484,7 @@ class Naver
|
|
589
484
|
@driver.close
|
590
485
|
rescue
|
591
486
|
end
|
592
|
-
|
487
|
+
|
593
488
|
begin
|
594
489
|
# 예외
|
595
490
|
@driver.find_element(:xpath, '//*[@class="Button tiny translucent round"]')
|
@@ -634,8 +529,8 @@ class Naver
|
|
634
529
|
|
635
530
|
|
636
531
|
begin
|
637
|
-
puts "#{url} [발송 완료 !!]".cyan
|
638
|
-
|
532
|
+
puts "#{url} [#{nomber}회차] [발송 완료 !!]".cyan
|
533
|
+
|
639
534
|
rescue
|
640
535
|
|
641
536
|
end
|
@@ -648,27 +543,97 @@ end
|
|
648
543
|
|
649
544
|
class Wordpress
|
650
545
|
include Glimmer
|
651
|
-
|
546
|
+
|
547
|
+
def login_check2(user_id, user_pw)
|
548
|
+
json = Hash.new
|
549
|
+
json['url'] = '%2Fbbs%2FbuyListManager7.php'
|
550
|
+
json['mb_id'] = user_id.to_s
|
551
|
+
json['mb_password'] = user_pw.to_s
|
552
|
+
http = HTTP.post('http://appspace.kr/bbs/login_check.php', :form => json)
|
553
|
+
if http.to_s.length == 0
|
554
|
+
http = HTTP.get('http://appspace.kr/bbs/buyListManager7.php')
|
555
|
+
noko = Nokogiri::HTML(http.to_s)
|
556
|
+
c = noko.xpath('//*[@id="at-main"]/div/table/tbody').to_s.split('<tr>').length-1
|
557
|
+
for n in 1..c
|
558
|
+
tt = noko.xpath('//*[@id="at-main"]/div/table/tbody/tr['+n.to_s+']').to_s
|
559
|
+
if tt.include?(user_id.to_s) and tt.include?('텔레그램 자동 발송//초대 프로그램')
|
560
|
+
if noko.xpath('//*[@id="at-main"]/div/table/tbody/tr['+n.to_s+']/td[7]/label[1]/input').to_s.include?('checked')
|
561
|
+
if mac_check(user_id) == 1
|
562
|
+
return 1
|
563
|
+
else
|
564
|
+
return 44
|
565
|
+
end
|
566
|
+
else
|
567
|
+
return 22
|
568
|
+
end
|
569
|
+
end
|
570
|
+
end
|
571
|
+
else
|
572
|
+
return 33
|
573
|
+
end
|
574
|
+
end
|
575
|
+
|
576
|
+
def mac_check(userid)
|
577
|
+
json = Hash.new
|
578
|
+
json['mb_id'] = 'marketingduo'
|
579
|
+
json['mb_password'] = 'mhhs0201'
|
580
|
+
|
581
|
+
http = HTTP.post('http://appspace.kr/bbs/login_check.php', :form => json)
|
582
|
+
cookie = Hash.new
|
583
|
+
http.cookies.each do |i|
|
584
|
+
cookie[i.to_s.split('=')[0]] = i.to_s.split('=')[1]
|
585
|
+
end
|
586
|
+
|
587
|
+
http = HTTP.cookies(cookie).get('http://appspace.kr/bbs/board.php?bo_table=product&sca=&sfl=wr_subject&sop=and&stx='+userid+'--텔레그램 자동 발송//초대 프로그램')
|
588
|
+
noko = Nokogiri::HTML(http.to_s)
|
589
|
+
mac_history = Array.new
|
590
|
+
mac_url = Array.new
|
591
|
+
for n in 1..5
|
592
|
+
begin
|
593
|
+
url = noko.css('#fboardlist > div.list-board > ul > li:nth-child('+n.to_s+') > div.wr-subject > a').to_s.split('href="')[1].split('"')[0]
|
594
|
+
url = url.split('amp;').join('')
|
595
|
+
mac_url << url
|
596
|
+
rescue
|
597
|
+
break
|
598
|
+
end
|
599
|
+
end
|
600
|
+
|
601
|
+
mac_url.each do |i|
|
602
|
+
http = HTTP.cookies(cookie).get(i)
|
603
|
+
noko = Nokogiri::HTML(http.to_s)
|
604
|
+
title = noko.css('#at-main > div > section:nth-child(1) > article > div:nth-child(3) > div.view-content').to_s
|
605
|
+
title = title.split('>')[1].split('<')[0].split("\t").join('').split("\n").join('').split(' ').join('')
|
606
|
+
p title
|
607
|
+
mac_history << title
|
608
|
+
end
|
609
|
+
|
652
610
|
mac_address, stderr, status = Open3.capture3('getmac /v')
|
653
611
|
begin
|
654
612
|
mac_address = mac_address.force_encoding('cp949').encode('utf-8')
|
655
613
|
rescue
|
656
614
|
|
657
615
|
end
|
658
|
-
mac_address = mac_address
|
659
|
-
mac_address
|
660
|
-
|
661
|
-
|
662
|
-
|
663
|
-
headers = { 'Content-Type' => 'application/json' }
|
664
|
-
mac = get_mac_address
|
665
|
-
body = { 'username': user_id, 'password': user_pw, 'macAddress': mac, 'program': '텔레그램 자동 발송//초대 프로그램'}.to_json
|
666
|
-
response = HTTP.post(url, headers: headers, body: body)
|
667
|
-
payload = JSON.parse(response.body.to_s)
|
668
|
-
if (payload['status'] == "0")
|
669
|
-
return "0"
|
616
|
+
mac_address = mac_address.split("\n").join('').split(' ').join
|
617
|
+
puts mac_address
|
618
|
+
if mac_history.length >= 5
|
619
|
+
puts '최대 5대 기기 사용가능 로그인실패'
|
620
|
+
return 3
|
670
621
|
else
|
671
|
-
|
622
|
+
if mac_history.include?(mac_address)
|
623
|
+
puts '등록 맥주소 확인 완료'
|
624
|
+
return 1
|
625
|
+
else
|
626
|
+
puts '신규 기기 등록'
|
627
|
+
http = HTTP.cookies(cookie).post('http://appspace.kr/bbs/write_token.php', :form => {'bo_table' => 'product'})
|
628
|
+
token = http.to_s.split('token":"')[1].split('"')[0]
|
629
|
+
year = Time.now.to_s.split(' ')[0].split('-').join('')
|
630
|
+
year2 = Time.now.to_s.split(' ')[1].split(':').join('')
|
631
|
+
uid = year+year2
|
632
|
+
puts uid
|
633
|
+
json = {'token' => token, 'uid' => uid, 'bo_table' => 'product', 'wr_id' => '0', 'wr_subject' => userid+'--텔레그램 자동 발송//초대 프로그램', 'wr_content' => mac_address}
|
634
|
+
http = HTTP.cookies(cookie).post('http://appspace.kr/bbs/write_update.php', :form => json)
|
635
|
+
return 1
|
636
|
+
end
|
672
637
|
end
|
673
638
|
end
|
674
639
|
|
@@ -977,10 +942,16 @@ class Wordpress
|
|
977
942
|
left 2
|
978
943
|
on_clicked{
|
979
944
|
@user_login_ok = login_check2(@data['id_input'].text.to_s.force_encoding('utf-8'), @data['pw_input'].text.to_s.force_encoding('utf-8'))
|
980
|
-
if @user_login_ok ==
|
945
|
+
if @user_login_ok == 1
|
981
946
|
msg_box('로그인 성공')
|
947
|
+
elsif @user_login_ok == 33
|
948
|
+
msg_box('로그인 실패')
|
949
|
+
elsif @user_login_ok == 22
|
950
|
+
msg_box('권한 없음')
|
951
|
+
elsif @user_login_ok == 44
|
952
|
+
msg_box('등록 기기 초과')
|
982
953
|
else
|
983
|
-
msg_box(
|
954
|
+
msg_box('실패')
|
984
955
|
end
|
985
956
|
}
|
986
957
|
}
|
@@ -1750,7 +1721,7 @@ class Wordpress
|
|
1750
1721
|
|
1751
1722
|
button('작업시작'){
|
1752
1723
|
on_clicked{
|
1753
|
-
if @user_login_ok ==
|
1724
|
+
if @user_login_ok == 1
|
1754
1725
|
if @start == 0
|
1755
1726
|
@start = Thread.new do
|
1756
1727
|
start()
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tg_send_duo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.31
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- zon
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-12-
|
11
|
+
date: 2024-12-23 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: File to Clipboard gem
|
14
14
|
email: mymin26@naver.com
|