Skip to content

Instantly share code, notes, and snippets.

@franek
Created December 30, 2011 16:14
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save franek/1540460 to your computer and use it in GitHub Desktop.
Save franek/1540460 to your computer and use it in GitHub Desktop.
Delicious Backup Script
#! /usr/bin/env python
# The Delicious API only returns 1000 bookmarks at a time.
# The web export returns them all in the output file.
#
# To use:
# 1. Install requests: http://python-requests.org
# under ubuntu
# - install pip :
# sudo apt-get install python-pip
# - upgrade python-request
# sudo pip install requests --upgrade
# 2. Run python
# python delicious.py -u <username> -p <password> -o output.html
# 3. Enjoy
#
#
# You can add this script in crontab
# Example :
# 0 19 * * * /usr/bin/python /directory/to/delicious.py -u <username> -p <password> -o /directory/to/backup/delicious-`date +%Y%m%d`.html
import requests
import sys
import argparse
# use argparse to get command line argument
# --username (or -u) and --password (or -p) are required
parser = argparse.ArgumentParser(description='Process parameters.')
parser.add_argument('-u', '--username', required=True)
parser.add_argument('-p', '--password', required=True)
parser.add_argument('-o', '--output', type=argparse.FileType('w'), required=True)
args = parser.parse_args()
# connect to delicious and retrieve cookies
data = {"action": "login", "username": args.username, "password": args.password}
response = requests.post("https://delicious.com/login", data=data)
cookies = response.cookies
# export bookmarks
data = {"include_notes": "yes", "include_tags": "yes", "tags": ""}
response = requests.post("http://export.delicious.com/settings/bookmarks/export", data=data, cookies=cookies)
# write bookmarks in the output file
args.output.write(unicode(response.content).encode("utf-8"))
# this is the end !
@elazar
Copy link

elazar commented Dec 31, 2011

Nice improvements! Thanks for forking. :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment