81 lines
2.3 KiB
Python
81 lines
2.3 KiB
Python
import sys
|
|
|
|
with open('youtube_tab_to_pdf.py', 'r', encoding='utf-8') as f:
|
|
lines = f.readlines()
|
|
|
|
new_lines = []
|
|
skip = False
|
|
|
|
import_added = False
|
|
|
|
for line in lines:
|
|
if line.startswith('import cv2') and not import_added:
|
|
new_lines.append(line)
|
|
new_lines.append('from video_cv_tracker import TemporalTracker\n')
|
|
import_added = True
|
|
continue
|
|
|
|
if line.startswith('def extract_unique_scroll(frames:'):
|
|
skip = True
|
|
new_lines.append('''def extract_unique_scroll(frames: List[np.ndarray], threshold: float = SIMILARITY_THRESHOLD) -> List[np.ndarray]:
|
|
print(f"[4/5] 스크롤형 Tab 시계열 추적 추출 중...")
|
|
|
|
strip_tops, strip_bottoms = [], []
|
|
for frame in frames[:50]:
|
|
strip = _find_white_tab_strip(frame)
|
|
if strip:
|
|
strip_tops.append(strip[0])
|
|
strip_bottoms.append(strip[1])
|
|
|
|
if not strip_tops:
|
|
return []
|
|
|
|
median_top = int(np.median(strip_tops))
|
|
median_bottom = int(np.median(strip_bottoms))
|
|
|
|
tracker = TemporalTracker()
|
|
|
|
for frame in frames:
|
|
h = frame.shape[0]
|
|
tab_crop = frame[max(0, median_top):min(h, median_bottom), :]
|
|
if not _has_tab_content(tab_crop):
|
|
continue
|
|
tracker.process_frame(tab_crop)
|
|
|
|
panorama = tracker.get_final_panorama()
|
|
if panorama is None:
|
|
return []
|
|
|
|
print(f" -> 생성된 파노라마 길이: {panorama.shape[1]}px")
|
|
|
|
chunk_width = 1280
|
|
final_chunks = []
|
|
|
|
w = panorama.shape[1]
|
|
start_x = 0
|
|
|
|
while start_x < w:
|
|
chunk = panorama[:, start_x:min(w, start_x + chunk_width)]
|
|
if chunk.shape[1] < chunk_width:
|
|
pad = np.full((chunk.shape[0], chunk_width - chunk.shape[1], 3), 255, dtype=np.uint8)
|
|
chunk = np.hstack([chunk, pad])
|
|
final_chunks.append(chunk)
|
|
start_x += chunk_width
|
|
|
|
print(f" -> A4 분할 컷: {len(final_chunks)}개")
|
|
return final_chunks
|
|
|
|
''')
|
|
continue
|
|
|
|
if skip and line.startswith('def extract_unique_overlay('):
|
|
skip = False
|
|
|
|
if not skip:
|
|
new_lines.append(line)
|
|
|
|
with open('youtube_tab_to_pdf.py', 'w', encoding='utf-8') as f:
|
|
f.writelines(new_lines)
|
|
|
|
print("Patched youtube_tab_to_pdf.py successfully.")
|