示例#1
0
        public ICollection <string> Validate()
        {
            var errors = new List <string>();

            if (MongoDb != null)
            {
                MongoDb.Validate(errors);
            }

            if (Backup != null)
            {
                Backup.Validate(errors);
            }

            if (GoogleStorage != null)
            {
                GoogleStorage.Validate(errors);
            }

            if (AzureStorage != null)
            {
                AzureStorage.Validate(errors);
            }

            if (string.Equals(Storage, "GC", StringComparison.OrdinalIgnoreCase) &&
                string.Equals(Storage, "Azure", StringComparison.OrdinalIgnoreCase))
            {
                errors.Add("Either Google Storage or Azure Storage must be configured.");
            }

            return(errors);
        }
示例#2
0
        private static async Task <int> DeleteOldestAsync(int count)
        {
            GoogleStorage gstore  = new GoogleStorage();
            Storage       storage = new Storage();
            var           videos  = await LoadVideosAsync();

            var sortedVideos = SortVideos(videos);

            List <Task> videoTasks = new List <Task>();

            foreach (var video in sortedVideos)
            {
                videoTasks.Add(
                    DeleteGoogleVideoAsync(gstore, storage, video)
                    );
            }

            Task.WaitAll(videoTasks.ToArray());
            return(videoTasks.Count());

            IEnumerable <SkiVideoEntity> SortVideos(IEnumerable <SkiVideoEntity> videos)
            {
                return(videos.OrderBy(v => v.RecordedTime)
                       .Where(v => !string.IsNullOrWhiteSpace(v.HotUrl) && v.Starred != true)
                       .Take(count));
            }
        }
示例#3
0
        private static async Task GetGoogleStorageSizeAsync()
        {
            GoogleStorage gstore = new GoogleStorage();
            float         size   = await gstore.GetBucketSizeAsync();

            Console.WriteLine($"Total bucket size is {size:0,0.0} MiB");
        }
示例#4
0
        private static async Task DeleteGoogleVideoAsync(GoogleStorage gstore, Storage storage, SkiVideoEntity video)
        {
            Logger.Log($"Deleting {video.HotUrl} recorded @ {video.RecordedTime}.");
            await gstore.DeleteAsync(video.HotUrl);

            video.HotUrl = "";
            storage.UpdateMetadata(video);
            Logger.Log($"Metadata updated for video recorded @ {video.RecordedTime}.");
        }
示例#5
0
        static void Main(string[] args)
        {
            var converter = new AudioCutter();

            var(fileName, rate) = converter.CompressAudio(File.OpenRead("music.mp3"), P => System.Console.WriteLine("converting " + P)).Result;
            var link = new GoogleStorage("speechreconition-197119").UploadFile(File.OpenRead(fileName), Path.GetFileName(fileName), P => System.Console.WriteLine("uploading " + P)).Result;
            var str  = new Speech().LongRecognize(link, "ru", 16000, A => System.Console.WriteLine(A)).Result;

            System.Console.WriteLine(str);
            System.Console.Read();
        }
        public MainWindow()
        {
            InitializeComponent();
            converter  = new AudioCutter();
            storage    = new GoogleStorage("speechreconition-197119");
            recognizer = new Speech();

            cbox = new ComboBox
            {
                Background    = Brushes.LightBlue,
                SelectedIndex = 89
            };
            languages
            .Select(I => I.Item1)
            .ToList()
            .ForEach(BI => cbox.Items.Add(BI));
            Language.Children.Add(cbox);
        }
示例#7
0
        private async Task <string> UploadGoogleVideoAsync(Task <string> trimAndSilence, Task getCreationTime)
        {
            string videoUrl = "";

            try
            {
                await  getCreationTime;
                string processedVideoPath = await trimAndSilence;

                Logger.Log($"Uploading video to Google {processedVideoPath}...");
                GoogleStorage storage = new GoogleStorage();
                videoUrl = await storage.UploadVideoAsync(processedVideoPath, _creationTime);

                Logger.Log($"Video uploaded to Google: {videoUrl}");
            }
            catch (Exception e)
            {
                Logger.Log($"Failed to upload to google, but ignoring.", e);
            }

            return(videoUrl);
        }
示例#8
0
        private static async Task UploadLatestToGoogleAsync(int count)
        {
            var videos = await LoadVideosAsync();

            var sortedVideos = SortVideos(videos);

            Logger.Log($"Found {videos.Count} videos.");

            GoogleStorage         gStore      = new GoogleStorage();
            Storage               storage     = new Storage();
            List <Task <string> > uploadTasks = new List <Task <string> >();

            foreach (var e in sortedVideos)
            {
                Console.WriteLine("\t{0}\t{1}", e.RecordedTime, e.Url);
                uploadTasks.Add(UploadToGoogle(e));
            }

            Task.WaitAll(uploadTasks.ToArray());
            Logger.Log("Upload complete.");

            async Task <string> UploadToGoogle(SkiVideoEntity e)
            {
                string localPath = await Task <string> .Run(() => DownloadVideo(e.Url));

                e.HotUrl = await gStore.UploadVideoAsync(localPath, e.RecordedTime);

                storage.UpdateMetadata(e);
                Logger.Log($"Google HotUrl updated {e.HotUrl}");
                return(e.HotUrl);
            }

            IEnumerable <SkiVideoEntity> SortVideos(IEnumerable <SkiVideoEntity> videos)
            {
                return(videos.OrderByDescending(v => v.RecordedTime)
                       .Where(v => v.HotUrl == null)
                       .Take(count));
            }
        }
示例#9
0
 public StorageService(GoogleStorage storage, IConfiguration config)
 {
     _storage    = storage;
     _bucketName = config["bucketName"];
 }