private MediaMetaData PrepareMediaMetaData(string file, MediaType mediaType, DateTime dateTimeTaken, string comments, IEnumerable<string> tags, Location location, short rating = 3) { var mediaMetaData = new MediaMetaData { FileName = file, DateTaken = dateTimeTaken, Comments = comments, Tags = tags, MediaType = mediaType, Location = location, Rating = rating, }; _fileSystemHelper.GetFileMediaMetaDataAsync(file).Returns(Task.FromResult(mediaMetaData)); return mediaMetaData; }
/// <summary> /// Determines whether the exif <see cref="MediaMetaData.Comments"/> of /// <paramref name="mediaMetaData"/> contains the specified /// <paramref name="keywords"/>. /// </summary> /// <returns><c>true</c> if match; otherwise, <c>false</c>.</returns> /// <param name="file">File.</param> /// <param name="keywords">Keywords.</param> private async Task<bool> IsMatchByLocationAsync(MediaMetaData mediaMetaData, string keywords) { var keywordsList = keywords.Split(new [] {' ', ';', ','}, StringSplitOptions.RemoveEmptyEntries); if (mediaMetaData.Location == null) return false; if (IsMatchString(keywordsList, mediaMetaData.Location.AdministrativeArea)) return true; if (IsMatchString(keywordsList, mediaMetaData.Location.Country)) return true; if (IsMatchString(keywordsList, mediaMetaData.Location.Locality)) return true; if (IsMatchString(keywordsList, mediaMetaData.Location.Route)) return true; if (IsMatchString(keywordsList, mediaMetaData.Location.State)) return true; return false; }
/// <summary> /// Determines whether the exif <see cref="MediaMetaData.Tags"/> of /// <paramref name="mediaMetaData"/> contains the specified /// <paramref name="keywords"/>. /// </summary> /// <returns><c>true</c> if match; otherwise, <c>false</c>.</returns> /// <param name="file">File.</param> /// <param name="keywords">Keywords.</param> private async Task<bool> IsMatchByTagsAsync(MediaMetaData mediaMetaData, string keywords) { if (Log.IsTraceEnabled) Log.T("Search if keywords '{0}' are in tags '{1}'.", keywords, mediaMetaData.Tags); var matches = from k in keywords.Split(new [] {' ', ';', ','}, StringSplitOptions.RemoveEmptyEntries) from t in mediaMetaData.Tags where string.Equals(k, t, StringComparison.InvariantCultureIgnoreCase) select t; return matches.Any(); }
/// <summary> /// Determines whether the exif <see cref="MediaMetaData.Comments"/> of /// <paramref name="mediaMetaData"/> contains the specified /// <paramref name="keywords"/>. /// </summary> /// <returns><c>true</c> if match; otherwise, <c>false</c>.</returns> /// <param name="file">File.</param> /// <param name="keywords">Keywords.</param> private async Task<bool> IsMatchByCommentsAsync(MediaMetaData mediaMetaData, string keywords) { var keywordsList = keywords.Split(new [] {' ', ';', ','}, StringSplitOptions.RemoveEmptyEntries); return IsMatchString(keywordsList, mediaMetaData.Comments); }
/// <summary> /// Determines whether <see cref="MediaMetaData.DateTaken"/> of <paramref name="mediaMetaData"/> /// is between <paramref name="dateFrom"/> and <paramref name="dateTo"/>. /// </summary> /// <returns><c>true</c> if date taken match; otherwise, <c>false</c>.</returns> /// <param name="file">File.</param> /// <param name="dateFrom">Date from.</param> /// <param name="dateTo">Date to.</param> private async Task<bool> IsMatchByDateAsync(MediaMetaData mediaMetaData, DateTime? dateFrom, DateTime? dateTo) { if (dateFrom.HasValue || dateTo.HasValue) { Log.T("DateFrom ({0}) or DateTo ({1}) has been specified, check if date taken '{2}' is between.", dateFrom, dateTo, mediaMetaData.DateTaken); return _utils.IsDateValid(mediaMetaData.DateTaken, dateFrom, dateTo); } return true; }