Magnolia to Google Bookmarks
L'export ma.gnolia.com vers un fichier bookmarks.html compatible firefox ne permet pas un import correct des tags vers Google Bookmarks.
En effet, la barre d'outils Google va utiliser le nom du dossier du favori comme tag.
Voici un programme Java qui permet d'exporter vos signets ma.gnolia vers un fichier bookmark (affiché dans la console, à copier dans un fichier ensuite) que vous pourrez ensuite importer dans Firefox. Les tags seront donc des dossiers. Un signet qui a plusieurs tags apparaitera du coup plusieurs fois. Mais ceci permet à la barre d'outil Google d'importer les favoris avec tous les tags.
import java.io.InputStream;
import java.net.URL;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
public class Process {
/**
* @param args
*/
public static void main(String[] args) throws Exception {
String apiKey = "YOUR_API_KEY";
String person = "YOUR_LOGIN_NAME";
URL url = new URL(
"http://ma.gnolia.com/api/rest/1/bookmarks_find?api_key="
+ apiKey + "&person=" + person);
InputStream content = (InputStream) url.getContent();
Document dom = DocumentBuilderFactory.newInstance()
.newDocumentBuilder().parse(content);
NodeList bookmarkList = dom.getElementsByTagName("bookmark");
// Store local contenant les bookmarks, associé à leur tag
HashMap<String , Set<Bookmark>> liste = new HashMap<String, Set<Bookmark>>();
for (int i = 0; i < bookmarkList.getLength(); i++) {
Element bookmarkNode = (Element) bookmarkList.item(i);
Element titleNode = (Element) bookmarkNode.getElementsByTagName(
"title").item(0);
Element urlNode = (Element) bookmarkNode
.getElementsByTagName("url").item(0);
Element descriptionNode = (Element) bookmarkNode
.getElementsByTagName("description").item(0);
Bookmark bookmark = new Bookmark();
bookmark.setName(titleNode.getTextContent());
bookmark.setUrl(urlNode.getTextContent());
if (descriptionNode.getTextContent().length() != 0) {
bookmark.setDescription(descriptionNode.getTextContent());
}
Element tagsNode = (Element) bookmarkNode.getElementsByTagName(
"tags").item(0);
NodeList tagNodeList = tagsNode.getElementsByTagName("tag");
Set<String> tagSet = new HashSet<String>();
for (int j = 0; j < tagNodeList.getLength(); j++) {
Element tagNode = (Element) tagNodeList.item(j);
String tag = tagNode.getAttribute("name");
tagSet.add(tagNode.getTextContent());
if (!liste.containsKey(tag)) {
liste.put(tag, new HashSet<Bookmark>());
}
liste.get(tag).add(bookmark);
}
bookmark.setTags(tagSet);
}
// parcours de la liste et print du bookarmks.html
System.out.println("<!DOCTYPE NETSCAPE-Bookmark-file-1>");
System.out
.println("<META HTTP-EQUIV=\ "Content-Type\" CONTENT=\"text/html; charset=UTF-8\">");
System.out.println("<TITLE>Bookmarks</TITLE>");
System.out.println("<H1>Bookmarks</H1>");
System.out.println("<DL><p>");
for (Iterator<String> iterator = liste.keySet().iterator(); iterator
.hasNext();) {
String tag = iterator.next();
System.out.println("<DT><H3>" + tag + "</H3>");
System.out.println("<DL><p>");
Set<Bookmark> bookmarks = liste.get(tag);
for (Iterator<Bookmark> iterator2 = bookmarks.iterator(); iterator2
.hasNext();) {
Bookmark bookmark = iterator2.next();
System.out.println("<DT><A HREF=\"" + bookmark.getUrl() + "\">"
+ bookmark.getName() + "</A>");
if (bookmark.getDescription() != null) {
System.out.println("<DD>" + bookmark.getDescription());
}
}
System.out.println("</DL><p>");
}
System.out.println("</DL><p>");
}
}
class Bookmark {
private String name = null;
private String url = null;
private Set<String> tags = null;
private String description = null;
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public Set<String> getTags() {
return tags;
}
public void setTags(Set<String> tags) {
this.tags = tags;
}
}