2009-06-03 4 views
7

C#을 사용하여 Google 노트를 데이터베이스로 가져 오기 위해 모든 Firefox 북마크를 가져와야합니다. 어떻게해야합니까?C#을 사용하여 Firefox 북마크 읽기

저는 SO 질문 인 Read FF 3 bookmarks in Java을 알고 있지만 거기에 대한 대답은 모두 Java 데이터베이스 드라이버를 중심으로 움직이는 것 같고, 그 중 일부는 Java와 관련이 없습니다.

내 기본 질문은입니다. "어떻게 C#에서 Firefox 책갈피를 읽을 수 있습니까?"

2 차 질문 : 사용자 프로필 % \ 응용 프로그램 데이터 \ mozilla \ firefox \ profiles \ bookmarkbackups \ bookmarks- [날짜] .json 파일을 볼 수 있습니다. 그렇다면 기존 파서가 있습니까?

수사학적인 질문 : Internet Explorer처럼 쉽게 할 수없는 이유는 무엇입니까? \ % user profile % \ favorites에있는 .url 파일을 읽은 것일까 요? 바.

+0

될 것입니다. 보다 복잡한 요구 사항 => 더 복잡한 코드. –

+3

IE는 일반 텍스트 형식으로 일반 파일로 저장합니다. 크로스 플랫폼이 아닌 방법은 무엇입니까? –

+0

일을하는 IE 방식은 적어도 하나의 이유로 FF보다 좋지 않습니다. 파일 이름에는 슬래시 (/)와 같은 특수 문자가 포함될 수 없습니다. 또한 FF는 북마크에 태그를 붙일 수 있습니다. –

답변

7

닷넷에 대한 SQLite는 드라이버를 사용하여 내 컴퓨터에
Application Data/Mozilla/Firefox/Profiles/$this_varies/places.sqlite
에서 그것을 찾을 수있는 파일 places.sqlite에 액세스 할 수 있습니다. 타겟 컴퓨터에서 쉽게 찾을 수 있습니다.


편집 1

using System.Data.SQLite; // downloaded from http://sourceforge.net/projects/adodotnetsqlite 

namespace sqlite_test 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      var path_to_db = @"C:\places.sqlite"; // copied here to avoid long path 
      SQLiteConnection sqlite_connection = new SQLiteConnection("Data Source=" + path_to_db + ";Version=3;New=True;Compress=True;"); 

      SQLiteCommand sqlite_command = sqlite_connection.CreateCommand(); 

      sqlite_connection.Open(); 

      sqlite_command.CommandText = "select * from moz_places"; 

      SQLiteDataReader sqlite_datareader = sqlite_command.ExecuteReader(); 

      while (sqlite_datareader.Read()) 
      { 
       // Prints out the url field from the table: 
       System.Console.WriteLine(sqlite_datareader["url"]); 
      } 
     } 
    } 
} 

편집 2 : 끝과 같이
여기
데이터베이스의 URL을 출력 부호의 가위질이다. 필자는 Firefox 용 SQLite Manager 플러그인을 꼭 추천합니다. 이것은 sqlite 데이터베이스로 작업 할 때 매우 유용합니다.

+0

감사합니다. 올바른 답변으로 표시했습니다. 백업 파일은 .json 형식으로 저장되지만 FF3 이상에만 저장되는 것처럼 보입니다. 사람들은 이것을 읽으면서 최종선은 입니다. -FF3은 SQLLite를 사용하여 책갈피를 저장합니다. .json 파일을 사용하여 책갈피의 백업을 저장합니다. -FF2는 bookmarks.html 파일을 사용하여 책갈피를 저장합니다. –

+1

가치 SQLite lib에 대한 실제 공식 웹 사이트는 http://sqlite.phxsoftware.com입니다 - 놀라운 제품, 너무 광택 및 공개 도메인에 너무! –

+1

