cafe_basics 0.0.19 → 0.0.27

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/cafe_basics.rb +134 -158
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1046c0901fee040f217e0c09add41ef3e4b5ceeaa2bcecface8ba894d4895f8c
4
- data.tar.gz: 34459cc3069e69030ab88e60879f995eb4d2e9e47474fe54c3df98538a3dedf0
3
+ metadata.gz: f4a90bc3be99e284827c28dd01d082dc0fe1091b917ab400b9ee12e5a846ba7c
4
+ data.tar.gz: '0609c3a6d915732add3b5bbec14086ad333f5af2f70be90edeb487681156a828'
5
5
  SHA512:
6
- metadata.gz: 830f4be3e0be3352cea3fd94f83ae41c3bd440d0881a276da4b620483096cef4486d0ecd6362078c50626cc3e821a01f693f5c3424b666089eda3fbc8c1a7941
7
- data.tar.gz: cf62c9b12bb54c5808b3dc074a6a5c90cf2b7bbf7b939ebf8ecd712b312cb58b057ee0682d359a0d07a9cc21ee1c328d6863c21e68b222283e9602e1a5bd49ac
6
+ metadata.gz: 22027d2758f2ddd332d60b1bc26e89e2636e83079ddc96386a71a894159cd6f00abf227d414984d6a7660a6f80ef17b1b44bf08f6461e597a4fce5076db34b6d
7
+ data.tar.gz: 442449406bfbaf0a4174511523745445d2a12e7bb88db7f42b659726cc317815a3182add9b205ca09ea655cb6e539438a6f4a650646a4de3b61dc3406bd46038
data/lib/cafe_basics.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  require 'glimmer-dsl-libui'
2
2
  require 'selenium-webdriver'
3
- require 'webdrivers'
3
+ # require 'webdrivers'
4
4
  require 'iconv'
5
5
  require 'nokogiri'
6
6
  require 'http'
@@ -210,95 +210,73 @@ class Naver
210
210
  def initialize
211
211
  @seed = 1
212
212
  end
213
- def chrome_setup(user_id)
213
+ def chrome_setup(user_id, proxy)
214
214
  naver_cookie_dir = "C:/naver_cookie"
215
215
  FileUtils.mkdir_p(naver_cookie_dir) unless File.exist?(naver_cookie_dir)
216
+ if proxy == ''
216
217
  system(%{"C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe" https://naver.com/ --remote-debugging-port=9222 --user-data-dir=C:/naver_cookie/#{user_id}})
218
+ else
219
+ system(%{"C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe" "https://naver.com/" --remote-debugging-port=9222 --user-data-dir=C:/naver_cookie/#{user_id} --proxy-server=#{proxy.to_s.force_encoding('utf-8').to_s}})
220
+ end
217
221
  end
218
222
  def chrome_start(proxy, user_id)
219
223
  naver_cookie_dir = "C:/naver_cookie"
220
224
  FileUtils.mkdir_p(naver_cookie_dir) unless File.exist?(naver_cookie_dir)
221
-
222
- chromedriver_path = './chromedriver.exe'
223
-
224
- # 웹드라이버 자동 업데이트 시도
225
- begin
226
- # webdrivers가 사용자의 Chrome 버전에 맞는 chromedriver 다운로드 시도
227
- Webdrivers::Chromedriver.update # 자동 업데이트 시도
228
- rescue => e
229
- puts "webdrivers에서 chromedriver 다운로드 실패: #{e.message}"
230
- puts "자동으로 chromedriver.exe 사용합니다."
231
- puts "만일 프로그램 폴더안에 chromedriver.exe 버전이 맞지 않거나 없는 경우 인터넷창이 깜빡하고 닫히거나 열리지 않는경우에만 아래 안내를 따라주세요."
232
- puts "https://storage.googleapis.com/chrome-for-testing-public/사용자크롬버전/win32/chromedriver-win32.zip 링크를 복사 후 복사 된 링크 중(사용자크롬버전) 부분을 크롬 사용자의 버전(예:131.0.6778.264)으로 수정 후 주소입력 부분에 넣어 엔터 후 다운로드 하고 압축을 풀고 chromedriver.exe 파일만 프로그램 폴더안에 넣어주세요."
233
- puts "인터넷 창이 열리고 작업을 한다면 위 항목은 패스해주세요."
234
- # 예외가 발생하면 수동 경로 사용
235
- Selenium::WebDriver::Chrome::Service.driver_path = chromedriver_path
236
- end
237
-
238
225
  if proxy == ''
239
- begin
240
- # webdrivers Gem이 크롬 드라이버 자동 다운로드 및 설정을 관리함
241
- options = Selenium::WebDriver::Chrome::Options.new
242
- options.page_load_strategy = :normal
243
- options.timeouts = { page_load: 20_000 }
244
- options.page_load_strategy = 'none'
245
- options.add_argument('--disable-blink-features=AutomationControlled') #자동화된 환경에서 실행되는 것을 감지하는 기능을 비활성화합니다.
246
-
247
-
248
-
249
- options.add_argument('--remote-debugging-port=9222')
250
- options.add_argument("user-data-dir=#{naver_cookie_dir}/#{user_id}")
251
-
252
- # :capabilities에 options를 배열로 전달
253
- capabilities = [options]
254
-
255
- # Selenium WebDriver에서 options를 capabilities로 전달
256
- @driver = Selenium::WebDriver.for(:chrome, capabilities: capabilities)
257
- rescue
258
- # 예외 발생 시 다른 방법으로 셀레니움 실행
259
- @driver = Selenium::WebDriver.for(:chrome, capabilities: capabilities)
260
- end
261
- else
262
- begin
263
- # Proxy를 사용하는 경우
264
- options = Selenium::WebDriver::Chrome::Options.new
265
- options.add_argument '--proxy-server=' + proxy.to_s.force_encoding('utf-8')
266
- options.page_load_strategy = :normal
267
- options.timeouts = { page_load: 20_000 }
268
- options.page_load_strategy = 'none'
269
- options.add_argument('--disable-blink-features=AutomationControlled') #자동화된 환경에서 실행되는 것을 감지하는 기능을 비활성화합니다.
270
-
271
- options.add_argument('--remote-debugging-port=9222')
272
- options.add_argument("user-data-dir=#{naver_cookie_dir}/#{user_id}")
273
-
274
- # :capabilities에 options를 배열로 전달
275
- capabilities = [options]
276
-
277
- # Selenium WebDriver에서 options를 capabilities로 전달
278
- @driver = Selenium::WebDriver.for(:chrome, capabilities: capabilities)
279
- rescue => e
280
- puts 'proxy error...'
281
226
  begin
282
- # Proxy가 실패할 경우 예외 처리
283
- options = Selenium::WebDriver::Chrome::Options.new
284
- options.page_load_strategy = :normal
285
- options.timeouts = { page_load: 20_000 }
286
- options.page_load_strategy = 'none'
287
- options.add_argument('--disable-blink-features=AutomationControlled') #자동화된 환경에서 실행되는 것을 감지하는 기능을 비활성화합니다.
288
- options.add_argument('--remote-debugging-port=9222')
289
- options.add_argument("user-data-dir=#{naver_cookie_dir}/#{user_id}")
290
-
291
- # :capabilities options를 배열로 전달
292
- capabilities = [options]
293
-
294
- @driver = Selenium::WebDriver.for(:chrome, capabilities: capabilities)
227
+ Selenium::WebDriver::Chrome::Service.driver_path = './chromedriver.exe'
228
+ options = Selenium::WebDriver::Chrome::Options.new
229
+ options.page_load_strategy = :normal
230
+ options.timeouts = {page_load: 20_000}
231
+ options.page_load_strategy = 'none'
232
+ options.add_argument('--disable-blink-features=AutomationControlled') #자동화된 환경에서 실행되는 것을 감지하는 기능을 비활성화합니다.
233
+ options.add_argument('--disable-gpu')
234
+ options.add_argument('--remote-debugging-port=9222')
235
+ options.add_argument('user-data-dir=C:/naver_cookie/' + user_id)
236
+ @driver = Selenium::WebDriver.for(:chrome, capabilities: options)
295
237
  rescue
296
- # 예외 발생 다른 방법으로 셀레니움 실행
297
- @driver = Selenium::WebDriver.for(:chrome, capabilities: capabilities)
238
+ @driver = Selenium::WebDriver.for(:chrome, capabilities: options)
239
+ end
240
+ else
241
+ begin
242
+ Selenium::WebDriver::Chrome::Service.driver_path = './chromedriver.exe'
243
+ options = Selenium::WebDriver::Chrome::Options.new
244
+ # profile = Selenium::WebDriver::Chrome::Profile.new
245
+ # profile['network.proxy.type'] = 1
246
+ # profile['network.proxy.http'] = proxy.split(':')[0]
247
+ # profile['network.proxy.http_port'] = proxy.split(':')[1].to_i
248
+ # options = Selenium::WebDriver::Chrome::Options.new
249
+ # options.profile = profile
250
+ options = Selenium::WebDriver::Chrome::Options.new
251
+ options.add_argument '--proxy-server='+proxy.to_s.force_encoding('utf-8').to_s
252
+ options.page_load_strategy = :normal
253
+ options.timeouts = {page_load: 20_000}
254
+ options.page_load_strategy = 'none'
255
+ options.add_argument('--disable-blink-features=AutomationControlled') #자동화된 환경에서 실행되는 것을 감지하는 기능을 비활성화합니다.
256
+ options.add_argument('--disable-gpu')
257
+ options.add_argument('--remote-debugging-port=9222')
258
+ options.add_argument('user-data-dir=C:/naver_cookie/' + user_id)
259
+ @driver = Selenium::WebDriver.for(:chrome, capabilities: options)
260
+ rescue => e
261
+ puts e
262
+ puts 'proxy error...'
263
+ begin
264
+ Selenium::WebDriver::Chrome::Service.driver_path = './chromedriver.exe'
265
+ options = Selenium::WebDriver::Chrome::Options.new
266
+ options.page_load_strategy = :normal
267
+ options.timeouts = {page_load: 20_000}
268
+ options.page_load_strategy = 'none'
269
+ options.add_argument('--disable-blink-features=AutomationControlled') #자동화된 환경에서 실행되는 것을 감지하는 기능을 비활성화합니다.
270
+ options.add_argument('--disable-gpu')
271
+ options.add_argument('--remote-debugging-port=9222')
272
+ options.add_argument('user-data-dir=C:/naver_cookie/' + user_id)
273
+ @driver = Selenium::WebDriver.for(:chrome, capabilities: options)
274
+ rescue
275
+ @driver = Selenium::WebDriver.for(:chrome, capabilities: options)
276
+ end
298
277
  end
299
- end
300
278
  end
301
- end
279
+ end
302
280
 
303
281
 
304
282
 
@@ -320,7 +298,7 @@ class Naver
320
298
  end
321
299
 
322
300
  # 새로운 스레드 생성 및 실행
323
- Thread.new { chrome_setup(user_id) }
301
+ Thread.new { chrome_setup(user_id, proxy) }
324
302
  sleep(3)
325
303
 
326
304
 
@@ -1368,94 +1346,106 @@ class Naver
1368
1346
  # puts '카테고리 error'
1369
1347
  # puts e33
1370
1348
  # end
1371
- sleep(1)
1349
+ sleep(2)
1372
1350
  tags2 = option['tag'].to_s
1373
1351
  tag_mm2 = Array.new
1374
1352
  tags2.split(',').each do |tag_value|
1375
1353
  tag_mm2 << ''+tag_value
1376
1354
  end
1377
- @driver.find_element(:xpath, '//*[@id="app"]/div/div/section/div/div[2]/div[1]/div[4]/div/div/input').send_keys(tag_mm2.join("\n")+"\n")
1355
+ @driver.find_element(:xpath, '//*[@placeholder="태그를 입력해주세요 (최대 10개)"]').send_keys(tag_mm2.join("\n")+"\n")
1378
1356
 
1379
1357
  sleep(1)
1380
- # data['populationParams'] = '{"configuration":{"openType":'+option['공개']+',"commentYn":'+option['댓글허용']+',"searchYn":'+option['검색허용']+',"sympathyYn":'+option['공감허용']+',"scrapType":'+option['블로그공유']+',"outSideAllowYn":'+option['외부공유허용']+',"twitterPostingYn":false,"facebookPostingYn":false,"cclYn":false},"populationMeta":{"categoryId":'+category_value+',"logNo":null,"directorySeq":0,"directoryDetail":null,"mrBlogTalkCode":null,"postWriteTimeType":"now","tags":"'+tags2+'","moviePanelParticipation":false,"greenReviewBannerYn":false,"continueSaved":false,"noticePostYn":false,"autoByCategoryYn":false,"postLocationSupportYn":false,"postLocationJson":null,"prePostDate":null,"thisDayPostInfo":null,"scrapYn":false,"autoSaveNo":'+(Time.now.to_f.round(3)*1000).to_i.to_s+'},"editorSource":"AbZmtbYiAmhrzPJyhPXNWg=="}'
1381
- # if option['공개'] == '2'
1382
- # @driver.find_element(:xpath ,'//*[@id="root"]/div/div[1]/div/div[3]/div[3]/div/div/div/div[3]/div/div/ul/li[1]/span/label').click
1383
- # elsif option['공개'] == '3'
1384
- # @driver.find_element(:xpath, '//*[@id="root"]/div/div[1]/div/div[3]/div[3]/div/div/div/div[3]/div/div/ul/li[3]/span/label').click
1385
- # elsif option['공개'] == '0'
1386
- # @driver.find_element(:xpath, '//*[@id="root"]/div/div[1]/div/div[3]/div[3]/div/div/div/div[3]/div/div/ul/li[4]/span/label').click
1387
- # else
1388
- # @driver.find_element(:xpath, '//*[@id="root"]/div/div[1]/div/div[3]/div[3]/div/div/div/div[3]/div/div/ul/li[2]/span/label').click
1389
- # end
1358
+
1359
+ if option['전체공개'] == 'true'
1360
+ puts '전체공개'
1361
+ begin
1362
+ @driver.find_element(:xpath, '//*[@class="btn_open_set"]').click
1363
+ sleep(2)
1364
+ @driver.find_element(:xpath, '//*[@for="all"]').click
1365
+ rescue
1366
+ end
1367
+ sleep(1)
1368
+ end
1369
+
1370
+ if option['멤버공개'] == 'true'
1371
+ puts '멤버공개'
1372
+ begin
1373
+ @driver.find_element(:xpath, '//*[@class="btn_open_set"]').click
1374
+ sleep(2)
1375
+ @driver.find_element(:xpath, '//*[@for="member"]').click
1376
+ rescue
1377
+ end
1378
+ sleep(1)
1379
+ end
1380
+
1390
1381
  if option['댓글허용'] == 'true'
1391
1382
  puts '댓글허용'
1392
- begin
1393
- @driver.find_element(:xpath, '/html/body/div[1]/div/div/section/div/div[2]/div[2]/div[3]/ul/li[1]/div/label').click
1394
-
1395
- rescue
1396
-
1383
+ begin
1384
+ @driver.find_element(:xpath, '//*[@for="coment"]').click
1385
+ rescue
1386
+ end
1387
+ sleep(1)
1397
1388
  end
1398
- end
1399
1389
 
1400
- sleep(1)
1390
+
1401
1391
  if option['블로그,카페 공유허용'] == 'true'
1402
1392
  puts '블로그,카페 공유허용'
1403
1393
  begin
1404
- @driver.find_element(:xpath, '/html/body/div[1]/div/div/section/div/div[2]/div[2]/div[3]/ul/li[2]/div[1]/label').click
1405
- rescue
1406
-
1394
+ @driver.find_element(:xpath, '//*[@for="blog_sharing"]').click
1395
+ rescue
1396
+ end
1397
+ sleep(1)
1407
1398
  end
1408
- end
1409
1399
 
1410
1400
 
1411
- sleep(1)
1401
+
1412
1402
  if option['외부공유허용'] == 'true'
1413
1403
  puts '외부공유허용'
1414
1404
  begin
1415
- @driver.find_element(:xpath, '/html/body/div[1]/div/div/section/div/div[2]/div[2]/div[3]/ul/li[3]/div[1]/label').click
1416
- rescue
1417
-
1405
+ @driver.find_element(:xpath, '//*[@for="external_sharing"]').click
1406
+ rescue
1407
+ end
1408
+ sleep(1)
1418
1409
  end
1419
- end
1420
1410
 
1421
- sleep(1)
1411
+
1422
1412
 
1423
1413
  if option['복사,저장 허용'] == 'true'
1424
1414
  puts '복사,저장 허용'
1425
1415
  begin
1426
- @driver.find_element(:xpath, '/html/body/div[1]/div/div/section/div/div[2]/div[2]/div[3]/ul/li[4]/div[1]/label').click
1427
- rescue
1428
-
1416
+ @driver.find_element(:xpath, '//*[@for="copy"]').click
1417
+ rescue
1418
+ end
1419
+ sleep(1)
1429
1420
  end
1430
- end
1431
1421
 
1432
- sleep(1)
1422
+
1433
1423
  if option['자동출처 사용'] == 'true'
1434
- puts '자동출처 사용'
1435
- begin
1436
- @driver.find_element(:xpath, '/html/body/div[1]/div/div/section/div/div[2]/div[2]/div[3]/ul/li[5]/div[1]/label').click
1437
- rescue
1438
-
1439
- end
1440
- end
1424
+ puts '자동출처 사용'
1425
+ begin
1426
+ @driver.find_element(:xpath, '//*[@for="automatic_source"]').click
1427
+ rescue
1428
+ end
1429
+ sleep(1)
1430
+ end
1441
1431
 
1442
- sleep(1)
1432
+
1443
1433
 
1444
1434
  if option['CCL 사용'] == 'true'
1445
1435
  puts 'CCL 사용'
1446
1436
  begin
1447
- @driver.find_element(:xpath, '/html/body/div[1]/div/div/section/div/div[2]/div[2]/div[3]/ul/li[6]/div[1]/label').click
1448
- rescue
1449
-
1437
+ @driver.find_element(:xpath, '//*[@for="ccl"]').click
1438
+ rescue
1439
+ end
1440
+ sleep(1)
1450
1441
  end
1451
- end
1452
- sleep(1)
1442
+
1453
1443
  # puts data['documentModel'] = data['documentModel'].to_json
1454
1444
 
1455
1445
  sleep(dd_time.to_i)
1456
- @driver.find_element(:xpath, '/html/body/div[1]/div/div/section/div/div[1]/div/a').click
1446
+ @driver.find_element(:xpath, '//*[@class="BaseButton BaseButton--skinGreen size_default"]').click
1457
1447
 
1458
- sleep(10)
1448
+ sleep(7)
1459
1449
 
1460
1450
 
1461
1451
  begin
@@ -1601,18 +1591,10 @@ class Wordpress
1601
1591
 
1602
1592
  def get_naver_text(q)
1603
1593
  begin
1604
- #Selenium::WebDriver::Chrome::Service.driver_path = './chromedriver.exe'
1605
- options = Selenium::WebDriver::Chrome::Options.new
1606
- capabilities = [options]
1607
-
1608
- # Selenium WebDriver에서 options를 capabilities로 전달
1609
- @driver = Selenium::WebDriver.for(:chrome, capabilities: capabilities)
1594
+ Selenium::WebDriver::Chrome::Service.driver_path = './chromedriver.exe'
1595
+ @driver = Selenium::WebDriver.for :chrome
1610
1596
  rescue
1611
- # :capabilities에 options를 배열로 전달
1612
- capabilities = [options]
1613
-
1614
- # Selenium WebDriver에서 options를 capabilities로 전달
1615
- @driver = Selenium::WebDriver.for(:chrome, capabilities: capabilities)
1597
+ @driver = Selenium::WebDriver.for :chrome
1616
1598
  end
1617
1599
  @driver.get('https://search.naver.com/search.naver?display=15&f=&filetype=0&page=3&query='+q.to_s+'&research_url=&sm=tab_pge&start=16&where=web')
1618
1600
  noko = Nokogiri::HTML(@driver.page_source)
@@ -1642,18 +1624,10 @@ class Wordpress
1642
1624
 
1643
1625
  def get_naver_text2(keyword)
1644
1626
  begin
1645
- #Selenium::WebDriver::Chrome::Service.driver_path = './chromedriver.exe'
1646
- options = Selenium::WebDriver::Chrome::Options.new
1647
- capabilities = [options]
1648
-
1649
- # Selenium WebDriver에서 options를 capabilities로 전달
1650
- @driver = Selenium::WebDriver.for(:chrome, capabilities: capabilities)
1627
+ Selenium::WebDriver::Chrome::Service.driver_path = './chromedriver.exe'
1628
+ @driver = Selenium::WebDriver.for :chrome
1651
1629
  rescue
1652
- # :capabilities에 options를 배열로 전달
1653
- capabilities = [options]
1654
-
1655
- # Selenium WebDriver에서 options를 capabilities로 전달
1656
- @driver = Selenium::WebDriver.for(:chrome, capabilities: capabilities)
1630
+ @driver = Selenium::WebDriver.for :chrome
1657
1631
  end
1658
1632
  @driver.get('https://search.naver.com/search.naver?ssc=tab.blog.all&sm=tab_jum&query='+keyword.to_s)
1659
1633
  for n3 in 1..10
@@ -2101,7 +2075,7 @@ class Wordpress
2101
2075
  @data['table'] << []
2102
2076
  @data['table'].pop
2103
2077
  #포스팅 get 데이터 가저오기#############################
2104
- proxy = table[3].to_s
2078
+ proxy = table[6].to_s
2105
2079
  user_id = table[1].to_s
2106
2080
  user_pw = table[2].to_s
2107
2081
  naver = Naver.new
@@ -2844,13 +2818,15 @@ class Wordpress
2844
2818
 
2845
2819
 
2846
2820
  if @data['포스트설정']['전체공개'].checked?
2847
- option['공개'] = '2'
2848
- # elsif @data['포스트설정']['서로이웃공개'].checked?
2849
- # option['공개'] = '3'
2850
- # elsif @data['포스트설정']['비공개'].checked?
2851
- # option['공개'] = '0'
2821
+ option['전체공개'] = 'true'
2822
+ else
2823
+ option['전체공개'] = 'false'
2824
+ end
2825
+
2826
+ if @data['포스트설정']['멤버공개'].checked?
2827
+ option['멤버공개'] = 'true'
2852
2828
  else
2853
- option['공개'] = '1'
2829
+ option['멤버공개'] = 'false'
2854
2830
  end
2855
2831
 
2856
2832
  if @data['포스트설정']['댓글허용'].checked?
@@ -4795,7 +4771,7 @@ class Wordpress
4795
4771
  end
4796
4772
  }
4797
4773
  }
4798
- @data['포스트설정']['멤버공개'] = checkbox('맴버공개'){
4774
+ @data['포스트설정']['멤버공개'] = checkbox('멤버공개'){
4799
4775
  top 10
4800
4776
  left 1
4801
4777
  on_toggled{
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cafe_basics
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.19
4
+ version: 0.0.27
5
5
  platform: ruby
6
6
  authors:
7
7
  - zon
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-01-10 00:00:00.000000000 Z
11
+ date: 2025-01-24 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: File to Clipboard gem
14
14
  email: mymin26@naver.com