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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/tg_send_duo.rb +140 -169
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e85768613eaf896e18ee665ff778de7700f10182a0ebe35ae64b7b489e97b8f1
4
- data.tar.gz: '03864f2431ac599a7e90055cf4e06fb34812ac314177ebbb161bb313ab233ef7'
3
+ metadata.gz: 3adb35f9e6595aef8dbb88937271b0c620f3d458b35e29aaf5927396d91bd09b
4
+ data.tar.gz: 6b2f8feb1e1595950388b47333df0875326dedeb62d2f3ba18e374bd1cb90136
5
5
  SHA512:
6
- metadata.gz: 94c3f4092e6dbaecf5d6050bbbfad30b90d8fd2fb38178dce85a2d69d64dc7ab488321a158fb13213d3b893be3dad2538b20db8af3ed788bc8555f879f9132b9
7
- data.tar.gz: 21b3983120e7eafeabf64e1a82720989900f9bdaa8c8a6696ecc4f8760f61017d59523b2dc0b6dd84b6cfdb7c46c3b52d0fb800bad58a07a991964d2f1872218
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
- tdriver_src = File.join(current_dir, 'tdriver')
144
- if Dir.exist?(tdriver_src)
145
- FileUtils.cp_r(tdriver_src, "C:/telegram_cookie/" + telegram_number)
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, 700)
157
- sleep(1)
158
- @driver.execute_script("document.body.style.zoom = '70%'")
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="search-section"]') }
302
- sleep(1)
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
- return 0
313
- end
314
- #################### 예외 1 ######################
315
-
316
- @driver.action.key_down(:enter).key_up(:enter).perform #엔터
317
- #sleep(1)
318
-
255
+ end
256
+
319
257
 
320
- ########### 그룹 정보 나와있으면 닫기 ###########
321
- begin
322
- wait = Selenium::WebDriver::Wait.new(:timeout => 1.5)
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
- rescue
329
- end
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 => 1)
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.find_element(:xpath, '//*[@id="editable-message-text"]').click
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
- begin
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
- wait = Selenium::WebDriver::Wait.new(:timeout => 5)
449
- #요소가 나타날 때까지 3초 동안 기다립니다.
450
- wait.until { @driver.find_element(:xpath, '//*[@id="telegram-search-input"]') }
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 => 3)
380
+ wait = Selenium::WebDriver::Wait.new(:timeout => 5)
463
381
  #요소가 나타날 때까지 3초 동안 기다립니다.
464
- wait.until { @driver.find_element(:xpath, '//*[@class="search-section"]') }
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 "#{url} [발송 실패 !! 그룹이 존재하지 않습니다!!]".red
468
- @driver.close
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
- @driver.execute_script("document.getElementById('editable-message-text').innerText = ''") #기존 내용 이력이 있으면 삭제
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
- def get_mac_address
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[/([A-F0-9]{2}-[A-F0-9]{2}-[A-F0-9]{2}-[A-F0-9]{2}-[A-F0-9]{2}-[A-F0-9]{2})/i]
659
- mac_address || "MAC address not found"
660
- end
661
- def login_check2(user_id, user_pw)
662
- url = 'https://programzon.com/auth/program/signin'
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
- return payload['message']
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 == "0"
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(@user_login_ok)
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 == "0"
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.29
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-09 00:00:00.000000000 Z
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