示例#1
0
        public SyncFolder(string pFolderPath)
        {
            FolderPath = pFolderPath;
            LastSync   = new DateTime(2000, 1, 1);

            SetId            = "";
            SetTitle         = "";
            SetDescription   = "";
            SyncMethod       = StringToMethod(Properties.Settings.Default.Method);
            FilterType       = FilterTypes.FilterNone;
            FilterTags       = "";
            FilterStarRating = 0;
            Permission       = FlickrSync.Permissions.PermDefault;
            NoDelete         = Properties.Settings.Default.NoDelete;
            NoDeleteTags     = Properties.Settings.Default.NoDeleteTags;
            OrderType        = OrderTypes.OrderDefault;
            NoInitialReplace = false;
        }
示例#2
0
        public SyncFolder(string pFolderPath)
        {
            FolderPath = pFolderPath;
            LastSync = new DateTime(2000, 1, 1);

            SetId = "";
            SetTitle = "";
            SetDescription = "";
            SyncMethod = StringToMethod(Properties.Settings.Default.Method);
            FilterType = FilterTypes.FilterNone;
            FilterTags = "";
            FilterStarRating = 0;
            Permission = FlickrSync.Permissions.PermDefault;
            NoDelete = Properties.Settings.Default.NoDelete;
            NoDeleteTags = Properties.Settings.Default.NoDeleteTags;
            OrderType = OrderTypes.OrderDefault;
            NoInitialReplace = false;
        }
