Question

Je me demandais cela aussi. J'ai essayé et ai passé pas mal quelques heures à essayer, mais je suis enfin en mesure de procéder. J'ai découvert quelques petites choses qui ne seront pas évident pour la plupart des gens le long du chemin, donc je poste quelques pas ici. Vous devriez être en mesure d'avoir cette mise en place sur un serveur de test pour un test vous-même en peu de temps. Si quelqu'un a trouvé une autre façon de le faire, s'il vous plaît laissez-moi savoir.

D'abord, je voulais tous mes signets à peu organisé, et bien qu'il y ait quelques extensions de marquage pour Firefox, beaucoup d'entre eux semblait trop encombrant. Avec le recul, je aurais pu essayer certains d'entre eux d'abord.

J'ai choisi d'utiliser delicious.com (anciennement del.icio.us) pour marquer mes favoris pour moi. Il semblait que la façon la plus simple de s'y prendre, et la plupart des 1500 signets j'avais été connus à ce site, si les étiquettes étaient disponibles. Vous pourrez utiliser l'extension délicieux firefox, ou importer directement sur leur site.

Ils ont une API, et caché à l'intérieur est cette URL http:// username:password@api.del.icio.us/v1/posts/all

qui vous devriez avoir vos signets, maintenant avec des balises, comme un fichier xml.

Ensuite, vous utiliserez le script d'ici http://memografia.com/wordpress/delicious- à-importateur wordpress / pour importer comme un blog. Mais vous ne pouvez pas mettre ce script dans votre répertoire plugins et le faire fonctionner! WordPress 3.0 a changé la façon dont ils font les importateurs, mais ils ont laissé dans le dossier wp-admin dans un certain soutien de l'héritage (bien que cela ne soit pas vraiment documenté nulle part.) Il suffit de faire le dossier nommé « entrée » et déposez le fichier delicious.php là-bas . (Cela fonctionne avec tout script importateur qui utilise la fonction register_importer ().)

Maintenant, quand vous allez à votre tableau de bord et regardez sous Outils> Importer vous verrez que Delicious est une option. Vous pouvez importer les balises de signet en tant que catégories ou balises et il va faire un post pour chaque signet.

Si quelqu'un essaie ceci j'adorerait des conseils sur ce qu'il faut faire ensuite. Je reseached comment faire pour que je puisse avoir une idée sur mes signets et commentaires sur ceux qui étaient les plus utiles. Je peux le faire, mais si quelqu'un sait de tout plug-ins qui attirerait des extraits de la chair des choses, s'il vous plaît laissez-moi savoir. Il est plutôt soignée d'avoir une archive de vos marque-pages qui peuvent facilement être triées par le temps.

Était-ce utile?

La solution

Pour être dans le sujet sur la question (firefox) Je ne pense pas que l'approche d'utiliser comme délicieux étape intermédiaire est préféré parce que:

  1. vous perdez la taxonomie hierarhical appliquée dans Firefox (ils comme vous structurés choses)
  2. vous perdez les favicons comme réunis dans firefox
  3. vous perdez les informations ajoutées par des séparateurs entre les liens
  4. vous des informations lose l'ordre des répertoires et urls appliquée dans Firefox
  5. il est pas compatible avec d'autres sources de signets par exemple d'autres navigateurs et par exemple un répertoire des urls

mon approche est donc à a) l'exportation à une structure firefox répertoire « bookmark » avec chaque signet enregistré comme URL. b) ce répertoire de signets est le cœur réel et peut être rempli d'autres navigateurs, contient les informations hiérarchique et dans les fichiers .url informations additonal meta peut être placé.

(A ce stade, j'ai laissé tomber l'exportation de division dans mon code actuel)

De WordPress, vous pouvez traverser à travers la structure de répertoire une place dans WP. Ce que vous remarquerez est que les liens comme actuellement dans WordPress perdre également la taxonomie de répertoire appliquée (par exemple, pas de catégories hiérarchiques) et ne pas avoir une bonne table méta donc j'ai choisi de faire une petite table pour mon stockage de lien de conserver ces informations (voir d'autres réponse pour les étapes après que).

Ce qui suit pourrait être la chose nécessaire si vous voulez vous concentrer sur l'exportation de Firefox en premier. encore une fois: la traversée à travers un répertoire physique puis lire ceci dans exemple une table de bases de données (wplinks) est out-of-the-box:

