Craig in feed form

Archive for the 'Scripts' Category An orange feed icon

Déjà Dup is a simplified back-up tool for Gnome that lets you use a variety of storage options for backing up your computer. However, its handling of Amazon S3 is a little simplistic as it does not let you set the region of the bucket that it will automatically create for you or use a pre-existing bucket. Amazon charges based on where data is sent and got from, so if you do not live in the US Déjà Dup will cost you extra. There is a bug report of course, but that does not seem to be getting attention, so below are instructions for a work around.

I have not tested the instructions exhaustively, but it works for me on Fedora 16 Beta with Déjà Dup version 19.90, having initially let Déjà Dup create a default bucket. They are based on an answer to a different problem. Essentially the fix is to manually specify the bucket used in the dconf data for Déjà Dup, after which it just magically carries on working.

  • Using an S3 tool…
    1. Create a bucket with the correct region specified
    2. If applicable, copy the contents from the default Déjà Dup bucket into the new one
  • On your computer…
    1. You will need to use the dconf tool, which is probably already installed
    2. $ dconf write /org/gnome/deja-dup/s3/bucket \'bucket-name\'
    3. Also, you may want to change or reset the folder key, $ dconf reset /org/gnome/deja-dup/s3/folder

Note that the escaped quote marks are required but I have no idea why. If you are not comfortable putting magic incantations into the terminal there is a GUI editor for dconf which you should be able to find in a package with a name like dconf-editor, or dconf-tools.

Google Books android script

July 29th, 2010

The script below lets you scan multiple book barcodes and add the books directly to your Google Library.

Since getting a Nexus One I’ve been wanting to dabble with programming something for it, Java seemed far too hard. However, I quickly came across Scripting Layer for Android (SL4A) which lets you write quick scripts in a variety of languages; including my favourite, Python. The next challenge was to actually come up with a simple project to get my hands dirty.

Matt Cutts wrote a simple script that scans a barcode and pulls up its Google Books page, from which you can then click the ‘add to my library’ button, but this seemed far too clumsy and slow to me, so I settled on improving it. The script now lets you scan multiple books in series and then add them to your Google library by making use of the Google Books Search API.

See the code (public domain) below:

import android
from gdata.books.service import BookService
import gdata.books

email = 'youremail@gmail.com'
password = 'yourpassword'

droid = android.Android()

def dialog(items):
  title = 'Another?'
  droid.dialogCreateAlert(title)
  droid.dialogSetItems(items)
  droid.dialogSetPositiveButtonText('Add')
  droid.dialogSetNegativeButtonText('Exit')
  droid.dialogSetNeutralButtonText('Upload')
  droid.dialogShow()
  response = droid.dialogGetResponse().result
  return response['which']

def add_from_queue(self):
   for k,b in self.queue.items():
      self.add_item_to_library(b)
   return(True)

def get_by_barcode(self):
   (id, result, error) = droid.scanBarcode()
   if result is not True:
      return(False)
   isbn = int(result['extras']['SCAN_RESULT'])
   q = 'ISBN'+str(isbn)
   b = self.search(q, feed=self.ITEM_FEED).entry[0]
   self.queue[b.dc_title[0].text] = b
   return(True)

gdata.books.service.BookService.get_by_barcode = get_by_barcode
gdata.books.service.BookService.add_from_queue = add_from_queue
gdata.books.service.BookService.queue = {}
gdata.books.service.BookService.ITEM_FEED = gdata.books.service.ITEM_FEED

service = gdata.books.service.BookService()
service.ClientLogin(email, password)

service.get_by_barcode()

i = True
while i:
  response = dialog(service.queue.keys())

  if response == 'positive':
     service.get_by_barcode()

  elif response == 'neutral':
     service.add_from_queue()
     service.queue = {}

  else:
     i = False

droid.exit()

Updated: Thanks to sjb for pointing out a bug in the code; now fixed.

Not so new look

April 21st, 2007

I changed the look of the website a little while back, as you may have noticed. It is quite a significant departure from the previous style and layout. The two main changes are the new colour scheme and the inclusion of a number of feeds on the index page.

Colour scheme

I was inspired to change to a much darker scheme having read an article on how the colours effect the energy required to display a website. Essentially, bright and light colours require more energy from your monitor.

Feeds

These feeds represent online content which I have created. Although in the case of recommended posts and bookmarks this creation might be considered a bit abstract. This was an idea I had a long while ago, and then not so long ago came across a way of quickly and crudely implementing it.

Up until today the feeds have been read, parse and output each time the page was called. This was causing significant delays in the page loading times. As of today a static file containing the parsed feeds is generated every 12 hours. The index page then calls on the static file when a request is made which means that no time is wasted on parsing the feed and preparing the output.

For those interested I’ve done this quite simply by writing taking a php file that was parsing the feeds and having it write the output to a static file. I then have a cron job run the php file at 9am and 9pm everyday:

0 9,21 * * * /usr/bin/php -q /PATH/generate_static_feeds.php > /dev/null

The last bit of that command “/dev/null” sends the output into the ether. Without it the server will e-mail the output of the script… which for some purposes can be rather useful.

In time I’ll be working on a more complex way of displaying the recommended posts, which will allow me to write a little note to go with each explaining why I have recommended them.

New toys

April 22nd, 2006

Over the Easter holiday I managed to find some time to tinker with a few new features for my website.

Statistics

Update This is no longer available

This grew out of my insatiable curiosity which has meant I have sought to record visitors to my website for some time now. I forced myself around to doing so, managing to get it started by combining it with a new fascination for Google Maps. There are quite a few features I would like to try to work into it, but I think the basics are there. You are being watched! (But only if you visit the index page).

Polyliner

A tool for drawing routes onto Google Maps, and associating information with it. This is very much in development at the moment, and there are lot of things I’m not particularly happy with. This came from a need to display migration routes of my ancestors to be place on the family website my dad was is developing.

Archives

Categories