Flickrfs is a virtual filesystem which mounts on your linux machine like any other partition. Once mounted, it retrieves information about your photos hosted on your flickr account, and shows them as files. You can now easily copy photos from your local machine to this mount, and it will automatically upload them to your flickr account. Similary, you can copy the files from your mount to your local machine, and it will download your images from flickr.
All the files in the mount have a meta file attached to them, which provides access to title, description, tags, and license information. Modifying any of these fields and saving the meta file, will update them on the server as well.
You can easily specify what is the default resolution of photos that you wish to upload, and the fs will automatically resize (read downsize) the photo, and upload it.
That's not all, the latest verion of flickrfs, provides a syncing mechanism. This mechanism automatically syncs any changes done online directly to flickr account (using flickr's web interface or any other third party apps), to your mount. Thus, any addition/deletion/changes of sets/images is reflected back to your mount. No stale information! You just to mount it once, and it can be used forever!
/sets folder contains your sets, including your private photos. You can easily add/delete sets using standard linux commands.
/tags/personal folder allows search based upon tags in your photostream. Just create a folder (use mkdir) whose name is a colon delimited tags like 'tag1:tag2:tag3', and the fs will search your photostream to match all the photos which contain ALL these tags, and show them as files inside the directory.
/tags/public does the same thing, but searches for public photos even outside your photostream.
/stream folder will contain ALL the photos that are present and accessible in your photostream. Obviously these wd also include photos from your sets.
This folder is not created by default. You need to create directory named 'stream' in the root of mount point for the fs to populate the photos. Once the folder is created, it can't be removed.
flickrfs has been integrated with Berkeley DB using python's bsddb module. Which means flickrfs would now store the image information in Berkeley db database, instead of storing it in memory. Let come millions of images, flickrfs would still consume only negligible amounts of RAM. Regarding hard disk space, it would be in order of 10s of Megabytes; not an issue for today's computers.
flickrfs retrieves the sets information in parallel, background threads. Hence, the directory structure is created quickly, allowing users to start working. If some sets couldn't be retrieved the first time, they'd be taken care of when *syncing* kicks in.
Secondly, full metadata information of images would only be retrieved when asked for; though they'll always be listed in the directory. Its just like the way flickrfs handles images.
Flickr operations, as in, interactions with flickr server are now fail-safe. flickrfs handles the URLError exceptions thrown by the operation, checks its result, and retries the operation multiple times in case of failure. Thus, even if connection is lost temporarily, flickrfs would continue its operations unaffected.
config.txt file, present in ~/.flickrfs would be created automatically, if not present. Normally the default values would be fine, but feel free to change it according to your needs.
statfs system call is now tied to the bandwidth usage information of your flickr account. You can view it by running a
flickrfs will automatically sync any changes done directly through flickr web interface/organizer or any other third party apps, to its local mount dynamically. This include changes to your /sets and /stream. The photos present in /tags are not synced, simply because /tags is meant just for searching/downloading purposes. The time interval can be specified through config.txt file. The default interval specified is 10 mins.
NOTE: This does not affect the original photo. Only a copy is resized, and uploaded.
If your photo resolution is high, fs will automatically downsize (a copy of it, not original photo) to the resolution specified in config.txt file, before uploading. This also reduces the image's size, thus useful to people with limited 20MB upload limit. Note that if the image is smaller than the specified size, it would not be resized, and the original size will be uploaded.
More robust unicode support. This feature is still in testing mode, so if you find any bug, feel free to contact us.
Title, Description, Tags, License: Use meta data file associated to photo. For photo named img1_ID.jpg, the meta data file wd be .img1_ID.meta. Modify this file, and save it, and the changes will be updated to the servers.
You may also use 'sed' to do batch operations. For e.g., To change the licenses of all photos from license:0 'All rights reserved' to license:1 'Attribution-NonCommercial-ShareAlike License', execute this:
Permissions: On the image that you wish to change permissions,execute these statements:
Time: Modification time of the image is set to its last update time on flickr, while creation time is set to the time when the image was uploaded to flickr.
Copy the image to either /sets/yourset or /stream, with the directoy name as follows:
and the photo will be uploaded with the three tags, and an additional tag 'flickrfs'. Spaces in tags are allowed.
To create a new set, just create a directory in /sets/. The first photo that you copy or link to that directory will become the primary photo of that set. When you execute a mkdir, copy your first photo quickly, so that the set is created online. Otherwise, the sync thread will delete the new directory, seeing it as incoherent with online server.
Note the '/' at the end of the destination paths. This is required to differentiate b/w a filename and directory.
Note: /tags/personal can no longer be used for uploading photos. Use /stream for that.
Use your ln command to directly add a photo present in your /stream to a set.
OR, if you wish to add a new set altogether, just create a new dir before executing link (ln). When you execute a mkdir, link your first photo quickly, so that the set is created online. Otherwise, the sync thread will delete the new directory, seeing it as incoherent with online server.
Flickrfs doesn't allow/do deletion of photos. It is to prevent a 'rm *' accident!
You can easily remove photos from your sets though.
If the photo is the last photo in the set, the set will be deleted automatically.
To search your personal photos for tags: tag1, tag2 and tag3; create a directory in /tags/personal:
To search public photos, do so in /tags/public.
The directory will store the results as files, with a maximum of 500 files.
Copy the image from the mount to your local harddisk, and the original size of the image will be downloaded. If original size if not present, the accessible largest size of the photo will be downloaded.
If you wish to switch account, just delete the folder $HOMEDIR/.flickr. This will remove your cache, and ask for authentication next time you mount the fs.
1. Open synaptics or use apt-get, and Install the following packages:
2. Execute commands:
3. Download flickrfs package from sourceforge, and untar it:
OR, at any point of time, the CVS version of flickrfs will be the most updated. So, you can directly download from cvs:
4. [Optional Step] The first time flickrfs is run, it would automatically create the config.txt file with default values. Otherwise, you can create it yourself, by copying config.txt file in $HOME/.flickrfs. Edit the file, to set the following options:
The interval is in seconds. The default interval set is 10mins. The sync of /sets and /stream is irrespective of each other, so you can change the interval values as you like. For example, if outdated information in /stream doesn't bother you, you can change the interval to larger values say, 30mins.
image.size field specifies the default size that the photos will be resized to before uploading. If you wish to upload the original size of photos, leave the value blank as follows. Note that, only a copy of photo is resized, your original photo will not be resized.
5. [Optional Step] Create a screen terminal
What is screen? Read the Linux Journal article here
Why? This will keep the fs mounted even when you log out. Next time you log in, you can directly access the fs, without having to mount it again. Saves effort!
6. Mount the filesystem
Check if fuse module has already been loaded in kernel.
First time you are mounting the fs, you need to close all the browser windows. Secondly, if you are behind a proxy server, set you http_proxy environment variable in the command line.
The default web browser used is firefox. If you use something else, you can set it in config.txt.
Your browser window will open up, and require you to login, and allow authentication to flickrfs. Once you do that, close your window. Flickrfs will now start downloading information. Wait a few minutes for your sets to populate. If you wish to view your whole stream, create a directory stream in your mountpoint.
You are ready to GO!
7. [Optional Step] See flickrfs in actionIf you wish, you can view exactly what is flickrfs doing, by checking out the log file present in $HOME/.flickrfs
8. Once you're done, you can unmount the fs
To unmount the filesystem, execute the following command
Follow the installation procedure for ubuntu. The only difference is in step number 1, Installation of packages. You can check if your distro's package manager has these following packages, and install them:
If not, you can manually retreive and compile the packages from source.
1. Download and Install FUSE
2. Install fuse python bindings.
3. This step is optional, only for those who wish to use the image resizing functionality. Check if you already have Imagemagick installed.
If the above commands produce a 'command not found' error, you need to install Imagemagick.
Download and Install Imagemagick.
I would like to thank R. David Murray (flickrfs developer) for his contribution to flickrfs by testing, fixing bugs, and adding new functionalities. I'd also like to thank Febio Spelta (flickrfs developer) for his valuable suggestions, and contributions to flickrfs.
I really appreciate and thank people who provide feedback, even small bugs reports, as these help us to improve flickrfs. And my special thanks to all those who are using flickrfs, and making this whole effort worth.
- Manish Rai Jain
flickrfs installation instructions in Portugese. Thanks J. Luiz Coe!
Page last updated: 20th November, 2006
flickrfs - Virtual Filesystem for Flickr
Copyright (c) 2005 Manish Rai Jain <manishrjain [at] gmail [dot] com>
This program can be distributed under the terms of the GNU GPL version 2, or its later versions.