posting_zon 3.111.017 → 3.111.020

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 +256 -63
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 33a5b1d269565379991f9af57e1dd7b05c2e1f0257182f4c29b988d2eae3acc8
4
- data.tar.gz: cd818c1356ccdb80033e3297e984e7ae61cc28e27913b81660b430141583451b
3
+ metadata.gz: 897a9d74a0d3100d9b8bf841ec00dfac612568d0dd1e1da7c5ffc96a3c6cdbff
4
+ data.tar.gz: 94a44744ccb896e0b48ce6910a18b4f7e0804b622a505672841e9c9ce51a19e4
5
5
  SHA512:
6
- metadata.gz: e0b20e01cba9a61e52ab4be36dbc43744ecae88b2cdbf6a8e682494b894cc1c3f4af7a43b126ef253dcad4fb6536486d8ebd11a5b0b5fdd68fc68002ba413bac
7
- data.tar.gz: 103240f9216688cae741439ca067a15cd40e67aa492981a3aa7569d73776ce0bb1ff642866fa78d18b75f373431093320f03d98a5a40f34cc0259960835bddd5
6
+ metadata.gz: 704bb4cfeaf99ff69ad28b8721d87dd1639f794ab1786594c66e9848c6ffe72c890fbd3b3c6c52226bf3343069591188b5daa4cfbe37feefd161f2f64fbb2aa2
7
+ data.tar.gz: 5a403e6230e547a285f314948b5d34eea38ac65b83f1fca688e3b6fb632a68d8db80b438c7bc49e533e830cf9e2552f10435340956006a51270c811244d881c4
data/lib/posting_zon.rb CHANGED
@@ -13140,51 +13140,126 @@ class Wordpress
13140
13140
  end
13141
13141
  end
13142
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
+ # ✔ 본문 수집 및 생성
13143
13186
  def get_naver_text(q)
13144
- puts '자동 글 생성을 시작합니다.......'.green
13145
- text_array = Array.new
13146
- aa33 = '하였습니다,하였어요,하게됬어요,했답니다,했었는데요,하게되었어요,했어요,그랬답니다,그랬어요,합니다,그랬어요,그랬답니다,그랬답니다,그러합니다,좋아요,좋습니다,됬어요,되었어요,되었답니다,되었구요,되었어요,되네요,하네요,해요,할거예요,할수었이요,입니다,인데요,이예요,이랍니다,이였어요,그랬어요,그랬거든요,그랬습니다,었어요,었습니다,있었어요,하였고,하였으며,했는데,했지만,했고,그랬으며,하고,하며,좋았고,좋고,되었으며'.split(',')
13147
- for page in 1..3
13148
- begin
13149
- 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')
13150
- sleep(3)
13151
- noko = Nokogiri::HTML(http.to_s)
13152
- for n in 1..2
13153
- begin
13154
- text_array << noko.xpath('//*[@id="blogItemUl"]/li['+n.to_s+']/dl/dd[2]').text.split('...').join('') + aa33.sample
13155
- rescue
13187
+ puts '자동 글 생성을 시작합니다.......'.green
13188
+ text_array = []
13156
13189
 
13157
- end
13158
- end
13159
- rescue
13160
- 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?
13161
13204
  end
13162
13205
  end
13206
+ rescue
13207
+ puts 'ZUM 검색 오류 발생'
13208
+ end
13209
+ end
13163
13210
 
13164
- 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|
13165
13220
  begin
13166
-
13167
- http = HTTP.get('https://search.daum.net/search?w=fusion&col=blog&q='+q.to_s.split(' ').join('')+'&DA=TWA&p='+page.to_s)
13168
- sleep(3)
13169
- noko = Nokogiri::HTML(http.to_s)
13170
- #puts http.to_s
13171
- puts '자동글 수집 및 생성 중 (약 5~30초 소요) ...'
13172
- giri = noko.xpath('//c-contents-desc').to_s #글만 또는 옆에 이미지있음 같이 블럭씌워지는곳(div class=.... 아래 xpath 의 < 빼고 첫 코드 아래와 동일 xpath)
13173
- for n in giri.split('</c-contents-desc>')[1..-1] #div class=.... 아래 xpath 의 < 넣고 / 넣고 첫 코드
13174
- #puts n
13175
- begin
13176
- text_array << n.split('\'>')[1].split('"')[0] #
13177
- #puts n.split('>')[1].split('"')[0]
13178
- #puts "\n"
13179
- rescue
13180
- end
13181
- 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
13182
13227
  rescue
