Есть ли способ экспортировать стили Stylebot в формат Stylish в Chrome?

Есть ли способ экспортировать стили Stylebot в формат Stylish в Chrome?

Вся история такова: я ненавижу белый фон Chrome, и когда я открываю новую вкладку или нажимаю на ссылку, экран становится белым, выжигая мне глаза. Расширению Stylebot, похоже, не разрешено менять цвета в новой вкладке или при загрузке белых экранов.

У Firefox такой проблемы нет, когда я устанавливаю на него полностью темные темы (те старые темы). Так что теперь я хочу оставить Chrome позади и начать использовать Firefox. Но, как мы все знаем, у Stylebot нет версии Firefox.

Я не нашел дополнения, которое было бы столь же хорошим, как Stylebot для Firefox, а те, что близки к Stylebot, глючат и портят работу сайтов.

Поэтому я подумал о том, чтобы взять свои пресеты в Chrome's Stylebot и экспортировать их в стиль расширения Stylish. Я не знаю, возможно ли это, и я действительно ничего не знаю о каком-либо типе кодирования. Если это как-то сработает, это будет здорово!

Я отказался от попыток изменить белый фон Chrome, потому что это было слишком хлопотно. Некоторые изменения сработали для белого экрана загрузки, но не для страницы новой вкладки. Даже расширения, которые меняют новую вкладку на любой другой URL, не сработали. Он всегда показывает белый экран перед завершением загрузки.

Итак... кто-нибудь может мне помочь?

решение1

Я сам этим занимаюсь. Поэтому Stylish экспортирует/импортирует в следующем формате — сюда входят два примера с userstyles.org и один, который я сделал очень быстро:

[
  {
    "sections": [
      {
        "urls": [],
        "urlPrefixes": [],
        "domains": [
          "myjetbrains.com"
        ],
        "regexps": [],
        "code": "body.global { /*etc */}"
      }
    ],
    "url": "http://userstyles.org/styles/133921",
    "updateUrl": "https://userstyles.org/styles/chrome/133921.json",
    "md5Url": "https://update.userstyles.org/133921.md5",
    "originalMd5": "7963f3cfdce94512ebd74a0098a56b38",
    "name": "YouTrack Dark TV Style",
    "method": "saveStyle",
    "enabled": true,
    "id": 1
  },
  {
    "sections": [
      {
        "urls": [],
        "urlPrefixes": [],
        "domains": [],
        "regexps": [],
        "code": "/* 4chan - Midnight Caek */\r\n@namespace url(http://www.w3.org/1999/xhtml);"
      },
      {
        "urls": [],
        "urlPrefixes": [],
        "domains": [
          "4chan.org"
        ],
        "regexps": [],
        "code": "/* hides Captcha table row */\r\n\r\n/* body background and text color */\r\nhtml, body { /*etc */}"
      },
      {
        "urls": [],
        "urlPrefixes": [],
        "domains": [
          "dis.4chan.org"
        ],
        "regexps": [],
        "code": "body { /*etc */}"
      }
    ],
    "url": "http://userstyles.org/styles/65821",
    "updateUrl": "https://userstyles.org/styles/chrome/65821.json?ik-passtoggle=ik-No",
    "md5Url": "https://update.userstyles.org/65821.md5",
    "originalMd5": "d34520a7525de8e0c174d466697c50db",
    "name": "4chan - Midnight Caek",
    "method": "saveStyle",
    "enabled": true,
    "id": 2
  },
  {
    "method": "saveStyle",
    "name": "stackoverflow improvement",
    "enabled": true,
    "sections": [
      {
        "urls": [],
        "urlPrefixes": [],
        "domains": [
          "superuser.com"
        ],
        "regexps": [],
        "code": "body{background:#ddd;}\n"
      }
    ],
    "updateUrl": null,
    "md5Url": null,
    "url": null,
    "originalMd5": null,
    "id": 3
  }
]

Stylebot позволяет создавать резервные копии стилей и экспортировать их в формате JSON:

{
  "abcnews.go.com":{
    "_enabled":true,
    "_rules":{
      "div.t_callout":{
        "display":"none"
      }
    }
  },
  "boingboing.net":{
    "_enabled":true,
    "_rules":{
      "#next-post-thumbnails":{
        "display":"none"
      }
    }
  }
}

Должно быть довольно просто написать код для цикла по возвращенному Stylebot JSON и сгенерировать для него css в формате Stylish. На самом деле, я собираюсь когда-нибудь этим заняться и опубликую свой материал, если доберусь до него.

решение2

ОСТОРОЖНОСТЬ:

Перед импортом преобразованного json в Stylish/Stylus обязательно сделайте резервную копию существующих настроек. Я проверил только на своих экспортированных настройках, и они могут содержать ошибки!


Я только что написал скрипт для преобразования stylebot json в Stylish/stylus json.

Для использования скрипта вам необходимо установить Python 3. Предположим, вы загрузили скрипт как s2s.py, запустите его с помощью:

python3 s2s.py stylebot.json -o stylus.json -e utf-8

Аргументы -oи -eявляются необязательными.

GitHub Суть

Я знаю, что это довольно уродливый код, но кого это волнует :P

import argparse
import json


def stylebot_to_stylus(source='sb.json', target='stylus.json', encoding='utf-8'):

    with open(source, encoding=encoding) as f:
        data = json.load(f)

    result_list = []
    item_id = 1
    for domain_name in data:
        item_dict = {}
        item_dict["id"] = item_id
        item_id += 1
        item_dict["enabled"] = data[domain_name]['_enabled']
        item_dict["name"] = domain_name

        # only one section for each domain (group)
        sections = []
        section0 = {}
        section0['urls'] = []
        section0['domains'] = []

        # add the domain or the group of domains
        if ',' in domain_name:
            for addr in domain_name.split(sep=','):
                section0['domains'].append(addr.strip())
        else:
            section0['domains'].append(domain_name)

        css_rule = ''

        # construct a css rule for each domain (group)
        for selector in data[domain_name]['_rules']:
            css_rule += selector + '{'
            for attr in data[domain_name]['_rules'][selector]:
                css_rule += attr + ':'
                css_rule += data[domain_name]['_rules'][selector][attr] + ';'
            css_rule += '}'
        section0['code'] = css_rule

        sections.append(section0)
        item_dict['sections'] = sections

        result_list.append(item_dict)

    with open(target, "w", encoding=encoding) as of:
        of.write(json.dumps(result_list))


if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument("source",
                        help="input json file, exported from Stylebot[Lite]")
    parser.add_argument('-o', '--output',
                        help='output json file, can be imported to Stylus')
    parser.add_argument('-e', '--encoding',
                        help='output json file, can be imported to Stylus')

    args = parser.parse_args()
    src = args.source
    out = args.output if args.output else 'stylus_output.json'
    enc = args.encoding if args.encoding else 'utf-8'

    stylebot_to_stylus(src, out, enc)

Связанный контент