出版しましたここ。
これは私のものです。last-url.sh
#!/bin/bash
rm -rf /tmp/db.sqlite
cp ~/.mozilla/firefox/*.default-esr/places.sqlite /tmp/db.sqlite ;
LAST_URL=`sqlite3 /tmp/db.sqlite "select url from moz_places order by last_visit_date desc limit 1;"`;
echo $LAST_URL
私のスクリプトは引き続き例を提供します。stackoverflow.com代わりにURLyoutube.com一方、ページをリロードしても同じです。
問題はどこにありますか?
プロフィールは1つだけですxxxxxx.default-esr
。
スクリーンショット: Firefoxの歴史 SQLiteデータベース
テスト例:「google test」は新しく訪問したURLで、他のページは更新されます。
今、私はFirefoxが(実際の履歴を反映する)履歴タブをどのように生成するかを諮問しています。どのファイルまたはSQLリクエストを使用しましたか? SQLite?
答え1
スクリプトの変更
#!/bin/bash
rm -rf /tmp/db.sqlite
cp ~/.mozilla/firefox/*.default-esr/places.sqlite /tmp/db.sqlite ;
ORIG_QUERY=`select url from moz_places order by last_visit_date desc limit 1;`
NEW_QUERY=`SELECT url FROM moz_places WHERE visited_count >=1 GROUP BY last_visit_date DESC ORDER BY id LIMIT 1
LAST_URL=`sqlite3 /tmp/db.sqlite ${QUERY}`;
TEST_URL=`sqlite3 /tmp/db.sqlite ${NEW_QUERY};`
#echo $LAST_URL
echo $TEST_URL
説明する
質問 以下の説明に基づいて、OPはデータベースがゼロベースでないことを確認しました。私のSQLは少し錆びましたが、保存されたクエリは「新しい()または更新()のいずれ${NEW_QUERY}
かのURLの最初の行を返す必要があります。ここで、sは最大から最小までの日付でグループ化されています」言い換えれば:visit_count=1
visit_count > 1
id
今日の1,000ページ、昨日の500ページにアクセスして制限がない場合は、今日の日付の下に1,000ページ、昨日の日付の下に500ページをリストし、一番上にビッグIDを表示する必要があります。 LIMITを設定すると、ページの更新を含む日付ごとにid
最も高いURLが返されるはずです。last_visited
答え2
答えは次のように始まります。ここjscher2000に感謝しますが、まだ解決策はありません。
一部の履歴はメモリにキャッシュできますが、ライブラリウィンドウには多くの項目が表示されるため、ディスクから情報を検索できます。 SQLiteエンジンはplace.sqliteファイルとそのログファイルからこのビューを構築するので、単にファイルを扱うよりも完全なビューを持ちます。
おそらく解決策はこのようなツールから来ることができます。wal2jsonplace.sqlite.walを解析してみてください。一度試してみましょう。
@jscher2000が言ったように
Firefox は -wal ファイルと -shm ファイルを作成します。 ...SQLite3が自動的に処理しない理由は混乱しています。 ...https://www.sqlite.org/wal.html