posting_zon 3.111.015 → 3.111.019

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/posting_zon.rb +247 -64
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e9cd1ad6a858122aeacf0cc8f86fb27e0f5c35a774a435cf4129c166a20dbd78
4
- data.tar.gz: 0d20b6027010aa88ebce38f9cb29d47720ec7380d2bfb6c5ec6033ab7672cc4e
3
+ metadata.gz: 6c67e58187c2b52e4c7d7d0ce12e65a45f92c043d794001640a92ecf4877680a
4
+ data.tar.gz: 952bcf6b295c069659296f90a3ce73f4cece51ff7cc33cbcac85d55f5d09357c
5
5
  SHA512:
6
- metadata.gz: ebffb5f95e401bc55d0a88fcd05187add0da36190bf91bc2ca9859fdc5ba7916bc27650c36787b08d9340368fa015bce11b7a37584a1061b1175650ab5e5baba
7
- data.tar.gz: d0768440b648b3ec2c4cff960b0527433af6afb253e04265616106a71442f7d016dce5949149ae974a1492d3691b016610dc92549468515d69c91bd53bdc515c
6
+ metadata.gz: 932281111b073289e7a5ee25f255ab69fca0c0a56fc2dd108adc1db894b168941d3447aa63cacaca0505275eca10a90dd7d9dccb10f965b7526f84cb254b81b6
7
+ data.tar.gz: 01d8db21afa132bb7703e73802482cf1e54cfd49d33044f1620df08f1f4a0b0f556f50908c4b69059d05778767e8dd77838a7b210ad94ee3f706d4dd1218f28a
data/lib/posting_zon.rb CHANGED
@@ -10066,11 +10066,13 @@ if check_captcha == 0
10066
10066
  puts '-[√] 캡챠 해제 중~ 해제 완료까지 마우스 움직이지 마세요.......'.red
10067
10067
  puts '-[√] 캡챠 코드 code 3.......'.red
10068
10068
  sleep(1)
10069
+ begin
10069
10070
  #요소 자체 제거 하기 기능
10070
10071
  chat_box = @driver.find_element(:xpath, '//*[@for="captcha_key"]')
10071
10072
  @driver.execute_script("arguments[0].remove();", chat_box)
10072
10073
  sleep(1)
10073
-
10074
+ rescue
10075
+ end
10074
10076
  sleep(1)
10075
10077
  @driver.execute_script("arguments[0].scrollIntoView({behavior: 'smooth', block: 'center', inline: 'center'});", el) # 화면 가운데
10076
10078
  sleep(1)
@@ -13138,51 +13140,126 @@ class Wordpress
13138
13140
  end
13139
13141
  end
13140
13142
 
