ytcollector 1.0.1__py3-none-any.whl → 1.0.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 +1 -1
- ytcollector/config.py +1 -1
- ytcollector/downloader.py +9 -0
- {ytcollector-1.0.1.dist-info → ytcollector-1.0.3.dist-info}/METADATA +14 -13
- ytcollector-1.0.3.dist-info/RECORD +12 -0
- ytcollector-1.0.1.dist-info/RECORD +0 -12
- {ytcollector-1.0.1.dist-info → ytcollector-1.0.3.dist-info}/WHEEL +0 -0
- {ytcollector-1.0.1.dist-info → ytcollector-1.0.3.dist-info}/entry_points.txt +0 -0
- {ytcollector-1.0.1.dist-info → ytcollector-1.0.3.dist-info}/top_level.txt +0 -0
ytcollector/__init__.py
CHANGED
ytcollector/config.py
CHANGED
|
@@ -23,7 +23,7 @@ def get_paths(base_dir: Path = None):
|
|
|
23
23
|
|
|
24
24
|
# 사용자 지정 출력 경로 (네트워크 드라이브 등)
|
|
25
25
|
# macOS에서는 "/Volumes/Data/..." 등으로 마운트된 경로를 사용해야 함
|
|
26
|
-
NAS_PATH_WINDOWS = r"\\
|
|
26
|
+
NAS_PATH_WINDOWS = r"\\NAS_SERVER_IP\Data\Private Dataset\SBS_De-Identification_YouTube"
|
|
27
27
|
NAS_PATH_MAC = "/Volumes/Data/Private Dataset/SBS_De-Identification_YouTube"
|
|
28
28
|
|
|
29
29
|
if platform.system() == 'Windows':
|
ytcollector/downloader.py
CHANGED
|
@@ -85,6 +85,15 @@ class VideoDownloader:
|
|
|
85
85
|
'download_ranges': download_range_func(None, [(start_sec, end_sec)]),
|
|
86
86
|
'force_keyframes_at_cuts': True,
|
|
87
87
|
}
|
|
88
|
+
|
|
89
|
+
# Use ffmpeg from imageio-ffmpeg
|
|
90
|
+
try:
|
|
91
|
+
import imageio_ffmpeg
|
|
92
|
+
ffmpeg_path = imageio_ffmpeg.get_ffmpeg_exe()
|
|
93
|
+
ydl_opts['ffmpeg_location'] = ffmpeg_path
|
|
94
|
+
logger.debug(f"Using ffmpeg from: {ffmpeg_path}")
|
|
95
|
+
except ImportError:
|
|
96
|
+
logger.warning("imageio-ffmpeg not found, relying on system ffmpeg")
|
|
88
97
|
|
|
89
98
|
logger.info(f"Downloading segment [{start_sec}s - {end_sec}s] from: {url}")
|
|
90
99
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ytcollector
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.3
|
|
4
4
|
Summary: SBS 데이터셋 수집기
|
|
5
5
|
Requires-Python: >=3.9
|
|
6
6
|
Description-Content-Type: text/markdown
|
|
@@ -8,6 +8,7 @@ Requires-Dist: yt-dlp>=2024.1.0
|
|
|
8
8
|
Requires-Dist: ultralytics>=8.1.0
|
|
9
9
|
Requires-Dist: opencv-python>=4.9.0
|
|
10
10
|
Requires-Dist: tqdm>=4.66.0
|
|
11
|
+
Requires-Dist: imageio-ffmpeg>=0.4.9
|
|
11
12
|
|
|
12
13
|
# Downloader: SBS 데이터셋 수집기
|
|
13
14
|
|
|
@@ -17,7 +18,7 @@ YouTube 영상에서 얼굴, 자동차 번호판, 타투, 텍스트 자막을
|
|
|
17
18
|
|
|
18
19
|
**필수 요구사항:**
|
|
19
20
|
- Python 3.8 이상
|
|
20
|
-
- FFmpeg (Mac: `brew install ffmpeg`)
|
|
21
|
+
- FFmpeg (Mac: `brew install ffmpeg`) **👈 필수 설치! (영상 자르기에 필요)**
|
|
21
22
|
|
|
22
23
|
**설치:**
|
|
23
24
|
```bash
|
|
@@ -28,7 +29,7 @@ pip install -e .
|
|
|
28
29
|
**프로젝트 초기화 (최초 1회):**
|
|
29
30
|
필요한 폴더(`urls/`, `video/`)를 생성합니다.
|
|
30
31
|
```bash
|
|
31
|
-
|
|
32
|
+
ytcollector init
|
|
32
33
|
```
|
|
33
34
|
|
|
34
35
|
---
|
|
@@ -54,13 +55,13 @@ face,https://www.youtube.com/watch?v=VIDEO_ID,2,30,설명
|
|
|
54
55
|
### 기본 다운로드 (순차 실행)
|
|
55
56
|
안정적으로 하나씩 다운로드하고 검증합니다.
|
|
56
57
|
```bash
|
|
57
|
-
|
|
58
|
+
ytcollector download --task face
|
|
58
59
|
```
|
|
59
60
|
|
|
60
61
|
### 🚀 Fast 모드 (병렬 다운로드)
|
|
61
62
|
대량의 영상을 빠르게 수집할 때 사용합니다. (4개 스레드 동시 실행)
|
|
62
63
|
```bash
|
|
63
|
-
|
|
64
|
+
ytcollector download --task face --fast
|
|
64
65
|
```
|
|
65
66
|
* **방화벽 우회**: 랜덤 딜레이(1~3초)가 적용되어 차단을 방지합니다.
|
|
66
67
|
* **에러 무시**: 중간에 에러가 나도 멈추지 않고 다음 영상으로 넘어갑니다.
|
|
@@ -73,13 +74,13 @@ downloader download --task face --fast
|
|
|
73
74
|
|
|
74
75
|
## 4. NAS / 네트워크 저장 설정
|
|
75
76
|
|
|
76
|
-
영상을 로컬이 아닌 NAS
|
|
77
|
+
영상을 로컬이 아닌 NAS에 저장하려면 설정을 수정하세요.
|
|
77
78
|
OS(Windows/Mac)를 자동 감지하여 적절한 경로를 사용합니다.
|
|
78
79
|
|
|
79
|
-
**설정 파일 수정:** `
|
|
80
|
+
**설정 파일 수정:** `ytcollector/config.py`
|
|
80
81
|
```python
|
|
81
82
|
# Windows 예시
|
|
82
|
-
NAS_PATH_WINDOWS = r"\\
|
|
83
|
+
NAS_PATH_WINDOWS = r"\\NAS_SERVER_IP\Data\Private Dataset\..."
|
|
83
84
|
|
|
84
85
|
# Mac 예시 (/Volumes로 마운트된 경로 확인 필요)
|
|
85
86
|
NAS_PATH_MAC = "/Volumes/Data/Private Dataset/..."
|
|
@@ -91,11 +92,11 @@ NAS_PATH_MAC = "/Volumes/Data/Private Dataset/..."
|
|
|
91
92
|
|
|
92
93
|
| 명령어 | 설명 | 예시 |
|
|
93
94
|
|--------|------|------|
|
|
94
|
-
| `init` | 프로젝트 초기화 | `
|
|
95
|
-
| `download` | 텍스트 파일 목록 대량 다운로드 | `
|
|
96
|
-
| `download-single` | URL 1개만 테스트 다운로드 | `
|
|
97
|
-
| `verify` | 수동 YOLO 검증 (기존 파일) | `
|
|
98
|
-
| `list-tasks` | 지원하는 태스크 목록 확인 | `
|
|
95
|
+
| `init` | 프로젝트 초기화 | `ytcollector init` |
|
|
96
|
+
| `download` | 텍스트 파일 목록 대량 다운로드 | `ytcollector download --task face --fast` |
|
|
97
|
+
| `download-single` | URL 1개만 테스트 다운로드 | `ytcollector download-single --task face ...` |
|
|
98
|
+
| `verify` | 수동 YOLO 검증 (기존 파일) | `ytcollector verify --task face` |
|
|
99
|
+
| `list-tasks` | 지원하는 태스크 목록 확인 | `ytcollector list-tasks` |
|
|
99
100
|
|
|
100
101
|
## 6. 문제 해결
|
|
101
102
|
* **검증 실패가 너무 많음**: `config.py`에서 `CONFIDENCE_THRESHOLD` (기본 0.25) 값을 낮춰보세요.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
config/settings.py,sha256=RcK41kaUC0zam5SsdXfb7u_qjM_TlJDa0a8hC_MGacQ,1197
|
|
2
|
+
ytcollector/__init__.py,sha256=_8OQMfsVmKuF_bE2yzu9G63znAORYbljmSH_hLRiXS4,365
|
|
3
|
+
ytcollector/cli.py,sha256=lhWIraLdPIXS1c35jakPULGuSwzslNA3sOnY8pOWfuM,7570
|
|
4
|
+
ytcollector/config.py,sha256=FrRXle52EP-0OExt4QFuwaPps7ewXe9FC9oobSd1ZWE,2393
|
|
5
|
+
ytcollector/downloader.py,sha256=2pZFFU2mcdELNIH2VC14Ndoq6LYx8uL5ENhQ_kLf5TU,13556
|
|
6
|
+
ytcollector/utils.py,sha256=gInDx6adV-SfQ2SH5_i8w1gvYL-Nsmz1e1W__gCdVH8,4654
|
|
7
|
+
ytcollector/verifier.py,sha256=8Nn3b6fTQYxCGPt01kJMDSZ2hy8gk54deSayOpBuY48,6286
|
|
8
|
+
ytcollector-1.0.3.dist-info/METADATA,sha256=8bOkHNTS2wBwpToauXWK5uqS8dPPWKYrjO4YFOQi0AU,3543
|
|
9
|
+
ytcollector-1.0.3.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
10
|
+
ytcollector-1.0.3.dist-info/entry_points.txt,sha256=PoanZbxogGnV4tLcZZkla0Yh7OvPtqcukDYr563w5RA,53
|
|
11
|
+
ytcollector-1.0.3.dist-info/top_level.txt,sha256=TVfBZHJgYRfSSTgLJELvOoMA55qR8kWuxtiIaItwzIQ,19
|
|
12
|
+
ytcollector-1.0.3.dist-info/RECORD,,
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
config/settings.py,sha256=RcK41kaUC0zam5SsdXfb7u_qjM_TlJDa0a8hC_MGacQ,1197
|
|
2
|
-
ytcollector/__init__.py,sha256=EKsxEpFheA3CPDMu5by4zxbd0DdLlus_t8Ac7quzxG4,365
|
|
3
|
-
ytcollector/cli.py,sha256=lhWIraLdPIXS1c35jakPULGuSwzslNA3sOnY8pOWfuM,7570
|
|
4
|
-
ytcollector/config.py,sha256=QAZ2USv3jrXA1xk1SOyTpbig7SIA9ZhI4ObI7qRX1pw,2395
|
|
5
|
-
ytcollector/downloader.py,sha256=gFw8tYkpiTK3aJibto15jdWM3UsdQSLRKuIK5dlEFck,13184
|
|
6
|
-
ytcollector/utils.py,sha256=gInDx6adV-SfQ2SH5_i8w1gvYL-Nsmz1e1W__gCdVH8,4654
|
|
7
|
-
ytcollector/verifier.py,sha256=8Nn3b6fTQYxCGPt01kJMDSZ2hy8gk54deSayOpBuY48,6286
|
|
8
|
-
ytcollector-1.0.1.dist-info/METADATA,sha256=nZI0a3Y0bonUmd4pazk2Ys3n7uJwGB4NtHD9bGrzPAU,3470
|
|
9
|
-
ytcollector-1.0.1.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
10
|
-
ytcollector-1.0.1.dist-info/entry_points.txt,sha256=PoanZbxogGnV4tLcZZkla0Yh7OvPtqcukDYr563w5RA,53
|
|
11
|
-
ytcollector-1.0.1.dist-info/top_level.txt,sha256=TVfBZHJgYRfSSTgLJELvOoMA55qR8kWuxtiIaItwzIQ,19
|
|
12
|
-
ytcollector-1.0.1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|