Since as of late I've been playing about with web browsers that don't support bookmarklets (at least as far as I can tell; there's quickmarks - I don't know what they are about) I revisited my Smile QIF generator and changed it into a Vim Script so I could use it in the same vein as Dave Small's original Qifinator, i.e. copy and paste in from the Smile web page and "click" to process into Qif format:

"Uses tlib http://www.vim.org/scripts/script.php?script_id=1863
function! SmileQIF()
    "Delete any blank lines
    silent! g/^$/d
    "If previous statement reverse the lines
    if getline(1)=~"BROUGHT FORWARD"
        g/^/m0
    endif
    let linenum = 1
    while linenum <= line("$")
        let curr_line = getline(linenum)
        if curr_line=~"BROUGHT FORWARD" || curr_line=~"LAST STATEMENT"
            execute linenum 'delete _'
            let linenum = linenum - 1
        else
            let parts = split(curr_line, "\t")
            "Date. Need to strip trailing spaces
            let new_line = "D".tlib#string#Strip(parts[0])."\t"
            "Transaction
            if match(parts[2], "£") < 0
                "safer than checking for blanks as sometimes it's odd whitespace
                let new_line = new_line."T-".strpart(tlib#string#Strip(parts[3]),2)."\t"
            else
                let new_line = new_line."T".strpart(tlib#string#Strip(parts[2]),2)."\t"
            endif
            "Payment
            let new_line = new_line."P".tlib#string#Strip(parts[1])."\t\^"
            call setline(linenum, new_line)
        endif
        let linenum = linenum + 1
    endwhile
    "Insert Header
    let header = "!Type:Bank\t".getline(1)
    call setline(1, header)
    "Replace tabs with new lines
    %s/\t/\r/g
endfunction
command! SmileQIF :call SmileQIF()

This is actually better than my bookmarklet (although more verbose) as it also reverses the date order of previous statement pages to match recent items - since patching together statements across pages is often necessary because for some unfathomable reason Smile don't generate statements on clean date break boundaries (i.e. you'll find transactions from the same day in both recent items and previous statements).

I've just placed the above in my .vimrc and I call with :SmileQIF