Я должен накормить несколько браузеров обедом (тысячи), но не хочу открывать новое окно каждый раз, когда браузер запускается; вместо этого, я должен открыть веб-страницу, обработать содержание и перейти к следующему.
Когда рабочий Chrome (это не должен быть Chrome) от терминала:
$ google-chrome URL
веб-страница открыта в новом окне фактического браузера:
Created new window in existing browser session.
Там какой-либо путь состоит в том, чтобы выполнить его на фактических окнах и не открыть новое?
Кроме того: существует ли способ уничтожить в настоящее время создаваемый сеанс браузера прежде, чем запустить следующий? Как я получаю pid той новой сессии, просто созданной, если браузер был первоначально закрыт?
эффективно, то, что Вы хотите, открывает новый URL в окне, не закрывая текущее окно вручную (если я понимаю хорошо), ни имеющий необходимость закрыть вкладки вручную.
Решение могло состоять в том, чтобы выполнить команду, которая комбинирует две вещи:
Таким образом, pid браузера не изменится, и Вы не должны были бы вручную закрывать вкладки и/или окна.
Маленький сценарий ниже делает точно это, с помощью Firefox. Причина использовать Firefox является этим (например). хром имеет несколько pids по определению, делая процесс более сложным.
установка wmctrl
Сценарий использует wmctrl, чтобы найти и закрыть текущие окна Firefox, Вам, возможно, придется установить его сначала:
sudo apt-get install wmctrl
Сценарий
#!/usr/bin/env python3
import subprocess
import socket
import sys
url =sys.argv[1]
def get_info(command):
return subprocess.check_output(["/bin/bash", "-c", command]).decode("utf-8").strip()
def run_command(command):
subprocess.call(["/bin/bash", "-c", command])
currpid = get_info("pidof firefox")
browserwindow = [l.split()[0] for l in get_info("wmctrl -l -p").splitlines() if currpid in l]
run_command("firefox -new-window "+url)
for i in browserwindow:
run_command("wmctrl -ic "+i)
Как использовать
Скопируйте сценарий в пустой файл, сохраните его как firejump.py
. Откройте окно Firefox (любой адрес, просто окно) и запустите скрипт командой:
python3 /path/to/firejump.py <new_url>
Отключите то, чтобы попросить закрыть текущее окно
Чтобы процедура работала без раздражающего Firefox, предупреждающего, что Вы закрываете текущие вкладки или окна: отключите предупреждения путем удаления галочки у него в предпочтениях:
Если действительно необходимо перепрыгнуть через список тысяч URL, могло бы быть полезно расширить сценарий немного (см. сценарий ниже), и позвольте ему автоматически перейти к следующему URL из списка, который Вы создали в текстовом файле и запустили скрипт с сочетанием клавиш для перехода к следующему URL.
Как использовать
jump_list.py
urls.txt
заполните файл своими URL, один на строку:
www.something.com
www.another_thing.com
www.yet_another_thing.nl
www.itshardtostop.be
и так далее
Откройте окно Firefox (любой адрес, просто окно).
Теперь, когда Вы запускаете скрипт, Firefox открывает первый URL.
Выполните его снова, и это перейдет к следующему URL и так далее, пока последний URL списка не передал.
Объяснение
Сценарий читает строки в файле urls.txt
индексом. Это отслеживает (в последний раз используемый) индекс в файле, который сценарий создает в собственном каталоге сценария. Каждый раз выполнения сценария, число увеличено одним, пока последняя строка не достигнута.
Сценарий
#!/usr/bin/env python3
import subprocess
import os
curr_path = os.path.dirname(os.path.abspath(__file__))
def get_info(command):
return subprocess.check_output(["/bin/bash", "-c", command]).decode("utf-8").strip()
def run_command(command):
subprocess.call(["/bin/bash", "-c", command])
def write_totrack(file, next_url):
with open(file, "wt") as wrt:
wrt.write(next_url)
def read_file(file):
with open(file) as src:
return src.read()
keep_track = curr_path+"/"+"next_visit.txt"
url_list = read_file(curr_path+"/"+"urls.txt").splitlines()
if not os.path.exists(keep_track):
next_url = "1"; index = 0
write_totrack(keep_track, next_url)
else:
index = int(read_file(keep_track))
next_url = index+1
write_totrack(keep_track, str(next_url))
if index < len(url_list):
curr_url = url_list[index]
currpid = get_info("pidof firefox")
browserwindow = [l.split()[0] for l in get_info("wmctrl -l -p").splitlines() if currpid in l]
run_command("firefox -new-window "+curr_url)
for i in browserwindow:
run_command("wmctrl -ic "+i)
else:
pass
Запустите скрипт:
python3 /path/to/jump_list.py
Добавьте его к $PATH
Более изящный должен был бы сохранить сценарий к ~/bin
, сделайте это исполняемым файлом, удалите расширение языка и выполните его командой:
jump_list
Добавьте к сочетаниям клавиш
Для реального создания этого удобным добавьте его к комбинации ярлыка: Параметры настройки системы> "Сочетания клавиш"> "Пользовательские Ярлыки"
У меня есть идея для альтернативного решения: можно свериться
пикосекунда-ef | grep хром
количество процесса рабочей хромовой сессии. С
уничтожают [число процесса]
, можно уничтожить процесс. Надеюсь, что это работает на Вас.