Как я могу получить список открытых вкладок в Firefox через приложение командной строки?

У меня есть много вкладок, открытых в Firefox. После того, как я закрою Firefox, а затем запустите его снова, вкладки есть. Все в порядке.

Однако время от времени Firefox падает, и мои вкладки теряются. Как получить открытые вкладки и скопировать список в какой-либо файл?

(С вкладками в файле я также могу использовать Git, SVN, или что-то еще, чтобы сохранить их и, возможно, найти ссылку, которую я видел в своем браузере, но не могу вспомнить, что это такое.)

Что я получил до сих пор:

Я могу получить URL , но это не похоже на то, что я вижу в Firefox:

$c = ((gc c:\Users\..\AppData\Roaming\Mozilla\Firefox\Profiles\xfvj8vd5.default\sessionstore.js ) -join '')
$sess = [Jayrock.Json.Conversion.JsonConvert]::Import( $c.trim('()') )
$sess.windows[0].tabs |
  % { $_.entries } |
  % { $_.url } |
  Select-Object -Unique

Пожалуйста, не говорите мне "используйте этот аддон или этот аддон". Я действительно хотел бы сделать это, как я описал.

Ответы

Ответ 1

Используя модуль JSON из PoshCode, это выглядит правильно (помните: я тестировал это на Firefox 4, где Tab Panorama приводит к "скрытым" вкладкам, ymmv).

ConvertFrom-Json -File ~\AppData\R*\M*\F*\P*\*\sessionstore.js -Type PSObject -EA 0 |
Select -Expand Windows | Select -Expand Tabs | 
Where { !$_.hidden } | ForEach { @($_.Entries)[-1] } | 
Select Title, Url

Все * в первой строке - это просто сделать его коротким. Не стесняйтесь расширять это до полного пути, если вы заботитесь о затраченных секундах (милли) секундах.

Ответ 2

не в PowerShell, но я недавно столкнулся с этой проблемой, поэтому, возможно, этот onliner может помочь кому-то:

cat recovery.js | sed 's#{"url":"#\n\n#g' | cut -d'"' -f1 | grep . | sort -u

Ответ 3

#Test in Firefox 5.0
$sessionStoreFile = "$env:APPDATA\Mozilla\Firefox\Profiles\*.default\sessionstore-backups\recovery.js"
$sessionStoreFileExists = Test-Path $sessionStoreFile
If($sessionStoreFileExists -eq $False) {
    #Test in Firefox 2.0, 3.0 and 4.0
    $sessionStoreFile = "$env:APPDATA\Mozilla\Firefox\Profiles\*.default\sessionstore.js"
}
(Get-Content -Encoding UTF8 -Raw -Path $sessionStoreFile).Trim('()') | ConvertFrom-Json |
Select -Expand Windows | Select -Expand Tabs | 
Where { !$_.hidden } | ForEach { @($_.Entries)[-1] } | 
Select Url, Title | Export-Csv -Path $CsvFile  -Encoding UTF8  -NoTypeInformation   

Вы можете загрузить подробный SQL script из как экспортировать все URL-адреса вкладок Firefox сразу (PowerShell)