Tags:
Flickr Hacks
, Google Maps
, Greasemonkey

UrMap is an online map service of Taiwan. I wrote a greasemonkey script to make UrMap a geotagging tool. This script is for geotagging photos taken in Taiwan only. If you are interested, welcome to take a look at it.
Download: urmap.flickr.user.js
See also: flickr.tw/2005/12/geotagging_flickr_in_urmap.html
Tags:
Greasemonkey
, Rojo

I have been adding some additions to Rojo and keeping this script updated with Rojo. Lately, Rojo slightly changed its HTML layout, so some features of the script failed. I also fixed the compatible problem with Firefox 1.5RC3. Following is the clearance of all additions to Rojo of this script.
- an Ajax Wrapper for Rojo - replace the remote scripting by iframe request with XMLHttpRequest
- 'Mark as Read' to each feed - mark the entire feed as read
- 'Mark as Read' to each article - mark the article as read
- A toggle to display feed profile - fetch and display the profile of the feed
- Quick unsubscribing feeds - at the left hand side of feeds navigation and below each article
- new Read all stories - add 'Read All' after 'Expand All' and 'Collapse All'
Download: AJAX Wrapper for Rojo v1.5. (Greasemonkey script)
Tags:
Firefox
, GMiF
, Greasemonkey

The GMiF v3.5 is released. This update version works with Firefox 1.5Beta + Greasemonkey 0.6.3 and Flock. Besides, there comes with a new user interface. The Map container is now pop-up on the photo page, not inserted between the photo and comments any more.
Official release: Yuan.CC Web Experiments
My Group: Flickr Tools Group
Download: flickr.gmap.user.js
Tags:
Flickr Hacks
, Greasemonkey

I wrote a greasemonkey script called "Chronological Flickr Photostream". This script will insert a photostream box into the photo page of Flickr to display the context photos in chronological order of date taken.
Official site: Yuan.CC Web Experiments
Download: flickr.chronological.user.js
Tags:
Flickr Hacks
, Greasemonkey
I just added two new features to the Super Batch Processing for Flickr script.
1. Add an 'update script' link to menu.
2. Add a 'move to top' feature.
'Update script' simply links to the location of script, so you can update the script easily.
'Move to top' is an interesting feature. The display of photostream in Flickr is in reverse chronological order of posted date. You can now move the photos to top of the photostream. The script will modify the posted date of photos in cart to current date/time. This change is permanent and can't be rollback. Be careful to use.
ps. if 'move to top' doesn't work, check if your computer clock is accurate.
Download: flickr.batch.user.js
Tags:
Flickr Hacks
, Greasemonkey

Flickr is lacking of creating a list of arbitrary photos for batch operations. This script provides a "shopping cart" for you to collect your photos to process. After you added a number of photos in cart, you can edit as a batch, make an album, a slideshow, or a mosaic. Items in cart will be saved in greasemonkey storage and will be remembered while you're visiting different pages in flickr.
Features:
- A cart to collect photos you select, up to 100 photos
- A checkbox attached on the upper-right corner of each photo
- Editing photos as a batch, beyond sets, tagged photos, or date-based photos
- Connecting to external flickr tools, such as Flcikr Album Maker, Photo Mosaic, or Slideshow.
- Working fine with "GM: Batch Enhancer"
Special thanks to fd/John for his permission to feed the list of photos to his flickr toys. (slideshow and mosaic)
Download: flickr.batch.user.js
Tags:
Flickr Hacks
, Greasemonkey

This is an update for Ajax Photo Blogging in Flickr script.
Well, I got something done. The new version of this script now supports two types of blog API, Metaweblog and Atom API. Blogger.com invented and uses Atom API.
For Atom API, your blog service.edit URI is like this:
"https://www.blogger.com/atom/123456"
which 123456 is your blog-id. You can find your blogger.com service.edit URI by checking the HTML source of your blog. Find the following line:
<link rel="service.post" type="application/atom+xml" title="blogname" href="https://www.blogger.com/atom/123456" />
You dont need to worry about login scheme. If you've logged on blogger.com, no username/passwd is needed. If not, it will prompt an authentication dialog to ask you login.
Download: flickr.blog.user.js
Tags:
Flickr Hacks
, Greasemonkey

I've written a new GM script called "Ajax Photo Blogging". It's not an improved version of official "Blog this" tool, however, I create a new one in Ajax approach to let you blog faster and easier.
The features of the tool:
- Blogging and posting in Ajax way in background.
- Posting to your blog via XMLRPC by calling GMxmlhttpRequest of greasemonkey.
- Working fine and testing in Movable Type 3.2 now.
- Adding the URL of new post to the photo description or comment, depend on if you are the owner of photo or not.
The pros -
- No need to save your blog password in Flickr.
- Blogging and commenting at one-click.
The cons -
- Storing your blog password in local machine causes inconvenience when not using your own computer.
- You need to know the detail tech info of your blog, eg. XMLRPC endpoint URL, blogid...
- I only test under my blog environment now. Mine is Movable Type 3.2. I believe all MT series will work fine. If any of you are interested in this script, please have a try and let me know the result. Your feedback is appreciated.
ps. The pieces of code to add comment and description are contributed by steeev in my GMiF project. Thank you.
Download: flickr.blog.user.js
Tags:
Ajax
, Greasemonkey
, Rojo

