89 lines
3.4 KiB
C#
89 lines
3.4 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Net;
|
|
using System.Threading.Tasks;
|
|
using CommandLine;
|
|
using CommandLine.Text;
|
|
using System.IO;
|
|
|
|
namespace TaskRunner
|
|
{
|
|
public class Options
|
|
{
|
|
[Option("server", HelpText="Task source server", Required = true)]
|
|
public string server { get; set; }
|
|
|
|
[HelpOption]
|
|
public string GetUsage()
|
|
{
|
|
return HelpText.AutoBuild(this, (HelpText current) => HelpText.DefaultParsingErrorsHandler(this, current));
|
|
}
|
|
}
|
|
public class Program
|
|
{
|
|
public static int Main(string[] args)
|
|
{
|
|
MainAsync(args).Wait();
|
|
return 0;
|
|
}
|
|
|
|
static async Task MainAsync(string[] args)
|
|
{
|
|
var options = new Options();
|
|
if (Parser.Default.ParseArguments(args, options))
|
|
{
|
|
Console.WriteLine($"Waiting for tasks from server: {options.server}");
|
|
var server = new ServerApi(new Uri(options.server));
|
|
try
|
|
{
|
|
var taskManager = new TaskManager();
|
|
var task = await server.GetTask();
|
|
var src = await server.GetStream("asdf", task.SourceStreamId);
|
|
var dest = await server.GetStream("asdf", task.DestinationStreamId);
|
|
Console.WriteLine($"Got task {task.TaskId}");
|
|
Console.WriteLine($"Source: {src.MimeType}");
|
|
Console.WriteLine($"Dest: {dest.MimeType}");
|
|
var mp4Parts = new List<string>();
|
|
foreach (var strUri in src.Uris)
|
|
{
|
|
var uri = new Uri(strUri["Uri"]);
|
|
var fs = new FileStorage();// @"\Users\Arti.Zirk\Documents\files");
|
|
Console.WriteLine($"From location: {uri}");
|
|
var srcSwf = await fs.DownloadFile(uri);
|
|
Console.WriteLine($"Local scrSwf: {srcSwf}");
|
|
var justName = Path.GetFileNameWithoutExtension(srcSwf);
|
|
var destSwf = $"/tmp/{justName}.raw";
|
|
var destMp4 = $"/tmp/{justName}.mp4";
|
|
Console.WriteLine("RunGnash");
|
|
await taskManager.RunGnash(srcSwf, destSwf);
|
|
File.Delete(srcSwf);
|
|
Console.WriteLine("RunFfmpeg");
|
|
await taskManager.swfRawToMp4(destSwf, destMp4);
|
|
File.Delete(destSwf);
|
|
mp4Parts.Add(destMp4);
|
|
}
|
|
var outFile = $"/tmp/out.mp4";
|
|
await taskManager.Mp4Join(mp4Parts, outFile);
|
|
var location = await server.UploadFile(outFile);
|
|
File.Delete(outFile);
|
|
foreach(var file in mp4Parts)
|
|
{
|
|
File.Delete(file);
|
|
}
|
|
Console.WriteLine($"New location is {location}");
|
|
} catch (FailedToGetTaskException) {
|
|
Console.WriteLine("No tasks available");
|
|
return;
|
|
}
|
|
|
|
//var taskManager = new TaskManager();
|
|
//await taskManager.RunFfmpeg();
|
|
} else {
|
|
//Console.WriteLine(options.GetUsage());
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|