diff --git a/src/Podsync/Controllers/DownloadController.cs b/src/Podsync/Controllers/DownloadController.cs new file mode 100644 index 0000000..7163de9 --- /dev/null +++ b/src/Podsync/Controllers/DownloadController.cs @@ -0,0 +1,35 @@ +using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc; +using Podsync.Services.Links; +using Podsync.Services.Resolver; + +namespace Podsync.Controllers +{ + [Route("download")] + public class DownloadController : Controller + { + private readonly IResolverService _resolverService; + private readonly ILinkService _linkService; + + public DownloadController(IResolverService resolverService, ILinkService linkService) + { + _resolverService = resolverService; + _linkService = linkService; + } + + [Route("{provider}/{videoId}.mp4")] + public async Task Download(Provider provider, string videoId) + { + var url = _linkService.Make(new LinkInfo + { + Provider = provider, + LinkType = LinkType.Video, + Id = videoId + }); + + var redirectUrl = await _resolverService.Resolve(url); + + return Redirect(redirectUrl.ToString()); + } + } +} \ No newline at end of file diff --git a/src/Podsync/Services/Resolver/YtdlWrapper.cs b/src/Podsync/Services/Resolver/YtdlWrapper.cs index b6f056b..716674e 100644 --- a/src/Podsync/Services/Resolver/YtdlWrapper.cs +++ b/src/Podsync/Services/Resolver/YtdlWrapper.cs @@ -50,9 +50,9 @@ namespace Podsync.Services.Resolver switch (resolveType) { case ResolveType.VideoHigh: - return "bestvideo"; + return "best"; case ResolveType.VideoLow: - return "worstvideo"; + return "worst"; case ResolveType.AudioHigh: return "bestaudio"; case ResolveType.AudioLow: diff --git a/src/Podsync/Startup.cs b/src/Podsync/Startup.cs index 24749cc..63781ff 100644 --- a/src/Podsync/Startup.cs +++ b/src/Podsync/Startup.cs @@ -5,6 +5,7 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Podsync.Services; using Podsync.Services.Links; +using Podsync.Services.Resolver; using Podsync.Services.Videos.YouTube; namespace Podsync @@ -15,8 +16,8 @@ namespace Podsync { var builder = new ConfigurationBuilder() .SetBasePath(env.ContentRootPath) - .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) - .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true) + .AddJsonFile("appsettings.json", true, true) + .AddJsonFile($"appsettings.{env.EnvironmentName}.json", true) .AddEnvironmentVariables(); if (env.IsDevelopment()) @@ -37,6 +38,7 @@ namespace Podsync // Register core services services.AddSingleton(); services.AddSingleton(); + services.AddSingleton(); // Add framework services. services.AddMvc();