24

Firefox で開いているタブの数を自動的にカウントして、時間の経過とともに追跡できるようにしたいと考えています。

したがって、現在の番号をステータス バーまたはブラウザの別の場所に表示するアドオンを取得するだけでは十分ではありません。

Firefox がプロファイルごとに保存する .sqlite テーブルの内容を調べましたが、現在開いているタブのテーブルがあるかどうかを解読できませんでした。また、ページが現在開いているかどうかを示す列が履歴テーブルにあるかどうかも調べました。

この情報はデータベースで入手できますか?

もしそうなら、現在開いているタブの数をカウントするために使用できる情報はどこに保存されていますか?

そうでない場合、Tab Counter などのアドオンはどのようにしてこの番号を見つけますか? この最後の質問は、開発者に尋ねます。一般的な知識ではない場合、ここで答えを得ることができます。代わりに自分のアドオンを使用してほしいと思われる人に尋ねるのではありません。

4

5 に答える 5

13

オンライン

実行中の Firefox セッション内では、Mozilla Add-on API を使用してデータを簡単に抽出できます。これを行う単純なTab Count Logger拡張機能を作成し、カウントを SQLite データベースに保存します。

コードの関連部分は次のとおりです。

const tabs = require("sdk/tabs");
const windows = require("sdk/windows").browserWindows;

console.log("Windows: " + windows.length + "; tabs: " + tabs.length);

オフライン

開いたタブはsessionstore.js、SQLite ではなくプロファイル ディレクトリに保存されます。このファイルは JSON です。タブをカウントするスクリプト:

#!/usr/bin/env python3
# Count open tabs from a firefox profile
# Working directory is the root of a Firefox profile.
import json
j = json.loads(open("sessionstore.js", 'rb').read().decode('utf-8'))
def info_for_tab(tab):
    try:
        return (tab['entries'][0]['url'], tab['entries'][0]['title'])
    except IndexError:
        return None
    except KeyError:
        return None
def tabs_from_windows(window):
    return list(map(info_for_tab, window['tabs']))
all_tabs = list(map(tabs_from_windows, j['windows']))
print('Statistics: {wins} windows, {tabs} total tabs'.format(wins=len(all_tabs), tabs=sum(map(len, all_tabs))))

これを に保存すると~/bin/firefox_count_tabs、すべてのプロファイルの情報を次のように取得できます。

for i in ~/.mozilla/firefox/*.*; do test -d $i && (echo "== $i =="; cd $i; ~/bin/firefox_count_tabs ); done
于 2013-05-27T06:41:04.523 に答える
4

終了確認ダイアログにカウントが表示されます - 無効にしていない場合は ️</p>

于 2019-12-04T02:09:25.790 に答える