mirror of
https://github.com/NohamR/N_m3u8DL-RE.git
synced 2025-05-24 14:21:58 +00:00
44 lines
1.5 KiB
C#
44 lines
1.5 KiB
C#
using N_m3u8DL_RE.Common.Enum;
|
|
using N_m3u8DL_RE.Common.Log;
|
|
using N_m3u8DL_RE.Parser.Config;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Text.RegularExpressions;
|
|
using System.Threading.Tasks;
|
|
using System.Web;
|
|
|
|
namespace N_m3u8DL_RE.Parser.Processor
|
|
{
|
|
public class DefaultUrlProcessor : UrlProcessor
|
|
{
|
|
public override bool CanProcess(ExtractorType extractorType, string oriUrl, ParserConfig paserConfig) => paserConfig.AppendUrlParams;
|
|
|
|
public override string Process(string oriUrl, ParserConfig paserConfig)
|
|
{
|
|
var uriFromConfig = new Uri(paserConfig.Url);
|
|
var uriFromConfigQuery = HttpUtility.ParseQueryString(uriFromConfig.Query);
|
|
|
|
var oldUri = new Uri(oriUrl);
|
|
var newQuery = HttpUtility.ParseQueryString(oldUri.Query);
|
|
foreach (var item in uriFromConfigQuery.AllKeys)
|
|
{
|
|
if (newQuery.AllKeys.Contains(item))
|
|
newQuery.Set(item, uriFromConfigQuery.Get(item));
|
|
else
|
|
newQuery.Add(item, uriFromConfigQuery.Get(item));
|
|
}
|
|
|
|
if (!string.IsNullOrEmpty(newQuery.ToString()))
|
|
{
|
|
Logger.Debug("Before: " + oriUrl);
|
|
oriUrl = (oldUri.GetLeftPart(UriPartial.Path) + "?" + newQuery.ToString()).TrimEnd('?');
|
|
Logger.Debug("After: " + oriUrl);
|
|
}
|
|
|
|
return oriUrl;
|
|
}
|
|
}
|
|
}
|