13183
- puts 'DAUM 검색 http error ...'
13184
13228
  end
13185
13229
  end
13186
-
13187
- 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자 반환
13188
13263
  end
13189
13264
 
13190
13265
 
@@ -13523,6 +13598,8 @@ class Wordpress
13523
13598
  title_soon = 0
13524
13599
  keyword_soon = 0
13525
13600
  content_soon = 0
13601
+ keyword_link_soon1 = 0
13602
+ keyword_link_soon2 = 0
13526
13603
  @my_ip = 'init'
13527
13604
  @image_counter = 0
13528
13605
  @inumber2 = 0
@@ -13667,6 +13744,43 @@ class Wordpress
13667
13744
  @data['table'] << []
13668
13745
  @data['table'].pop
13669
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
+
13670
13784
  if @data['키워드설정']['키워드'].length == 0
13671
13785
  keyword = ''
13672
13786
  else
@@ -13894,17 +14008,20 @@ class Wordpress
13894
14008
  # if check10 == 0
13895
14009
  # break
13896
14010
  # end
13897
- # end
13898
-
14011
+ # end
13899
14012
 
13900
14013
  content3 = Array.new
13901
14014
 
14015
+
14016
+
14017
+
14018
+
13902
14019
  if @data['포스트설정']['내용을자동생성'].checked?
13903
14020
  content2.each_with_index do |con, index|
13904
14021
  if position.include?(index)
13905
14022
  insert_keyword_text = keyword.to_s
13906
- if @data['포스트설정']['키워드삽입'].checked?
13907
- 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> '
13908
14025
  end
13909
14026
  con2 = con.split('')
13910
14027
  if con == '(자동생성글)'
@@ -13924,8 +14041,8 @@ class Wordpress
13924
14041
  content2.each_with_index do |con, index|
13925
14042
  if position.include?(index)
13926
14043
  insert_keyword_text = keyword.to_s
13927
- if @data['포스트설정']['키워드삽입'].checked?
13928
- 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> '
13929
14046
  end
13930
14047
  con2 = con.split('')
13931
14048
  if con == '(자동생성글)'
@@ -13938,7 +14055,7 @@ class Wordpress
13938
14055
  content3 << con
13939
14056
  end
13940
14057
  end
13941
- 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")
13942
14059
  end
13943
14060
 
13944
14061
 
@@ -13958,8 +14075,8 @@ class Wordpress
13958
14075
  content2.each_with_index do |con, index|
13959
14076
  if position2.include?(index)
13960
14077
  insert_keyword_text = keyword.to_s
13961
- if @data['포스트설정']['키워드삽입'].checked?
13962
- 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> '
13963
14080
  end
13964
14081
  con2 = con.split('')
13965
14082
  content3 << con2.join('')
@@ -13973,8 +14090,8 @@ class Wordpress
13973
14090
  content2.each_with_index do |con, index|
13974
14091
  if position.include?(index)
13975
14092
  insert_keyword_text = keyword.to_s
13976
- if @data['포스트설정']['키워드삽입'].checked?
13977
- 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> '
13978
14095
  end
13979
14096
  con2 = con.split('')
13980
14097
  content3 << con2.join('')
@@ -14063,15 +14180,15 @@ class Wordpress
14063
14180
 
14064
14181
  content = last_text.split(" ")
14065
14182
  insert_keyword_text = keyword.to_s
14066
- if @data['포스트설정']['키워드삽입1'].checked?
14067
- 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> '
14068
14185
  end
