使用 bash 脚本和 Python 保存 chrome 中打开的选项卡的 url

问题描述 投票:0回答:1

我经常在浏览器中打开很多选项卡,有时我需要重新启动计算机,并且不想丢失打开的选项卡。因此,我开始研究一个小项目,以保存浏览器中当前打开的选项卡的网址,然后恢复它们。我使用 Firefox 作为默认浏览器,并设法编写了一个简单的 shell 脚本和一个更简单的 Python 脚本,它们组合起来允许我保存和恢复选项卡。 bash 脚本是:

#!/bin/bash

check_dependecies() {
    if ! pip freeze | grep -q lz4 ;then
        pip install lz4 --break-system-packages
    fi
}

save_pages() {
    if [[ $1 == 'firefox' ]];then
        export opentabs=$(find ~/ -name "recovery.jsonlz4" -type f);
        export browser='firefox';
    else
        echo "We don't have support for this browser yet."
        exit 1
    fi
    python3 amanuensis.py
}

restore_pages() {
    if [[ $1 == 'firefox' ]]; then
        while read -r line; do
            firefox -new-tab "$line" 2>/dev/null &
            sleep 1
        done < "saved_urls.txt"
    elif [[ $1 == 'chrome' ]]; then
        while read -r line; do
            google-chrome "$line" 2>/dev/null &
            sleep 1
        done < "saved_urls.txt"
    else
        echo "We don't have support for this browser yet."
    fi
}

check_dependecies

if [[ $# -lt 2 ]];then
    echo "Missing arguments. Usage: ./amanuensis.sh [mode] [browser]"
    echo "mode: 'save' for saving the urls | 'restore' to restore tabs"
    echo "browser: 'firefox' | 'chrome'"
    exit 1
elif [[ $1 == 'save' ]];then
    save_pages $2
elif [[ $1 == 'restore' ]];then
    restore_pages $2
else
    echo "Invalid input"
fi

Python脚本是:

import os, json, lz4.block

f = open(os.environ['opentabs'], 'rb')
browser = os.environ['browser']
print(browser)
magic = f.read(8)
jdata = json.loads(lz4.block.decompress(f.read()).decode('utf-8'))
f.close()

with open(f'saved_urls.txt', 'w') as file:
    for win in jdata['windows']:
        for tab in win['tabs']:
            i = int(tab['index']) - 1
            urls = tab['entries'][i]['url']
            file.write(f'{urls}\n')
            print(urls)

这不是一个写得很好的代码,但它可以完成工作。

我向我的几个朋友展示了我的项目,他们问我是否可以实现一个与 Chrome 一起使用的版本。问题是:我可以在 Chrome 上恢复 url,但无法保存 Chrome 本身的 url。使用 Firefox,我可以从

recovery.jsonlz4
获取内容,但我找不到 Chrome 的等效内容。

任何人都可以帮我找到这个问题的解决方案吗? Chrome 中是否有 Firefox

recovery.jsonlz4
的等效文件?如果没有,我怎样才能获取当前打开的选项卡的网址?考虑到这是一个 CLI 应用程序,我不想使用 Selenium 或 PyAutoGUI...

提前致谢!

python bash google-chrome url browser
1个回答
0
投票

这个问题解决了吗?

© www.soinside.com 2019 - 2024. All rights reserved.