diff --git a/src/main/java/com/hlab/yanalyst/domain/channel/ChannelRole.java b/src/main/java/com/hlab/yanalyst/domain/channel/ChannelRole.java index 0f44fce..66cc7f8 100644 --- a/src/main/java/com/hlab/yanalyst/domain/channel/ChannelRole.java +++ b/src/main/java/com/hlab/yanalyst/domain/channel/ChannelRole.java @@ -8,7 +8,7 @@ package com.hlab.yanalyst.domain.channel; *
  • {@link #OWN} — 내가 운영하는 채널. 이미 발행한 결과물이라 소재가 아니므로 * 수집함·칸반·발굴·피드 어디에도 섞이지 않고 내 채널 분석 화면에서만 쓰인다.
  • *
  • {@link #SOURCE} — 소재 원본 채널(웹예능 공식채널). 롱폼만 피드에 수집한다.
  • - *
  • {@link #RIVAL} — 경쟁 쇼츠 채널(같은 소재를 다루는 클립 채널). 쇼츠만 피드에 수집한다.
  • + *
  • {@link #RIVAL} — 경쟁 채널(같은 소재를 다루는 클립 채널). 역시 롱폼만 피드에 수집한다.
  • * * * ddl-auto:update 로 컬럼이 추가되므로 기존 행은 role 이 null 이다. null 은 항상 {@link #MY} 로 취급한다. @@ -45,9 +45,4 @@ public final class ChannelRole { String r = normalize(role); return SOURCE.equals(r) || RIVAL.equals(r); } - - /** 해당 역할이 수집할 영상 포맷 — SOURCE 는 롱폼만, RIVAL 은 쇼츠만. */ - public static boolean acceptsShorts(String role) { - return RIVAL.equals(normalize(role)); - } } diff --git a/src/main/java/com/hlab/yanalyst/domain/channel/ChannelService.java b/src/main/java/com/hlab/yanalyst/domain/channel/ChannelService.java index 67dc7ed..475d09b 100644 --- a/src/main/java/com/hlab/yanalyst/domain/channel/ChannelService.java +++ b/src/main/java/com/hlab/yanalyst/domain/channel/ChannelService.java @@ -390,7 +390,7 @@ public class ChannelService { /** * 피드 시드 채널의 최근 업로드를 1페이지(최대 50건)만 수집한다. - * 소스 채널은 롱폼만, 경쟁 채널은 쇼츠만 저장한다. + * 역할과 무관하게 롱폼만 저장한다 — 쇼츠는 이미 잘린 결과물이라 소재가 아니다. * * @param channel SOURCE 또는 RIVAL 역할의 채널 * @param publishedAfter 이 시각 이후 업로드만 수집 @@ -422,10 +422,9 @@ public class ChannelService { } if (videoIds.isEmpty()) return 0; - // SOURCE = 롱폼만(공식계정 쇼츠는 이미 잘린 결과물), RIVAL = 쇼츠만 - Boolean shortsOnly = ChannelRole.acceptsShorts(role); + // 피드는 롱폼만 수집한다 (쇼츠는 이미 잘린 결과물 — 자를 원본이 아니다) String source = ChannelRole.RIVAL.equals(role) ? ChannelRole.RIVAL : ChannelRole.SOURCE; - return upsertVideos(channel, videoIds, source, shortsOnly, publishedAfter); + return upsertVideos(channel, videoIds, source, Boolean.FALSE, publishedAfter); } diff --git a/src/main/java/com/hlab/yanalyst/domain/channel/FeedCollectionService.java b/src/main/java/com/hlab/yanalyst/domain/channel/FeedCollectionService.java index 696c25e..6736e6e 100644 --- a/src/main/java/com/hlab/yanalyst/domain/channel/FeedCollectionService.java +++ b/src/main/java/com/hlab/yanalyst/domain/channel/FeedCollectionService.java @@ -18,7 +18,7 @@ import java.util.Map; /** * 소재 발굴 피드 수집기. * - *

    SOURCE(웹예능 공식채널)의 신규 롱폼과 RIVAL(경쟁 예능짤 채널)의 신규 쇼츠를 주기적으로 받아온다. + *

    SOURCE(웹예능 공식채널)와 RIVAL(경쟁 클립 채널)의 신규 롱폼을 주기적으로 받아온다(쇼츠는 수집하지 않는다). * uploads 플레이리스트 1페이지만 조회하므로 채널당 약 2 units — 검색(search.list 100 units)보다 훨씬 싸다. */ @Slf4j diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 0f9cfca..e91960d 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -100,7 +100,7 @@ hlab: # 발굴 대상 포맷 기본값: LONG_FORM(롱폼) | SHORTS. UI '지금 발굴'에서 건별 선택 가능. format: ${DISCOVERY_FORMAT:LONG_FORM} - # 소재 발굴 피드: 소스(웹예능 공식채널) 신규 롱폼 + 경쟁(예능짤) 신규 쇼츠를 최신순으로 수집 + # 소재 발굴 피드: 소스(웹예능 공식채널)·경쟁(클립 채널)의 신규 롱폼만 최신순으로 수집 (쇼츠 제외) feed: enabled: ${FEED_ENABLED:true} cron: ${FEED_CRON:0 15 */3 * * *} # 3시간마다 (소재 선점은 업로드 후 몇 시간이 승부) diff --git a/src/main/resources/templates/feed.html b/src/main/resources/templates/feed.html index 6d62644..59a9a9f 100644 --- a/src/main/resources/templates/feed.html +++ b/src/main/resources/templates/feed.html @@ -11,7 +11,7 @@