mozprofile — 创建和修改 Mozilla 应用程序配置文件

Mozprofile 是一个 Python 工具,用于为 Mozilla 的应用程序(Firefox、Thunderbird 等)创建和管理配置文件。除了创建配置文件外,mozprofile 还可以安装 附加组件 并设置首选项。Mozprofile 可以从命令行或作为 API 使用。

设置配置文件数据(附加组件、权限、首选项等)的首选方法是将它们传递给 profile 构造函数。

附加组件

exception mozprofile.addons.AddonFormatError

格式不正确的附加组件清单文件的异常

class mozprofile.addons.AddonManager(profile, restore=True)

处理配置文件中与附加组件相关的所有操作,包括:安装和清理附加组件

classmethod addon_details(addon_path)

返回有关附加组件的详细信息字典。

参数:

addon_path – 附加组件目录或 XPI 的路径

返回值

{'id':      u'[email protected]', # id of the addon
 'version': u'1.4',                # version of the addon
 'name':    u'Rainbow',            # name of the addon
 'unpack':  False }                # whether to unpack the addon
clean()

清理配置文件中的附加组件。

get_addon_path(addon_id)

返回已安装附加组件的路径

参数:

addon_id – 要从中检索路径的附加组件的 ID

install(addons, **kwargs)

从配置文件中附加组件的文件路径或目录安装附加组件。

参数:
  • addons – .xpi 或附加组件目录的路径

  • unpack – 是否解压,除非在 install.rdf 中另有指定

classmethod is_addon(addon_path)

检查给定路径是否为有效的附加组件

参数:

addon_path – 附加组件目录或 XPI 的路径

remove_addon(addon_id)

删除由 ID 指定的附加组件

参数:

addon_id – 要删除的附加组件的 ID

可以单独安装附加组件或从清单中安装。

示例

from mozprofile import FirefoxProfile

# create new profile to pass to mozmill/mozrunner
profile = FirefoxProfile(addons=["adblock.xpi"])

命令行界面

创建和/或修改 Firefox 配置文件。可以通过传递要安装的附加组件或要设置的首选项来修改配置文件。如果未指定配置文件,则会创建一个新的配置文件,并打印生成的配置文件的路径。

exception mozprofile.cli.KeyValueParseError(msg, errors=())

解析序列化键值字符串时出错。

class mozprofile.cli.MozProfileCLI(args=['doc', '--upload', '--no-open', '--no-serve', '--write-url', '/builds/worker/firefox-source-docs-url.txt', '--dump-trees=/builds/worker/artifacts/trees.json'], add_options=None)

mozprofile 的命令行界面。

preferences()

配置文件首选项

profile(restore=False)

创建配置文件

profile_args()

实例化配置文件类的参数

profile_class

Profile 的别名

mozprofile.cli.cli(args=['doc', '--upload', '--no-open', '--no-serve', '--write-url', '/builds/worker/firefox-source-docs-url.txt', '--dump-trees=/builds/worker/artifacts/trees.json'])

通过 sys.argv 处理 mozprofile 的命令行参数

mozprofile.cli.parse_key_value(strings, separator='=', context='key, value')

解析以 key = value 形式表示的字符串序列化的键值对。

参数:
  • strings (list) – 要解析的字符串列表。

  • separator (str) – 用于分割字符串的标识符。

返回值:

(<key>,<value>) 元组列表。不会去除空格。

返回类型:

list

引发:

KeyValueParseError

mozprofile.cli.parse_preferences(prefs, context='--setpref=')

解析命令行上指定的首选项。

参数:

prefs (list) – 字符串列表,通常采用 “<pref>=<value>” 的形式。

返回值:

形式为 {<pref>: <value>} 的字典,其中值已

强制转换。

返回类型:

dict

可以使用 --profile 开关指定要对其进行操作的配置文件。如果未指定配置文件,则会在一个临时目录中创建一个配置文件,该目录将回显到终端

(mozmill)> mozprofile
/tmp/tmp4q1iEU.mozrunner
(mozmill)> ls /tmp/tmp4q1iEU.mozrunner
user.js

要从命令行运行 mozprofile,请输入:mozprofile --help 以获取选项列表。

权限

向配置文件添加权限

异常 mozprofile.permissions.BadPortLocationError(given_port)

位置的端口值无效。

异常 mozprofile.permissions.DuplicateLocationError(url)

相同的位置被定义了两次。

mozprofile.permissions.Location(scheme, host, port, options)

表示 server-locations.txt 文件中的一行位置信息。

isEqual(location)

比较 scheme://host:port,但忽略选项。

异常 mozprofile.permissions.LocationsSyntaxError(lineno, err=None)

表示 server-locations.txt 文件中特定行上的语法错误。

异常 mozprofile.permissions.MissingPrimaryLocationError

位置文件中未定义主要位置。

异常 mozprofile.permissions.MultiplePrimaryLocationsError

定义了多个主要位置。

mozprofile.permissions.Permissions(locations=None)

允许处理 mozprofile 的权限。

network_prefs(proxy=None)

获取已知位置并生成用于处理权限和代理的偏好设置,返回一个包含偏好设置和用户偏好设置的元组。

