Existe uma maneira de exportar estilos Stylebot para o formato Stylish no Chrome?

3

A história toda é esta: Eu detesto o plano de fundo branco do Chrome e quando abro uma nova guia ou clico em um link, a tela fica branca, queimando meus olhos. A extensão Stylebot não parece ter permissão para alterar as cores em uma nova guia ou carregar telas brancas.

O Firefox não tem esse problema quando eu instalo temas escuros completos (aqueles temas antigos). Então agora eu quero deixar o Chrome para trás e começar a usar o Firefox. Mas como todos sabemos, Stylebot não tem uma versão do Firefox.

Eu não encontrei um addon tão bom quanto o Stylebot para o Firefox e os que chegam perto do Stylebot estão cheios de bugs e bagunçam os sites.

Então eu pensei em pegar minhas predefinições no Stylebot do Chrome e exportá-las para um estilo de extensão Stylish. Eu não sei se isso é possível e realmente não sei nada sobre qualquer tipo de codificação. Se isso funciona de alguma forma, seria de ouro!

Eu desisti de tentar mudar o fundo branco do Chrome porque era muito problemático. Algumas alterações funcionaram na tela de carregamento em branco, mas não na nova guia. Mesmo as extensões que alteram a nova guia para qualquer outra URL não funcionaram. Ele sempre mostra a tela branca antes de terminar o carregamento.

Então ... alguém pode me ajudar?

WilliamTael
fonte

Respostas:

0

Eu estou olhando para isso sozinho. So Stylish export / imports com o seguinte formato - isso inclui dois exemplos do userstyles.org e um que eu fiz muito rapidamente:

[
  {
    "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
  }
]

O Stylebot permite um backup e exporta seus estilos nesse formato JSON:

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

Deve ser bastante trivial escrever algum código para fazer um loop através do JSON retornado pelo Stylebot e gerar o css para ele no formato Stylish. Na verdade, vou resolver isso algumas vezes e postarei minhas coisas se alguma vez chegar a ele.

Mario Olivio Flores
fonte
0

CUIDADO:

Antes de importar o json convertido para stylish / stylus, certifique-se de fazer backup de suas configurações existentes primeiro. Eu só o verifiquei nas minhas configurações exportadas e ele pode conter bugs!


Acabei de escrever um script para converter stylebot json para stylish / stylus json.

Para usar o script, você precisa ter o Python 3 instalado. Supondo que você tenha baixado o script como s2s.py, execute o script com:

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

o -o e -e argumentos são opcionais.

GitHub Gist

Eu sei que é um tipo de código feio mas quem se importa: 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)
Jiaqi Liu
fonte