示例#3
0
        public void LoadFromXPath(XPathNavigator nav)
        {
            nav.MoveToFirstChild();

            do
            {
                if (nav.Name == "FolderPath")
                {
                    FolderPath = XmlDecode(nav.Value);
                }
                else if (nav.Name == "LastSync")
                {
                    try
                    {
                        LastSync = DateTime.ParseExact(nav.Value, "yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture);
                    }
                    catch (Exception)
                    {
                        LastSync = DateTime.Parse(nav.Value); //old method
                    }
                }
                else if (nav.Name == "SetId")
                {
                    SetId = nav.Value;
                }
                else if (nav.Name == "SetTitle")
                {
                    SetTitle = XmlDecode(nav.Value);
                }
                else if (nav.Name == "SetDescription")
                {
                    SetDescription = XmlDecode(nav.Value);
                }
                else if (nav.Name == "SyncMethod")
                {
                    if (nav.Value == "SyncFilename")
                    {
                        SyncMethod = SyncFolder.Methods.SyncFilename;
                    }
                    else if (nav.Value == "SyncDateTaken")
                    {
                        SyncMethod = SyncFolder.Methods.SyncDateTaken;
                    }
                    else if (nav.Value == "SyncTitleOrFilename")
                    {
                        SyncMethod = SyncFolder.Methods.SyncTitleOrFilename;
                    }
                }
                else if (nav.Name == "FilterType")
                {
                    if (nav.Value == "FilterNone")
                    {
                        FilterType = SyncFolder.FilterTypes.FilterNone;
                    }
                    else if (nav.Value == "FilterIncludeTags")
                    {
                        FilterType = SyncFolder.FilterTypes.FilterIncludeTags;
                    }
                    else if (nav.Value == "FilterStarRating")
                    {
                        FilterType = SyncFolder.FilterTypes.FilterStarRating;
                    }
                }
                else if (nav.Name == "FilterTags")
                {
                    FilterTags = nav.Value;
                }
                else if (nav.Name == "FilterStarRating")
                {
                    FilterStarRating = nav.ValueAsInt;
                }
                else if (nav.Name == "Permissions")
                {
                    if (nav.Value == "PermDefault")
                    {
                        Permission = FlickrSync.Permissions.PermDefault;
                    }
                    else if (nav.Value == "PermPublic")
                    {
                        Permission = FlickrSync.Permissions.PermPublic;
                    }
                    else if (nav.Value == "PermFamilyFriends")
                    {
                        Permission = FlickrSync.Permissions.PermFamilyFriends;
                    }
                    else if (nav.Value == "PermFriends")
                    {
                        Permission = FlickrSync.Permissions.PermFriends;
                    }
                    else if (nav.Value == "PermFamily")
                    {
                        Permission = FlickrSync.Permissions.PermFamily;
                    }
                    else if (nav.Value == "PermPrivate")
                    {
                        Permission = FlickrSync.Permissions.PermPrivate;
                    }
                }
                else if (nav.Name == "NoDelete")
                {
                    NoDelete = nav.ValueAsBoolean;
                }
                else if (nav.Name == "NoDeleteTags")
                {
                    NoDeleteTags = nav.ValueAsBoolean;
                }
                else if (nav.Name == "OrderType")
                {
                    if (nav.Value == "OrderDefault")
                    {
                        OrderType = OrderTypes.OrderDefault;
                    }
                    else if (nav.Value == "OrderDateTaken")
                    {
                        OrderType = OrderTypes.OrderDateTaken;
                    }
                    else if (nav.Value == "OrderTitle")
                    {
                        OrderType = OrderTypes.OrderTitle;
                    }
                    else if (nav.Value == "OrderTag")
                    {
                        OrderType = OrderTypes.OrderTag;
                    }
                }
                else if (nav.Name == "SetNaming")
                {
                    if (nav.Value == "NamingDefault")
                    {
                        SetNaming = SetNamings.NamingDefault;
                    }
                    else if (nav.Value == "NonUniqueSetNames")
                    {
                        SetNaming = SetNamings.NonUniqueSetNames;
                    }
                    else if (nav.Value == "UniqueSetNames")
                    {
                        SetNaming = SetNamings.UniqueSetNames;
                    }
                }
                else if (nav.Name == "NoInitialReplace")
                {
                    NoInitialReplace = nav.ValueAsBoolean;
                }
            } while (nav.MoveToNext());
        }
示例#4
0
        public void LoadFromXPath(XPathNavigator nav)
        {
            nav.MoveToFirstChild();

            do
            {
                if (nav.Name == "FolderPath") FolderPath = XmlDecode(nav.Value);
                else if (nav.Name == "LastSync")
                {
                    try
                    {
                        LastSync = DateTime.ParseExact(nav.Value, "yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture);
                    }
                    catch (Exception)
                    {
                        LastSync = DateTime.Parse(nav.Value); //old method
                    }
                }
                else if (nav.Name == "SetId") SetId = nav.Value;
                else if (nav.Name == "SetTitle") SetTitle = XmlDecode(nav.Value);
                else if (nav.Name == "SetDescription") SetDescription = XmlDecode(nav.Value);
                else if (nav.Name == "SyncMethod")
                {
                    if (nav.Value == "SyncFilename") SyncMethod = SyncFolder.Methods.SyncFilename;
                    else if (nav.Value == "SyncDateTaken") SyncMethod = SyncFolder.Methods.SyncDateTaken;
                    else if (nav.Value == "SyncTitleOrFilename") SyncMethod = SyncFolder.Methods.SyncTitleOrFilename;
                }
                else if (nav.Name == "FilterType")
                {
                    if (nav.Value == "FilterNone") FilterType = SyncFolder.FilterTypes.FilterNone;
                    else if (nav.Value == "FilterIncludeTags") FilterType = SyncFolder.FilterTypes.FilterIncludeTags;
                    else if (nav.Value == "FilterStarRating") FilterType = SyncFolder.FilterTypes.FilterStarRating;
                }
                else if (nav.Name == "FilterTags") FilterTags = nav.Value;
                else if (nav.Name == "FilterStarRating") FilterStarRating = nav.ValueAsInt;
                else if (nav.Name == "Permissions")
                {
                    if (nav.Value == "PermDefault") Permission = FlickrSync.Permissions.PermDefault;
                    else if (nav.Value == "PermPublic") Permission = FlickrSync.Permissions.PermPublic;
                    else if (nav.Value == "PermFamilyFriends") Permission = FlickrSync.Permissions.PermFamilyFriends;
                    else if (nav.Value == "PermFriends") Permission = FlickrSync.Permissions.PermFriends;
                    else if (nav.Value == "PermFamily") Permission = FlickrSync.Permissions.PermFamily;
                    else if (nav.Value == "PermPrivate") Permission = FlickrSync.Permissions.PermPrivate;
                }
                else if (nav.Name == "NoDelete") NoDelete = nav.ValueAsBoolean;
                else if (nav.Name == "Children") Children = nav.ValueAsBoolean;
                else if (nav.Name == "NoDeleteTags") NoDeleteTags = nav.ValueAsBoolean;
                else if (nav.Name == "OrderType")
                {
                    if (nav.Value == "OrderDefault") OrderType = OrderTypes.OrderDefault;
                    else if (nav.Value == "OrderDateTaken") OrderType = OrderTypes.OrderDateTaken;
                    else if (nav.Value == "OrderTitle") OrderType = OrderTypes.OrderTitle;
                    else if (nav.Value == "OrderTag") OrderType = OrderTypes.OrderTag;
                }
                else if (nav.Name == "NoInitialReplace") NoInitialReplace = nav.ValueAsBoolean;
            } while (nav.MoveToNext());
        }
示例#5
0
        public string ReplacePicture(string filename, string photoid, string title, string caption, ArrayList tags, FlickrSync.Permissions permission, bool NoDeleteTags, double?GeoLat, double?GeoLong)
        {
            string id = f.ReplacePicture(filename, photoid);

            f.PhotosSetMeta(id, title, caption);

            ArrayList specialtags = new ArrayList();

            foreach (string tag in tags)
            {
                if (tag.ToLower().StartsWith("flickrsync:") || tag.ToLower().StartsWith(@"""flickrsync:"))
                {
                    specialtags.Add(tag);
                }
            }

            foreach (string stag in specialtags)
            {
                tags.Remove(stag);

                string stag2 = stag.ToLower();
                // To support picasa replace colons with equal sign (to be able to use flickrsync:perm:friends instead of flickrsync:perm=friends)
                stag2 = stag2.Replace(':', '=');

                if (stag2.Contains("flickrsync=perm=private"))
                {
                    permission = FlickrSync.Permissions.PermPrivate;
                }
                else if (stag2.Contains("flickrsync=perm=default"))
                {
                    permission = FlickrSync.Permissions.PermDefault;
                }
                else if (stag2.Contains("flickrsync=perm=familyfriends"))
                {
                    permission = FlickrSync.Permissions.PermFamilyFriends;
                }
                else if (stag2.Contains("flickrsync=perm=friends"))
                {
                    permission = FlickrSync.Permissions.PermFriends;
                }
                else if (stag2.Contains("flickrsync=perm=family"))
                {
                    permission = FlickrSync.Permissions.PermFamily;
                }
                else if (stag2.Contains("flickrsync=perm=public"))
                {
                    permission = FlickrSync.Permissions.PermPublic;
                }
            }

            f.PhotosSetPerms(id,
                             permission == FlickrSync.Permissions.PermPublic,
                             permission == FlickrSync.Permissions.PermFriends || permission == FlickrSync.Permissions.PermFamilyFriends,
                             permission == FlickrSync.Permissions.PermFamily || permission == FlickrSync.Permissions.PermFamilyFriends,
                             PermissionComment.Everybody, PermissionAddMeta.Everybody);

            string user = f.AuthCheckToken(Properties.Settings.Default.FlickrToken).User.UserId;

            PhotoInfoTag[] ftags = f.TagsGetListPhoto(id); //.Tags.TagCollection;

            if (ftags != null)
            {
                foreach (PhotoInfoTag ftag in ftags)
                {
                    if (ftag.AuthorId == user)
                    {
                        bool found = false;
                        for (int i = 0; i < tags.Count; i++)
                        {
                            if ((string)tags[i] == ftag.Raw)
                            {
                                found = true;
                                tags.RemoveAt(i);
                                break;
                            }
                        }

                        if (!found && !NoDeleteTags)
                        {
                            f.PhotosRemoveTag(ftag.TagId);
                        }
                    }
                }
            }

            foreach (string tag in tags)
            {
                if (tag.Length > 0 && tag[0] == '"' && tag[tag.Length - 1] == '"')
                {
                    f.PhotosAddTags(id, tag);
                }
                else
                {
                    f.PhotosAddTags(id, @"""" + tag + @"""");
                }
            }

            if (GeoLat != null && GeoLong != null)
            {
                try
                {
                    f.PhotosGeoSetLocation(id, (double)GeoLat, (double)GeoLong);
                }
                catch (Exception ex)
                {
                    FlickrSync.Error("Error setting Geo location: " + filename + " Lat=" + GeoLat + " Long=" + GeoLong, ex, FlickrSync.ErrorType.Normal);
                }
            }

            return(id);
        }
示例#6
0
        public string UploadPicture(string filename, string title, string description, ArrayList tags, FlickrSync.Permissions permission)
        {
            ArrayList specialtags = new ArrayList();

            foreach (string tag in tags)
            {
                if (tag.ToLower().StartsWith("flickrsync:") || tag.ToLower().StartsWith(@"""flickrsync:"))
                {
                    specialtags.Add(tag);
                }
            }

            foreach (string stag in specialtags)
            {
                tags.Remove(stag);

                string stag2 = stag.ToLower();
                // To support picasa replace colons with equal sign (to be able to use flickrsync:perm:friends instead of flickrsync:perm=friends)
                stag2 = stag2.Replace(':', '=');

                if (stag2.Contains("flickrsync=perm=private"))
                {
                    permission = FlickrSync.Permissions.PermPrivate;
                }
                else if (stag2.Contains("flickrsync=perm=default"))
                {
                    permission = FlickrSync.Permissions.PermDefault;
                }
                else if (stag2.Contains("flickrsync=perm=familyfriends"))
                {
                    permission = FlickrSync.Permissions.PermFamilyFriends;
                }
                else if (stag2.Contains("flickrsync=perm=friends"))
                {
                    permission = FlickrSync.Permissions.PermFriends;
                }
                else if (stag2.Contains("flickrsync=perm=family"))
                {
                    permission = FlickrSync.Permissions.PermFamily;
                }
                else if (stag2.Contains("flickrsync=perm=public"))
                {
                    permission = FlickrSync.Permissions.PermPublic;
                }
            }

            string tags_str = "";

            foreach (string tag in tags)
            {
                if (tag.Length > 0 && tag[0] == '"' && tag[tag.Length - 1] == '"')
                {
                    tags_str = tags_str + tag;
                }
                else
                {
                    tags_str = tags_str + @"""" + tag + @""" ";
                }
            }

            string id = "";

            if (permission == FlickrSync.Permissions.PermDefault)
            {
                id = f.UploadPicture(filename, title, description, tags_str);
            }
            else
            {
                id = f.UploadPicture(filename, title, description, tags_str,
                                     permission == FlickrSync.Permissions.PermPublic,
                                     permission == FlickrSync.Permissions.PermFamily || permission == FlickrSync.Permissions.PermFamilyFriends,
                                     permission == FlickrSync.Permissions.PermFriends || permission == FlickrSync.Permissions.PermFamilyFriends);
            }

            // remove special tags. If there is an error it will be ignored (not very relevant)
            // they were removed previously from tags_str but flickr ignores this on upload
            try
            {
                foreach (string stag in specialtags)
                {
                    PhotoInfoTag[] taglist = f.TagsGetListPhoto(id);
                    foreach (PhotoInfoTag pit in taglist)
                    {
                        if (pit.Raw == stag)
                        {
                            f.PhotosRemoveTag(pit.TagId);
                        }
                    }
                }
            }
            catch (Exception)
            {
            }

            return(id);
        }