web-dev-qa-db-fra.com

Exporter tous les favoris Delicious

Le lien de sauvegarde canonique de Delicious, https://api.del.icio.us/v1/posts/all , ne renvoie que 1000 signets maintenant! Des idées comment obtenir tous mes favoris? Ceci est pour mon script d'exportation , qui a fonctionné jusqu'à ce que les nouveaux propriétaires prennent le relais.

Le vieux api.del.icio.us (98.139.50.166) semble être en panne, donc ce n'est pas une option (en outre, je veux télécharger tout , pas tous mes anciens plus 1000 de mes nouveaux signets).

6
l0b0

On dirait que personne d'autre ne l'a déjà fait, alors j'ai passé une soirée à récupérer le script d'exportation , à récupérer des blocs de 1 000 signets à la fois:

#!/bin/sh
#
# NAME
#        Delicious.sh - Download your bookmarks
#
# SYNOPSIS
#        Delicious.sh <username> <password> <save path>
#
# DESCRIPTION
#        Downloads the bookmarks at Delicious as an XML file.
#
#        How to export at midnight every day:
#
#        First, make sure nobody else can read your crontab. If not, they can
#        get access to your password, and I'm not good at sympathy.
#
#        $ git clone git://github.com/l0b0/export.git
#
#        $ crontab -e
#
#        Insert a new line with the following contents (replacing the example
#        paths and login with your own):
#
#        @midnight /.../export/Delicious.sh user password /.../bookmarks.xml
#
# BUGS
#        https://github.com/l0b0/export/issues
#
# COPYRIGHT AND LICENSE
#        Copyright (C) 2010, 2011 Victor Engmark
#
#        This program is free software: you can redistribute it and/or modify
#        it under the terms of the GNU General Public License as published by
#        the Free Software Foundation, either version 3 of the License, or
#        (at your option) any later version.
#
#        This program is distributed in the hope that it will be useful,
#        but WITHOUT ANY WARRANTY; without even the implied warranty of
#        MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#        GNU General Public License for more details.
#
#        You should have received a copy of the GNU General Public License
#        along with this program.  If not, see <http://www.gnu.org/licenses/>.
#
################################################################################
set -o errexit -o nounset

if [ $# -ne 3 ]
then
    echo 'Wrong parameters - See the documentation on top of the script'
    exit 1
fi

USERNAME="$1"
PASSWORD="$2"
EXPORT_PATH="$3"

# Export
EXPORT_URL=https://api.del.icio.us/v1/posts/all
EXPORT_DATE="$(date -u +%Y-%m-%dT%H:%M:%SZ)"
chunk_size=1000 # Delicious now only supports exporting 1000 bookmarks at a time
header_lines=3
chunk_lines=$(($chunk_size + $header_lines))
EXPORT_COMPATIBILITY='
s#^<posts \(tag="[^"]*"\) \(total="[^"]*"\) \(user="[^"]*"\)>#<posts \3 update="'$EXPORT_DATE'" \1 \2>#;
s#^<post \(description="[^"]*"\) \(extended="[^"]*"\) \(hash="[^"]*"\) \(href="[^"]*"\) private="[^"]*" shared="[^"]*" \(tag="[^"]*"\) \(time="[^"]*"\)/>#  <post \4 \3 \1 \5 \6 \2 meta="" />#'
EXPORT_REMOVE_LINES='3,${/^</d}'
bookmark_prefix='<post '

> "$EXPORT_PATH" # Empty bookmarks file

bookmarks_count() {
    # How many bookmarks have we fetched?
    grep -o "${bookmark_prefix}" "$EXPORT_PATH" | wc -l || true
}

while [ $(($(bookmarks_count) % $chunk_size)) -eq 0 ]
do
    wget \
        --user="$USERNAME" --password="$PASSWORD" \
        -O- \
        --no-check-certificate \
        "$EXPORT_URL?start=$(bookmarks_count)" >> "$EXPORT_PATH"
done
sed -i -e 's#><#>\n<#g' "$EXPORT_PATH" # Introduce newlines
sed -i -e "$EXPORT_COMPATIBILITY" "$EXPORT_PATH"
sed -i -e "$EXPORT_REMOVE_LINES" "$EXPORT_PATH"
echo '</posts>' >> "$EXPORT_PATH"

Ce script est plus entretenu par moi-même, car je suis passé au non-libre Pinboard , extrêmement rapide ( peu de JavaScript), fonctionnalité complète (par exemple, possibilité de modifier un grand nombre de signets) et fiable (pas de temps d'arrêt depuis ma migration il y a sept mois).

1
l0b0

Vous pouvez utiliser les tags suivants:

&start={xx} (facultatif) → Commencer à retourner publie autant de résultats dans l'ensemble.

&results={xx} (facultatif) → Renvoie ce nombre de résultats.

&fromdt={CCYY-MM-DDThh:mm:ssZ} (facultatif) → Filtrer pour les publications à cette date ou ultérieure

&todt={CCYY-MM-DDThh:mm:ssZ} (facultatif) → Filtrer pour les publications de cette date ou antérieures

Vous trouverez des informations sur l'API ici: http://www.delicious.com/developers

2
Ronald Oldenburger