par exemple :
changer les URIs "http://mon.domain.org" en "http://127.0.0.1"
changer les labels (title) qui ont des champs comme :
... \\\\\\\\\\\\\\\\\\\\\\U3044\\\\\\\\...\\\\\\\\U308d...
mais j'avoue avoir quelques difficultés à piger la structure du fichier
"places.sqlite"...
notamment je ne vois pas comment obtenir, pour une uri donnée le label
(title) associé et l'id du dossier parent.
je viens d'ajouter le add-on "SQLite Manager 0.2.46" à FF3. ça marche pas mal.
j'arrive même à ouvrir cette base places.sqlite quand FF3 tourne.
-- Une Bévue
unbewusst.sein
Une Bévue wrote:
notamment je ne vois pas comment obtenir, pour une uri donnée le label (title) associé et l'id du dossier parent.
bon, en fait, c'est "simple" ;-)
prendre dans moz_bookmarks les bookmarks (et pas les dossiers) : "SELECT DISTINCT * FROM moz_bookmarks WHERE type = 1 ;"
ensuite, pour chaque ligne, retrouver l'url : places_id=row['fk'] "SELECT DISTINCT url FROM moz_places WHERE id = #{places_id} ;"
pour retrouver les dossiers contenant ce signet :
parent_id=row['parent'].to_i "SELECT DISTINCT parent, title FROM moz_bookmarks WHERE id #{parent_id} ;" new_parent_id=row[0] => boucler sur la ligne précédente... tant que new_parent_id n'est pas == à 1 (qui est le root)
that's all folks ;-)
en ruby, brut de fonderie, ça donne : #! /usr/bin/env ruby
require 'rubygems' require 'sqlite3'
def get_folder_path(db,parent_id,pathes=[]) new_parent_id=nil db.execute( "SELECT DISTINCT parent, title FROM moz_bookmarks WHERE id = #{parent_id} ;" ) do |row| pathes<<row[1] new_parent_id=row[0].to_i end return pathes if new_parent_id == 1 return get_folder_path(db,new_parent_id,pathes) end file='places.sqlite' #file=Dir.glob("#{ENV['HOME']}/Library/Application Support/Firefox/Profiles/*.default/places.sqlite").last db = SQLite3::Database.new( "#{file}" )
db.results_as_hash = true
rows=[] db.execute( "SELECT DISTINCT * FROM moz_bookmarks WHERE type = 1 ;" ) do |row| rows<<row end
puts puts puts rows.each do |row| places_id=row['fk'] #.to_i db.execute( "SELECT DISTINCT url FROM moz_places WHERE id #{places_id} ;" ) do |a_row| row['url']=a_row[0] end parent_id=row['parent'].to_i row['pathes']=get_folder_path(db,parent_id) row['path']='/'+row['pathes'].reverse.join('/') end puts puts puts rows.each do |row| row['dateAdded']=row['dateAdded'] ? row['dateAdded'].to_i/1000000 : Time.now.to_i row['lastModified']=row['lastModified'] ? row['lastModified'].to_i/1000000 : Time.now.to_i puts "title = #{row['title']}, url = #{row['url']}, path #{row['path']}, dateAdded = #{row['dateAdded']}, lastModified #{row['lastModified']}" end
-- Une Bévue
Une Bévue <unbewusst.sein@weltanschauung.com.invalid> wrote:
notamment je ne vois pas comment obtenir, pour une uri donnée le label
(title) associé et l'id du dossier parent.
bon, en fait, c'est "simple" ;-)
prendre dans moz_bookmarks les bookmarks (et pas les dossiers) :
"SELECT DISTINCT * FROM moz_bookmarks WHERE type = 1 ;"
ensuite, pour chaque ligne, retrouver l'url :
places_id=row['fk']
"SELECT DISTINCT url FROM moz_places WHERE id = #{places_id} ;"
pour retrouver les dossiers contenant ce signet :
parent_id=row['parent'].to_i
"SELECT DISTINCT parent, title FROM moz_bookmarks WHERE id #{parent_id} ;"
new_parent_id=row[0] => boucler sur la ligne précédente...
tant que new_parent_id n'est pas == à 1 (qui est le root)
that's all folks ;-)
en ruby, brut de fonderie, ça donne :
#! /usr/bin/env ruby
require 'rubygems'
require 'sqlite3'
def get_folder_path(db,parent_id,pathes=[])
new_parent_id=nil
db.execute( "SELECT DISTINCT parent, title FROM moz_bookmarks WHERE
id = #{parent_id} ;" ) do |row|
pathes<<row[1]
new_parent_id=row[0].to_i
end
return pathes if new_parent_id == 1
return get_folder_path(db,new_parent_id,pathes)
end
file='places.sqlite'
#file=Dir.glob("#{ENV['HOME']}/Library/Application
Support/Firefox/Profiles/*.default/places.sqlite").last
db = SQLite3::Database.new( "#{file}" )
db.results_as_hash = true
rows=[]
db.execute( "SELECT DISTINCT * FROM moz_bookmarks WHERE type = 1 ;" ) do
|row|
rows<<row
end
puts
puts
puts
rows.each do |row|
places_id=row['fk'] #.to_i
db.execute( "SELECT DISTINCT url FROM moz_places WHERE id #{places_id} ;" ) do |a_row|
row['url']=a_row[0]
end
parent_id=row['parent'].to_i
row['pathes']=get_folder_path(db,parent_id)
row['path']='/'+row['pathes'].reverse.join('/')
end
puts
puts
puts
rows.each do |row|
row['dateAdded']=row['dateAdded'] ? row['dateAdded'].to_i/1000000 :
Time.now.to_i
row['lastModified']=row['lastModified'] ?
row['lastModified'].to_i/1000000 : Time.now.to_i
puts "title = #{row['title']}, url = #{row['url']}, path #{row['path']}, dateAdded = #{row['dateAdded']}, lastModified #{row['lastModified']}"
end
notamment je ne vois pas comment obtenir, pour une uri donnée le label (title) associé et l'id du dossier parent.
bon, en fait, c'est "simple" ;-)
prendre dans moz_bookmarks les bookmarks (et pas les dossiers) : "SELECT DISTINCT * FROM moz_bookmarks WHERE type = 1 ;"
ensuite, pour chaque ligne, retrouver l'url : places_id=row['fk'] "SELECT DISTINCT url FROM moz_places WHERE id = #{places_id} ;"
pour retrouver les dossiers contenant ce signet :
parent_id=row['parent'].to_i "SELECT DISTINCT parent, title FROM moz_bookmarks WHERE id #{parent_id} ;" new_parent_id=row[0] => boucler sur la ligne précédente... tant que new_parent_id n'est pas == à 1 (qui est le root)
that's all folks ;-)
en ruby, brut de fonderie, ça donne : #! /usr/bin/env ruby
require 'rubygems' require 'sqlite3'
def get_folder_path(db,parent_id,pathes=[]) new_parent_id=nil db.execute( "SELECT DISTINCT parent, title FROM moz_bookmarks WHERE id = #{parent_id} ;" ) do |row| pathes<<row[1] new_parent_id=row[0].to_i end return pathes if new_parent_id == 1 return get_folder_path(db,new_parent_id,pathes) end file='places.sqlite' #file=Dir.glob("#{ENV['HOME']}/Library/Application Support/Firefox/Profiles/*.default/places.sqlite").last db = SQLite3::Database.new( "#{file}" )
db.results_as_hash = true
rows=[] db.execute( "SELECT DISTINCT * FROM moz_bookmarks WHERE type = 1 ;" ) do |row| rows<<row end
puts puts puts rows.each do |row| places_id=row['fk'] #.to_i db.execute( "SELECT DISTINCT url FROM moz_places WHERE id #{places_id} ;" ) do |a_row| row['url']=a_row[0] end parent_id=row['parent'].to_i row['pathes']=get_folder_path(db,parent_id) row['path']='/'+row['pathes'].reverse.join('/') end puts puts puts rows.each do |row| row['dateAdded']=row['dateAdded'] ? row['dateAdded'].to_i/1000000 : Time.now.to_i row['lastModified']=row['lastModified'] ? row['lastModified'].to_i/1000000 : Time.now.to_i puts "title = #{row['title']}, url = #{row['url']}, path #{row['path']}, dateAdded = #{row['dateAdded']}, lastModified #{row['lastModified']}" end