Synchronize WordPress and Delicious: EG-Delicious-Sync

July 5th, 2009

As a lot of WordPress users, I also use the bookmarker Delicious. Both of the tools are efficient to manage links, but we have to decide if we want to manage our links in the both tools, or use each of these tools differently. If we choose the first case, we have to enter the links twice.
Some plugins allow to display the Delicious links in our blog, but most of them just read RSS feeds coming from Delicious. This method has two disadvantages: we can get only the last updated or added bookmarks, and it can slow down the blog.
EG-Delicious-Sync allow to backup the Delicious links into WordPress links database. You can then use these links as usual, with the WordPress features (widgets, templates tags …).

Description

Most of plugins related to Delicious allow to display Delicious links, or synchronize the last links. They use RSS features of Delicious, with three main disadvantages:

  • They can adress only the last updated or added links,
  • Use RSS, even with a cache, can slow down your blog,
  • Links are not stored permanently in the WordPress database.

EG-Delicious-Sync use the HTTP API of Delicious, and allows to perform a true full backup of your Delicious links, into the WordPress database, in the standard table (wp_links). So, after this synchronization, you can use the standard features of WordPress to manage and display these links (widgets, template tags …), as if the Delicious posts are local.

You can customize the backup (or synchronization) with a number of options:

  • You can entirely control the links classification, by assigning the WordPress categories of links, with the Delicious bundles, or the Delicious tags,
  • You can specify if you want a single categories per link, or allow several categories,
  • Specify if you want to keep the links already existing in the WordPress databases

The plugin provides also:

  • Display Delicious network badge (widgets, or template tags),
  • Display Tagsroll,
  • An enhanced blogroll widget,
  • Synchronization of tags between WordPress, and Delicious,
  • A full backup of the Delicious database (same format than the export/import functions of Delicious).

Installation

Requirements

EG-Delicious-Sync requires with WordPress 2.6 and later, and PHP 4.3 and later.

Installation

  • The plugin is available for download in the WordPress plugins repository,
  • Once downloaded, uncompress the file eg-delicious-wp-sync.zip,
  • Copy or upload the uncompressed files in the directory wp-content/plugins in your WordPress platform,
  • Activate the plugin, in the administration interface, through the menu Plugins.

The plugin is now ready to be used.
You can also use the WordPress 2.7/2.8 features, and install the plugin directly from the WordPress interface.

Then you can go to menu Settings / EG-Delicious to set plugin parameters

Configuration

  1. The configuration panel is available in the Settings / EG-Delicious menu,
  2. First, you have to give your Delicious username, and password. These parameters will allow the plugin to query Delicious API, to get posts list, tags list …
    First step of the configuration

    First step of the configuration

  3. After you press Save changes, a new form appears, with synchronization parameters,

    Links synchronization options

    Links synchronization options

  4. The mandatory parameters are the assignemnts between Wordpress categories of links, and Delicious bundles or tags. If the plugin cannot find the right categories, links won’t be synchronized,

    Categories / Bundles assignment

    Categories / Bundles assignment

  5. Once you fill the assignments table, click on “Save changes”,

    Other options for categories

    Other options for categories

  6. Options are saved, and you are ready to lanch your first synchronisation session.

Synchronize

  1. To synchronize the Delicious and WordPress links databases, use the menu Links / Delicious Sync.,
  2. Click on the start synchronization button,
  3. The plugin sends requests to Delicious and WordPress to collect links, tags, and bundles, and build synchronization table,
  4. When the calculation is terminated, the plugin displays this synchronization table. You can choose the categories, and the action to operate on each link,
  5. When you click on the Update changes button, the plugin proceed with all links when the action, and categories fields are not empty,
  6. The session is terminated, when you synchronize all links, or when you press the Stop synchronization button.

Table of synchronization

Table of synchronization

Tags Synchronization

The plugin can import the Delicious tags into the WordPress database. This feature allows you, for example, to standardize your classification between the two platforms. You can access to the tags synchronization through the menu Posts / EG-Delicious Tags.

Tags Synchronization

Tags Synchronization

The plugin displays the two lists, and the recommended actions. You can confirm this action, or change it, for each tag. After the validation, the plugin will execute all the operations requested.

Backup

If you don’t want to synchronize your bookmarks, but easily trigger a backup of the Delicious Database, you can use the menu Tools / Backup Delicious. With this menu, you can launch backups of Delicious, keep these backups, delete or dowload them.

Sauvegarde de la base Delicious

Backup of the Delicious database

Automatic post publication

Delicious displays, for each link, the number of members who bookmark it. This number can be consider as a good indicator of popularity. But adding all your posts into Delicious can be boring.

