Skip to content

Commit 794176e

Browse files
committed
优化m4s命名
1 parent ec26127 commit 794176e

File tree

2 files changed

+18
-3
lines changed

2 files changed

+18
-3
lines changed

src/N_m3u8DL-RE.Parser/Extractor/DASHExtractor2.cs

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -337,9 +337,12 @@ public async Task<List<StreamSpec>> ExtractStreamsAsync(string rawText)
337337
var _repeatCount = Convert.ToInt64(_repeatCountStr);
338338
varDic[DASHTags.TemplateTime] = currentTime;
339339
varDic[DASHTags.TemplateNumber] = segNumber++;
340-
var mediaUrl = ParserUtil.ReplaceVars(ParserUtil.CombineURL(segBaseUrl, media!), varDic);
340+
var oriUrl = ParserUtil.CombineURL(segBaseUrl, media!);
341+
var mediaUrl = ParserUtil.ReplaceVars(oriUrl, varDic);
341342
MediaSegment mediaSegment = new();
342343
mediaSegment.Url = mediaUrl;
344+
if (oriUrl.Contains(DASHTags.TemplateTime))
345+
mediaSegment.NameFromVar = currentTime.ToString();
343346
mediaSegment.Duration = _duration / (double)timescale;
344347
mediaSegment.Index = segIndex++;
345348
streamSpec.Playlist.MediaParts[0].MediaSegments.Add(mediaSegment);
@@ -354,10 +357,13 @@ public async Task<List<StreamSpec>> ExtractStreamsAsync(string rawText)
354357
MediaSegment _mediaSegment = new();
355358
varDic[DASHTags.TemplateTime] = currentTime;
356359
varDic[DASHTags.TemplateNumber] = segNumber++;
357-
var _mediaUrl = ParserUtil.ReplaceVars(ParserUtil.CombineURL(segBaseUrl, media!), varDic);
360+
var _oriUrl = ParserUtil.CombineURL(segBaseUrl, media!);
361+
var _mediaUrl = ParserUtil.ReplaceVars(_oriUrl, varDic);
358362
_mediaSegment.Url = _mediaUrl;
359363
_mediaSegment.Index = segIndex++;
360364
_mediaSegment.Duration = _duration / (double)timescale;
365+
if (_oriUrl.Contains(DASHTags.TemplateTime))
366+
_mediaSegment.NameFromVar = currentTime.ToString();
361367
streamSpec.Playlist.MediaParts[0].MediaSegments.Add(_mediaSegment);
362368
}
363369
currentTime += _duration;
@@ -387,9 +393,12 @@ public async Task<List<StreamSpec>> ExtractStreamsAsync(string rawText)
387393
for (long index = startNumber, segIndex = 0; index < startNumber + totalNumber; index++, segIndex++)
388394
{
389395
varDic[DASHTags.TemplateNumber] = index;
390-
var mediaUrl = ParserUtil.ReplaceVars(ParserUtil.CombineURL(segBaseUrl, media!), varDic);
396+
var oriUrl = ParserUtil.CombineURL(segBaseUrl, media!);
397+
var mediaUrl = ParserUtil.ReplaceVars(oriUrl, varDic);
391398
MediaSegment mediaSegment = new();
392399
mediaSegment.Url = mediaUrl;
400+
if (oriUrl.Contains(DASHTags.TemplateNumber))
401+
mediaSegment.NameFromVar = index.ToString();
393402
mediaSegment.Index = isLive ? index : segIndex; //直播直接用startNumber
394403
mediaSegment.Duration = duration / (double)timescale;
395404
streamSpec.Playlist.MediaParts[0].MediaSegments.Add(mediaSegment);

src/N_m3u8DL-RE/DownloadManager/SimpleLiveRecordManager2.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,13 +98,19 @@ private long GetUnixTimestamp(DateTime dateTime)
9898
/// <returns></returns>
9999
private string GetSegmentName(MediaSegment segment, bool allHasDatetime, bool allSamePath)
100100
{
101+
if (!string.IsNullOrEmpty(segment.NameFromVar))
102+
{
103+
return segment.NameFromVar;
104+
}
105+
101106
bool hls = StreamExtractor.ExtractorType == ExtractorType.HLS;
102107

103108
string name = OtherUtil.GetFileNameFromInput(segment.Url, false);
104109
if (allSamePath)
105110
{
106111
name = OtherUtil.GetValidFileName(segment.Url.Split('?').Last(), "_");
107112
}
113+
108114
if (hls && allHasDatetime)
109115
{
110116
name = GetUnixTimestamp(segment.DateTime!.Value).ToString();

0 commit comments

Comments
 (0)