pac_prefs(user_proxy=None)

返回代理自动配置的偏好设置。

mozprofile.permissions.ServerLocations(filename=None)

位置的可迭代集合。为了检查错误并确保回调函数被调用(如果已给出),请使用提供的函数添加新的位置,而不是直接操作 _locations

read(filename, check_for_primary=True)

读取文件并将所有有效的位置添加到 self._locations 数组中。

参数:
  • filename – 格式为 server-locations.txt

  • check_for_primary – 如果为 True,则如果未找到主要位置,则会引发 MissingPrimaryLocationError 异常。

唯一的例外是,如果未定义端口,则默认为 80 或 443。

待办事项:这是否应该默认为与协议相关的端口?有理由设置默认值吗?

可以通过创建一个 ServerLocations 对象并将其传递给 Profile 构造函数来设置权限。可以使用 add_host(host, port) 将主机添加到其中。port 可以为 0。

偏好设置

用户偏好设置。

mozprofile.prefs.Preferences(prefs=None)

从各种来源组装偏好设置。

add(prefs, cast=False)
参数:
  • 偏好设置。

  • cast – 是否将字符串转换为值,例如 '1' -> 1。

add_file(path)

从文件中读取偏好设置。

参数:

路径。

类方法 cast(value)

从命令行或例如 .ini 文件中的字符串插值偏好设置,没有很好的方法来表示偏好设置值的类型,因为在本地它是一个字符串。

  • 整数将被转换为整数。

  • true/false 将被转换为 True/False。

  • 任何用单引号括起来的字符串都将被视为一个字符串,并且两侧的 '' 将被移除。

类方法 read(path)

从文件中读取偏好设置。

类方法 read_ini(path, section=None)

从 .ini 文件中读取偏好设置。

类方法 read_json(path)

从 JSON 数据中读取偏好设置。

类方法 read_prefs(path, pref_setter='user_pref', interpolation=None)

从(例如)prefs.js 读取偏好设置。

参数:
  • path – 要读取的偏好设置文件的路径。

  • pref_setter – 用于在偏好设置文件中设置偏好设置的函数的名称。

  • interpolation – 如果提供,则为将传递给 str.format 的字典,用于插值偏好设置值。

类方法 write(_file, prefs, pref_string='user_pref(%s, %s);')

将偏好设置写入文件。

异常 mozprofile.prefs.PreferencesReadError

偏好设置文件的读取错误。

可以通过多种方式设置偏好设置。

  • 使用 API:可以使用字典存储偏好设置,并将其传递给 Profile 构造函数。还可以使用 Profile.set_preferences 方法添加更多偏好设置。

  • 使用 JSON 数据文件: mozprofile --preferences myprefs.json

  • 使用 .ini 文件: mozprofile --preferences myprefs.ini

  • 通过命令行: mozprofile --pref key:value --pref key:value [...]

从 .ini 文件或 --pref 开关设置偏好设置时,如果可能,值将被插值为整数或布尔值(true/false)。

配置文件

mozprofile.profile.FirefoxProfile(profile=None, addons=None, preferences=None, locations=None, proxy=None, restore=True, allowlistpaths=None, **kwargs)

Firefox 的专用配置文件子类。

mozprofile.profile.Profile(profile=None, addons=None, preferences=None, locations=None, proxy=None, restore=True, allowlistpaths=None, **kwargs)

处理所有与配置文件相关的操作。

创建新的配置文件、安装附加组件、设置偏好设置和处理清理。

对象被垃圾回收后,与配置文件关联的文件将自动删除。

profile = Profile()
print profile.profile  # this is the path to the created profile
del profile
# the profile path has been removed from disk

cleanup() 在后台被调用以删除配置文件。您可以通过将配置文件用作上下文管理器来确保此方法被调用(即使在出现异常的情况下)

with Profile() as profile:
    # do things with the profile
    pass
# profile.cleanup() has been called here
clean_preferences()

删除由 mozrunner 添加的首选项。

cleanup()

配置文件的清理操作。

pop_preferences(filename)

弹出最后设置的首选项,如果弹出则返回 True。

set_persistent_preferences(preferences)

将首选项字典添加到配置文件首选项,并在重置配置文件期间保存它们。

set_preferences(preferences, filename='user.js')

将首选项字典添加到配置文件首选项。

summary(return_parts=False)

返回总结配置文件信息的字符串。如果 return_parts 为真,则返回 (Part_name, value) 元组列表,而不是组装后的字符串。

class mozprofile.profile.ThunderbirdProfile(profile=None, addons=None, preferences=None, locations=None, proxy=None, restore=True, allowlistpaths=None, **kwargs)

Thunderbird 的专用 Profile 子类。

mozprofile.profile.create_profile(app, **kwargs)

给定应用程序名称创建配置文件。

参数:
  • app – 要为其创建配置文件的应用程序的字符串名称,例如“firefox”。

  • kwargs – 与 Profile 类参数相同(可选)。

返回值:

特定于应用程序的 Profile 实例。

引发:

NotImplementedError

资源

其他 Mozilla 程序提供了用于配置文件的额外和重叠的功能。关于配置文件及其管理也有大量文档。