Gibt es eine Möglichkeit, Stylebot-Stile in Chrome in das Stylish-Format zu exportieren?

Gibt es eine Möglichkeit, Stylebot-Stile in Chrome in das Stylish-Format zu exportieren?

Die ganze Geschichte ist folgende: Ich hasse den weißen Hintergrund von Chrome und wenn ich einen neuen Tab öffne oder auf einen Link klicke, wird der Bildschirm weiß und meine Augen brennen. Die Stylebot-Erweiterung scheint die Farben in neuen Tabs oder beim Laden weißer Bildschirme nicht ändern zu dürfen.

Firefox hat dieses Problem nicht, wenn ich komplett dunkle Designs darauf installiere (diese alten Designs). Also möchte ich jetzt Chrome hinter mir lassen und Firefox verwenden. Aber wie wir alle wissen, hat Stylebot keine Firefox-Version.

Ich habe kein so gutes Add-on für Firefox wie Stylebot gefunden und die, die an Stylebot herankommen, sind fehlerhaft und bringen die Websites durcheinander.

Also habe ich darüber nachgedacht, meine Voreinstellungen im Stylebot von Chrome zu nehmen und sie in einen Stylish-Erweiterungsstil zu exportieren. Ich weiß nicht, ob das möglich ist, und ich habe wirklich keine Ahnung von irgendeiner Art von Codierung. Wenn das irgendwie funktioniert, wäre es großartig!

Ich habe es aufgegeben, den weißen Hintergrund von Chrome zu ändern, weil es zu umständlich war. Einige Änderungen funktionierten für den weißen Ladebildschirm, aber nicht für die neue Registerkarte. Sogar Erweiterungen, die die neue Registerkarte in eine andere URL ändern, funktionierten nicht. Es wird immer der weiße Bildschirm angezeigt, bevor der Ladevorgang abgeschlossen ist.

Also... kann mir jemand helfen?

Antwort1

Ich schaue mir das gerade selbst an. Stylish exportiert/importiert also im folgenden Format – dazu gehören zwei Beispiele von userstyles.org und eines, das ich sehr schnell erstellt habe:

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

Mit Stylebot können Sie Ihre Stile in diesem JSON-Format sichern und exportieren:

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

Es sollte ziemlich einfach sein, Code zu schreiben, der durch das von Stylebot zurückgegebene JSON schleift und das CSS dafür im Stylish-Format generiert. Ich werde das irgendwann tatsächlich in Angriff nehmen und meine Sachen posten, wenn ich jemals dazu komme.

Antwort2

VORSICHT:

Bevor Sie das konvertierte JSON in stylish/stylus importieren, sichern Sie unbedingt zuerst Ihre vorhandenen Einstellungen. Ich habe es nur anhand meiner exportierten Einstellungen überprüft und es könnte Fehler enthalten!


Ich habe gerade ein Skript geschrieben, um Stylebot-JSON in Stylish/Stylus-JSON zu konvertieren.

Um das Skript zu verwenden, muss Python 3 installiert sein. Vorausgesetzt, Sie haben das Skript als heruntergeladen s2s.py, führen Sie es mit folgendem Befehl aus:

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

Die Argumente -ound -esind optional.

GitHub Gist

Ich weiß, dass der Code ziemlich hässlich ist, aber wen kümmert das schon :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)

verwandte Informationen