Re: json > mysql конвертер букмарков мозиллы
Спасибо, все получилось.
Перлокошмарик получился такой:
#!/bin/sh
sqlite3 places.sqlite .dump |\
grep -v "BEGIN TRANSACTION;" |\
grep -v "COMMIT;" |\
perl -pe 's/INSERT INTO \"(.*)\" VALUES/INSERT INTO "\1" VALUES/' |\
perl -pe 's/LONGVARCHAR/LONGTEXT/' |\
perl -pe 's/LONGVARCHAR/LONGTEXT/' |\
perl -pe 's/LONGVARCHAR/LONGTEXT/' |\
perl -pe 's/AUTOINCREMENT/auto_increment/' |\
perl -pe 's/TEXT UNIQUE/text/' |\
perl -pe 's/"//' |\
perl -pe 's/"//' |\
grep -v "INTO sqlite_sequence" |\
grep -v "FROM sqlite_sequence" |\
grep -v "moz_inputhistory" |\
grep -v "CREATE UNIQUE" |\
grep -v "CREATE INDEX" |\
grep -v "CREATE TRIGGER" |\
mysql -u root -p xbase
Далее полученную таблицу можно отобразить, собрав все папки для каждой
закладки, с помощью php (пример ниже).
Все это нужно было, что бы представить и папки и теги как равнозначные
атрибуты, с возможностью их выбора через иконки, для поиска нужной
букмарки. (интерфейса в примере нет).
<html><body>
<?php
$dbhost = localhost;
$dbuser = base;
$dbpass = base;
$dbname = base;
$dbtable="new_table";
$link=mysql_connect($dbhost,$dbuser,$dbpass) or
die(mysql_errno($link).mysql_error($link));
$db=mysql_select_db($dbname,$link) or
die(mysql_errno($link).mysql_error($link));
convert_one();
//--------------------------------------------------------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------------------------------------------------------
function convert_one() {
global $attr_parent;
$add_bookmarks = mysql_query("SELECT * FROM `moz_places` WHERE `hidden`
= '0'");
while($bookmarks_data=mysql_fetch_row($add_bookmarks)) {
list($id,$url,$title,$rev_host,$visit_count,$hidden,$typed,$favicon_id,$frecency)
= $bookmarks_data;
echo
"--------------------------------------------------------------------------------------------------",
"<br>";
echo ' $url: ', $url, "<br>";
//$add=mysql_query("INSERT INTO `my_table` (экспортируйте данные, при
желании, в ваш формат) ") or die(mysql_errno($link).mysql_error($link));
$snoop_attr = mysql_query("SELECT * FROM `moz_bookmarks` WHERE `fk` =
'$id'");
while($attr_data=mysql_fetch_row($snoop_attr)) {
list($attr_id, $attr_type, $attr_fk, $attr_parent, $attr_position,
$attr_title, $attr_keyword_id, $attr_folder_type, $attr_dateAdded, $attr_l
echo ' $attr_title: ', $attr_title, "<br>";
//$add=mysql_query("INSERT INTO `my_table` (экспортируйте данные, при
желании в ваш формат) ") or die(mysql_errno($link).mysql_error($link));
cycle();
}
}
}
//--------------------------------------------------------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------------------------------------------------------
function cycle() {
global $attr_parent;
if ($attr_parent!=0){
snoop_parent();
}
}
//--------------------------------------------------------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------------------------------------------------------
function snoop_parent() {
global $attr_parent;
$snoop_attr_parent = mysql_query("SELECT * FROM `moz_bookmarks` WHERE
`id` = '$attr_parent'");
while($snoop_attr_parent_data=mysql_fetch_row($snoop_attr_parent)) {
list($attr_id_parent, $attr_type_parent, $attr_fk_parent, $attr_parent,
$attr_position_parent, $attr_title_parent, $attr_keyword_id_parent, $
if ($attr_title_parent!=""){
if ($attr_title_parent!="Bookmarks Menu"){
echo ' $attr_title_parent: ', $attr_title_parent, "<br>";
//$add=mysql_query("INSERT INTO `my_table` (экспортируйте данные, при
желании, в ваш формат) ") or die(mysql_errno($link).mysql_error($link));
}
}
}
cycle();
}
?>
</body></html>
Удачи.
--
Sincerely,
Nicholas
Reply to: