ytcollector 1.1.9__py3-none-any.whl → 1.2.3__py3-none-any.whl

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.
ytcollector/__init__.py CHANGED
@@ -17,12 +17,12 @@ CLI 사용 예시:
17
17
  ytc -c face text --fast
18
18
  """
19
19
 
20
- from .config import CATEGORY_NAMES, CATEGORY_QUERIES, USER_AGENTS, LICENSE_PLATE_PATTERNS
20
+ from .config import CATEGORY_NAMES, CATEGORY_QUERIES, USER_AGENTS, LICENSE_PLATE_PATTERNS, LICENSE_PLATE_MODEL_PATH
21
21
  from .analyzer import VideoAnalyzer, check_dependencies
22
22
  from .downloader import YouTubeDownloader
23
23
  from .cli import run, main as cli_main
24
24
 
25
- __version__ = "1.1.8"
25
+ __version__ = "1.2.3"
26
26
  __all__ = [
27
27
  # 주요 클래스
28
28
  "VideoAnalyzer",
@@ -32,6 +32,7 @@ __all__ = [
32
32
  "CATEGORY_QUERIES",
33
33
  "USER_AGENTS",
34
34
  "LICENSE_PLATE_PATTERNS",
35
+ "LICENSE_PLATE_MODEL_PATH",
35
36
  # 유틸리티
36
37
  "check_dependencies",
37
38
  "run",
ytcollector/analyzer.py CHANGED
@@ -32,7 +32,7 @@ try:
32
32
  except ImportError:
33
33
  USE_GPU = False
34
34
 
35
- from .config import LICENSE_PLATE_PATTERNS, YOLO_MODEL_NAME, YOLO_CONFIDENCE
35
+ from .config import LICENSE_PLATE_PATTERNS, LICENSE_PLATE_MODEL_PATH, YOLO_CONFIDENCE
36
36
 
37
37
 
38
38
  class VideoAnalyzer:
@@ -65,7 +65,7 @@ class VideoAnalyzer:
65
65
  if self.yolo_model is None:
66
66
  device = "cuda" if USE_GPU else "cpu"
67
67
  print(f" YOLO 모델 로딩 중... (Device: {device})")
68
- self.yolo_model = YOLO(YOLO_MODEL_NAME)
68
+ self.yolo_model = YOLO(str(LICENSE_PLATE_MODEL_PATH))
69
69
  self.yolo_model.to(device)
70
70
 
71
71
  def extract_frames(self, video_path, num_frames=10):
ytcollector/config.py CHANGED
@@ -1,4 +1,9 @@
1
1
  # 설정 상수
2
+ from pathlib import Path
3
+
4
+ # 모델 경로 (패키지 내부)
5
+ MODEL_DIR = Path(__file__).parent / "models"
6
+ LICENSE_PLATE_MODEL_PATH = MODEL_DIR / "license_plate_detector.pt"
2
7
 
3
8
  USER_AGENTS = [
4
9
  'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
@@ -57,14 +62,18 @@ CATEGORY_NAMES = {
57
62
  # 카테고리별 제외 키워드 (제목에 포함 시 스킵)
58
63
  BLACKLIST_KEYWORDS = {
59
64
  'tattoo': [
60
- "두피 문신", "두피문신",
61
- "눈썹 문신", "눈썹문신",
62
- "입술 문신", "입술문신",
63
- "립타투", " 타투",
64
- "헤어타투", "헤어 타투",
65
- "구레나룻문신", "구레나룻 문신",
66
- "틴트 입술",
67
- "반영구", "SMP"
65
+ # 반영구 화장 (Semi-permanent makeup)
66
+ "눈썹", "입술", "두피", "헤어라인", "아이라인", "구렛나룻",
67
+ "반영구", "영구화장", "립타투", "헤어타투", "SMP",
68
+ "마이크로블레이딩", "microblading", "엠보", "콤보", "PMU",
69
+ # 임시/가짜 타투
70
+ "헤나", "henna", "스티커", "페이크", "fake", "임시", "붙이는",
71
+ # 타투 제거
72
+ "제거", "레이저", "지우기", "removal",
73
+ # 도안/디자인만 (실제 시술 아님)
74
+ "도안", "디자인", "스케치", "드로잉", "그리기",
75
+ # 의료/미용 시술
76
+ "유두", "유륜", "흉터", "점",
68
77
  ],
69
78
  'face': [],
70
79
  'license_plate': [],
@@ -72,8 +81,7 @@ BLACKLIST_KEYWORDS = {
72
81
  }
73
82
 
74
83
  # YOLO 설정
75
- YOLO_MODEL_NAME = 'license_plate_detector.pt' # 번호판 전용 학습 모델
76
- YOLO_CONFIDENCE = 0.5 # 오탐지 방지를 위해 신뢰도 상향
84
+ YOLO_CONFIDENCE = 0.5 # 오탐지 방지를 위해 신뢰도 상향
77
85
 
78
86
  # 번호판 정규식 패턴 (한국 자동차 번호판 중심)
79
87
  LICENSE_PLATE_PATTERNS = [
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ytcollector
3
- Version: 1.1.9
3
+ Version: 1.2.3
4
4
  Summary: YouTube 콘텐츠 수집기 - 얼굴, 번호판, 타투, 텍스트 감지
5
5
  Author: YTCollector Team
6
6
  License: MIT
@@ -44,7 +44,7 @@ Requires-Dist: ytcollector[analysis,dev]; extra == "all"
44
44
  pip install yt-dlp
45
45
  ```
46
46
 
47
- ### 분석 기능용 패키지 (권장 - v1.1.9+)
47
+ ### 분석 기능용 패키지 (권장 - v1.2.0+)
48
48
 
49
49
  분석 기능을 원활하게 사용하려면 아래 패키지들이 필요합니다. GPU(CUDA)가 설치된 경우 자동으로 가속이 활성화됩니다.
50
50
 
@@ -192,9 +192,10 @@ https://www.youtube.com/watch?v=aqz-KE-bpKQ, 00:10, sample_task
192
192
  | 번호판 | YOLOv8 전용 모델 + OCR | v1.1.9: 번호판 전용 학습 모델 + 한국 번호판 패턴 매칭 |
193
193
  | 타투 | OpenCV HSV 분석 | 피부 영역 내 잉크 패턴 감지 |
194
194
 
195
- ### 주요 최적화 (v1.1.5~1.1.9)
196
- - **번호판 전용 모델** (v1.1.9): YOLO-World 번호판 전용 학습 모델로 교체 (감지율 대폭 향상, 모델 크기 27MB→6MB)
197
- - **오탐지 방지** (v1.1.9): YOLO 감지 + OCR 패턴 매칭 만족해야 번호판 판정, ROI 크기 필터링 추가
195
+ ### 주요 최적화 (v1.1.5~1.2.0)
196
+ - **자막 영역 필터링** (v1.2.0): 화면 하단 60%~95% 영역만 자막으로 인식, 상단 로고/워터마크 제외
197
+ - **번호판 전용 모델** (v1.1.9): YOLO-World 번호판 전용 학습 모델로 교체 (감지율 향상, 모델 크기 27MB→6MB)
198
+ - **오탐지 방지**: YOLO 감지 + OCR 패턴 매칭 둘 다 만족해야 번호판 판정, ROI 크기 필터링 추가
198
199
  - **ROI 기반 감지**: 전체 화면이 아닌 YOLO가 지정한 영역만 OCR하여 속도와 정확도 향상
199
200
  - **GPU 가속 지원**: CUDA 사용 가능 시 YOLO 및 OCR 자동 가속
200
201
  - **로그 기반 중복 방지**: `youtube_url_*.txt` 기록을 참조하여 중복 분석 방지
@@ -0,0 +1,13 @@
1
+ ytcollector/__init__.py,sha256=P4AIOCG2glB95wwN9QhUuF0HsgVxy6JyjTvkZKuQQXg,1152
2
+ ytcollector/analyzer.py,sha256=zgtcw6pSCzJwa4NJ04XFJlLaoRt8CwXGxwuL9o8eduM,14414
3
+ ytcollector/cli.py,sha256=aHF4EuQRPLKh65lnkI_dZ0ResztlVjpHlS5iHfzmpig,5577
4
+ ytcollector/config.py,sha256=lpzYaODbOErUni_oAJ_zU0dpIQzy8gJDz-Cisrqf1tE,3646
5
+ ytcollector/dataset_builder.py,sha256=nfArEwszoCln48n3T0Eff_4OOaYv8FF0YH8cARBGMWQ,2608
6
+ ytcollector/downloader.py,sha256=TeC6agUmSPHZSZ9jdoc42i8i_NobzTEkoRtAIgW80kI,14544
7
+ ytcollector/utils.py,sha256=6XDif-e3GbMHmUvTsBT0YblxNxYnS-2I8HnmjMBZs-M,4254
8
+ ytcollector/models/license_plate_detector.pt,sha256=jsOyVKbIdhDwN6kJV0Ysr6EanAMiTjOijGodGsKsUbA,6241454
9
+ ytcollector-1.2.3.dist-info/METADATA,sha256=u3Xz0naQgl9F-ZFOM7vw4fu25KxR28KfOPuz6eTzGkI,7319
10
+ ytcollector-1.2.3.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
11
+ ytcollector-1.2.3.dist-info/entry_points.txt,sha256=waiVuSJJYt-6_DAal-T4JkHgejo7wKYLdKrEI7tZ-ms,127
12
+ ytcollector-1.2.3.dist-info/top_level.txt,sha256=wozNyCUm0eMOm-9U81yTql6oGaM2O5rWVBXDb93zzyQ,12
13
+ ytcollector-1.2.3.dist-info/RECORD,,
@@ -1,12 +0,0 @@
1
- ytcollector/__init__.py,sha256=EaxBP_0Fv0LEFdg067uZxBrQHwOKGX8u08Y4b5uF1-Q,1094
2
- ytcollector/analyzer.py,sha256=7VJt4chc25HsEz8OwBDZhTz_8LnkpgSBM6mJKQpIUls,14391
3
- ytcollector/cli.py,sha256=aHF4EuQRPLKh65lnkI_dZ0ResztlVjpHlS5iHfzmpig,5577
4
- ytcollector/config.py,sha256=HmcFqMV1Z3kClnGKYi0q9cRZIXMRPAxIEI8cggatfrU,3199
5
- ytcollector/dataset_builder.py,sha256=nfArEwszoCln48n3T0Eff_4OOaYv8FF0YH8cARBGMWQ,2608
6
- ytcollector/downloader.py,sha256=TeC6agUmSPHZSZ9jdoc42i8i_NobzTEkoRtAIgW80kI,14544
7
- ytcollector/utils.py,sha256=6XDif-e3GbMHmUvTsBT0YblxNxYnS-2I8HnmjMBZs-M,4254
8
- ytcollector-1.1.9.dist-info/METADATA,sha256=WQIup61B02yB9ddtOaFGtlDYoV4nJVRD-vvVI_sVjc0,7208
9
- ytcollector-1.1.9.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
10
- ytcollector-1.1.9.dist-info/entry_points.txt,sha256=waiVuSJJYt-6_DAal-T4JkHgejo7wKYLdKrEI7tZ-ms,127
11
- ytcollector-1.1.9.dist-info/top_level.txt,sha256=wozNyCUm0eMOm-9U81yTql6oGaM2O5rWVBXDb93zzyQ,12
12
- ytcollector-1.1.9.dist-info/RECORD,,