Пример #1
0
        /// <summary>
        /// Dodatecne zarazeni Photo instanci (j*z existujicich na Flickru) do Photosetu
        /// </summary>
        private void UpdateUnassignedPhotos(FlickrExtender flickr, List <PathWithFlickrFiles> filesWithoutSet, List <Photo> photosWithoutSet)
        {
            if (filesWithoutSet.Any())
            {
                var flickrPhotoSets = flickr.ParallelPhotosetsGetList(ParallelPhotosetsGetListProgressEvent).Result;

                var photosWithoutSetCrc
                    = photosWithoutSet
                      // TODO predelat na extension metodu Photo classu?
                      .SelectMany(photo => photo.Tags.Where(tag => !string.IsNullOrEmpty(tag) && tag.StartsWith(File4Flickr.FLUPCRC_TAG, StringComparison.InvariantCultureIgnoreCase))
                                  .Select(crcTag =>
                {
                    var crcFromTag = crcTag.Remove(0, File4Flickr.FLUPCRC_TAG.Length);
                    long crc;
                    long.TryParse(crcFromTag, out crc);
                    return(new { photo, crc });
                }))
                      .ToList();

                foreach (var pathWithFiles in filesWithoutSet)
                {
                    // zpetne dohledam pres CRC instanci Photo na serveru
                    var crcInPath = pathWithFiles.Photos.Select(p => p.Crc).ToList();
                    // seznam unassigned PhotoId pro tento adresar (photoset)
                    var photoIdsForPath = photosWithoutSetCrc.Where(p => crcInPath.Contains(p.crc)).Select(p => p.photo.PhotoId).ToList(); // TODO nasledne by se tu mel nejak resit orderby? nejspis by mel pribyt dalsi FLUP tag s poradim? zatim na to kaslu, pro potreby zalohovani to nema smysl

                    AddFilesToPhotoset(flickr, flickrPhotoSets, pathWithFiles.PhotosetName, photoIdsForPath);
                }
            }
        }
Пример #2
0
        /// <summary>
        /// provede nahrani novych souboru z lokalu na Flickr
        /// </summary>
        private void SynchronizePhotos(FlickrExtender flickr, List <PathWithFlickrFiles> newDirs)
        {
            if (newDirs.Any())
            {
                var flickrPhotoSets = flickr.ParallelPhotosetsGetList(ParallelPhotosetsGetListProgressEvent).Result;

                var totalCount     = newDirs.SelectMany(p => p.Photos).Count();
                var totalLength    = newDirs.SelectMany(p => p.Photos).Sum(p => p.Length);
                var uploadedLength = 0L;
                var uploadedCount  = 0;
                var totalStart     = DateTime.Now;

                // pripadne prazdne adresare vyhodim - nemeli by tu vsak uz byt ;-)
                newDirs = newDirs.Where(p => p.Photos.Any()).ToList();

                foreach (var dir in newDirs)
                {
                    _logger.Write(string.Format("Processing folder:'{0}'-'{1}' files:{2}", dir.DirectoryInfo.FullName, dir.PhotosetName, dir.Photos.Count));

                    // pridat soubory
                    var uploadFileResults = flickr.ParallelUploadFiles(dir.Photos, p => ParallelUploadFilesReportAction(p)).Result;

                    // ty pak zaradit do photosetu
                    AddFilesToPhotoset(flickr, flickrPhotoSets, dir.PhotosetName, uploadFileResults);

                    // jen hlaseni o prubehu
                    ReportTotalProgress(totalCount, totalLength, ref uploadedLength, ref uploadedCount, totalStart, uploadFileResults);
                }
            }
        }
Пример #3
0
        /// <summary>
        /// Resi problem s Photo soubory, ktere byly uspesne preneseny na Flickr, ale j*z nedoslo k zarazeni do Photosetu (preruseni prenosu atd),
        /// tj ted visi na serveru nezarazene. Bohuzel Flickr API nenabizi zadnou fci na dohledani techto souboru, je tedy jedina moznost vzit vsechny
        /// Flup fotky + Photosety a po stav porovnat :-/
        /// </summary>
        /// <param name="flupFlickrPhotos">seznam vsech Photo instanci na flickru</param>
        /// <returns>seznam Photo instanci na flickeru, ktere nejsou zarazeny v Photosetu</returns>
        private List <Photo> CheckPhotosWithoutPhotoset(FlickrExtender flickr, List <Photo> flupFlickrPhotos)
        {
            //1. seznam photosetu
            var photosets = flickr.ParallelPhotosetsGetList(ParallelPhotosetsGetListProgressEvent).Result;

            //2. seznam Photo od vsech Photoset - API nic takoveho neumoznuje, takze je nutne projit Photosety rucne
            var photosetsGetPhotosAllResultSet = flickr.ParallelGetPhotosFromPhotosets(photosets, ParallelGetPhotosFromPhotosetsProgressEvent, 10).Result;

            //3. vybrat z flupFlickrPhotos fotky bez photosetu
            var allPhotoIdWithPhotosetSet = photosetsGetPhotosAllResultSet.SelectMany(x => x.PhotoIdSet).ToList();
            var photosWithoutPhotoset     = flupFlickrPhotos.Where(p => !allPhotoIdWithPhotosetSet.Contains(p.PhotoId)).ToList();

            return(photosWithoutPhotoset);
        }