YouTube 콘텐츠 수집기 - 얼굴, 번호판, 타투, 텍스트 감지
Project description
YouTube 콘텐츠 수집기
유튜브에서 특정 카테고리(얼굴, 번호판, 타투, 텍스트)의 영상을 자동으로 검색, 다운로드, 분석하여 수집하는 CLI 도구입니다.
설치
필수 패키지
pip install yt-dlp
분석 기능용 패키지 (권장 - v1.2.5+)
분석 기능을 원활하게 사용하려면 아래 패키지들이 필요합니다. GPU(CUDA)가 설치된 경우 자동으로 가속이 활성화됩니다.
pip install opencv-python easyocr numpy ultralytics
사용법
기본 실행
ytcollector
기본값: 얼굴 카테고리 5개, 최대 90분 영상 수집 후 3분 트리밍
옵션
| 옵션 | 설명 | 기본값 |
|---|---|---|
-c, --categories |
수집할 카테고리 | face |
-n, --count |
카테고리당 다운로드 수 | 5 |
-d, --duration |
최대 영상 검색 길이(분) | 90 |
-o, --output |
저장 경로 | . (현재 폴더) |
--fast |
고속 모드 (병렬 다운로드) | 비활성화 |
-w, --workers |
병렬 다운로드 수 | 3 |
--proxy |
프록시 주소 | 없음 |
카테고리 종류
| 카테고리 | 설명 | 검색 소스 |
|---|---|---|
face |
얼굴/인물 | SBS/MBC/tvN/JTBC 인터뷰, 기자회견 등 |
license_plate |
자동차 번호판 | SBS 드라마 자동차/추격/주차장 씬 등 |
tattoo |
타투/문신 | 타투 시술, 타투이스트 작업 영상 |
text |
텍스트/자막 | SBS/tvN/JTBC/MBC 예능, 유튜버 자막 편집 등 |
예시
단일 카테고리
# 얼굴 영상 10개 수집
ytcollector -c face -n 10
# 번호판 영상 수집 (최대 90분 검색)
ytcollector -c license_plate -d 90
# 타투 영상 수집
ytcollector -c tattoo -n 5
여러 카테고리
# 얼굴과 텍스트 각 10개씩
ytcollector -c face text -n 10
# 모든 카테고리 수집
ytcollector -c face license_plate tattoo text -n 5
고속 모드
# 병렬 다운로드 (기본 3개 동시)
ytcollector -c face -n 10 --fast
# 5개 동시 다운로드
ytcollector -c face -n 10 --fast -w 5
저장 경로 지정
ytcollector -c face -o /path/to/save
프록시 사용
ytcollector -c face --proxy http://proxy.server:8080
SBS Dataset 구축 (URL 리스트 기반)
URL 리스트를 기반으로 영상을 수집하고 특정 시점을 기준으로 자동으로 클리핑(3분 미만)하는 기능입니다. (v1.1.6에서 ROI 엔진 최적화 적용)
실행 방법
ytc-dataset youtube_url.txt
youtube_url.txt 형식
URL, MM:SS, TaskName 형식으로 작성합니다.
https://www.youtube.com/watch?v=aqz-KE-bpKQ, 00:10, sample_task
상세 옵션
| 옵션 | 설명 | 기본값 |
|---|---|---|
file |
URL 리스트 파일 경로 | (필수) |
-o, --output |
저장 루트 경로 | . |
특징
- 자동 트리밍: 지정된 MM:SS 시점 기준 $\pm$ 1.5분(총 3분)을 자동으로 자릅니다.
- 멀티 클립 추출 (v1.2.5): 영상이 10분 초과인 경우, 한 영상에서 타겟이 여러 번 발견되면 겹치지 않는 3분 단위 클립들을 최대 3개까지 추출합니다. (10분 이하 영상은 1개만 추출)
- 중복 방지: 인덱스 기반으로 이미 다운로드/클리핑된 영상은 건너뜁니다.
- 저장 구조:
./video/(원본),./video_clips/(클립) 폴더가 생성됩니다.
출력 폴더 구조
저장경로/
├── 얼굴/ # 얼굴 감지된 영상
├── 번호판/ # 번호판 감지된 영상
├── 번호판_미감지/ # 번호판 미감지 (수동 확인용)
├── 타투/ # 타투 감지된 영상
├── 텍스트/ # 텍스트 감지된 영상
├── .archive.txt # 기본 다운로드 기록
└── youtube_url_*.txt # 카테고리별 성공 로그 (v1.1.5+ 중복 체크에 활용)
파일 구조
260202_test/
├── main.py # CLI 진입점
├── config.py # 설정 (검색어, UA 등)
├── analyzer.py # 영상 분석 (OpenCV, EasyOCR)
├── downloader.py # 다운로드 로직
└── README.md # 사용설명서
분석 기능
| 감지 항목 | 사용 기술 | 설명 |
|---|---|---|
| 얼굴 | OpenCV Haar Cascade | 정면 얼굴 감지 |
| 텍스트 | EasyOCR | 한국어/영어 문자 인식 |
| 번호판 | YOLOv8 전용 모델 + OCR | v1.1.9: 번호판 전용 학습 모델 + 한국 번호판 패턴 매칭 |
| 타투 | OpenCV HSV 분석 | 피부 영역 내 잉크 패턴 감지 |
주요 최적화 (v1.1.5~1.2.5)
- 멀티 클립 추출 (v1.2.5): 10분 초과 영상 내 다수 지점 감지 시 겹치지 않는 3분 클립 최대 3개 저장 (파일명:
_1,_2,_3접미사) - 최대 길이 확장 (v1.2.5): 수집 가능한 영상 길이를 기본 3분 → 90분으로 확장하여 더 많은 소스 확보
- 자막 영역 필터링 (v1.2.0): 화면 하단 60%~95% 영역만 자막으로 인식, 상단 로고/워터마크 제외
- 번호판 전용 모델 (v1.1.9): YOLO-World → 번호판 전용 학습 모델로 교체 (감지율 향상, 모델 크기 27MB→6MB)
- 오탐지 방지: YOLO 감지 + OCR 패턴 매칭 둘 다 만족해야 번호판 판정, ROI 크기 필터링 추가
- ROI 기반 감지: 전체 화면이 아닌 YOLO가 지정한 영역만 OCR하여 속도와 정확도 향상
- GPU 가속 지원: CUDA 사용 가능 시 YOLO 및 OCR 자동 가속
- 로그 기반 중복 방지:
youtube_url_*.txt기록을 참조하여 중복 분석 방지
주의사항
- 영상은 다운로드 후 분석하여 해당 카테고리가 감지된 경우에만 저장됩니다
- 번호판 카테고리는 미감지 영상도 별도 폴더에 보관됩니다 (수동 확인용)
- 이미 다운로드한 영상은 자동으로 스킵됩니다 (
.archive.txt기록) - 비공개/삭제/저작권 영상은 자동 스킵됩니다
고속 모드 vs 일반 모드
| 항목 | 일반 모드 | 고속 모드 |
|---|---|---|
| 다운로드 | 순차 | 병렬 |
| 딜레이 | 0.5~1.5초 | 없음 |
| 재시도 | 3회 | 1회 |
| 타임아웃 | 30초 | 10초 |
고속 모드는 빠르지만 YouTube 차단 위험이 높아질 수 있습니다.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ytcollector-1.2.7.tar.gz.
File metadata
- Download URL: ytcollector-1.2.7.tar.gz
- Upload date:
- Size: 5.7 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9a0f305b978cf043f91108ff0c76be521d8168dcca6668ede92d33fb104cf285
|
|
| MD5 |
4a73b324a2b6a4f2fcbb6ceb458619fc
|
|
| BLAKE2b-256 |
3b743bb7bd69583560be5be22747ad2f7f36267de3cbcdc73f2380aeb2c35bbc
|
File details
Details for the file ytcollector-1.2.7-py3-none-any.whl.
File metadata
- Download URL: ytcollector-1.2.7-py3-none-any.whl
- Upload date:
- Size: 5.7 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
920cf75e058f84ded72dbc2557ec3769058aa450df7198a8a7d7a10eadb13b47
|
|
| MD5 |
e91fcd3a96e3f23a8399314fb8fae244
|
|
| BLAKE2b-256 |
878c39478dc6371d39952adac7e58c5771d234e3255fbef21ca218515c34b7cb
|