13143
+ # ✔ 문장 정리 함수
13144
+ def clean_sentence(s, aa33)
13145
+ return '' if s.nil? || s.strip.empty?
13146
+ s.strip!
13147
+
13148
+ return '' if s.length < 10
13149
+
13150
+ # 종결어가 포함된 경우 → 종결어 기준으로 문장 잘라냄
13151
+ end_patterns = /(다|요|입니다|했습니다|하였습니다|했어요|해요|였습니다|었어요|네요|였어요|죠|시죠|되었어요|하더라고요|이랍니다|같습니다|같아요|드릴게요|드렸어요|보였습니다|느껴졌어요)/
13152
+
13153
+ if match = s.match(/(.+?#{end_patterns})(\s|$)/)
13154
+ clean = match[1]
13155
+ return clean.end_with?('.') ? clean : clean + '.'
13156
+ end
13157
+
13158
+ # 종결어 없으면 aa33 붙이기
13159
+ s + aa33.sample
13160
+ end
13161
+
13162
+ # ✔ 마지막 문장이 자연스럽게 끝나는지 보정
13163
+ def ensure_ending(text)
13164
+ text.strip!
13165
+ return text if text.match?(/(다|요)\.\s*$/)
13166
+ return text + %w[다. 요.].sample
13167
+ end
13168
+
13169
+ # ✔ 마지막 '완성된 문장'까지만 추출
13170
+ def trim_to_last_complete_sentence(text)
13171
+ sentences = text.strip.split(/(?<=\.)/)
13172
+ last_good_index = nil
13173
+
13174
+ sentences.each_with_index.reverse_each do |sentence, idx|
13175
+ if sentence.strip.match?(/(다|요)\.\s*$/)
13176
+ last_good_index = idx
13177
+ break
13178
+ end
13179
+ end
13180
+
13181
+ return sentences[0..last_good_index].join(' ').strip if last_good_index
13182
+ return sentences.first.strip
13183
+ end
13184
+
13185
+ # ✔ 본문 수집 및 생성
13141
13186
  def get_naver_text(q)
13142
- puts '자동 글 생성을 시작합니다.......'.green
13143
- text_array = Array.new
13144
- aa33 = '하였습니다,하였어요,하게됬어요,했답니다,했었는데요,하게되었어요,했어요,그랬답니다,그랬어요,합니다,그랬어요,그랬답니다,그랬답니다,그러합니다,좋아요,좋습니다,됬어요,되었어요,되었답니다,되었구요,되었어요,되네요,하네요,해요,할거예요,할수었이요,입니다,인데요,이예요,이랍니다,이였어요,그랬어요,그랬거든요,그랬습니다,었어요,었습니다,있었어요,하였고,하였으며,했는데,했지만,했고,그랬으며,하고,하며,좋았고,좋고,되었으며'.split(',')
13145
- for page in 1..3
13146
- begin
13147
- http = HTTP.get('https://search.zum.com/search.zum?method=blog&option=accu&query='+q.to_s.split(' ').join('')+'&rd=1&page='+page.to_s+'&mm=direct')
13148
- sleep(3)
13149
- noko = Nokogiri::HTML(http.to_s)
13150
- for n in 1..2
13151
- begin
13152
- text_array << noko.xpath('//*[@id="blogItemUl"]/li['+n.to_s+']/dl/dd[2]').text.split('...').join('') + aa33.sample
13153
- rescue
13187
+ puts '자동 글 생성을 시작합니다.......'.green
13188
+ text_array = []
13154
13189
 
13155
- end
13156
- end
13157
- rescue
13158
- puts 'zum 검색 http error ...'
13190
+ aa33 = '하였습니다,하였어요,하게 되었어요,했어요,그랬답니다,합니다,좋아요,좋습니다,되었어요,되었네요,하네요,해요,할 거예요,입니다,이예요,이랍니다,그랬습니다,었습니다,있었어요,했지만,했고,하고,하며,좋고,되었으며'.split(',')
13191
+
13192
+ # --- ZUM 블로그 크롤링 ---
13193
+ (1..3).each do |page|
13194
+ begin
13195
+ url = "https://search.zum.com/search.zum?method=blog&option=accu&query=#{q.gsub(' ', '')}&rd=1&page=#{page}&mm=direct"
13196
+ http = HTTP.get(url)
13197
+ sleep(2)
13198
+ noko = Nokogiri::HTML(http.to_s)
13199
+ (1..2).each do |n|
13200
+ raw = noko.xpath("//*[@id='blogItemUl']/li[#{n}]/dl/dd[2]").text
13201
+ raw.split(/[.!?]/).map(&:strip).each do |s|
13202
+ cleaned = clean_sentence(s, aa33)
13203
+ text_array << cleaned unless cleaned.empty?
13159
13204
  end
13160
13205
  end
13206
+ rescue
13207
+ puts 'ZUM 검색 오류 발생'
13208
+ end
13209
+ end
13161
13210
 
13162
- for page in 2..5
13211
+ # --- DAUM 블로그 크롤링 ---
13212
+ (2..4).each do |page|
13213
+ begin
13214
+ http = HTTP.get("https://search.daum.net/search?w=fusion&col=blog&q=#{q.gsub(' ', '')}&DA=TWA&p=#{page}")
13215
+ sleep(2)
13216
+ noko = Nokogiri::HTML(http.to_s)
13217
+ puts '자동글 수집 및 생성 중 (약 5~30초 소요) ...'
13218
+ giri = noko.xpath('//c-contents-desc').to_s
13219
+ giri.split('</c-contents-desc>')[1..-1].each do |n|
13163
13220
  begin
13164
-
13165
- http = HTTP.get('https://search.daum.net/search?w=fusion&col=blog&q='+q.to_s.split(' ').join('')+'&DA=TWA&p='+page.to_s)
13166
- sleep(3)
13167
- noko = Nokogiri::HTML(http.to_s)
13168
- #puts http.to_s
13169
- puts '자동글 수집 및 생성 중 (약 5~30초 소요) ...'
13170
- giri = noko.xpath('//c-contents-desc').to_s #글만 또는 옆에 이미지있음 같이 블럭씌워지는곳(div class=.... 아래 xpath 의 < 빼고 첫 코드 아래와 동일 xpath)
13171
- for n in giri.split('</c-contents-desc>')[1..-1] #div class=.... 아래 xpath 의 < 넣고 / 넣고 첫 코드
13172
- #puts n
13173
- begin
13174
- text_array << n.split('\'>')[1].split('"')[0] #
13175
- #puts n.split('>')[1].split('"')[0]
13176
- #puts "\n"
13177
- rescue
13178
- end
13179
- end
13221
+ text = n.split('>')[1].split('<')[0].strip
13222
+ next if text.length < 10
13223
+ text.split(/[.!?]/).map(&:strip).each do |s|
13224
+ cleaned = clean_sentence(s, aa33)
13225
+ text_array << cleaned unless cleaned.empty?
13226
+ end
13180
13227
  rescue
13181
- puts 'DAUM 검색 http error ...'
13182
13228
  end
13183
13229
  end
13184
-
13185
- return text_array.join("\n")[0..5000]
13230
+ rescue
13231
+ puts 'DAUM 검색 오류 발생'
13232
+ end
13233
+ end
13234
+
13235
+ # 중복 제거 및 필터링
13236
+ text_array.uniq!
13237
+ text_array.reject! { |s| s.length < 15 || s.count(' ') < 2 }
13238
+
13239
+ # 자연스럽게 이어붙이기
13240
+ connectors = [
13241
+ '그리고', '또한', '더불어', '한편', '그러므로', '이러한 점에서',
13242
+ '이와 함께', '이처럼', '게다가', '뿐만 아니라', '즉', '결국', '그래서',
13243
+ '하지만', '반면에', '따라서', '그에 따라', '다시 말해', '예를 들어',
13244
+ '요약하자면', '중요한 것은', '먼저', '마지막으로', '특히', '실제로',
13245
+ '사실상', '종합해 보면', '한 가지 더', '이로 인해', '말하자면'
13246
+ ]
13247
+
13248
+ final_text = ''
13249
+ text_array.each_with_index do |sentence, idx|
13250
+ if idx > 0 && idx % 3 == 0
13251
+ final_text << "\n\n"
13252
+ elsif idx > 0
13253
+ final_text << "#{connectors.sample} "
13254
+ end
13255
+ final_text << sentence + ' '
13256
+ end
13257
+
13258
+ # 마지막 문장이 자연스럽게 끝나도록 정리
13259
+ trimmed = trim_to_last_complete_sentence(final_text)
13260
+ trimmed = ensure_ending(trimmed)
13261
+
13262
+ return trimmed[0..5000] # 최대 5000자 반환
13186
13263
  end
13187
13264
 
13188
13265
 
@@ -13521,6 +13598,8 @@ class Wordpress
13521
13598
  title_soon = 0
13522
13599
  keyword_soon = 0
13523
13600
  content_soon = 0
13601
+ keyword_link_soon1 = 0
13602
+ keyword_link_soon2 = 0
13524
13603
  @my_ip = 'init'
13525
13604
  @image_counter = 0
13526
13605
  @inumber2 = 0
@@ -13665,6 +13744,43 @@ class Wordpress
13665
13744
  @data['table'] << []
13666
13745
  @data['table'].pop
13667
13746
 
13747
+
13748
+ if @data['포스트설정']['링크파일'].length == 0
13749
+ keyword_link_path1 = ''
13750
+ else
13751
+ if @data['포스트설정']['링크삽입랜덤'].checked?
13752
+ keyword_link_path1 = @data['포스트설정']['링크파일'].sample[1]
13753
+ else
13754
+ keyword_link_path1 = @data['포스트설정']['링크파일'][keyword_link_soon1][1]
13755
+ keyword_link_soon1 += 1
13756
+ if keyword_link_soon1 > @data['포스트설정']['링크파일'].length-1
13757
+ keyword_link_soon1 = 0
13758
+ end
13759
+ end
13760
+ end
13761
+ @data['table'][index][-1] = 6
13762
+ @data['table'] << []
13763
+ @data['table'].pop
13764
+
13765
+
13766
+ if @data['포스트설정']['링크파일1'].length == 0
13767
+ keyword_link_path2 = ''
13768
+ else
13769
+ if @data['포스트설정']['링크삽입랜덤1'].checked?
13770
+ keyword_link_path2 = @data['포스트설정']['링크파일1'].sample[1]
13771
+ else
13772
+ keyword_link_path2 = @data['포스트설정']['링크파일1'][keyword_link_soon2][1]
13773
+ keyword_link_soon2 += 1
13774
+ if keyword_link_soon2 > @data['포스트설정']['링크파일1'].length-1
13775
+ keyword_link_soon2 = 0
13776
+ end
13777
+ end
13778
+ end
13779
+ @data['table'][index][-1] = 7
13780
+ @data['table'] << []
13781
+ @data['table'].pop
13782
+
13783
+
13668
13784
  if @data['키워드설정']['키워드'].length == 0
13669
13785
  keyword = ''
13670
13786
  else
@@ -13892,17 +14008,20 @@ class Wordpress
13892
14008
  # if check10 == 0
13893
14009
  # break
13894
14010
  # end
13895
- # end
13896
-
14011
+ # end
13897
14012
 
13898
14013
  content3 = Array.new
13899
14014
 
14015
+
14016
+
14017
+
14018
+
13900
14019
  if @data['포스트설정']['내용을자동생성'].checked?
13901
14020
  content2.each_with_index do |con, index|
13902
14021
  if position.include?(index)
13903
14022
  insert_keyword_text = keyword.to_s
13904
- if @data['포스트설정']['키워드삽입'].checked?
13905
- insert_keyword_text = '<a href="'+@data['포스트설정']['키워드삽입시링크'].text.to_s+'" title="'+insert_keyword_text+'">'+insert_keyword_text.to_s+'</a> '
14023
+ if @data['포스트설정']['키워드링크삽입'].checked?
14024
+ insert_keyword_text = '<a href="'+keyword_link_path1.to_s+'" title="'+insert_keyword_text+'">'+insert_keyword_text.to_s+'</a> '
13906
14025
  end
13907
14026
  con2 = con.split('')
13908
14027
  if con == '(자동생성글)'
@@ -13922,8 +14041,8 @@ class Wordpress
13922
14041
  content2.each_with_index do |con, index|
13923
14042
  if position.include?(index)
13924
14043
  insert_keyword_text = keyword.to_s
13925
- if @data['포스트설정']['키워드삽입'].checked?
13926
- insert_keyword_text = ' <a href="'+@data['포스트설정']['키워드삽입시링크'].text.to_s+'" title="'+insert_keyword_text+'">'+insert_keyword_text.to_s+'</a> '
14044
+ if @data['포스트설정']['키워드링크삽입'].checked?
14045
+ insert_keyword_text = ' <a href="'+keyword_link_path1.to_s+'" title="'+insert_keyword_text+'">'+insert_keyword_text.to_s+'</a> '
13927
14046
  end
13928
14047
  con2 = con.split('')
13929
14048
  if con == '(자동생성글)'
@@ -13936,7 +14055,7 @@ class Wordpress
13936
14055
  content3 << con
13937
14056
  end
13938
14057
  end
13939
- content = content.split("(자동생성글)")[0]+"\n\n"+ ' <a href="'+@data['포스트설정']['키워드삽입시링크'].text.to_s+'" title="'+keyword.to_s+'">'+keyword.to_s+'</a> ' + "\n(자동생성글)\n" + content3.join("\n")
14058
+ content = content.split("(자동생성글)")[0]+"\n\n"+ ' <a href="'+keyword_link_path1.to_s+'" title="'+keyword.to_s+'">'+keyword.to_s+'</a> ' + "\n(자동생성글)\n" + content3.join("\n")
13940
14059
  end
13941
14060
 
13942
14061
 
@@ -13956,8 +14075,8 @@ class Wordpress
13956
14075
  content2.each_with_index do |con, index|
13957
14076
  if position2.include?(index)
13958
14077
  insert_keyword_text = keyword.to_s
13959
- if @data['포스트설정']['키워드삽입'].checked?
13960
- insert_keyword_text = ' <a href="'+@data['포스트설정']['키워드삽입시링크'].text.to_s+'" title="'+keyword.to_s+'">'+insert_keyword_text.to_s+'</a> '
14078
+ if @data['포스트설정']['키워드링크삽입'].checked?
14079
+ insert_keyword_text = ' <a href="'+keyword_link_path1.to_s+'" title="'+keyword.to_s+'">'+insert_keyword_text.to_s+'</a> '
13961
14080
  end
13962
14081
  con2 = con.split('')
13963
14082
  content3 << con2.join('')
@@ -13971,8 +14090,8 @@ class Wordpress
13971
14090
  content2.each_with_index do |con, index|
13972
14091
  if position.include?(index)
13973
14092
  insert_keyword_text = keyword.to_s
13974
- if @data['포스트설정']['키워드삽입'].checked?
13975
- insert_keyword_text = ' <a href="'+@data['포스트설정']['키워드삽입시링크'].text.to_s+'" title="'+keyword.to_s+'">'+insert_keyword_text.to_s+'</a> '
14093
+ if @data['포스트설정']['키워드링크삽입'].checked?
14094
+ insert_keyword_text = ' <a href="'+keyword_link_path1.to_s+'" title="'+keyword.to_s+'">'+insert_keyword_text.to_s+'</a> '
13976
14095
  end
13977
14096
  con2 = con.split('')
13978
14097
  content3 << con2.join('')
@@ -14061,15 +14180,15 @@ class Wordpress
14061
14180
 
14062
14181
  content = last_text.split(" ")
14063
14182
  insert_keyword_text = keyword.to_s
14064
- if @data['포스트설정']['키워드삽입1'].checked?
14065
- insert_keyword_text = ' <a href="'+@data['포스트설정']['키워드삽입시링크1'].text.to_s+'" title="'+keyword.to_s+'">'+insert_keyword_text.to_s+'</a> '
14183
+ if @data['포스트설정']['키워드링크삽입1'].checked?
14184
+ insert_keyword_text = ' <a href="'+keyword_link_path2.to_s+'" title="'+keyword.to_s+'">'+insert_keyword_text.to_s+'</a> '
14066
14185
  end
14067
14186
  content.each_with_index do |con, index|
14068
14187
  begin
14069
14188
  if position3[1..-1].include?(index)
14070
14189
  insert_keyword_text = keyword.to_s
14071
- if @data['포스트설정']['키워드삽입1'].checked?
14072
- insert_keyword_text = ' <a href="'+@data['포스트설정']['키워드삽입시링크1'].text.to_s+'" title="'+keyword.to_s+'">'+insert_keyword_text.to_s+'</a> '
14190
+ if @data['포스트설정']['키워드링크삽입1'].checked?
14191
+ insert_keyword_text = ' <a href="'+keyword_link_path2.to_s+'" title="'+keyword.to_s+'">'+insert_keyword_text.to_s+'</a> '
14073
14192
  end
14074
14193
  con2 = con.split('')
14075
14194
  content333 << con2.join('')
@@ -14108,8 +14227,8 @@ class Wordpress
14108
14227
  if position10.include?(index)
14109
14228
  puts index
14110
14229
  text99 = text9.split(' ')
14111
- if @data['포스트설정']['키워드삽입1'].checked?
14112
- itext = text99.insert(rand(0..(text99.length-1)), ' <a href="'+@data['포스트설정']['키워드삽입시링크1'].text.to_s+'" title="'+keyword.to_s+'">'+@data['키워드설정']['키워드'].sample[1]+'</a> ')
14230
+ if @data['포스트설정']['키워드링크삽입1'].checked?
14231
+ itext = text99.insert(rand(0..(text99.length-1)), ' <a href="'+keyword_link_path2.to_s+'" title="'+keyword.to_s+'">'+@data['키워드설정']['키워드'].sample[1]+'</a> ')
14113
14232
  else
14114
14233
  itext = text99.insert(rand(0..(text99.length-1)), @data['키워드설정']['키워드'].sample[1])
14115
14234
  end
@@ -14163,8 +14282,8 @@ class Wordpress
14163
14282
  if position10.include?(index)
14164
14283
  puts index
14165
14284
  text99 = text9.split(' ')
14166
- if @data['포스트설정']['키워드삽입1'].checked?
14167
- itext = text99.insert(rand(0..(text99.length-1)), ' <a href="'+@data['포스트설정']['키워드삽입시링크1'].text.to_s+'" title="'+keyword.to_s+'">'+@data['키워드설정']['키워드'].sample[1]+'</a> ')
14285
+ if @data['포스트설정']['키워드링크삽입1'].checked?
14286
+ itext = text99.insert(rand(0..(text99.length-1)), ' <a href="'+keyword_link_path2.to_s+'" title="'+keyword.to_s+'">'+@data['키워드설정']['키워드'].sample[1]+'</a> ')
14168
14287
  else
14169
14288
  itext = text99.insert(rand(0..(text99.length-1)), @data['키워드설정']['키워드'].sample[1])
14170
14289
  end
@@ -14329,6 +14448,8 @@ class Wordpress
14329
14448
  @data['포스트설정']['내용자동변경값'] = Hash.new
14330
14449
  @data['포스트설정']['막글'] = ''
14331
14450
  @data['포스트설정']['프록시리스트'] = Array.new
14451
+ @data['포스트설정']['링크파일'] = Array.new
14452
+ @data['포스트설정']['링크파일1'] = Array.new
14332
14453
 
14333
14454
  @user_login_ok = "1"
14334
14455
  window('커뮤니티(게시판) 자동 포스팅 프로그램', 800, 620) {
@@ -15465,7 +15586,7 @@ class Wordpress
15465
15586
  on_toggled{
15466
15587
  if @data['포스트설정']['내용키워드삽입'].checked?
15467
15588
  @data['포스트설정']['막글삽입2'].checked = false
15468
- @data['포스트설정']['키워드삽입1'].checked = false
15589
+ @data['포스트설정']['키워드링크삽입1'].checked = false
15469
15590
  end
15470
15591
  }
15471
15592
  }
@@ -15480,15 +15601,44 @@ class Wordpress
15480
15601
  text '최대수량'
15481
15602
  }
15482
15603
 
15483
- @data['포스트설정']['키워드삽입'] = checkbox('키워드 링크 적용'){
15604
+ @data['포스트설정']['키워드링크삽입'] = checkbox('키워드 링크 적용'){
15484
15605
  top 1
15485
15606
  left 3
15486
15607
  }
15487
- @data['포스트설정']['키워드삽입시링크'] = entry(){
15608
+ button('링크 파일 불러오기'){
15488
15609
  top 1
15489
15610
  left 4
15490
- text 'URL'
15611
+
15612
+ on_clicked {
15613
+ file = open_file
15614
+ if file != nil
15615
+ file_data = File.open(file, 'r').read
15616
+ @data['포스트설정']['링크파일'] = file_data.split("\n").map { |line| ["링크", line.strip] }
15617
+ end
15618
+ }
15619
+ }
15620
+
15621
+ @data['포스트설정']['링크삽입순서'] = checkbox('링크 순서 사용'){
15622
+ top 1
15623
+ left 5
15624
+ on_toggled {
15625
+ if @data['포스트설정']['링크삽입순서'].checked?
15626
+ @data['포스트설정']['링크삽입랜덤'].checked = false
15627
+ end
15628
+ }
15629
+
15491
15630
  }
15631
+ @data['포스트설정']['링크삽입랜덤'] = checkbox('링크랜덤 사용'){
15632
+ top 1
15633
+ left 6
15634
+ on_toggled {
15635
+ if @data['포스트설정']['링크삽입랜덤'].checked?
15636
+ @data['포스트설정']['링크삽입순서'].checked = false
15637
+ end
15638
+ }
15639
+ }
15640
+
15641
+
15492
15642
  @data['포스트설정']['내용사진자동삽입'] = checkbox('이미지 자동 삽입  '){
15493
15643
  top 2
15494
15644
  left 0
@@ -15693,7 +15843,7 @@ class Wordpress
15693
15843
  on_toggled{
15694
15844
  if @data['포스트설정']['막글삽입2'].checked?
15695
15845
  @data['포스트설정']['내용키워드삽입'].checked = false
15696
- @data['포스트설정']['키워드삽입'].checked = false
15846
+ @data['포스트설정']['키워드링크삽입'].checked = false
15697
15847
  end
15698
15848
  }
15699
15849
  }
@@ -15709,15 +15859,46 @@ class Wordpress
15709
15859
  text '최대수량'
15710
15860
  }
15711
15861
 
15712
- @data['포스트설정']['키워드삽입1'] = checkbox('키워드 링크 적용'){
15862
+ @data['포스트설정']['키워드링크삽입1'] = checkbox('키워드 링크 적용'){
15713
15863
  top 0
15714
15864
  left 3
15715
15865
  }
15716
- @data['포스트설정']['키워드삽입시링크1'] = entry(){
15866
+
15867
+ button('   링크 파일 불러오기    '){
15717
15868
  top 0
15718
15869
  left 4
15719
- text 'URL'
15870
+
15871
+ on_clicked {
15872
+ file = open_file
15873
+ if file != nil
15874
+ file_data = File.open(file, 'r').read
15875
+ @data['포스트설정']['링크파일1'] = file_data.split("\n").map { |line| ["링크", line.strip] }
15876
+ end
15877
+ }
15878
+ }
15879
+
15880
+ @data['포스트설정']['링크삽입순서1'] = checkbox('링크 순서 사용'){
15881
+ top 0
15882
+ left 5
15883
+ on_toggled {
15884
+ if @data['포스트설정']['링크삽입순서1'].checked?
15885
+ @data['포스트설정']['링크삽입랜덤1'].checked = false
15886
+ end
15887
+ }
15888
+
15720
15889
  }
15890
+ @data['포스트설정']['링크삽입랜덤1'] = checkbox('링크랜덤 사용'){
15891
+ top 0
15892
+ left 6
15893
+ on_toggled {
15894
+ if @data['포스트설정']['링크삽입랜덤1'].checked?
15895
+ @data['포스트설정']['링크삽입순서1'].checked = false
15896
+ end
15897
+ }
15898
+ }
15899
+
15900
+
15901
+
15721
15902
  }
15722
15903
  vertical_separator{
15723
15904
  stretchy false
@@ -15869,6 +16050,8 @@ class Wordpress
15869
16050
  @data['포스트설정']['원고로만포스팅'].checked = true
15870
16051
  @data['포스트설정']['제목에도적용'].checked = true
15871
16052
  @data['포스트설정']['제목리스트사용'].checked = true
16053
+ @data['포스트설정']['링크삽입순서'].checked = true
16054
+ @data['포스트설정']['링크삽입순서1'].checked = true
15872
16055
 
15873
16056
  }.show
15874
16057
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: posting_zon
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.111.015
4
+ version: 3.111.019
5
5
  platform: ruby
6
6
  authors:
7
7
  - zon
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-07-03 00:00:00.000000000 Z
10
+ date: 2025-07-04 00:00:00.000000000 Z
11
11
  dependencies: []
12
12
  description: posting app
13
13
  email: mymin26@naver.com