EG-Delicious-Sync can automatically add into Delicious, the posts you publish in WordPress. When you click on the Publish button, your post is immediately added to Delicious.

You can enable this function, by unsing the menu Settings / EG-Delicious. In this menu, you can:

  • Enable, or disable the publication mecanism,
  • Choose the tags to use during publication.
Publication automatique

Automatic publication

Please note that posts are also automatically suppressed from Delicious, when you delete them from WordPress.

Widgets

EG-Delicious add three widgets:

  • an enhanced blogroll,
  • a summary of your Delicious account (number of links, …). This summary is called NetWork Badge,
  • the list of Delicious tags, as tags cloud, or as simple list.

All of these three widgets share some common parameters: you can choose the display conditions. You can choose type of page (home, post, page, category …), or the language (useful if you manage a multilangual blog).

In detail:

  • EG-Delicious BlogRoll widget displays the list of links, as do the standard blogroll widget, but with more parameters. You can choose:
    • to display list in one or two columns,
    • the maximum number of links to display,
    • one or more categories.
  • Network badge widget displays the NetWork Badge of your Delicious account. The widget shows the main information of your Delicious account (number of links, number of fans, …). You can choose to display or hide each field of the account.
  • Delicious tags widget displays the Delicious tags, as a tags cloud, or as a list. This widget can be useful if you don’t want to display your blogroll directly on your blog. With this widget, you just give a set of links to show your bookmarks. Can be interesting, if you have a huge bookmarks database.

Frequently Asked Questions

The plugin backups of Delicious links into the WordPress links database. To have a true synchronization, can we update the Delicious database with the WordPress links?
No, for the moment, because of constraints of the Delicious API:

  • This API allows us to create a link in Delicious database, but we cannot launch a big amount of requests at the same time, because of Delicious securization.
  • With this API, we cannot update a link. We just can delete and re-create it, but in this case, the date is wrong.

After a synchronization, a link appears several times in the list.

The EG-Delicious-Sync plugin uses the field “url” to compare the Delicious and WordPress links. Two links with the same name, but two different url, are two different links, from the plugin point of view.

Is it possible to have a dual-way tags synchronisation?

Unfortunately no. The Delicious API doesn’t include a command to create tags.

The Delicious backup feature can only be used in manual mode. It is possible to schedule it?

This feature is planned in a next version.

Comments & trackbacks

Comments

