mirror of https://github.com/yt-dlp/yt-dlp.git
[ModifyChapters] Do not mutate original chapters (#1322)
Closes #1295 Authored by: nihil-admirari
This commit is contained in:
parent
1e520b5535
commit
e619d8a752
|
@ -31,8 +31,10 @@ class ModifyChaptersPP(FFmpegPostProcessor):
|
||||||
|
|
||||||
@PostProcessor._restrict_to(images=False)
|
@PostProcessor._restrict_to(images=False)
|
||||||
def run(self, info):
|
def run(self, info):
|
||||||
|
# Chapters must be preserved intact when downloading multiple formats of the same video.
|
||||||
chapters, sponsor_chapters = self._mark_chapters_to_remove(
|
chapters, sponsor_chapters = self._mark_chapters_to_remove(
|
||||||
info.get('chapters') or [], info.get('sponsorblock_chapters') or [])
|
copy.deepcopy(info.get('chapters')) or [],
|
||||||
|
copy.deepcopy(info.get('sponsorblock_chapters')) or [])
|
||||||
if not chapters and not sponsor_chapters:
|
if not chapters and not sponsor_chapters:
|
||||||
return [], info
|
return [], info
|
||||||
|
|
||||||
|
@ -126,7 +128,7 @@ class ModifyChaptersPP(FFmpegPostProcessor):
|
||||||
cuts = []
|
cuts = []
|
||||||
|
|
||||||
def append_cut(c):
|
def append_cut(c):
|
||||||
assert 'remove' in c
|
assert 'remove' in c, 'Not a cut is appended to cuts'
|
||||||
last_to_cut = cuts[-1] if cuts else None
|
last_to_cut = cuts[-1] if cuts else None
|
||||||
if last_to_cut and last_to_cut['end_time'] >= c['start_time']:
|
if last_to_cut and last_to_cut['end_time'] >= c['start_time']:
|
||||||
last_to_cut['end_time'] = max(last_to_cut['end_time'], c['end_time'])
|
last_to_cut['end_time'] = max(last_to_cut['end_time'], c['end_time'])
|
||||||
|
@ -154,7 +156,7 @@ class ModifyChaptersPP(FFmpegPostProcessor):
|
||||||
new_chapters = []
|
new_chapters = []
|
||||||
|
|
||||||
def append_chapter(c):
|
def append_chapter(c):
|
||||||
assert 'remove' not in c
|
assert 'remove' not in c, 'Cut is appended to chapters'
|
||||||
length = c['end_time'] - c['start_time'] - excess_duration(c)
|
length = c['end_time'] - c['start_time'] - excess_duration(c)
|
||||||
# Chapter is completely covered by cuts or sponsors.
|
# Chapter is completely covered by cuts or sponsors.
|
||||||
if length <= 0:
|
if length <= 0:
|
||||||
|
@ -237,7 +239,7 @@ class ModifyChaptersPP(FFmpegPostProcessor):
|
||||||
heapq.heappush(chapters, (c['start_time'], i, c))
|
heapq.heappush(chapters, (c['start_time'], i, c))
|
||||||
# (normal, sponsor) and (sponsor, sponsor)
|
# (normal, sponsor) and (sponsor, sponsor)
|
||||||
else:
|
else:
|
||||||
assert '_categories' in c
|
assert '_categories' in c, 'Normal chapters overlap'
|
||||||
cur_chapter['_was_cut'] = True
|
cur_chapter['_was_cut'] = True
|
||||||
c['_was_cut'] = True
|
c['_was_cut'] = True
|
||||||
# Push the part after the sponsor to PQ.
|
# Push the part after the sponsor to PQ.
|
||||||
|
|
Loading…
Reference in New Issue