14069
14186
  content.each_with_index do |con, index|
14070
14187
  begin
14071
14188
  if position3[1..-1].include?(index)
14072
14189
  insert_keyword_text = keyword.to_s
14073
- if @data['포스트설정']['키워드삽입1'].checked?
14074
- 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> '
14075
14192
  end
14076
14193
  con2 = con.split('')
14077
14194
  content333 << con2.join('')
@@ -14110,8 +14227,8 @@ class Wordpress
14110
14227
  if position10.include?(index)
14111
14228
  puts index
14112
14229
  text99 = text9.split(' ')
14113
- if @data['포스트설정']['키워드삽입1'].checked?
14114
- 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> ')
14115
14232
  else
14116
14233
  itext = text99.insert(rand(0..(text99.length-1)), @data['키워드설정']['키워드'].sample[1])
14117
14234
  end
@@ -14165,8 +14282,8 @@ class Wordpress
14165
14282
  if position10.include?(index)
14166
14283
  puts index
14167
14284
  text99 = text9.split(' ')
14168
- if @data['포스트설정']['키워드삽입1'].checked?
14169
- 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> ')
14170
14287
  else
14171
14288
  itext = text99.insert(rand(0..(text99.length-1)), @data['키워드설정']['키워드'].sample[1])
14172
14289
  end
@@ -14331,6 +14448,8 @@ class Wordpress
14331
14448
  @data['포스트설정']['내용자동변경값'] = Hash.new
14332
14449
  @data['포스트설정']['막글'] = ''
14333
14450
  @data['포스트설정']['프록시리스트'] = Array.new
14451
+ @data['포스트설정']['링크파일'] = Array.new
14452
+ @data['포스트설정']['링크파일1'] = Array.new
14334
14453
 
14335
14454
  @user_login_ok = "1"
14336
14455
  window('커뮤니티(게시판) 자동 포스팅 프로그램', 800, 620) {
@@ -15467,7 +15586,7 @@ class Wordpress
15467
15586
  on_toggled{
15468
15587
  if @data['포스트설정']['내용키워드삽입'].checked?
15469
15588
  @data['포스트설정']['막글삽입2'].checked = false
15470
- @data['포스트설정']['키워드삽입1'].checked = false
15589
+ @data['포스트설정']['키워드링크삽입1'].checked = false
15471
15590
  end
15472
15591
  }
15473
15592
  }
@@ -15482,15 +15601,50 @@ class Wordpress
15482
15601
  text '최대수량'
15483
15602
  }
15484
15603
 
15485
- @data['포스트설정']['키워드삽입'] = checkbox('키워드 링크 적용'){
15604
+ @data['포스트설정']['키워드링크삽입'] = checkbox('키워드 링크 적용'){
15486
15605
  top 1
15487
15606
  left 3
15607
+ on_toggled{
15608
+ if @data['포스트설정']['키워드링크삽입'].checked?
15609
+ @data['포스트설정']['막글삽입2'].checked = false
15610
+ @data['포스트설정']['키워드링크삽입1'].checked = false
15611
+ end
15612
+ }
15488
15613
  }
15489
- @data['포스트설정']['키워드삽입시링크'] = entry(){
15614
+ button('링크 파일 불러오기'){
15490
15615
  top 1
15491
15616
  left 4
15492
- text 'URL'
15617
+
15618
+ on_clicked {
15619
+ file = open_file
15620
+ if file != nil
15621
+ file_data = File.open(file, 'r').read
15622
+ @data['포스트설정']['링크파일'] = file_data.split("\n").map { |line| ["링크", line.strip] }
15623
+ end
15624
+ }
15625
+ }
15626
+
15627
+ @data['포스트설정']['링크삽입순서'] = checkbox('링크 순서 사용'){
15628
+ top 1
15629
+ left 5
15630
+ on_toggled {
15631
+ if @data['포스트설정']['링크삽입순서'].checked?
15632
+ @data['포스트설정']['링크삽입랜덤'].checked = false
15633
+ end
15634
+ }
15635
+
15493
15636
  }
15637
+ @data['포스트설정']['링크삽입랜덤'] = checkbox('링크랜덤 사용'){
15638
+ top 1
15639
+ left 6
15640
+ on_toggled {
15641
+ if @data['포스트설정']['링크삽입랜덤'].checked?
15642
+ @data['포스트설정']['링크삽입순서'].checked = false
15643
+ end
15644
+ }
15645
+ }
15646
+
15647
+
15494
15648
  @data['포스트설정']['내용사진자동삽입'] = checkbox('이미지 자동 삽입  '){
15495
15649
  top 2
15496
15650
  left 0
@@ -15695,7 +15849,7 @@ class Wordpress
15695
15849
  on_toggled{
15696
15850
  if @data['포스트설정']['막글삽입2'].checked?
15697
15851
  @data['포스트설정']['내용키워드삽입'].checked = false
15698
- @data['포스트설정']['키워드삽입'].checked = false
15852
+ @data['포스트설정']['키워드링크삽입'].checked = false
15699
15853
  end
15700
15854
  }
15701
15855
  }
@@ -15711,15 +15865,52 @@ class Wordpress
15711
15865
  text '최대수량'
15712
15866
  }
15713
15867
 
15714
- @data['포스트설정']['키워드삽입1'] = checkbox('키워드 링크 적용'){
15868
+ @data['포스트설정']['키워드링크삽입1'] = checkbox('키워드 링크 적용'){
15715
15869
  top 0
15716
15870
  left 3
15871
+ on_toggled{
15872
+ if @data['포스트설정']['키워드링크삽입1'].checked?
15873
+ @data['포스트설정']['내용키워드삽입'].checked = false
15874
+ @data['포스트설정']['키워드링크삽입'].checked = false
15875
+ end
15876
+ }
15717
15877
  }
15718
- @data['포스트설정']['키워드삽입시링크1'] = entry(){
15878
+
15879
+ button('   링크 파일 불러오기    '){
15719
15880
  top 0
15720
15881
  left 4
15721
- text 'URL'
15882
+
15883
+ on_clicked {
15884
+ file = open_file
15885
+ if file != nil
15886
+ file_data = File.open(file, 'r').read
15887
+ @data['포스트설정']['링크파일1'] = file_data.split("\n").map { |line| ["링크", line.strip] }
15888
+ end
15889
+ }
15890
+ }
15891
+
15892
+ @data['포스트설정']['링크삽입순서1'] = checkbox('링크 순서 사용'){
15893
+ top 0
15894
+ left 5
15895
+ on_toggled {
15896
+ if @data['포스트설정']['링크삽입순서1'].checked?
15897
+ @data['포스트설정']['링크삽입랜덤1'].checked = false
15898
+ end
15899
+ }
15900
+
15722
15901
  }
15902
+ @data['포스트설정']['링크삽입랜덤1'] = checkbox('링크랜덤 사용'){
15903
+ top 0
15904
+ left 6
15905
+ on_toggled {
15906
+ if @data['포스트설정']['링크삽입랜덤1'].checked?
15907
+ @data['포스트설정']['링크삽입순서1'].checked = false
15908
+ end
15909
+ }
15910
+ }
15911
+
15912
+
15913
+
15723
15914
  }
15724
15915
  vertical_separator{
15725
15916
  stretchy false
@@ -15871,6 +16062,8 @@ class Wordpress
15871
16062
  @data['포스트설정']['원고로만포스팅'].checked = true
15872
16063
  @data['포스트설정']['제목에도적용'].checked = true
15873
16064
  @data['포스트설정']['제목리스트사용'].checked = true
16065
+ @data['포스트설정']['링크삽입순서'].checked = true
16066
+ @data['포스트설정']['링크삽입순서1'].checked = true
15874
16067
 
15875
16068
  }.show
15876
16069
  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.017
4
+ version: 3.111.020
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