Instantly share code, notes, and snippets.

Embed
What would you like to do?
UpdatePinboardTags
#coding: utf-8
import console
import keychain
import pickle
login = keychain.get_password('pinboard.in','pythonista')
if login is not None:
user, pw = pickle.loads(login)
else:
user, pw = console.login_alert('Pinboard Login', '')
login = pickle.dumps((user, pw))
keychain.set_password('pinboard.in', 'pythonista', login)
import requests
import json
pinboard_url = 'https://api.pinboard.in/v1/tags/get?format=json'
r = requests.get(pinboard_url, auth=(user, pw))
data = json.loads(r.text)
tags = data.items()
# minTags is the minimum amount of times this tag must link to a bookmark to be part of our final list.
# Change the value to 1 to grab all tags, for example.
minTags = 10
# This will generate a list without tags with less than minTags bookmarks.
filteredTags = [(str(k).lower(),int(v)) for k,v in tags if int(v) >= minTags]
# Change to True to sort your tags by name, otherwise they'll be sorted by count
sortByName = False
from operator import itemgetter
if sortByName:
filteredTags = sorted(filteredTags, key=itemgetter(0))
else:
filteredTags = sorted(filteredTags, key=itemgetter(1), reverse=True)
# finalTags kicks the conversion to a Launch Center Pro [list] converting each tag into tag=t:tag so we can use them to call Pinswift later.
finalTags = '|'.join([k for k,v in filteredTags])
title = 'Pick a Tag!'
label = 'Pick a Tag!'
description = 'Outcome for our Pythonista script to create a list with our most used tags from Pinboard ready to trigger at Pinswift'
# Comment the next line if you're not using Pinswift
action = 'pinswift:///u:%s/t:[list:%s|%s]' % (user, label, finalTags)
# Uncomment the next line if you're using Pushpin
#action = 'pushpin://feed?user=%s&tags=[list:%s|%s]' % (user, label, finalTags)
from urllib import quote
import webbrowser
import_lcp = 'launch://import?url=%s&title=%s&description=%s' % (quote(action), quote(title), quote(description))
webbrowser.open(import_lcp)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment