cafe_basics 0.0.19 → 0.0.27

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/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