cafe_basics 0.0.11 → 0.0.15
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/cafe_basics.rb +205 -80
- 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: 67b94c083f63b91262a70afdb3c0456e140622b7f213e03705578daae7570a43
|
4
|
+
data.tar.gz: 69acbee14d09707ba0d6cc90e7961eeb1d49899f4e859f8627094230d3db0863
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9185b4be4fee55e74debf3f8965568426fce81369a6f83a3ef8dbdd122db30f09609330ace33e0c43fd06628f15973aeb21c20fd83da5b3ef5544d0776f69820
|
7
|
+
data.tar.gz: fed8af8069291dac956e10ce4257ff44b5c646babade15e397e7983fd370bc5b2f494b33cbec151d0ab1cba3f833c99ad49a9099be32224830af780cccd69a72
|
data/lib/cafe_basics.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'glimmer-dsl-libui'
|
2
2
|
require 'selenium-webdriver'
|
3
|
-
|
3
|
+
require 'webdrivers'
|
4
4
|
require 'iconv'
|
5
5
|
require 'nokogiri'
|
6
6
|
require 'http'
|
@@ -219,55 +219,71 @@ class Naver
|
|
219
219
|
def chrome_start(proxy, user_id)
|
220
220
|
naver_cookie_dir = "C:/naver_cookie"
|
221
221
|
FileUtils.mkdir_p(naver_cookie_dir) unless File.exist?(naver_cookie_dir)
|
222
|
+
|
222
223
|
if proxy == ''
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
224
|
+
begin
|
225
|
+
# webdrivers Gem이 크롬 드라이버 자동 다운로드 및 설정을 관리함
|
226
|
+
options = Selenium::WebDriver::Chrome::Options.new
|
227
|
+
options.page_load_strategy = :normal
|
228
|
+
options.timeouts = { page_load: 20_000 }
|
229
|
+
options.page_load_strategy = 'none'
|
230
|
+
options.add_argument('--disable-blink-features=AutomationControlled') #자동화된 환경에서 실행되는 것을 감지하는 기능을 비활성화합니다.
|
231
|
+
|
232
|
+
|
233
|
+
|
234
|
+
options.add_argument('--remote-debugging-port=9222')
|
235
|
+
options.add_argument("user-data-dir=#{naver_cookie_dir}/#{user_id}")
|
236
|
+
|
237
|
+
# :capabilities에 options를 배열로 전달
|
238
|
+
capabilities = [options]
|
239
|
+
|
240
|
+
# Selenium WebDriver에서 options를 capabilities로 전달
|
241
|
+
@driver = Selenium::WebDriver.for(:chrome, capabilities: capabilities)
|
242
|
+
rescue
|
243
|
+
# 예외 발생 시 다른 방법으로 셀레니움 실행
|
244
|
+
@driver = Selenium::WebDriver.for(:chrome, capabilities: capabilities)
|
245
|
+
end
|
235
246
|
else
|
247
|
+
begin
|
248
|
+
# Proxy를 사용하는 경우
|
249
|
+
options = Selenium::WebDriver::Chrome::Options.new
|
250
|
+
options.add_argument '--proxy-server=' + proxy.to_s.force_encoding('utf-8')
|
251
|
+
options.page_load_strategy = :normal
|
252
|
+
options.timeouts = { page_load: 20_000 }
|
253
|
+
options.page_load_strategy = 'none'
|
254
|
+
options.add_argument('--disable-blink-features=AutomationControlled') #자동화된 환경에서 실행되는 것을 감지하는 기능을 비활성화합니다.
|
255
|
+
|
256
|
+
options.add_argument('--remote-debugging-port=9222')
|
257
|
+
options.add_argument("user-data-dir=#{naver_cookie_dir}/#{user_id}")
|
258
|
+
|
259
|
+
# :capabilities에 options를 배열로 전달
|
260
|
+
capabilities = [options]
|
261
|
+
|
262
|
+
# Selenium WebDriver에서 options를 capabilities로 전달
|
263
|
+
@driver = Selenium::WebDriver.for(:chrome, capabilities: capabilities)
|
264
|
+
rescue => e
|
265
|
+
puts 'proxy error...'
|
236
266
|
begin
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
rescue => e
|
254
|
-
puts e
|
255
|
-
puts 'proxy error...'
|
256
|
-
begin
|
257
|
-
Selenium::WebDriver::Chrome::Service.driver_path = './chromedriver.exe'
|
258
|
-
options = Selenium::WebDriver::Chrome::Options.new
|
259
|
-
options.page_load_strategy = :normal
|
260
|
-
options.timeouts = {page_load: 20_000}
|
261
|
-
options.page_load_strategy = 'none'
|
262
|
-
options.add_argument('--remote-debugging-port=9222')
|
263
|
-
options.add_argument('user-data-dir=C:/naver_cookie/' + user_id)
|
264
|
-
@driver = Selenium::WebDriver.for(:chrome, capabilities: options)
|
265
|
-
rescue
|
266
|
-
@driver = Selenium::WebDriver.for(:chrome, capabilities: options)
|
267
|
-
end
|
267
|
+
# Proxy가 실패할 경우 예외 처리
|
268
|
+
options = Selenium::WebDriver::Chrome::Options.new
|
269
|
+
options.page_load_strategy = :normal
|
270
|
+
options.timeouts = { page_load: 20_000 }
|
271
|
+
options.page_load_strategy = 'none'
|
272
|
+
options.add_argument('--disable-blink-features=AutomationControlled') #자동화된 환경에서 실행되는 것을 감지하는 기능을 비활성화합니다.
|
273
|
+
options.add_argument('--remote-debugging-port=9222')
|
274
|
+
options.add_argument("user-data-dir=#{naver_cookie_dir}/#{user_id}")
|
275
|
+
|
276
|
+
# :capabilities에 options를 배열로 전달
|
277
|
+
capabilities = [options]
|
278
|
+
|
279
|
+
@driver = Selenium::WebDriver.for(:chrome, capabilities: capabilities)
|
280
|
+
rescue
|
281
|
+
# 예외 발생 시 다른 방법으로 셀레니움 실행
|
282
|
+
@driver = Selenium::WebDriver.for(:chrome, capabilities: capabilities)
|
268
283
|
end
|
284
|
+
end
|
269
285
|
end
|
270
|
-
|
286
|
+
end
|
271
287
|
|
272
288
|
|
273
289
|
|
@@ -1568,10 +1584,18 @@ class Wordpress
|
|
1568
1584
|
|
1569
1585
|
def get_naver_text(q)
|
1570
1586
|
begin
|
1571
|
-
Selenium::WebDriver::Chrome::Service.driver_path = './chromedriver.exe'
|
1572
|
-
|
1587
|
+
#Selenium::WebDriver::Chrome::Service.driver_path = './chromedriver.exe'
|
1588
|
+
options = Selenium::WebDriver::Chrome::Options.new
|
1589
|
+
capabilities = [options]
|
1590
|
+
|
1591
|
+
# Selenium WebDriver에서 options를 capabilities로 전달
|
1592
|
+
@driver = Selenium::WebDriver.for(:chrome, capabilities: capabilities)
|
1573
1593
|
rescue
|
1574
|
-
|
1594
|
+
# :capabilities에 options를 배열로 전달
|
1595
|
+
capabilities = [options]
|
1596
|
+
|
1597
|
+
# Selenium WebDriver에서 options를 capabilities로 전달
|
1598
|
+
@driver = Selenium::WebDriver.for(:chrome, capabilities: capabilities)
|
1575
1599
|
end
|
1576
1600
|
@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')
|
1577
1601
|
noko = Nokogiri::HTML(@driver.page_source)
|
@@ -1601,10 +1625,18 @@ class Wordpress
|
|
1601
1625
|
|
1602
1626
|
def get_naver_text2(keyword)
|
1603
1627
|
begin
|
1604
|
-
Selenium::WebDriver::Chrome::Service.driver_path = './chromedriver.exe'
|
1605
|
-
|
1628
|
+
#Selenium::WebDriver::Chrome::Service.driver_path = './chromedriver.exe'
|
1629
|
+
options = Selenium::WebDriver::Chrome::Options.new
|
1630
|
+
capabilities = [options]
|
1631
|
+
|
1632
|
+
# Selenium WebDriver에서 options를 capabilities로 전달
|
1633
|
+
@driver = Selenium::WebDriver.for(:chrome, capabilities: capabilities)
|
1606
1634
|
rescue
|
1607
|
-
|
1635
|
+
# :capabilities에 options를 배열로 전달
|
1636
|
+
capabilities = [options]
|
1637
|
+
|
1638
|
+
# Selenium WebDriver에서 options를 capabilities로 전달
|
1639
|
+
@driver = Selenium::WebDriver.for(:chrome, capabilities: capabilities)
|
1608
1640
|
end
|
1609
1641
|
@driver.get('https://search.naver.com/search.naver?ssc=tab.blog.all&sm=tab_jum&query='+keyword.to_s)
|
1610
1642
|
for n3 in 1..10
|
@@ -1641,19 +1673,6 @@ class Wordpress
|
|
1641
1673
|
|
1642
1674
|
|
1643
1675
|
|
1644
|
-
def chrome_start(url, user_id, user_pw)
|
1645
|
-
@url = url
|
1646
|
-
@user_id = user_id
|
1647
|
-
@user_pw = user_pw
|
1648
|
-
begin
|
1649
|
-
Selenium::WebDriver::Chrome::Service.driver_path = './chromedriver.exe'
|
1650
|
-
@driver = Selenium::WebDriver.for :chrome
|
1651
|
-
rescue
|
1652
|
-
@driver = Selenium::WebDriver.for :chrome
|
1653
|
-
end
|
1654
|
-
end
|
1655
|
-
|
1656
|
-
|
1657
1676
|
|
1658
1677
|
#def chrome_start(url, user_id, user_pw)
|
1659
1678
|
# @url = url
|
@@ -2690,10 +2709,36 @@ class Wordpress
|
|
2690
2709
|
end
|
2691
2710
|
|
2692
2711
|
if @data['포스트설정']['인용구변경'].checked?
|
2693
|
-
@data['포스트설정']['
|
2694
|
-
|
2712
|
+
if @data['포스트설정']['인용구문구설정'].checked?
|
2713
|
+
# 인용구순서 사용 시
|
2714
|
+
if @data['포스트설정']['인용구순서'].checked?
|
2715
|
+
quote_index = 0
|
2716
|
+
@data['포스트설정']['인용구변경단어'].text.to_s.force_encoding('utf-8').split(',').each do |i|
|
2717
|
+
content = content.gsub(i.force_encoding('utf-8')) {
|
2718
|
+
quote = "<inyonggoo src=''>" + @data['포스트설정']['인용구'][quote_index] + "</inyonggoo>"
|
2719
|
+
quote_index = (quote_index + 1) % @data['포스트설정']['인용구'].length
|
2720
|
+
quote
|
2721
|
+
}
|
2722
|
+
end
|
2723
|
+
elsif @data['포스트설정']['인용구랜덤'].checked?
|
2724
|
+
# 인용구랜덤 사용 시
|
2725
|
+
@data['포스트설정']['인용구변경단어'].text.to_s.force_encoding('utf-8').split(',').each do |i|
|
2726
|
+
# 랜덤으로 인용구를 선택하여 각 단어마다 다른 인용구가 적용되도록 함
|
2727
|
+
content = content.gsub(i.force_encoding('utf-8')) {
|
2728
|
+
# 랜덤으로 인용구를 선택
|
2729
|
+
chosen_quote = @data['포스트설정']['인용구'].sample
|
2730
|
+
"<inyonggoo src=''>" + chosen_quote + "</inyonggoo>"
|
2731
|
+
}
|
2732
|
+
end
|
2733
|
+
end
|
2734
|
+
elsif @data['포스트설정']['인용구제목사용'].checked?
|
2735
|
+
# 제목으로 적용할 경우, 특정 단어가 포함된 위치에 제목 스타일을 적용
|
2736
|
+
@data['포스트설정']['인용구변경단어'].text.to_s.force_encoding('utf-8').split(',').each do |i|
|
2737
|
+
# i는 '특정단어'입니다. 이 단어가 content에 여러 번 있을 수 있습니다.
|
2738
|
+
content = content.split(i.force_encoding('utf-8')).join(""+'<inyonggoo src="">'+title+'</inyonggoo>'+"")
|
2695
2739
|
end
|
2696
2740
|
end
|
2741
|
+
end
|
2697
2742
|
|
2698
2743
|
@data['table'][index][-1] = 80
|
2699
2744
|
@data['table'] << []
|
@@ -2828,8 +2873,14 @@ class Wordpress
|
|
2828
2873
|
end
|
2829
2874
|
|
2830
2875
|
|
2831
|
-
if @data['포스트설정']['
|
2832
|
-
title = content.split("\n")[0]
|
2876
|
+
if @data['포스트설정']['내용첫줄제목에입력'].checked?
|
2877
|
+
title = content.split("\n")[0]
|
2878
|
+
|
2879
|
+
end
|
2880
|
+
|
2881
|
+
if @data['포스트설정']['제목을내용첫줄입력'].checked?
|
2882
|
+
|
2883
|
+
content = "#{title}\n" + content
|
2833
2884
|
end
|
2834
2885
|
|
2835
2886
|
if @data['포스트설정']['중앙정렬'].checked?
|
@@ -4168,21 +4219,29 @@ class Wordpress
|
|
4168
4219
|
top 5
|
4169
4220
|
left 0
|
4170
4221
|
on_toggled{
|
4171
|
-
if @data['포스트설정']['제목을랜덤'].checked?
|
4172
|
-
|
4173
|
-
|
4174
|
-
end
|
4222
|
+
if @data['포스트설정']['제목을랜덤'].checked?
|
4223
|
+
@data['포스트설정']['내용첫줄제목에입력'].checked = false
|
4224
|
+
@data['포스트설정']['제목을내용첫줄입력'].checked = false
|
4175
4225
|
end
|
4176
4226
|
}
|
4177
4227
|
}
|
4178
|
-
@data['포스트설정']['
|
4228
|
+
@data['포스트설정']['내용첫줄제목에입력'] = checkbox('내용의 첫 문장을 제목으로 설정'){
|
4179
4229
|
top 6
|
4180
4230
|
left 0
|
4181
4231
|
on_toggled{
|
4182
|
-
if @data['포스트설정']['
|
4183
|
-
|
4184
|
-
|
4185
|
-
|
4232
|
+
if @data['포스트설정']['내용첫줄제목에입력'].checked?
|
4233
|
+
@data['포스트설정']['제목을랜덤'].checked = false
|
4234
|
+
@data['포스트설정']['제목을내용첫줄입력'].checked = false
|
4235
|
+
end
|
4236
|
+
}
|
4237
|
+
}
|
4238
|
+
@data['포스트설정']['제목을내용첫줄입력'] = checkbox('제목을 내용 첫 줄에 넣기'){
|
4239
|
+
top 6
|
4240
|
+
left 1
|
4241
|
+
on_toggled{
|
4242
|
+
if @data['포스트설정']['제목을내용첫줄입력'].checked?
|
4243
|
+
@data['포스트설정']['내용첫줄제목에입력'].checked = false
|
4244
|
+
@data['포스트설정']['제목을랜덤'].checked = false
|
4186
4245
|
end
|
4187
4246
|
}
|
4188
4247
|
}
|
@@ -4464,22 +4523,66 @@ class Wordpress
|
|
4464
4523
|
left 1
|
4465
4524
|
text 'ex) OO시 OO구 OO동 270-68'
|
4466
4525
|
}
|
4467
|
-
@data['포스트설정']['인용구변경'] = checkbox('
|
4526
|
+
@data['포스트설정']['인용구변경'] = checkbox('특정단어를 인용구로 적용'){
|
4468
4527
|
top 11
|
4469
4528
|
left 0
|
4529
|
+
on_toggled {
|
4530
|
+
if @data['포스트설정']['인용구변경'].checked?
|
4531
|
+
@data['포스트설정']['인용구제목사용'].enabled = true # '내용투명' 활성화
|
4532
|
+
@data['포스트설정']['인용구문구설정'].enabled = true # '내용투명' 활성화
|
4533
|
+
else
|
4534
|
+
@data['포스트설정']['인용구변경'].checked = false # 체크 해제
|
4535
|
+
@data['포스트설정']['인용구제목사용'].enabled = false # 비활성화
|
4536
|
+
@data['포스트설정']['인용구문구설정'].enabled = false # 비활성화
|
4537
|
+
@data['포스트설정']['인용구순서'].enabled = false # 비활성화
|
4538
|
+
@data['포스트설정']['인용구랜덤'].enabled = false # 비활성화
|
4539
|
+
end
|
4540
|
+
}
|
4470
4541
|
}
|
4471
4542
|
@data['포스트설정']['인용구변경단어'] = entry{
|
4472
4543
|
top 11
|
4473
4544
|
left 1
|
4474
4545
|
text '특정단어'
|
4475
4546
|
}
|
4476
|
-
|
4547
|
+
@data['포스트설정']['인용구제목사용'] = checkbox('인용구를 제목으로 삽입 설정'){
|
4477
4548
|
top 12
|
4478
4549
|
left 0
|
4550
|
+
enabled false # 기본적으로 비활성화
|
4551
|
+
on_toggled {
|
4552
|
+
if @data['포스트설정']['인용구제목사용'].checked?
|
4553
|
+
@data['포스트설정']['인용구문구설정'].checked = false # 체크 해제
|
4554
|
+
@data['포스트설정']['인용구문구설정'].enabled = false
|
4555
|
+
else
|
4556
|
+
@data['포스트설정']['인용구문구설정'].enabled = true
|
4557
|
+
end
|
4558
|
+
}
|
4559
|
+
|
4560
|
+
}
|
4561
|
+
#label('ㄴ인용구 사용시 들어갈 문구'){
|
4562
|
+
@data['포스트설정']['인용구문구설정'] = checkbox('인용구에 들어갈 문구 설정'){
|
4563
|
+
top 13
|
4564
|
+
left 0
|
4565
|
+
enabled false # 기본적으로 비활성화
|
4566
|
+
|
4567
|
+
on_toggled {
|
4568
|
+
if @data['포스트설정']['인용구문구설정'].checked?
|
4569
|
+
@data['포스트설정']['인용구제목사용'].checked = false
|
4570
|
+
@data['포스트설정']['인용구제목사용'].enabled = false
|
4571
|
+
@data['포스트설정']['인용구순서'].enabled = true # '내용투명' 활성화
|
4572
|
+
@data['포스트설정']['인용구랜덤'].enabled = true # '내용투명' 활성화
|
4573
|
+
else
|
4574
|
+
@data['포스트설정']['인용구문구설정'].checked = false # 체크 해제
|
4575
|
+
@data['포스트설정']['인용구순서'].enabled = false # 비활성화
|
4576
|
+
@data['포스트설정']['인용구랜덤'].enabled = false # 비활성화
|
4577
|
+
@data['포스트설정']['인용구제목사용'].enabled = true
|
4578
|
+
end
|
4579
|
+
}
|
4580
|
+
|
4479
4581
|
}
|
4480
4582
|
button('설정 파일 불러오기'){
|
4481
|
-
top
|
4583
|
+
top 13
|
4482
4584
|
left 1
|
4585
|
+
|
4483
4586
|
on_clicked{
|
4484
4587
|
file = open_file
|
4485
4588
|
if file != nil
|
@@ -4487,6 +4590,27 @@ class Wordpress
|
|
4487
4590
|
@data['포스트설정']['인용구'] = file_data.split(',')
|
4488
4591
|
end
|
4489
4592
|
}
|
4593
|
+
}
|
4594
|
+
@data['포스트설정']['인용구순서'] = checkbox('인용구 순서 사용'){
|
4595
|
+
top 14
|
4596
|
+
left 0
|
4597
|
+
enabled false # 기본적으로 비활성화
|
4598
|
+
on_toggled {
|
4599
|
+
if @data['포스트설정']['인용구순서'].checked?
|
4600
|
+
@data['포스트설정']['인용구랜덤'].checked = false
|
4601
|
+
end
|
4602
|
+
}
|
4603
|
+
|
4604
|
+
}
|
4605
|
+
@data['포스트설정']['인용구랜덤'] = checkbox('인용구 랜덤 사용'){
|
4606
|
+
top 14
|
4607
|
+
left 1
|
4608
|
+
enabled false # 기본적으로 비활성화
|
4609
|
+
on_toggled {
|
4610
|
+
if @data['포스트설정']['인용구랜덤'].checked?
|
4611
|
+
@data['포스트설정']['인용구순서'].checked = false
|
4612
|
+
end
|
4613
|
+
}
|
4490
4614
|
}
|
4491
4615
|
}
|
4492
4616
|
}
|
@@ -4794,6 +4918,7 @@ class Wordpress
|
|
4794
4918
|
@data['포스트설정']['복사,저장 허용'].checked = true
|
4795
4919
|
@data['포스트설정']['자동출처 사용'].checked = false
|
4796
4920
|
@data['포스트설정']['CCL사용'].checked = false
|
4921
|
+
@data['포스트설정']['인용구랜덤'].checked = true
|
4797
4922
|
}.show
|
4798
4923
|
end
|
4799
4924
|
end
|
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.
|
4
|
+
version: 0.0.15
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- zon
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2025-01-09 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: File to Clipboard gem
|
14
14
|
email: mymin26@naver.com
|