public async Task <bool> StoreMedia(MediaEntity m, Status x, long hash, string blurhash) { var cmd = new MySqlCommand(@"INSERT IGNORE INTO media (media_id, source_tweet_id, dcthash) VALUES(@media_id, @source_tweet_id, @dcthash) ON DUPLICATE KEY UPDATE source_tweet_id = if (EXISTS (SELECT * FROM tweet WHERE tweet_id = @source_tweet_id), @source_tweet_id, source_tweet_id), dcthash = @dcthash;"); cmd.Parameters.Add("@media_id", MySqlDbType.Int64).Value = m.Id; cmd.Parameters.Add("@source_tweet_id", MySqlDbType.Int64).Value = m.SourceStatusId ?? x.Id; cmd.Parameters.Add("@dcthash", MySqlDbType.Int64).Value = hash; var cmdText = new MySqlCommand(@"INSERT IGNORE INTO media_text (media_id, type, media_url, blurhash) VALUES (@media_id, @type, @media_url, @blurhash);"); cmdText.Parameters.Add("@media_id", MySqlDbType.Int64).Value = m.Id; cmdText.Parameters.Add("@type", MySqlDbType.VarChar).Value = m.Type; cmdText.Parameters.Add("@media_url", MySqlDbType.Text).Value = m.MediaUrlHttps ?? m.MediaUrl; cmdText.Parameters.Add("@blurhash", MySqlDbType.VarChar).Value = blurhash; var cmdDownload = new MySqlCommand(@"INSERT IGNORE INTO media_downloaded_at VALUES(@media_id, @downloaded_at)"); cmdDownload.Parameters.Add("@media_id", MySqlDbType.Int64).Value = m.Id; cmdDownload.Parameters.Add("@downloaded_at", MySqlDbType.Int64).Value = DateTimeOffset.UtcNow.ToUnixTimeSeconds(); return(await ExecuteNonQuery(new[] { cmd, cmdText, cmdDownload }).ConfigureAwait(false) >= 0 | await Storetweet_media(x.Id, m.Id).ConfigureAwait(false) > 0); }
public void ProcessResults_Populates_Entity_Media() { var searchProc = new SearchRequestProcessor <Search> { BaseUrl = "https://api.twitter.com/1.1/search/" }; List <Search> results = searchProc.ProcessResults(SearchJson); List <MediaEntity> media = results.First().Statuses[0].Entities.MediaEntities; Assert.IsNotNull(media); Assert.AreEqual(1, media.Count); MediaEntity firstMedia = media.First(); Assert.AreEqual(155683816676134913ul, firstMedia.ID); Assert.AreEqual("http://p.twimg.com/AikZmz5CEAESBHD.jpg", firstMedia.MediaUrl); Assert.AreEqual("https://p.twimg.com/AikZmz5CEAESBHD.jpg", firstMedia.MediaUrlHttps); Assert.AreEqual("http://t.co/36MZIOyW", firstMedia.Url); Assert.AreEqual("pic.twitter.com/36MZIOyW", firstMedia.DisplayUrl); Assert.AreEqual("http://twitter.com/rschu/status/155683816671940609/photo/1", firstMedia.ExpandedUrl); Assert.AreEqual("photo", firstMedia.Type); Assert.IsNotNull(firstMedia.Sizes); Assert.AreEqual(5, firstMedia.Sizes.Count); PhotoSize firstSize = firstMedia.Sizes.First(); Assert.AreEqual("orig", firstSize.Type); Assert.AreEqual(1161, firstSize.Width); Assert.AreEqual(925, firstSize.Height); Assert.AreEqual("fit", firstSize.Resize); Assert.AreEqual(59, firstMedia.Start); Assert.AreEqual(79, firstMedia.End); }
public void EntityIsComparedBasedOnId() { // Arrange var comp = new MediaEntityComparer(); var a = new MediaEntity { ID = 123 }; var b = new MediaEntity { ID = 123 }; var c = new MediaEntity { ID = 111 }; // Act var ab = comp.Equals(a, b); var ba = comp.Equals(b, a); var ac = comp.Equals(a, c); // Assert Assert.IsTrue(ab); Assert.IsTrue(ba); Assert.IsFalse(ac); }
public void DeleteMedia(MediaEntity media) { this._baseUnitOfWork.ExecuteAndCommit(uow => uow.BaseWorkArea.Media.Delete(media)); //this._factory.GetAndReleaseAfterExecuteAndCommit<IUnitOfWorkFactory, IBaseUnitOfWork, MediaEntity>( // uow => uow.BaseWorkArea.Media.Delete(media)); DeleteMedia(media.FileName); }
/// <summary> /// Returns a memory and differentiates between videos/gifs and everything else. /// /// Steps: /// * Creates a local memory and sets the id and media type /// * sets the media url /// </summary> /// <param name="media"></param> /// <returns></returns> private Memory GetMemory(MediaEntity media) { var tempMemory = new Memory() { id = media.Id, mediaType = media.MediaType }; if (tempMemory.mediaType.ToLower().Contains("video") || tempMemory.mediaType.ToLower().Contains("gif")) { foreach (var vid in media.VideoDetails.Variants) { if (vid.ContentType.ToLower().Contains("video")) { tempMemory.url = vid.URL; break; } } } else { tempMemory.url = media.MediaURLHttps; } return(tempMemory); }
public ImageFrame(MediaEntity mediaEntity) { InitializeComponent(); this.mediaEntity = mediaEntity; pause = false; }
private void ProcessMedia(SaveMediaMessage message) { if (!Directory.Exists("medias")) { Directory.CreateDirectory("medias"); } if (!Directory.Exists("thumbnails")) { Directory.CreateDirectory("thumbnails"); } var media = new MediaEntity(); media.Type = message.MediaType; media.UserId = message.UserId; media.Size = message.FileSize; media.DateTime = DateTime.Now; media.ArtId = message.ArtId; mainContext.Medias.Add(media); mainContext.SaveChanges(); string filename = media.Id.ToString(); string saveImagePath = ("medias/") + filename; File.WriteAllBytes(saveImagePath, message.Data); string saveThumbnPath = ("thumbnails/") + filename + ".jpg"; File.WriteAllBytes(saveThumbnPath, message.Data); }
/// <summary> /// 更新Media信息 /// </summary> /// <param name="dto">ViewModel</param> public void UpdateMedia(MediaEntity dto) { MediaDO info = dto.ConvertToModel(); new MediaRepository().UpdateMedia(info); MediaCommon.cache_Media.Remove(info.MediaID); }
public MediaEntityInfo(Account account, StatusItem item) { Account = account; Item = item; Entities = Item.Status.ExtendedEntities.Media; CurrentEntity = Entities.First(); }
public MediaEntityInfo(Account account, StatusItem item, MediaEntity currentEntity) { Account = account; Item = item; Entities = Item.Status.ExtendedEntities.Media; CurrentEntity = currentEntity; }
public async Task Add(Event viewModel, ICollection <IFormFile> files) { string subPath = @"wwwroot\uploaded_files"; if (files.Count > 0 && files != null) { foreach (var file in files) { if (file != null && file.Length > 0) { DirectoryInfo di = Directory.CreateDirectory(Path.Combine(Directory.GetCurrentDirectory(), subPath)); var filePath = Path.Combine(Directory.GetCurrentDirectory(), subPath, file.FileName); using (var uploadedFile = new FileStream(filePath, FileMode.Create)) { await file.CopyToAsync(uploadedFile); } var media = new MediaEntity { MediaPath = file.FileName, CreatedAt = DateTime.Now, UpdatedAt = DateTime.Now }; _context.Media.Add(media); await _context.SaveChangesAsync(); int id = media.Id; viewModel.EventMedia.Add(new EventMedia { MediaId = id, CreatedAt = DateTime.Now, UpdatedAt = DateTime.Now }); } } } }
/// <summary> /// Generates a collection of inlines from a tweet. /// </summary> /// <param name="tweet">The tweet to generate inlines from.</param> /// <returns>The generated inlines.</returns> private static IEnumerable <Inline> GenerateInlines(Status tweet) { var allEntities = ExtractEntities(tweet).ToArray(); if (allEntities.Any()) { int lastEnd = 0; foreach (EntityBase entity in allEntities) { if (entity.Start > lastEnd) { string text = tweet.Text.Substring(lastEnd, entity.Start - lastEnd); yield return(new Run(PrepareText(text))); } var tagEntity = entity as HashTagEntity; if (tagEntity != null) { yield return(GenerateHashTag(tagEntity)); } else if (entity is UrlEntity) { if (entity is MediaEntity) { if (!Config.Visual.InlineMedia) { MediaEntity mediaEnttiy = entity as MediaEntity; yield return(GenerateMedia(mediaEnttiy)); } } else { UrlEntity urlEntity = entity as UrlEntity; if (!TwitterHelper.IsTweetUrl(urlEntity.ExpandedUrl)) { yield return(GenerateLink(urlEntity)); } } } else if (entity is UserMentionEntity) { yield return(GenerateMention((UserMentionEntity)entity)); } lastEnd = entity.End; } if (lastEnd < tweet.Text.Length) { yield return(new Run(PrepareText(tweet.Text.Substring(lastEnd)))); } } else { yield return(new Run(PrepareText(tweet.Text))); } }
public string GetMediaUrl(MediaEntity media) { if (media != null) { return($"/{MediaRootFoler}/{media.FileName}"); } return($"/{MediaRootFoler}/no-image.png"); }
public IPage <T> NextEntities <T>(MediaEntity entityType, IPage <T> currentPage) { IPage <T> entities = null; if (!string.IsNullOrEmpty(currentPage.NextPageLink)) { switch (entityType) { case MediaEntity.Asset: entities = (IPage <T>)_media.Assets.ListNext(currentPage.NextPageLink); break; case MediaEntity.Transform: entities = (IPage <T>)_media.Transforms.ListNext(currentPage.NextPageLink); break; case MediaEntity.TransformJob: entities = (IPage <T>)_media.Jobs.ListNext(currentPage.NextPageLink); break; case MediaEntity.ContentKeyPolicy: entities = (IPage <T>)_media.ContentKeyPolicies.ListNext(currentPage.NextPageLink); break; case MediaEntity.StreamingPolicy: entities = (IPage <T>)_media.StreamingPolicies.ListNext(currentPage.NextPageLink); break; case MediaEntity.StreamingEndpoint: entities = (IPage <T>)_media.StreamingEndpoints.ListNext(currentPage.NextPageLink); break; case MediaEntity.StreamingLocator: entities = (IPage <T>)_media.StreamingLocators.ListNext(currentPage.NextPageLink); break; case MediaEntity.FilterAccount: entities = (IPage <T>)_media.AccountFilters.ListNext(currentPage.NextPageLink); break; case MediaEntity.FilterAsset: entities = (IPage <T>)_media.AssetFilters.ListNext(currentPage.NextPageLink); break; case MediaEntity.LiveEvent: entities = (IPage <T>)_media.LiveEvents.ListNext(currentPage.NextPageLink); break; case MediaEntity.LiveEventOutput: entities = (IPage <T>)_media.LiveOutputs.ListNext(currentPage.NextPageLink); break; } } return(entities); }
//source_tweet_idを更新するためだけ public async ValueTask <int> UpdateMedia_source_tweet_id(MediaEntity m, Status x) { using (MySqlCommand cmd = new MySqlCommand(@"UPDATE IGNORE media SET source_tweet_id = if (EXISTS (SELECT * FROM tweet WHERE tweet_id = @source_tweet_id), @source_tweet_id, source_tweet_id) WHERE media_id = @media_id;")) { cmd.Parameters.Add("@media_id", MySqlDbType.Int64).Value = m.Id; cmd.Parameters.Add("@source_tweet_id", MySqlDbType.Int64).Value = m.SourceStatusId ?? x.Id; return(await ExecuteNonQuery(cmd).ConfigureAwait(false)); } }
private static void DeleteEntities <T>(MediaClient mediaClient, MediaEntity entityType) where T : Resource { T[] entities = mediaClient.GetAllEntities <T>(entityType); foreach (T entity in entities) { if (!entity.Name.StartsWith(Constant.Media.PredefinedPrefix, StringComparison.OrdinalIgnoreCase)) { mediaClient.DeleteEntity(entityType, entity.Name); } } }
public static bool IsObsoleted( this MediaEntity media, int threshold) { if (media == null) { return(true); } return((DateTime.UtcNow - media.CreatedAt).TotalDays > threshold); }
public T[] GetAllEntities <T>(MediaEntity entityType, string queryFilter = null, string parentName = null) where T : Resource { List <T> allEntities = new List <T>(); IPage <T> entities = GetEntities <T>(entityType, queryFilter, parentName); while (entities != null) { allEntities.AddRange(entities); entities = NextEntities(entityType, entities); } return(allEntities.ToArray()); }
public T1[] GetAllEntities <T1, T2>(MediaEntity entityType, MediaEntity parentType) where T1 : Resource where T2 : Resource { List <T1> allEntities = new List <T1>(); IPage <T2> parentEntities = GetEntities <T2>(parentType); foreach (T2 parentEntity in parentEntities) { T1[] entities = GetAllEntities <T1>(entityType, null, parentEntity.Name); allEntities.AddRange(entities); } return(allEntities.ToArray()); }
public T GetEntity <T>(MediaEntity entityType, string entityName, string parentName = null) where T : Resource { T entity = default(T); switch (entityType) { case MediaEntity.Asset: entity = _media.Assets.Get(MediaAccount.ResourceGroupName, MediaAccount.Name, entityName) as T; break; case MediaEntity.Transform: entity = _media.Transforms.Get(MediaAccount.ResourceGroupName, MediaAccount.Name, entityName) as T; break; case MediaEntity.TransformJob: entity = _media.Jobs.Get(MediaAccount.ResourceGroupName, MediaAccount.Name, parentName, entityName) as T; break; case MediaEntity.ContentKeyPolicy: entity = _media.ContentKeyPolicies.Get(MediaAccount.ResourceGroupName, MediaAccount.Name, entityName) as T; break; case MediaEntity.StreamingPolicy: entity = _media.StreamingPolicies.Get(MediaAccount.ResourceGroupName, MediaAccount.Name, entityName) as T; break; case MediaEntity.StreamingEndpoint: entity = _media.StreamingEndpoints.Get(MediaAccount.ResourceGroupName, MediaAccount.Name, entityName) as T; break; case MediaEntity.StreamingLocator: entity = _media.StreamingLocators.Get(MediaAccount.ResourceGroupName, MediaAccount.Name, entityName) as T; break; case MediaEntity.FilterAccount: entity = _media.AccountFilters.Get(MediaAccount.ResourceGroupName, MediaAccount.Name, entityName) as T; break; case MediaEntity.FilterAsset: entity = _media.AssetFilters.Get(MediaAccount.ResourceGroupName, MediaAccount.Name, parentName, entityName) as T; break; case MediaEntity.LiveEvent: entity = _media.LiveEvents.Get(MediaAccount.ResourceGroupName, MediaAccount.Name, entityName) as T; break; case MediaEntity.LiveEventOutput: entity = _media.LiveOutputs.Get(MediaAccount.ResourceGroupName, MediaAccount.Name, parentName, entityName) as T; break; } return(entity); }
/// <summary> /// Generates an inline from a media entity. /// </summary> /// <param name="entity"> The entity to generate the inline from. </param> /// <returns> The generated inline. </returns> private static Inline GenerateMedia(MediaEntity entity) { Hyperlink link = new Hyperlink(); link.Inlines.Add(entity.DisplayUrl); link.NavigateUri = new Uri(entity.MediaUrlHttps); link.CommandParameter = entity.MediaUrlHttps; link.Command = GlobalCommands.OpenUrlCommand; link.ToolTip = entity.MediaUrlHttps; link.SetResourceReference(TextElement.ForegroundProperty, "LinkBrush"); return(link); }
public MediaEntityModel(MediaEntity entity) : base(entity) { Id = entity.Id; MediaUrl = entity.MediaUrl; MediaUrlHttps = entity.MediaUrlHttps; SourceStatusId = entity.SourceStatusId; Type = entity.Type; if (entity.Sizes != null) { Sizes = new MediaSizesModel(entity.Sizes); } }
public MediaEntityViewModel(MediaEntity mediaEntity, bool possiblySensitive = false) { Model = mediaEntity; MediaThumbnailUrl = SettingService.Setting.ShowHighQualityImageResolution && !string.IsNullOrWhiteSpace(mediaEntity.MediaUrl) ? mediaEntity.MediaUrl : mediaEntity.MediaThumbnailUrl; PossibilySensitiveBlur = SettingService.Setting.EnableNsfwFilter && possiblySensitive ? 4.0 : 0.0; Notice = Notice.Instance; Setting = SettingService.Setting; }
protected override void OnNavigatedTo(NavigationEventArgs e) { item = (MediaEntity)e.Parameter; var mediaurl = new Uri(item.MediaUrl); BitmapImage imageSource = new BitmapImage(mediaurl); imageview.Source = imageSource; /* * var mediaurl = new Uri(status.ExtendedEntities.Media[n].MediaUrl); * * BitmapImage imageSource = new BitmapImage(mediaurl); */ }
public MediaTableEntity(MediaEntity entity) { PartitionKey = entity.Id; RowKey = RowKeyValue; CreatedDate = entity.CreatedDate.ToString("O"); State = entity.State.StringValue(); MediaUrl = entity.MediaUrl.AbsoluteUri; Type = entity.Type.StringValue(); Title = entity.Title; ImageB64 = entity.ImageB64; DownloadUrl = JsonSerializer.Serialize(entity.DownloadFormats); }
public MediaEntity GetMediaEntity(string txt) { // Metadata: // major_brand: isom // minor_version : 512 // compatible_brands: isomiso2avc1mp41 // title : EV褰曞睆3.8.4杞欢褰曞埗 // encoder : Lavf56.38.102 // comment: 鏈棰戠敱婀栧崡涓€鍞俊鎭鎶€寮€鍙戠殑EV褰曞睆杞欢褰曞埗锛寃ww.ieway.cn //Duration: 00:09:12.24, start: 0.014125, bitrate: 415 kb / s // Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 1920x1080, 284 kb/s, 14.68 fps, 15 tbr, 15360 tbn, 30 tbc (default) // Metadata: // handler_name: VideoHandler //Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 127 kb/s (default) // Metadata: // handler_name: SoundHandler MediaEntity entity = new MediaEntity(); //从视频信息中解析时长 string regexDuration = "Duration: (.*?), start: (.*?), bitrate: (\\d*) kb\\/s"; Regex r = new Regex(regexDuration); var result = r.Match(txt); var arr = result.Value.Split(','); entity.Duration = arr[0].Remove(0, arr[0].IndexOf(':') + 1); entity.Start = arr[1].Split(':')[1]; entity.Bitrate = arr[2].Split(':')[1].Trim().Split(' ')[0]; string regexVideo = "Video: (.*?), (.*?), (.*?), (.*?), (.*?)[,\\s]"; Regex r1 = new Regex(regexVideo); result = r1.Match(txt); arr = result.Value.Substring(result.Value.IndexOf(':') + 1).Split(','); entity.MediaCode = arr[0].Trim().Split(' ')[0]; entity.MediaType = entity.MediaCode; entity.Resoluction = arr[1].Trim(); entity.Aspect = arr[2].Trim(); entity.Rate = arr[4].Trim().Split(' ')[0]; return(entity); }
public string Create(MediaEntity media) { var guid = Guid.NewGuid().ToString("N"); var mediaInfo = new FileInfo(media.FileName); var destination = Path.Combine(_locationOptions.Path, $"{guid}{mediaInfo.Extension}"); using var stream = new FileStream(destination, FileMode.Create); media.Content.CopyTo(stream); media.Content.Close(); return(guid); }
public void HashCodeForObjectIsCalculatedCorrectly() { // Arrange var comp = new MediaEntityComparer(); var entity = new MediaEntity { ID = 123 }; // Act var hash = comp.GetHashCode(entity); // Assert Assert.AreEqual(entity.ID.GetHashCode(), hash); }
public MediaProperties(MediaEntity media, int suffix) { this.MediaNumber = suffix; this.PlayCommand = new RelayCommand <object>(this.PlayCommandEntity); this.LoopPlayCommand = new RelayCommand <object>(this.LoopPlayCommandEntity); if (media == null) { return; } this.Image = new ImageProperties(media.MediaUrlHttps, true, media.Sizes.Large.Width, media.Sizes.Large.Height); // 画像のとき if (media.Type == "photo") { this.Url = new Uri(media.MediaUrlHttps); this.Type = StatusMediaType.Image; } if (media.VideoInfo == null || media.VideoInfo.Variants == null || media.VideoInfo.Variants.Count() == 0) { return; } var url = media.VideoInfo.Variants.Where(x => x.Bitrate == media.VideoInfo.Variants.Max(y => y.Bitrate)).First().Url; this.Url = new Uri(url); // アニメーションGIFのとき if (media.Type == "animated_gif") { this.Image.IsLoad = false; this.Type = StatusMediaType.AnimationGif; } // 動画の時 else if (media.Type == "video") { this.Type = StatusMediaType.Video; if (media.VideoInfo.DurationMillis == null) { return; } this.Time = new TimeSpan((int)media.VideoInfo.DurationMillis * TimeSpan.TicksPerMillisecond); } }
public async Task <UploadProductImageResponse> UploadProductImageAsync(UploadProductImageRequest request, string path) { var product = await _db.Products.FindAsync(request.ProductId); if (product != null) { MediaEntity media = new MediaEntity() { Path = path }; product.Media = media; await _db.SaveChangesAsync(); return(new UploadProductImageResponse(true, path)); } return(new UploadProductImageResponse(false, path)); }