In Rojo, you can unsubscribe feeds only within two pages, the page of managing your feed list or the one of viewing the feed profile. Now the rojo.ajax.user.js script injects quick links to let you unsubscribe feeds any time. The response time of unsubscription is very fast due to the calling to unpublished Rojo API (RPC). :)
Download: AJAX Wrapper for Rojo v1.4. (Greasemonkey script)
Continue reading "[Ajax] Hacking Rojo - Quick unsubscribe feeds in Rojo" »
Tags:
Flickr Hacks
, GMiF
, Greasemonkey
Flickr just changed some internal object and function names of Javascript, such as, 'photo_hash' becomes 'global_photos', and 'getCookie()' becomes '_get_cookie()'.
Two updated scripts:
GMiF: flickr.gmap.user.js
Toggle Comments: flickr.comments.toggle.user.js
Tags:
Ajax
, Greasemonkey
, Rojo

Rojo is lacking of some designs of user friendly. Why am I saying that? Sometimes we need to make an unnecessary click to get some basic but useful information of a feed. While reading stories of a feed, we probably want to take a look at the profile of it, or we also need to link to its original site. Furthermore, we would like to know the number of subscribers, unsubscribe, or rename the feed. All the stuff is in the profile of the feed, and need a click to get it.
The worse is still the slow response of Rojo. Loading a new page requires not only to fetch from server, but also needs extra time for browsers to render it. Now the script rojo.ajax.user.js v1.3 adds some bits to it. It fetches the profile of the feed in background, then displays a toggle below the title of feed. Click the toggle will show the information on the feed in Ajax way.
Download: AJAX Wrapper for Rojo v1.3 rojo.ajax.user.js
Continue reading "[Ajax] Hacking Rojo - Adding bits to feeds in Rojo" »
Tags:
Ajax
, Greasemonkey
, Rojo

Last time I have Ajaxized a 'Mark as Read' on a single feed to move the HTTP request to background by calling XMLHttpRequest instead of bringing to a new page. The counters of unread entries are reset on LHS menu. This time I extend the work to each single story and the feed below the story entry. That means you can now mark a story read as well as the feed of a story. See the screenshot above.
For each story, you can now do expand/collapse, mark as read, or both on it. For the feed of a story, you can also mark it read. This makes you much easier to mark a feed read without going to the page of that feed.
Download: AJAX Wrapper for Rojo v1.2 rojo.ajax.user.js
Continue reading "[Ajax] Hacking Rojo - Ajaxize more of 'Mark as Read'" »
Tags:
GMiF
, Greasemonkey
I've officially added GMiF to Userscripts.org. The anonymous post of old version of GMiF has been removed.
You can get the latest GMiF via either my official site http://webdev.yuan.cc/gmif/ , or via Userscripts.org http://userscripts.org/scripts/show/1574.
Or, you can check all my scripts in Userscripts.org.
Tags:
Ajax
, Greasemonkey
, Rojo
Since my previous work 'an Ajax Wrapper for Rojo' has replaced the iframe remote scripting by XMLHttpRequest, some slow 'loading whole page' transactions of Rojo need remodeling now. Well, I use the term "Ajaxize" which means turning the old-fashioned transactions of cross-pages into Ajax approach. The first one I've done is to make "Mark as Read" as a background transaction.
The script 'rojo.ajax.user.js' is now version 1.1 and has the following features:
1. Override the Remote object(remote scripting) by an Ajax wrapper.
2. Mark as read is now Ajax and reset the unread count on the LHS menu.
Download: rojo.ajax.user.js
Continue reading "[Ajax] Hacking Rojo - Ajaxize 'Mark as Read' function" »
Tags:
Ajax
, Greasemonkey
, Rojo
Rojo is a great web-based RSS reader. It supports tagging not only feeds but also article entries. The user interface is neat and well organized. The use of DHTML and CSS makes the site easier reading and more accessible.
As we already knew, Rojo uses a lot of DHTML + Javascript techniques to enhance the user interface. Despite Rojo has the modern design of tagging and social share, it seems not to be an Ajax approach I talked in my previous post, "Hacking Rojo - Rojo is not Ajax? ". Rojo retrieve asynchronous data by remote scripting with iframe, not by calling XMLHttpRequest. There would be a little bit slower when using remote script instead of XMLHttpRequest. Therefore I did a small experiment to replace the iframe remote script by the Ajax way. The Greasemonkey user script can meet my need to override the methods of Remote object in Rojo.
This Greasemonkey user script is a wrapper for Rojo to replace its iframe request by the XMLHttpRequest function. The data retrivial will proceed in background, so the browser won't be seen in loading pages any more. After installing the script, the response of using Rojo should become faster.
Download: rojo.ajax.user.js
Continue reading "[Ajax] Hacking Rojo - an Ajax Wrapper for Rojo" »
Tags:
GMiF
, Greasemonkey
, Mashups
Two new features of GMiF 3.0beta:
- If you 'Play' the geostream, the stream will slide to from right to left and the map will move to the location to show the focused photo at interval of every 3 seconds.
- The map size can be widened now. Two control buttons are added: 'Widen' and 'Narrow'. So you can enlarge the map either by the width or length.
The two features are for GMiF 3.0 only. You don't need to re-install the user script. You only need to press Ctrl+F5 once when viewing any photo page, firefox will force to reload the latest gmif.js library.
Tags:
GMiF
, Greasemonkey
, Mashups
The GMiF version 3.0 beta is out for testing. The reason I jump to v3.0 is because I reconstruct a lot of codes both in structures and modules. However, users won't feel too many changes of user interface. BTW, the GM 0.5 beta is also available. GMiF 3.0 is mainly developed and tested with it.
The major changes in v3.0:
- Loading GMiF js library dynamically
Now GMiF starts to load js library at runtime. GMiF itself registered in Greasemonkey is only a shell. The main js library is loading dynamically. If everything is going well, hopefully, users don't need to upgrade GMiF anymore. You can always has the latest GMiF online js library.
- 'Play' geotagged photostream
At the bottom of maps is the geotagged photostream of current photo owner. A button 'Play' is added to have the stream moving from right to left. You will see the whole geostream without clicking next/prev buttons.
- "Where is owner" feature
This is a new feature to tell people where you are now. Image that you are traveling, away from home, or just out of town. You can specify a geotagged photo to show the place you are now. The only thing you need to do is add a new tag "GMiF:herenow" to the photo. The GMiF will display your current location in Maps and use the photo as the icon.
A more interesting application is, if you have an GPS enabled camera, that you can post the photo via laptop+WiFi or GPRS/3G cellphone by email, your friends will know where you are now. GMiF will always fetch the latest photo tagged with 'GMiF:herenow'. You don't need to worry you have too many 'GMiF:herenow' tagged photo.
Please note that GMiF 3.0 is testing fully in the following environment: Firefox 1.0.6 + Greasemonkey 0.5 beta. If you encounter any problems, simply re-install v2.3 will bring you back.
Thanks for the test drive. Your help is appreciated.
Download GMiF 3.0 - flickr.gmap_v3.0.user.js
Download GMiF 2.3 - flickr.gmap_v2.3.user.js
Tags:
Flickr General
, Greasemonkey
The textarea in Flickr is too small. Sometimes the message we need to input is too long, even including some HTML codes. This script can enlarge the rows of textarea.
Download: flickr.textarea.user.js
Tags:
GMiF
, Greasemonkey
, Mashups

Version 1.6 is released. I added a nice toolbar with some useful functionalities of map controls, including saving favorite places, going to location by manually input lat/lon, lengthen and shorten map, etc...
Download v1.6 here: flickr.gmap.user.js
Tags:
GMiF
, Greasemonkey

A new version of the script is released. It can let you to add geotags directly and post to Geobloggers actively.
Download the latest script: flickr.gmap.user.js
Tags:
GMiF
, Greasemonkey

There's an easy way to see your geotagged photos on Gmap without leaving flickr. Just install the greasemonkey script to your firefox and see your photos shown on map right away. There will be a button added at the right-most of button bar if the photo is geotagged. Click the button to open and close the map.
Download: flickr.gmap.user.js
Sorry, there's still some errors shown in Javascript console of firefox. I'll figure out what happened.
Tags:
Flickr Hacks
, Greasemonkey
Some of us have so many contacts in flickr, say 50+, 100+, even 200+. However it is kinda hard to find our contacts efficiently. So I wrote a Greasemonkey user script to add tags at our flickr contacts to del.icio.us bookmarks system. The use of adding tags and searching contacts is very easy. All have been integrated to flickr pages. You can see the group photo spool for screenshots.
Please note it will prompt to ask you to login to del.icio.us system. It is completely safe to login. The request comes from del.icio.us directly, not from my script. Additionally, the script will implicitly add a tag named "flickr:contacts" to your contacts. Please don't remove it from del.icio.us. It is for the script to identify the contacts from your flickr.
Download flickr.contact.user.js, and start to tag your contacts.

Tags:
Greasemonkey
, LfVr
LfVr now supports the path in URL as parameters like flickr. For example, if the flickr URL is
http://www.flickr.com/photos/ckyuan/
The corresponding URL to LfVr is
http://webdev.yuan.cc/lfvr/photos/ckyuan/
So you can have a permament URL of your own flickr photos at LfVr. Additionally, I wrote a Greasemonkey user script for Flickr to switch current flickr page to LfVr.
You can get the script here lfvr.user.js. After installation, you will see there is a link "Lite Viewer" appearing beside link "Invite" at the top of the flickr page.
Tags:
Greasemonkey
, LfVr
I am thinking how to integrate LfVr and Flickr official site. Currently each page of LfVr will generate a corresponding link to flickr.
I plan to write a Greasemonkey user script to switch between LfVr and flickr back and forth. But first of all, LfVr has to take outside parameters from URL.