참고로 말씀 드린 SQLite ADO.NET 공급자는 더 이상 유지 관리되지 않습니다. 대신 http://sqlite.phxsoftware.com/을 권하고 싶습니다. 그것은 매우 완전하며 Entity Framework를 지원합니다. –

1

.Net 용 SQLite 드라이버가 있습니다. 일단 그 일을하게되면 솔루션은 .Net과 Java 모두에서 동일하다고 상상할 수 있습니다.

+0

그냥 .json 북마크 백업 파일을 구문 분석하는 방법은 무엇입니까? 그게 더 쉬울까요? –

+0

또한 SQLLite 데이터베이스 드라이버 인 .NET 용 SQLLite 드라이버를 사용한다고 가정 해 보겠습니다. –

+0

FF 북마크 및 저장 위치에 대한이 블로그 기사를 살펴보십시오. http://www.lytebyte.com/2008/06/19/understanding-how-and-where-firefox-3- 북마크가 저장되었습니다/ –

2

확실하게 그것은 Java 질문에서 제안한 것과 같은 방식으로 작동하며 SQLite .NET provider을 얻고 FF 데이터베이스 파일에 액세스하는 데 사용합니다.

+0

.json 북마크 백업 파일을 구문 분석하는 것은 어떨까요? 그게 더 쉬울까요? –

1

내 프로젝트 http://www.codertakeout.com에 약간 수정했습니다. 희망이 개정은 웹 주위에서 몇 가지 제안 덕분에 몇 가지를 명확히하는 데 도움이되기를 바랍니다. 자바에서 구현을위한

using System.Data.SQLite; // need to install sqlite .net driver 

String path_to_db = @"C:\Documents and Settings\Jeff\Application Data\Mozilla\Firefox\Profiles\yhwx4xco.default\places.sqlite"; 
String path_to_temp = System.IO.Path.GetTempFileName(); 

System.IO.File.Copy(path_to_db, path_to_temp, true); 
SQLiteConnection sqlite_connection = new SQLiteConnection("Data Source=" + path_to_temp + ";Version=3;Compress=True;Read Only=True;"); 

SQLiteCommand sqlite_command = sqlite_connection.CreateCommand(); 

sqlite_connection.Open(); 

sqlite_command.CommandText = "SELECT moz_bookmarks.title,moz_places.url FROM moz_bookmarks LEFT JOIN moz_places WHERE moz_bookmarks.fk = moz_places.id AND moz_bookmarks.title != 'null' AND moz_places.url LIKE '%http%';"; 

SQLiteDataReader sqlite_datareader = sqlite_command.ExecuteReader(); 

while (sqlite_datareader.Read()) 
    { 
     System.Console.WriteLine(sqlite_datareader[1]); 
    } 
sqlite_connection.Close(); 
System.IO.File.Delete(path_to_temp); 
1

방문 http://myexps.blogspot.com.

import java.sql.*; 

public class helloWorld { 
    public static void main(String[] args) throws Exception { 
     Class.forName("org.sqlite.JDBC"); 
     Connection conn = DriverManager.getConnection("jdbc:sqlite:/home/deepak/.mozilla/firefox/yvf7p20d.default/places.sqlite//"); 
    if(conn==null) 
    { 
    System.out.println("ERROR"); 
    } 
    System.out.println(conn.toString()); 

    Statement stat = conn.createStatement(); 

    ResultSet rs = stat.executeQuery("select * from moz_bookmarks;"); 
    while (rs.next()) { 
     System.out.println("id = " + rs.getString("id")); 
     System.out.println("keyword = " + rs.getString("keyword_id")); 
     System.out.println("title = " + rs.getString("title")); 
    } 
    rs.close(); 
    conn.close(); 
    } 
} 

파이어 폭스의 북마크 파이어 폭스는 크로스 플랫폼해야하기 때문에 IEA의 차보다 더 복잡하고 있기 때문에 IE처럼 쉬운 일이 아니다 자바 구현