require_once("class-EdlSqliteDb.php");
require_once("class-EdlUtil.php");

class EdlFirefox {

const BOOKMARKTYPE_URL = 1;
const BOOKMARKTYPE_DIRECTORY = 2;
const BOOKMARKTYPE_DIVIDER = 3;
const FMODE = 0777;
const DIVIDER = '--------------';

var $use_cache = true;
var $dbh;

public function __construct($DbLocation, $ffRoot, $exportLocationBookmarks) 
{
    $this->mDbLocation = $DbLocation;
    $this->mRootTitle = $ffRoot;
    $this->mExportLocation = $exportLocationBookmarks;

    // database settings
    $this->dbh = new EdlSqliteDb($DbLocation);
    $this->dbh->addQ(1,"SELECT id FROM moz_bookmarks WHERE title=?");
    $this->dbh->addQ(2,"SELECT id, title, type, fk FROM moz_bookmarks WHERE parent=? ORDER BY position");
    $this->dbh->addQ(3,"SELECT content FROM moz_items_annos WHERE item_id=?");
    $this->dbh->addQ(4,"SELECT url,favicon_id FROM moz_places WHERE id=?");
    $this->dbh->addQ(5,"SELECT data, mime_type FROM moz_favicons WHERE id=?");

    // parse the content
    $this->ParseTree();     
}

/*
 * check the ff database for the the root folder folders
 *
 */
function ParseTree()
{           
    $row = $this->dbh->DbExecutePrepared(1, Array($this->mRootTitle), 'row');
    if (USE_FIREFOX_FOLDER)
    {
        $this->ParsePagesPerTree($row[0], $this->mExportLocation . '/'. FIREFOX_FOLDER .  '/');
    }
    else 
    {
        $this->ParsePagesPerTree($row[0], $this->mExportLocation . '/');
    }
    return;
}

/*
 * if a bookmark is a url then write it as a file
 *
 */
function processFFUrl($moz_bookmarks_id, $moz_bookmarks_fk, $moz_bookmarks_title, $strRootFolder)
{
    // (1.1) Get from the annotations the description of the url
    $moz_items_annos_row = $this->dbh->DbExecutePrepared(3, Array($moz_bookmarks_id), 'row');
    $moz_items_annos_description = $moz_items_annos_row[0];

    // (1.2) get the url and favicon_id from moz_places
    if ($moz_places_recordset = $this->dbh->DbExecutePrepared(4, Array($moz_bookmarks_fk), 'recordset'))
    {
        foreach ($moz_places_recordset as $moz_places_row) 
        {
            $moz_places_url        = $moz_places_row[0];
            $moz_places_favicon_id = $moz_places_row[1];
        }
    }   

    $this->getFaviconIcon($moz_places_favicon_id, $moz_places_url);

    // (1.3) create the file
    $link_url_string = "[InternetShortcut]\n";
    $link_url_string .= 'URL=' . $moz_places_url . "\n";
    $link_url_string .= 'description=' . $moz_items_annos_description . "\n";   

    if (!is_file($strRootFolder . '/'. $moz_bookmarks_title . '.url')) 
    {
        $filename = $strRootFolder . '/'. $moz_bookmarks_title . '.url';
        $fp = fopen($filename, 'w');
        fwrite($fp, $link_url_string);
        fclose($fp);
    }
}

/*
 * for each logical folder create a physical folder
 *
 */
function parsePagesPerTree($intRootId, $strRootFolder)
{
    if ($moz_bookmarks_recordset = $this->dbh->DbExecutePrepared(2, Array($intRootId), 'recordset'))
    {
        foreach ($moz_bookmarks_recordset as $moz_bookmarks_row)
        {
            $moz_bookmarks_id       = $moz_bookmarks_row[0];
            $moz_bookmarks_title    = EdlUtil::filename_safe($moz_bookmarks_row[1]);
            $moz_bookmarks_type     = $moz_bookmarks_row[2];
            $moz_bookmarks_fk       = $moz_bookmarks_row[3];
            $moz_bookmarks_url = '';
            $moz_bookmarks_favicon_id = '';

            // A bookmark can be one of three things: process (1) urls, (2) directories and (3) dividers
            if ($moz_bookmarks_type==self::BOOKMARKTYPE_URL)
            {
                $this->processFFUrl($moz_bookmarks_id, $moz_bookmarks_fk, $moz_bookmarks_title, $strRootFolder);
            } 
            elseif ($moz_bookmarks_type==self::BOOKMARKTYPE_DIRECTORY)
            {       
                $dir = $strRootFolder . '/'. $moz_bookmarks_title . '/';
                if (!file_exists($dir)) 
                {
                    if (!mkdir($dir, 0777, true)) 
                    {
                        die('Failed to create folders...');
                    }                   
                }
                $this->parsePagesPerTree($moz_bookmarks_id, $strRootFolder . '/'. $moz_bookmarks_title);
            }
            elseif ($moz_bookmarks_type==self::BOOKMARKTYPE_DIVIDER)
            {
                // todo         
            }       
        }
    }   
    return;
}   

//
function getFaviconIcon($moz_bookmarks_favicon_id, $moz_bookmarks_url)
{
    $icon_data = '';
    $moz_bookmarks_favicon = '';
    if ($moz_bookmarks_favicon_id)
    {
        if ($moz_favicons_recordset = $this->dbh->DbExecutePrepared(5, Array($moz_bookmarks_favicon_id), 'recordset'))
        {
            foreach ($moz_favicons_recordset as $moz_favicons_row)
            {
                $icon_data      = $moz_favicons_row[0];
                $icon_mime_type = $moz_favicons_row[1];
                // the following array is also defined in the google icon checker!
                $icon_type = array(  'image/png'    => 'a.png',
                                 'image/gif'    => 'a.gif',
                                 'image/x-icon' => 'a.ico',
                                 'image/jpeg'   => 'a.jpg',
                                 'image/bmp'    => 'a.bmp');                                     

                $moz_bookmarks_favicon = $icon_type[$icon_mime_type];
                // TODO reimplement echo 'warning: you should add:' . $icon_mime_type;              

                //if ('http://apps.facebook.com/frontierville/' == $moz_bookmarks_url)
                //{
                //  echo $moz_bookmarks_favicon_id . " - " . $icon_mime_type . " - " .
                //      $moz_bookmarks_favicon;
                //}
            }   
        }   
    }
    // if $moz_bookmarks_favicon = empty then provide weird name
    if ($moz_bookmarks_favicon) {
        $populair_cache = new EdlCache($moz_bookmarks_url, $moz_bookmarks_favicon);
        $obj = $populair_cache->CheckCacheData($icon_data, FILECACHE_FIREFOX, false);
    }

    // we dont want to return the data it only needs to be update
    return;         
}
 } 

J'espère pouvoir vous donner des indices à prendre un peu plus loin.

1) Ce que je voulais est un moyen plus facile de gérer mes signets et de l'enrichir avec des informations qui sont déjà là-bas. 2) les différents systèmes là-bas comme Alexa, Delcious, StumbleUpon etc ... donnent pas toutes les informations sur un niveau de l'URL par exemple Alexa donne des informations à un niveau supérieur dans la structure de domaine par exemple abc.def.com: vous avez besoin def.com pour le classement ou abc.def.com/whatever/rtc.php: pour cela, vous par exemple besoin def.com/user (comme youtube). Vous avez donc besoin à la fois la structure de domaine et la structure url relative et ont chaque nœud unique de chaque URL possible (à la fois domaine et relatif) comme une entrée dans la base de données pour pouvoir plus tard pour représenter cela et d'enrichir cela et vous avez besoin des relations entre chaque part à l'URL pour être en mesure de le représenter.

  1. J'ai écrit une classe qui se charge dans la structure officielle du TLD et utilisé cela comme éléments de racine dans ma base de données. Donc, .uk a l'id 1 et .co.uk get un ID parent 1. J'utilisé à la fois la liste Mozilla et d'autres: la source est la liste Suffixe Mozilla Public: http://publicsuffix.org/ mais qui est un peu obsolète et vous devez y ajouter

  2. Maintenant que j'ai le TLD officiel est là-bas, j'ai la classe que les charges dans le top Alexa sites 1.000.000. Cela permettra de relier de la même manière. Beaucoup d'entre eux sont une sorte de niveau supérieur officieux TLD. Depuis par exemple « Google.com » n'est pas aussi officiel que le TLD de certains pays, mais il semble plus important. En faisant cela, vous découvrirez quelques modèles, mais aussi quelques exceptions par exemple vous trouverez les adresses IP qui sont populair. Chacune de ces entrées remplit le champ « Classement Alexa ». (Pour la performance que je charge la première .csv dans une table d'aide) Alexa vous forcera à revoir les modèles de manière qui est bon (un ensemble bon test)

  3. J'ai écrit une classe qui parcourt mes Firefox bases de données (SQL Lite) et exporte tous les urls là-dedans comme dans .URL une structure hiérarchique de répertoires. Elle exporte également les favicons qu'ils soient .ico, .png, .gif, etc ... (voir ci-dessous). Ceci est lu aussi dans la base de données. Depuis que je mets à jour ce lot il sycns avec la base de données décrit dans 1 et 2. (au début, j'exporte aussi les séparations mais je cessé de le faire).

  4. J'ai commencé à signets juste de glisser-déposer danscette structure de répertoires à partir d'autres navigateurs par exemple de chrome que je viens de faire glisser un signet dans le navigateur dans le répertoire qui fournit également ce fichier .url. La structure du répertoire d'URL I est ont donné des propriétés supplémentaires par exemple (H) au début du nom conduira à un « coeur » par exemple une URL I particuarly comme et # 01 # placera au sommet (ou au moins thats le code de la route plus loin le manipule). Je l'ai placé cette structure de répertoire dans une boîte de dépôt. Je dois encore écrire le code sur le serveur pour être en phase constante de sorte que la partie serveur de dropbox. (Mon WORDPRESS sur la contrepartie du serveur lit en permanence la structure de répertoire d'URL pour la synchronisation et la mise à jour des signets comme ci-dessus, mais j'utiliser maintenant ftp synchronisation)

  5. Je cours écrit pour délicieux (vous avez besoin d'un MD5) et StumbleUpon pour obtenir non seulement le classement (délicieux = quantité de signets) (SU = nombre de critiques et la quantité de pages vues), mais aussi les TAGS et la les gens utilisent la description (pourquoi devrais-je inventer mes propres tags si les gens les ont déjà donné). Puisque vous avez une quantité limite d'appels que vous pouvez faire à ces systèmes dont vous avez besoin de l'étaler dans le temps d'enrichir votre base de données. (Si vous allez maintenant délicieux et regarder un lien voir le côté droit et faire une idée sur la taxonomie des tags donnés aux liens)

  6. J'utilise le fournisseur de Google (const GOOGLE_ICON_URL = 'http://www.google.com/s2/favicons?domain=';) pour montrer les favicons mais puisque Google ne possède pas toutes les icônes ( par exemple, pas pour les applications facebook) Je le cache avec enrichir les icônes que je Firefox exportée à partir. Pour cela, vous avez besoin d'une construction du système de priorité dans lequel choisit la favicon correcte sur l'autre.

  7. Pour mettre en cache ce que j'ai une structure de mise en cache qui ressemble le domaine inversé pour le. par exemple des pièces .com.facebook.apps.geochallenge et à un niveau plus profond, la structure de chemin relatif. Dans cChaque répertoire dans cette structure de cache je stocke le cache favicons. Dans une version précédente je stocke là aussi les résultats des appels à délicieux et StumbleUpon.

Il semble que ce soit WordPress hors cadre mais en fait (sourire) il est très en portée. L'accumulation dans la fonctionnalité de liaison n'a pas bonne méta Options / aucune table de méta et il a encore quelques restrictions comme pas de catégories hiérarchiques, etc ... Vous devez également saisir des informations en elle-même alors qu'il ya beaucoup de services qui catégorise déjà urls (par exemple DMOZ) et lui donner des balises etc ... qui sont devenus en quelque sorte par défaut.

Alors ce mensonge "sous" mon site WordPress pour gérer mes liens.

Je fais cette configuration avec toutes les informations d'au moins haut, plus les sites pour 1.000.000 rendre le montant des appels moins et plus tard part cela comme un plug-in. J'ai un plugin stumbleupon dans le plugin wp db et qui a conduit à cela. Il peut vous donner des informations sur les liens externes que vous avez dans votre blog. Il y a beaucoup de plugins qui vous donnent des informations sur le référencement en général, mais pas que vous montrer des rapports et comparions de par exemple pourcentage'what de vos liens sortants est dans quelle catégorie ou populaire ou non etc..'. Il donne également des classements à vos liens entrants et liens sortants, etc., etc.

Licencié sous: CC-BY-SA avec attribution
Non affilié à wordpress.stackexchange
scroll top