58 responses

  1. Works great, thank you

  2. Hello – I can’t seem to get the form to display when you click save settings. If I set the debug option on, it says “cache file xxxx” but it would appear the cache file is not created. I have set open permissions on the tmp folder, and also created an empty cache file with the correct name. I am a bit stuck! Do you have any ideas what it could be?

    Chris.

  3. I published the version 0.7.2. There was an error during request to Delicious.
    Hope the plugin will work better.

  4. Merci! But now I get “Warning: array_keys() [function.array-keys]: The first argument should be an array in /home/chris/public_html/notomato.com.au/public/wp-content/plugins/eg-delicious-sync/eg-delicious-admin.inc.php on line 183″. I can’t see anything obvious but I haven’t gone over the whole file…

  5. I identified the bug for the warning message.
    But I still don’t understand why you don’t see the full option form.
    Could you give me your configuration: PHP version, WP version.

    On Delicious, do you have bundles? or just tags?

    Thanks.

  6. I know, it seems strange. It is php 5.2.4 and wp 2.8.

  7. Pershaps I understand the problem: I think you don’t use bundles in Delicious, and the default of the plugin is to synchronize bundles with WP categories.
    With the current version, if I can’t get bundles, I don’t display the options.

    There are a lot of changes to operate. I will try to publish a new version this evening (CET timezone).

  8. Ah yes – I just use tags. I added a bundle, and the options appeared, thank you. It’s nearly there – but I have one more question, once you do on sync and then do another, there is no way to see which ones you have done before. Maybe the checkboxes should be ticked with the category that is currently set?

  9. Ignore that last comment – you can see which ones have been added by the action field…

  10. great plugin, however I am getting an odd error message… any ideas on how to fix this?

    Warning: Call-time pass-by-reference has been deprecated in /home/content/j/t/b/jtbgunplugged/html/wp-content/plugins/eg-delicious-sync/eg-delicious-admin.inc.php on line 2070

  11. Hi Jason,
    I modified the plugin, and published the new version. Will appear soon in the WordPress directory.
    Emmanuel.

  12. Hi, a fantastic plugin! Is there any chance to import/manage only certain tag or bundle from delicious? I have a blog about architecture and I would like to import only the related bookmarks.
    Merci
    Merci

  13. Hi,
    For bookmarks synchronization: you can use options to set the default behavior of synchronization engine. Choose a WordPress category for each Delicious tag or bundle you want to synchronize, and leave blanck the others. To be synchronized, a bookmark must follow two conditions:
    - An action must be selected (Add, Delete …)
    - The bookmark must have a least one category selected
    So, in our case, only bookmarks belonging to tags/bundles you select in the options page, will be synchronized.

    Is this answer convenient for you?

  14. Wonderful plugin!

    I’d like to use it on WPMU, are you plain to develop its compatibilty in the future?

    Many thanks :)
    Antonio

  15. Hi,

    I am currently working on the WPMU compatibility. I have two issues to solve:
    - Cache management,
    - Backup files management

  16. Salut Emmanuel, I’ve tried your suggestion, but I couldn’t go ahead due to some errors.
    Going on the second page of links for sync gives me a blank page with no other bookmarks, so I tried different solutions.
    1. I clicked ‘Update changes’ on the first page. Result massage: No sync to do, because everything is yet synchronized;
    2. I tried to display more than 25 links per page.
    Result message: Warning: array_chunk() expects parameter 1 to be array, null given in /home/nickknet/public_html/brainstorm/wp-content/plugins/eg-delicious-sync/eg-delicious-admin.inc.php on line 1138;

    I’m running wp 2.8.3. Could it be a compatibility issue?
    My last question. In every attempt to sync, I always had to face with the links not present in delicious, like the blogroll ones, setting them to be not canceled. Is it supposed to works so?

    Merci encore

  17. Hi Aston,

    I published a new version yesterday, perhaps it will solve some of your issues,

    About synchronization page: when you start a synchronization, the plugin

    Collect all links in the blogroll,
    Collect all links of Delicious,
    Build a table, trying to match the blogroll and Delicious links, and to define action
    Display this table

    So, in this table, you will see all your links, but if you click on “Update button”, only links with a defined action, and with a selected category will be treated.

  18. Hi Antonio,
    The version published this week can be used with WMPU. I performed some tests with WPMU 2.7 and 2.8, and all seem ok.
    Perhaps it works also with 2.6.

  19. Fantastic! :)

    it works good with WPMU 2.7.1

    great Emmanuel!

  20. Thanks Antonio

  21. Salut Emmanuel, I did a clean upgrade (uninstall/new install), but I still have the same problems :(
    No sync at all, in no way. What a pity!
    At this point I don’t know what to think, maybe a plugin conflict? Is it possible?
    For now I deactivated it, but I’m still subscribed to your news, hope dies last!
    Cheers

  22. Hi Aston,
    Not good …
    Last try:
    - Stop synchronization,
    - With a FTP client, could you check if the directory wp-content/plugins/eg-delicious/tmp is empty.
    - if the directory is not empty, delete all files.
    - Retry a synchronization

    Could you send me the list of your plugins?
    Do you use a cache (wp super cache or other)?

  23. Hi, Thank you for the plugin I will use it for shure. But I am wondering if is possible to create posts from the Delicius links. Can I modify the plugin to do this, or are you considering making this kind of functionality yourself. Than’s.

  24. Hi Andreeib,
    There is this kind of feature in Delicious Blog posting, that publish a daily post with new entries in Delicious.

    Could you give me more details of what you want? I will see if it’s possible.

  25. Hi, Thank’s for replying. I want this plugin to make posts from my new delicious bookmarks. The bookmark name should be the post title, the notes should be the post content and the post tags should be the tags from the delicious bookmark. And I want the posts in categories depending on bookmark tags. I also want to make this plugin to create roundups. Ex. It needs to select more bookmarks from Delicious that are similar in tags and then post them in a single post. I hope is possible.

  26. Hi!

    I love your plugin. Great idea!

    However, I am getting this error message every time I try to publish a new post.
    Error 18: Cannot publish post in Delicious.
    The post goes ahead and is published, but is not submitted to delicious. Any ideas?

    Cheers,

    James.

  27. Hi Jimmy,

    Could you synchronize bookmarks between Delicious and WordPress?

  28. Hi Emmanuel,

    Thanks for your reply!

    Yes, my Delicious links are appearing in my blogroll links when I run the synchronisation.

    It just doesn’t seem to work the other way.

    J

  29. Hey There,

    Just to clarify: does the sync need to be run manually whenever i want to import my latest delicious links? Or, does it happen in the background automatically?

    If it’s the former.. could I write a cronjob to make it automatic? Any leads?

  30. Hi Jason,

    Today, the synchronization can be used in manual mode only.
    In next versions, I plan to
    - allow synchronization without interactions (in the current version, we have to clicks on buttons),
    - manage incremental synchronizations (sync only posts created of modified since the last sync),
    - allow scheduling

  31. Great! I’ll send a donation. Keep up the great work.

    Best,
    Jason

  32. There is a possible bug in 1.1.6 blogroll widget. I added the Post ID in the widget configuration and later decided that I didn’t want a link at the bottom of each of my categories. I removed the Post ID and re-saved the settings but it doesn’t clear the value and the link to “List of the Links” remains in the widget’s display.

  33. Bonjour,hélas pour moi, c’est un écran blanc après l’installation et la demande de mes identifiants delicious.
    configuration : php5.2.5 et Wordpress 2.8.4

  34. Bonjour,
    L’ecran blanc s’affiche-t-il tout de suite apres l’installation (dans la page de gestion des plugins), ou lorsque vous demandez la page des options?

    La demande d’identifiant Delicious est normale et fait partie de la phase de configuration (si elle s’affiche dans la page des options).
    La page d’option demande d’abord les username/password Delicious puis, apres validation, se sert de ces informations pour télécharger la configuration de Delicious (tags et bundles), pour effectuer la suite de la configuration.

  35. Bonsoir,
    l’installation se fait sans problème, c’est après avoir indiquer username et mot de passe que la procédure semble se bloquer. La fenêtre devient blanche hormis le menu latéral de WP et le navigateur m’indique que le chargement est terminé.
    Bravo pour la réactivité et, j’en profite, pour le contenu de qualité de votre site que je visite souvent, sans beaucoup commenter, je le reconnais…

  36. Merci pour les compliments.
    Concernant le bug, j’ai reussi a le reproduire sur ma plateforme de test.
    Je publierai la correction dans la prochaine version a venir (debut de semaine prochaine).

  37. Je bous d’impatience !
    Bonne continuation et à la semaine prochaine.

  38. Hello,

    Your plugin works great, except for one part. For some reason, the “notes” part of an article posted on the delicious website appears without any spaces. Do you have any idea why this is happening?

  39. Do you speak about the feature “Publish Post”?

  40. That is correct Emmanuel. I am speaking of “Publish Post” feature in my previous post.

    Thanks.

  41. As part of setting up thus plugin, I changed my Delicious tags, bundles, etc around… however when I start a full synchronisation, the plug seems to insist on seeing the information from Delicous as it was on the first time I ran a synchronization — i.e. as though it’s reading it from a cache, rather than connecting and getting fersh information. I’ve checked the contents of the ‘tmp’ directory in the plugin folder, and there’s nothing there other than a ‘dummy.txt’ file. Any ideas?

  42. If you use WP 2.8, the plugin uses the transient cache. The cache entries are stored in wp_options table.
    But cache duration is 15 minutes only !
    If you know how to access to our WP database, you can delete enties: _transient_posts, _transient_timeout_posts, _transient_tags, _transient_timeout_tagss, _transient_bundles, _transient_timeout_bundles.
    I will publish a new version of the plugin, at the beginning of next weeks. This new version enhances the cache management.

  43. Ah yes, that makes sense, because I found that it did, after a while, catch on to the new settings at Delicious. All functioning well, it’s a great plugin. Thanks for making it!Another question: ss there any way to list the links in their categories in a page? i.e. to have a links page…


  44. Salvatorius Nimp

    Hello, if installed EG-Delicious on WordPress 2.8.4.

    After installing (from admin interface) on Options page (delicious user and password) i got ‘Error 22: Cannot get bundles from Delicious – Error while querying Delicious.’.

    Can somebody help?

    Thanks, Salvatorius


  45. Salvatorius Nimp

    And one more: On article page and EG-Delicous Tag page i got ‘Error 21: Cannot get tags from Delicious – Error while querying Delicious.’.

    How can i check if i used the correct delicious user options?

    Thanks, Salvatorius


  46. Salvatorius Nimp

    Seems like this is something about delicious and yahoo account merge.

    http://support.delicious.com/forum/comments.php?DiscussionID=3434&page=1#Item_3


  47. Salvatorius Nimp

    seems like authentication system changed for yahoo accounts:

    >> Chris Thomson | Oct 19 2009 at 6:03 pm
    >>
    >> Will Delicious eventually require a Yahoo ID? How
    >> does the API work with Yahoo IDs? Will there be
    >> OAuth/Flickr-style authentication system for the
    >> Delicious API in the future?
    >>
    > Chris | Oct 19 2009 at 6:14 pm
    >
    > Hi Chris,
    > Apologies. It looks like our help pages didn’t get
    > updated.
    > For accounts created with a yahoo ID, you can use
    > pretty much the same api’s except:
    >
    > 1) You need to use OAuth, as per
    > http://developer.yahoo.com/oauth/, with Delicious as
    > a scope
    > 2) use /v2 as the path rather than /v1
    > 3) You can use http rather than https
    >
    > Chris

    http://blog.delicious.com/blog/2009/10/delicious-is-now-about-you-too.html#comments

  48. Hi Salvatore,

    Today EG-Delicious uses requests such as https://{username}:{password}@api.del.icio.us/v1/posts’ (or tags, or bundles) …
    The username and password must be the same used when you login from the home page of Delicious (Sign In button).

    I don’t plan any change about this method of requesting Delicious, but I will read documents you show in comment.

  49. Yahoo has changed the log in authentication method! Now we have to use the yahoo user!

  50. @Javier: is there any change on the plugin behavior, when you use Yahoo’s identifier?

  51. Bonjour Emmanuel,

    Ce plugin est exactement ce que je cherchais. Pb, j’ai tenté d’utiliser ton plugin avec une version 2.9 de WordPress et j’ai eu beaucoup de mal avec la synchronisation. En fait tellement que je n’ai pas réussi. Il faut dire que j’avais plus de 1500 liens et une bonne 100taine de tags. Serait ce à cause de la msse de données à importer ou à cause de la v 2.9 de WordPress ?

    En tout cas, c’est un énorme boulot, félicitations à toi !

  52. Bonjour Grégoire,

    Je n’ai pas encore testé ce plugin avec la version 2.9. J’avoue avoir du mal avec cette version: son comportement semble assez different de celui des versions Beta. Et comme il ne s’est ecoule que 24 h entre la RC1 et la sortie officielle, je n’ai pas pu faire les tests qui s’imposaient … Deux autres plugins etaient carrement en vrac !
    Petit message d’ailleurs a l’equipe “WordPress”: une RC1 24h avant la sortie officielle, c’est peut etre bien pour le buzz, mais pour les developpeurs de plugin, et meme les utilisateurs, cela ne sert a rien!

    Quand tu dis ne pas avoir reussi la synchronisation, y-a-t-il un message d’erreur?

  53. En fait de message d’erreur, lorsque je lance la synchronisation dans le menu “Liens”, après avoir fait la revue des 10 premiers liens et avoir rempli le champ action ET le champ classification des 25 premiers liens de la page 1 (sur 66), puis avoir cliqué sur “page suivante”, j’ai une page vide. Impossible de continuer la synchro et pas de message d’erreur.
    En espérant que ça t’aidera pour la maj de ton plugin. Si tu souhaites des infos + détaillées, je epux te faire un petit benchmark. Tu as mon mail.

  54. How long do these synchronizations take? And what happens when they’re successful? What’s the feedback? I started one an hour ago. At a certain point, it’d be easier to just transfer these links manually.

  55. Usually it takes some seconds or minutes.
    How many links do you have?

  56. Hello,
    after installing and set options I get the following messages:

    Warning: array_keys() [function.array-keys]: The first argument should be an array in /is/htdocs/wp1015999_3P9KDFE98T/www/hotwheels/wp-content/plugins/eg-delicious-sync/eg-delicious-admin.inc.php on line 247

    Warning: array_diff() [function.array-diff]: Argument #1 is not an array in /is/htdocs/wp1015999_3P9KDFE98T/www/hotwheels/wp-content/plugins/eg-delicious-sync/eg-delicious-admin.inc.php on line 253

    Warning: array_diff() [function.array-diff]: Argument #2 is not an array in /is/htdocs/wp1015999_3P9KDFE98T/www/hotwheels/wp-content/plugins/eg-delicious-sync/eg-delicious-admin.inc.php on line 253

    Warning: Invalid argument supplied for foreach() in /is/htdocs/wp1015999_3P9KDFE98T/www/hotwheels/wp-content/plugins/eg-delicious-sync/eg-delicious-admin.inc.php on line 390
    Delicious account

    In addition the option dialog can’t find data anymore.
    I use wordpress 2.9.1.

    Can you help? Thanks

Trackback / Pingback

2 trackbacks/pingbacks.

  1. [...] full description and documentation is available HERE. The plugin will be available soon in the WordPress plugin [...]

  2. [...] In: Wordpress plugins 15 Aug 2009 EG-Delicious-Sync use the HTTP API of Delicious, and allows to perform a true full backup of your Delicious links, into the WordPress database, in the standard table (wp_links). So, after this synchronization, you can use the standard features of WordPress to manage and display these links (widgets, template tags …), as if the Delicious posts are local. Go to Source [...]

Leave a comment