posting_duo 3.111.017 → 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_duo.rb +246 -65
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 86bc708d8839f55c2485989229a8b85f5523ae2956264c14840438d24b1fd26a
4
- data.tar.gz: f44c1783122486a3d8153abc536b98f9a620e36cdafcbbbc896454a62b01190c
3
+ metadata.gz: 0af24a0477564008729b41a9b8f9304d87e7230092978f7dfc7cff72ed4c8d0e
4
+ data.tar.gz: 46d8956da32e88aa0d6b1982f257cff62dded37e895a3fa72136aa13d902bebc
5
5
  SHA512:
6
- metadata.gz: abeb6b8dc0cde2eb4e960f9e057fbdf1ecabd769094d7224a63aa9add4552a56f3736bdc953dbfedd54b5c18b28ed1d859947dad239abec0aaf25adc82c330f4
7
- data.tar.gz: '005639ffd402845a242e02f9f1ef928846fbc8d58ab96d7c37af25381021a61508adbb061e3722f95d92284de99a675b8f13de97077ff8c0f4265e049b605f6d'
6
+ metadata.gz: f46bfeb2c3e53bb47488e9bfc14a45df2c594e85618fcc181f5bb795943eeee12c10b52030dbc80e060639a4a2be106b36f91579ccd78c9bcf1ee13d0d0a9959
7
+ data.tar.gz: 4875757cca6f8d4925d0035165e1838d684e207b1a48a0a36da75b158e05f34f315ab2b71ed2dd915fcc513d4a9df262ed8472ad0c2e7e78c558121cf0bbc09b
data/lib/posting_duo.rb CHANGED
@@ -13243,51 +13243,126 @@ class Wordpress
13243
13243
  # return m.join("\n")
13244
13244
  # end
13245
13245
 
13246
+ # ✔ 문장 정리 함수
13247
+ def clean_sentence(s, aa33)
13248
+ return '' if s.nil? || s.strip.empty?
13249
+ s.strip!
13250
+
13251
+ return '' if s.length < 10
13252
+
13253
+ # 종결어가 포함된 경우 → 종결어 기준으로 문장 잘라냄
13254
+ end_patterns = /(다|요|입니다|했습니다|하였습니다|했어요|해요|였습니다|었어요|네요|였어요|죠|시죠|되었어요|하더라고요|이랍니다|같습니다|같아요|드릴게요|드렸어요|보였습니다|느껴졌어요)/
13255
+
13256
+ if match = s.match(/(.+?#{end_patterns})(\s|$)/)
13257
+ clean = match[1]
13258
+ return clean.end_with?('.') ? clean : clean + '.'
13259
+ end
13260
+
13261
+ # 종결어 없으면 aa33 붙이기
13262
+ s + aa33.sample
13263
+ end
13264
+
13265
+ # ✔ 마지막 문장이 자연스럽게 끝나는지 보정
13266
+ def ensure_ending(text)
13267
+ text.strip!
13268
+ return text if text.match?(/(다|요)\.\s*$/)
13269
+ return text + %w[다. 요.].sample
13270
+ end
13271
+
13272
+ # ✔ 마지막 '완성된 문장'까지만 추출
13273
+ def trim_to_last_complete_sentence(text)
13274
+ sentences = text.strip.split(/(?<=\.)/)
13275
+ last_good_index = nil
13276
+
13277
+ sentences.each_with_index.reverse_each do |sentence, idx|
13278
+ if sentence.strip.match?(/(다|요)\.\s*$/)
13279
+ last_good_index = idx
13280
+ break
13281
+ end
13282
+ end
13283
+
13284
+ return sentences[0..last_good_index].join(' ').strip if last_good_index
13285
+ return sentences.first.strip
13286
+ end
13287
+
13288
+ # ✔ 본문 수집 및 생성
13246
13289
  def get_naver_text(q)
13247
- puts '자동 글 생성을 시작합니다.......'.green
13248
- text_array = Array.new
13249
- aa33 = '하였습니다,하였어요,하게됬어요,했답니다,했었는데요,하게되었어요,했어요,그랬답니다,그랬어요,합니다,그랬어요,그랬답니다,그랬답니다,그러합니다,좋아요,좋습니다,됬어요,되었어요,되었답니다,되었구요,되었어요,되네요,하네요,해요,할거예요,할수었이요,입니다,인데요,이예요,이랍니다,이였어요,그랬어요,그랬거든요,그랬습니다,었어요,었습니다,있었어요,하였고,하였으며,했는데,했지만,했고,그랬으며,하고,하며,좋았고,좋고,되었으며'.split(',')
13250
- for page in 1..3
13251
- begin
13252
- 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')
13253
- sleep(3)
13254
- noko = Nokogiri::HTML(http.to_s)
13255
- for n in 1..2
13256
- begin
13257
- text_array << noko.xpath('//*[@id="blogItemUl"]/li['+n.to_s+']/dl/dd[2]').text.split('...').join('') + aa33.sample
13258
- rescue
13290
+ puts '자동 글 생성을 시작합니다.......'.green
13291
+ text_array = []
13259
13292
 
13260
- end
13261
- end
13262
- rescue
13263
- puts 'zum 검색 http error ...'
13293
+ aa33 = '하였습니다,하였어요,하게 되었어요,했어요,그랬답니다,합니다,좋아요,좋습니다,되었어요,되었네요,하네요,해요,할 거예요,입니다,이예요,이랍니다,그랬습니다,었습니다,있었어요,했지만,했고,하고,하며,좋고,되었으며'.split(',')
13294
+
13295
+ # --- ZUM 블로그 크롤링 ---
13296
+ (1..3).each do |page|
13297
+ begin
13298
+ url = "https://search.zum.com/search.zum?method=blog&option=accu&query=#{q.gsub(' ', '')}&rd=1&page=#{page}&mm=direct"
13299
+ http = HTTP.get(url)
13300
+ sleep(2)
13301
+ noko = Nokogiri::HTML(http.to_s)
13302
+ (1..2).each do |n|
13303
+ raw = noko.xpath("//*[@id='blogItemUl']/li[#{n}]/dl/dd[2]").text
13304
+ raw.split(/[.!?]/).map(&:strip).each do |s|
13305
+ cleaned = clean_sentence(s, aa33)
13306
+ text_array << cleaned unless cleaned.empty?
13264
13307
  end
13265
13308
  end
13309
+ rescue
13310
+ puts 'ZUM 검색 오류 발생'
13311
+ end
13312
+ end
13266
13313
 
13267
- for page in 2..5
13314
+ # --- DAUM 블로그 크롤링 ---
13315
+ (2..4).each do |page|
13316
+ begin
13317
+ http = HTTP.get("https://search.daum.net/search?w=fusion&col=blog&q=#{q.gsub(' ', '')}&DA=TWA&p=#{page}")
13318
+ sleep(2)
13319
+ noko = Nokogiri::HTML(http.to_s)
13320
+ puts '자동글 수집 및 생성 중 (약 5~30초 소요) ...'
13321
+ giri = noko.xpath('//c-contents-desc').to_s
13322
+ giri.split('</c-contents-desc>')[1..-1].each do |n|
13268
13323
  begin
13269
-
13270
- http = HTTP.get('https://search.daum.net/search?w=fusion&col=blog&q='+q.to_s.split(' ').join('')+'&DA=TWA&p='+page.to_s)
13271
- sleep(3)
13272
- noko = Nokogiri::HTML(http.to_s)
13273
- #puts http.to_s
13274
- puts '자동글 수집 및 생성 중 (약 5~30초 소요) ...'
13275
- giri = noko.xpath('//c-contents-desc').to_s #글만 또는 옆에 이미지있음 같이 블럭씌워지는곳(div class=.... 아래 xpath 의 < 빼고 첫 코드 아래와 동일 xpath)
13276
- for n in giri.split('</c-contents-desc>')[1..-1] #div class=.... 아래 xpath 의 < 넣고 / 넣고 첫 코드
13277
- #puts n
13278
- begin
13279
- text_array << n.split('\'>')[1].split('"')[0] #
13280
- #puts n.split('>')[1].split('"')[0]
13281
- #puts "\n"
13282
- rescue
13283
- end
13284
- end
13324
+ text = n.split('>')[1].split('<')[0].strip
13325
+ next if text.length < 10
13326
+ text.split(/[.!?]/).map(&:strip).each do |s|
13327
+ cleaned = clean_sentence(s, aa33)
13328
+ text_array << cleaned unless cleaned.empty?
13329
+ end
13285
13330
  rescue
13286
- puts 'DAUM 검색 http error ...'
13287
13331
  end
13288
13332
  end
13289
-
13290
- return text_array.join("\n")[0..5000]
13333
+ rescue
13334
+ puts 'DAUM 검색 오류 발생'
13335
+ end
13336
+ end
13337
+
13338
+ # 중복 제거 및 필터링
13339
+ text_array.uniq!
13340
+ text_array.reject! { |s| s.length < 15 || s.count(' ') < 2 }
13341
+
13342
+ # 자연스럽게 이어붙이기
13343
+ connectors = [
13344
+ '그리고', '또한', '더불어', '한편', '그러므로', '이러한 점에서',
13345
+ '이와 함께', '이처럼', '게다가', '뿐만 아니라', '즉', '결국', '그래서',
13346
+ '하지만', '반면에', '따라서', '그에 따라', '다시 말해', '예를 들어',
13347
+ '요약하자면', '중요한 것은', '먼저', '마지막으로', '특히', '실제로',
13348
+ '사실상', '종합해 보면', '한 가지 더', '이로 인해', '말하자면'
13349
+ ]
13350
+
13351
+ final_text = ''
13352
+ text_array.each_with_index do |sentence, idx|
13353
+ if idx > 0 && idx % 3 == 0
13354
+ final_text << "\n\n"
13355
+ elsif idx > 0
13356
+ final_text << "#{connectors.sample} "
13357
+ end
13358
+ final_text << sentence + ' '
13359
+ end
13360
+
13361
+ # 마지막 문장이 자연스럽게 끝나도록 정리
13362
+ trimmed = trim_to_last_complete_sentence(final_text)
13363
+ trimmed = ensure_ending(trimmed)
13364
+
13365
+ return trimmed[0..5000] # 최대 5000자 반환
13291
13366
  end
13292
13367
 
13293
13368
 
@@ -13626,6 +13701,8 @@ class Wordpress
13626
13701
  title_soon = 0
13627
13702
  keyword_soon = 0
13628
13703
  content_soon = 0
13704
+ keyword_link_soon1 = 0
13705
+ keyword_link_soon2 = 0
13629
13706
  @my_ip = 'init'
13630
13707
  @image_counter = 0
13631
13708
  @inumber2 = 0
@@ -13770,6 +13847,43 @@ class Wordpress
13770
13847
  @data['table'] << []
13771
13848
  @data['table'].pop
13772
13849
 
13850
+
13851
+ if @data['포스트설정']['링크파일'].length == 0
13852
+ keyword_link_path1 = ''
13853
+ else
13854
+ if @data['포스트설정']['링크삽입랜덤'].checked?
13855
+ keyword_link_path1 = @data['포스트설정']['링크파일'].sample[1]
13856
+ else
13857
+ keyword_link_path1 = @data['포스트설정']['링크파일'][keyword_link_soon1][1]
13858
+ keyword_link_soon1 += 1
13859
+ if keyword_link_soon1 > @data['포스트설정']['링크파일'].length-1
13860
+ keyword_link_soon1 = 0
13861
+ end
13862
+ end
13863
+ end
13864
+ @data['table'][index][-1] = 6
13865
+ @data['table'] << []
13866
+ @data['table'].pop
13867
+
13868
+
13869
+ if @data['포스트설정']['링크파일1'].length == 0
13870
+ keyword_link_path2 = ''
13871
+ else
13872
+ if @data['포스트설정']['링크삽입랜덤1'].checked?
13873
+ keyword_link_path2 = @data['포스트설정']['링크파일1'].sample[1]
13874
+ else
13875
+ keyword_link_path2 = @data['포스트설정']['링크파일1'][keyword_link_soon2][1]
13876
+ keyword_link_soon2 += 1
13877
+ if keyword_link_soon2 > @data['포스트설정']['링크파일1'].length-1
13878
+ keyword_link_soon2 = 0
13879
+ end
13880
+ end
13881
+ end
13882
+ @data['table'][index][-1] = 7
13883
+ @data['table'] << []
13884
+ @data['table'].pop
13885
+
13886
+
13773
13887
  if @data['키워드설정']['키워드'].length == 0
13774
13888
  keyword = ''
13775
13889
  else
@@ -13997,17 +14111,20 @@ class Wordpress
13997
14111
  # if check10 == 0
13998
14112
  # break
13999
14113
  # end
14000
- # end
14001
-
14114
+ # end
14002
14115
 
14003
14116
  content3 = Array.new
14004
14117
 
14118
+
14119
+
14120
+
14121
+
14005
14122
  if @data['포스트설정']['내용을자동생성'].checked?
14006
14123
  content2.each_with_index do |con, index|
14007
14124
  if position.include?(index)
14008
14125
  insert_keyword_text = keyword.to_s
14009
- if @data['포스트설정']['키워드삽입'].checked?
14010
- insert_keyword_text = '<a href="'+@data['포스트설정']['키워드삽입시링크'].text.to_s+'" title="'+insert_keyword_text+'">'+insert_keyword_text.to_s+'</a> '
14126
+ if @data['포스트설정']['키워드링크삽입'].checked?
14127
+ insert_keyword_text = '<a href="'+keyword_link_path1.to_s+'" title="'+insert_keyword_text+'">'+insert_keyword_text.to_s+'</a> '
14011
14128
  end
14012
14129
  con2 = con.split('')
14013
14130
  if con == '(자동생성글)'
@@ -14027,8 +14144,8 @@ class Wordpress
14027
14144
  content2.each_with_index do |con, index|
14028
14145
  if position.include?(index)
14029
14146
  insert_keyword_text = keyword.to_s
14030
- if @data['포스트설정']['키워드삽입'].checked?
14031
- insert_keyword_text = ' <a href="'+@data['포스트설정']['키워드삽입시링크'].text.to_s+'" title="'+insert_keyword_text+'">'+insert_keyword_text.to_s+'</a> '
14147
+ if @data['포스트설정']['키워드링크삽입'].checked?
14148
+ insert_keyword_text = ' <a href="'+keyword_link_path1.to_s+'" title="'+insert_keyword_text+'">'+insert_keyword_text.to_s+'</a> '
14032
14149
  end
14033
14150
  con2 = con.split('')
14034
14151
  if con == '(자동생성글)'
@@ -14041,7 +14158,7 @@ class Wordpress
14041
14158
  content3 << con
14042
14159
  end
14043
14160
  end
14044
- 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")
14161
+ 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")
14045
14162
  end
14046
14163
 
14047
14164
 
@@ -14061,8 +14178,8 @@ class Wordpress
14061
14178
  content2.each_with_index do |con, index|
14062
14179
  if position2.include?(index)
14063
14180
  insert_keyword_text = keyword.to_s
14064
- if @data['포스트설정']['키워드삽입'].checked?
14065
- insert_keyword_text = ' <a href="'+@data['포스트설정']['키워드삽입시링크'].text.to_s+'" title="'+keyword.to_s+'">'+insert_keyword_text.to_s+'</a> '
14181
+ if @data['포스트설정']['키워드링크삽입'].checked?
14182
+ insert_keyword_text = ' <a href="'+keyword_link_path1.to_s+'" title="'+keyword.to_s+'">'+insert_keyword_text.to_s+'</a> '
14066
14183
  end
14067
14184
  con2 = con.split('')
14068
14185
  content3 << con2.join('')
@@ -14076,8 +14193,8 @@ class Wordpress
14076
14193
  content2.each_with_index do |con, index|
14077
14194
  if position.include?(index)
14078
14195
  insert_keyword_text = keyword.to_s
14079
- if @data['포스트설정']['키워드삽입'].checked?
14080
- insert_keyword_text = ' <a href="'+@data['포스트설정']['키워드삽입시링크'].text.to_s+'" title="'+keyword.to_s+'">'+insert_keyword_text.to_s+'</a> '
14196
+ if @data['포스트설정']['키워드링크삽입'].checked?
14197
+ insert_keyword_text = ' <a href="'+keyword_link_path1.to_s+'" title="'+keyword.to_s+'">'+insert_keyword_text.to_s+'</a> '
14081
14198
  end
14082
14199
  con2 = con.split('')
14083
14200
  content3 << con2.join('')
@@ -14166,15 +14283,15 @@ class Wordpress
14166
14283
 
14167
14284
  content = last_text.split(" ")
14168
14285
  insert_keyword_text = keyword.to_s
14169
- if @data['포스트설정']['키워드삽입1'].checked?
14170
- insert_keyword_text = ' <a href="'+@data['포스트설정']['키워드삽입시링크1'].text.to_s+'" title="'+keyword.to_s+'">'+insert_keyword_text.to_s+'</a> '
14286
+ if @data['포스트설정']['키워드링크삽입1'].checked?
14287
+ insert_keyword_text = ' <a href="'+keyword_link_path2.to_s+'" title="'+keyword.to_s+'">'+insert_keyword_text.to_s+'</a> '
14171
14288
  end
14172
14289
  content.each_with_index do |con, index|
14173
14290
  begin
14174
14291
  if position3[1..-1].include?(index)
14175
14292
  insert_keyword_text = keyword.to_s
14176
- if @data['포스트설정']['키워드삽입1'].checked?
14177
- insert_keyword_text = ' <a href="'+@data['포스트설정']['키워드삽입시링크1'].text.to_s+'" title="'+keyword.to_s+'">'+insert_keyword_text.to_s+'</a> '
14293
+ if @data['포스트설정']['키워드링크삽입1'].checked?
14294
+ insert_keyword_text = ' <a href="'+keyword_link_path2.to_s+'" title="'+keyword.to_s+'">'+insert_keyword_text.to_s+'</a> '
14178
14295
  end
14179
14296
  con2 = con.split('')
14180
14297
  content333 << con2.join('')
@@ -14213,8 +14330,8 @@ class Wordpress
14213
14330
  if position10.include?(index)
14214
14331
  puts index
14215
14332
  text99 = text9.split(' ')
14216
- if @data['포스트설정']['키워드삽입1'].checked?
14217
- itext = text99.insert(rand(0..(text99.length-1)), ' <a href="'+@data['포스트설정']['키워드삽입시링크1'].text.to_s+'" title="'+keyword.to_s+'">'+@data['키워드설정']['키워드'].sample[1]+'</a> ')
14333
+ if @data['포스트설정']['키워드링크삽입1'].checked?
14334
+ itext = text99.insert(rand(0..(text99.length-1)), ' <a href="'+keyword_link_path2.to_s+'" title="'+keyword.to_s+'">'+@data['키워드설정']['키워드'].sample[1]+'</a> ')
14218
14335
  else
14219
14336
  itext = text99.insert(rand(0..(text99.length-1)), @data['키워드설정']['키워드'].sample[1])
14220
14337
  end
@@ -14268,8 +14385,8 @@ class Wordpress
14268
14385
  if position10.include?(index)
14269
14386
  puts index
14270
14387
  text99 = text9.split(' ')
14271
- if @data['포스트설정']['키워드삽입1'].checked?
14272
- itext = text99.insert(rand(0..(text99.length-1)), ' <a href="'+@data['포스트설정']['키워드삽입시링크1'].text.to_s+'" title="'+keyword.to_s+'">'+@data['키워드설정']['키워드'].sample[1]+'</a> ')
14388
+ if @data['포스트설정']['키워드링크삽입1'].checked?
14389
+ itext = text99.insert(rand(0..(text99.length-1)), ' <a href="'+keyword_link_path2.to_s+'" title="'+keyword.to_s+'">'+@data['키워드설정']['키워드'].sample[1]+'</a> ')
14273
14390
  else
14274
14391
  itext = text99.insert(rand(0..(text99.length-1)), @data['키워드설정']['키워드'].sample[1])
14275
14392
  end
@@ -14434,6 +14551,8 @@ class Wordpress
14434
14551
  @data['포스트설정']['내용자동변경값'] = Hash.new
14435
14552
  @data['포스트설정']['막글'] = ''
14436
14553
  @data['포스트설정']['프록시리스트'] = Array.new
14554
+ @data['포스트설정']['링크파일'] = Array.new
14555
+ @data['포스트설정']['링크파일1'] = Array.new
14437
14556
 
14438
14557
  @user_login_ok = 4
14439
14558
  window('커뮤니티(게시판) 자동 포스팅 프로그램', 800, 620) {
@@ -15139,7 +15258,7 @@ class Wordpress
15139
15258
  }
15140
15259
  button('   폴더째로 불러오기   '){
15141
15260
  stretchy false
15142
- on_clicked {
15261
+ on_clicked {
15143
15262
  path = @data['이미지설정']['폴더경로2'].text.to_s.force_encoding('utf-8')
15144
15263
 
15145
15264
  # 경로가 유효한지 확인
@@ -15576,7 +15695,7 @@ class Wordpress
15576
15695
  on_toggled{
15577
15696
  if @data['포스트설정']['내용키워드삽입'].checked?
15578
15697
  @data['포스트설정']['막글삽입2'].checked = false
15579
- @data['포스트설정']['키워드삽입1'].checked = false
15698
+ @data['포스트설정']['키워드링크삽입1'].checked = false
15580
15699
  end
15581
15700
  }
15582
15701
  }
@@ -15591,15 +15710,44 @@ class Wordpress
15591
15710
  text '최대수량'
15592
15711
  }
15593
15712
 
15594
- @data['포스트설정']['키워드삽입'] = checkbox('키워드 링크 적용'){
15713
+ @data['포스트설정']['키워드링크삽입'] = checkbox('키워드 링크 적용'){
15595
15714
  top 1
15596
15715
  left 3
15597
15716
  }
15598
- @data['포스트설정']['키워드삽입시링크'] = entry(){
15717
+ button('링크 파일 불러오기'){
15599
15718
  top 1
15600
15719
  left 4
15601
- text 'URL'
15720
+
15721
+ on_clicked {
15722
+ file = open_file
15723
+ if file != nil
15724
+ file_data = File.open(file, 'r').read
15725
+ @data['포스트설정']['링크파일'] = file_data.split("\n").map { |line| ["링크", line.strip] }
15726
+ end
15727
+ }
15728
+ }
15729
+
15730
+ @data['포스트설정']['링크삽입순서'] = checkbox('링크 순서 사용'){
15731
+ top 1
15732
+ left 5
15733
+ on_toggled {
15734
+ if @data['포스트설정']['링크삽입순서'].checked?
15735
+ @data['포스트설정']['링크삽입랜덤'].checked = false
15736
+ end
15737
+ }
15738
+
15602
15739
  }
15740
+ @data['포스트설정']['링크삽입랜덤'] = checkbox('링크랜덤 사용'){
15741
+ top 1
15742
+ left 6
15743
+ on_toggled {
15744
+ if @data['포스트설정']['링크삽입랜덤'].checked?
15745
+ @data['포스트설정']['링크삽입순서'].checked = false
15746
+ end
15747
+ }
15748
+ }
15749
+
15750
+
15603
15751
  @data['포스트설정']['내용사진자동삽입'] = checkbox('이미지 자동 삽입  '){
15604
15752
  top 2
15605
15753
  left 0
@@ -15804,7 +15952,7 @@ class Wordpress
15804
15952
  on_toggled{
15805
15953
  if @data['포스트설정']['막글삽입2'].checked?
15806
15954
  @data['포스트설정']['내용키워드삽입'].checked = false
15807
- @data['포스트설정']['키워드삽입'].checked = false
15955
+ @data['포스트설정']['키워드링크삽입'].checked = false
15808
15956
  end
15809
15957
  }
15810
15958
  }
@@ -15820,15 +15968,46 @@ class Wordpress
15820
15968
  text '최대수량'
15821
15969
  }
15822
15970
 
15823
- @data['포스트설정']['키워드삽입1'] = checkbox('키워드 링크 적용'){
15971
+ @data['포스트설정']['키워드링크삽입1'] = checkbox('키워드 링크 적용'){
15824
15972
  top 0
15825
15973
  left 3
15826
15974
  }
15827
- @data['포스트설정']['키워드삽입시링크1'] = entry(){
15975
+
15976
+ button('   링크 파일 불러오기    '){
15828
15977
  top 0
15829
15978
  left 4
15830
- text 'URL'
15979
+
15980
+ on_clicked {
15981
+ file = open_file
15982
+ if file != nil
15983
+ file_data = File.open(file, 'r').read
15984
+ @data['포스트설정']['링크파일1'] = file_data.split("\n").map { |line| ["링크", line.strip] }
15985
+ end
15986
+ }
15987
+ }
15988
+
15989
+ @data['포스트설정']['링크삽입순서1'] = checkbox('링크 순서 사용'){
15990
+ top 0
15991
+ left 5
15992
+ on_toggled {
15993
+ if @data['포스트설정']['링크삽입순서1'].checked?
15994
+ @data['포스트설정']['링크삽입랜덤1'].checked = false
15995
+ end
15996
+ }
15997
+
15831
15998
  }
15999
+ @data['포스트설정']['링크삽입랜덤1'] = checkbox('링크랜덤 사용'){
16000
+ top 0
16001
+ left 6
16002
+ on_toggled {
16003
+ if @data['포스트설정']['링크삽입랜덤1'].checked?
16004
+ @data['포스트설정']['링크삽입순서1'].checked = false
16005
+ end
16006
+ }
16007
+ }
16008
+
16009
+
16010
+
15832
16011
  }
15833
16012
  vertical_separator{
15834
16013
  stretchy false
@@ -15980,7 +16159,9 @@ class Wordpress
15980
16159
  @data['포스트설정']['원고로만포스팅'].checked = true
15981
16160
  @data['포스트설정']['제목에도적용'].checked = true
15982
16161
  @data['포스트설정']['제목리스트사용'].checked = true
15983
-
16162
+ @data['포스트설정']['링크삽입순서'].checked = true
16163
+ @data['포스트설정']['링크삽입순서1'].checked = true
16164
+
15984
16165
  }.show
15985
16166
  end
15986
16167
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: posting_duo
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.111.017
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: File to Clipboard gem
13
13
  email: mymin26@naver.com