ytcollector 1.2.0__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,8 +62,18 @@ CATEGORY_NAMES = {
57
62
  # 카테고리별 제외 키워드 (제목에 포함 시 스킵)
58
63
  BLACKLIST_KEYWORDS = {
59
64
  'tattoo': [
60
- "눈썹", "입술", "두피", "영구", # 반영구 시술 제외
61
- "립타투", "헤어타투", "SMP"
65
+ # 반영구 화장 (Semi-permanent makeup)
66
+ "눈썹", "입술", "두피", "헤어라인", "아이라인", "구렛나룻",
67
+ "반영구", "영구화장", "립타투", "헤어타투", "SMP",
68
+ "마이크로블레이딩", "microblading", "엠보", "콤보", "PMU",
69
+ # 임시/가짜 타투
70
+ "헤나", "henna", "스티커", "페이크", "fake", "임시", "붙이는",
71
+ # 타투 제거
72
+ "제거", "레이저", "지우기", "removal",
73
+ # 도안/디자인만 (실제 시술 아님)
74
+ "도안", "디자인", "스케치", "드로잉", "그리기",
75
+ # 의료/미용 시술
76
+ "유두", "유륜", "흉터", "점",
62
77
  ],
63
78
  'face': [],
64
79
  'license_plate': [],
@@ -66,8 +81,7 @@ BLACKLIST_KEYWORDS = {
66
81
  }
67
82
 
68
83
  # YOLO 설정
69
- YOLO_MODEL_NAME = 'license_plate_detector.pt' # 번호판 전용 학습 모델
70
- YOLO_CONFIDENCE = 0.5 # 오탐지 방지를 위해 신뢰도 상향
84
+ YOLO_CONFIDENCE = 0.5 # 오탐지 방지를 위해 신뢰도 상향
71
85
 
72
86
  # 번호판 정규식 패턴 (한국 자동차 번호판 중심)
73
87
  LICENSE_PLATE_PATTERNS = [
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ytcollector
3
- Version: 1.2.0
3
+ Version: 1.2.3
4
4
  Summary: YouTube 콘텐츠 수집기 - 얼굴, 번호판, 타투, 텍스트 감지
5
5
  Author: YTCollector Team
6
6
  License: MIT
@@ -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=wqS9bxoUePBU1f5N_KuR8ykGUNskERNfARw86B0ASiE,3013
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.2.0.dist-info/METADATA,sha256=cPBAfrjm7v5tlEOGPGP3Fl3GX1q7mvDZgGKxxTXy5vk,7319
9
- ytcollector-1.2.0.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
10
- ytcollector-1.2.0.dist-info/entry_points.txt,sha256=waiVuSJJYt-6_DAal-T4JkHgejo7wKYLdKrEI7tZ-ms,127
11
- ytcollector-1.2.0.dist-info/top_level.txt,sha256=wozNyCUm0eMOm-9U81yTql6oGaM2O5rWVBXDb93zzyQ,12
12
- ytcollector-1.2.0.dist-info/RECORD,,