¿Hay alguna manera de exportar estilos Stylebot al formato Stylish en Chrome?

¿Hay alguna manera de exportar estilos Stylebot al formato Stylish en Chrome?

La historia completa es la siguiente: odio el fondo blanco de Chrome y cuando abro una nueva pestaña o hago clic en un enlace, la pantalla se vuelve blanca y me quema los ojos. La extensión Stylebot no parece poder cambiar los colores en una nueva pestaña o al cargar pantallas blancas.

Firefox no tiene ese problema cuando instalo temas oscuros completos (esos temas antiguos). Ahora quiero dejar Chrome y empezar a usar Firefox. Pero como todos sabemos, Stylebot no tiene una versión para Firefox.

No he encontrado un complemento tan bueno como Stylebot para Firefox y los que se acercan a Stylebot tienen errores y estropean los sitios web.

Así que pensé en tomar mis ajustes preestablecidos en Stylebot de Chrome y exportarlos a un estilo de extensión Stylish. No sé si eso es posible y realmente no sé nada sobre ningún tipo de codificación. Si eso funciona de alguna manera, ¡sería dorado!

Dejé de intentar cambiar el fondo blanco de Chrome porque era demasiado problemático. Algunos cambios funcionaron para la pantalla de carga blanca, pero no para la página de nueva pestaña. Incluso las extensiones que cambian la nueva pestaña a cualquier otra URL no funcionaron. Siempre muestra la pantalla blanca antes de terminar de cargar.

Entonces... ¿alguien puede ayudarme?

Respuesta1

Estoy investigando esto yo mismo. Entonces Stylish exporta/importa con el siguiente formato: esto incluye dos ejemplos de userstyles.org y uno que hice muy rápidamente:

[
  {
    "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 permite realizar copias de seguridad y exportar sus estilos en este formato JSON:

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

Debería ser bastante trivial escribir algún código para recorrer el JSON devuelto por Stylebot y generar el CSS en el formato Stylish. De hecho, voy a abordar esto en algún momento y publicaré mis cosas si alguna vez logro hacerlo.

Respuesta2

PRECAUCIÓN:

Antes de importar el json convertido a style/stylus, asegúrese primero de hacer una copia de seguridad de su configuración existente. ¡Solo lo verifiqué en mi configuración exportada y puede contener errores!


Acabo de escribir un script para convertir stylebot json a style/stylus json.

Para utilizar el script es necesario tener instalado Python 3. Suponiendo que haya descargado el script como s2s.py, ejecútelo con:

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

Los argumentos -oy -eson opcionales.

Lo esencial de GitHub

Sé que es un código un tanto feo, pero ¿a quién le 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)

información relacionada