作者:七夜草时间:2022-12-27 22:24:00分类:开发
由于本人没有MacOS,所以无法对于在该系统环境下可能出现的问题给出解决方案,如有疑问可以留言。本文主要针对Windows用户,对于Linux用户以及高水平Android用户有部分内容不适用。
Haty 是以Matrix&Element为基础搭建的去中心化端到端加密即时通讯平台。具体介绍请参考下方相关博文,在此不多赘述。
而相应的,由于Element集成服务器不开源等问题,用惯了QQ微信等平台的Matrix用户面对着一个问题:如何自定义表情包?
对于这个绊脚石,今天本人就给出一个可以跨平台自定义表情包的解决方案:stickerpicker
GitHub:https://github.com/maunium/stickerpicker
首先,你需要准备:
1. 一个电脑
2. Python环境
3. 静态页面托管平台(Haty用户可以联系我托管)
4. 可以突破网络封锁的工具(很可能需要)
5. Git(可选)
6. 配置好的Termux(Android用户专属)
第一步,你需要将用到的源码给获取到本地。
git clone https://github.com/maunium/stickerpicker.git
然后在stickerpicker(就是克隆下来的仓库的根目录)里面使用以下命令安装(此处Windows用户一定不会成功,解决方法见后文)
pip install .
此命令会安装依赖,所以如果你不是开发者且初次使用pip时执行该命令时间会较长。
在项目根目录下创建一个新目录,然后将所有的想要导入的图片放置在内,注意命名;如果需要排序,在文件名最前面加上序号。
例如:有三张想要导入的图片,分别是
你想要在使用表情包时显示名称,比如第一张显示双子,第二张是月亮,第三张是树王,那么命名应该是:
双子.jpg,月亮.jpg,树王.jpg(后缀名按照实际情况定,此处的意思是修改后缀名前面的字符)。
同时假如想要树王在表情包里面是第一个表情,双子和月亮分别为二三,命名应该是:
1树王.jpg,2双子.jpg,3月亮.jpg(此处必须是数字)。
然后执行命令打包。
sticker-pack <pack directory> --add-to-index web/packs/
此处 <pack directory>
指的是放图片的目录,web/packs/
是输出目录,如果你不明白此处相对目录的概念,请一定在仓库根目录执行。
例如,你新建文件夹名为test,那此处命令应该为
sticker-pack test --add-to-index web/packs/
此时如果直接打包会以文件夹的名称命名贴纸包,因此你可以再追加 --title <custom title>
命名,比如你想上传的是test文件夹里面的图片,但是贴纸包想要命名为Favor,则命令应该为
sticker-pack test --add-to-index web/packs/ --title Favor
如果想要直接从telegram里面获取已有的贴纸包,可以通过这个命令进行
sticker-import <pack_url>
无论是通过什么方式导入,第一次使用时都需要登录Matrix(通过telegram导入还需要登录telegram)。Matrix的Homeserver以及Access Token可以在Settings的Help&About最下面找到。如果使用Haty网页版中文译本,则是在设置里面的“帮助与关于”一页最下方的“访问令牌”处。
之后静待上传完毕即可。
执行完毕后你需要将web文件夹部署为静态页面,在此不多赘述,Haty用户可以直接联系我部署。
你需要在Element-Desktop或者在Haty网页端执行该操作。
随意点开一个对话框,输入 /devtools
并发送。
然后点进显示的页面里面的Other标题下第一项“Explore account data”,寻找 m.widgets
(如果找不到就点最后一项继续找,此处最后一项不是指Back和Send)
如果实在找不到,就自定义(就是那个custom选项)一个,Enevt Type填 m.widgets
点进去,删掉所有内容,使其变成下面的样子,请注意千万不要盲目复制
{
"stickerpicker": {
"content": {
"type": "m.stickerpicker",
"url": "你的静态页面?theme=$theme",
"name": "Stickerpicker",
"data": {}
},
"sender": "你的ID",
"state_key": "stickerpicker",
"type": "m.widget",
"id": "stickerpicker"
}
}
此处静态页面以https:// 开头,ID形式是 @yourname:example.com
,其中yourname是你的用户名(不是昵称),example.com是实例名。例如我的用户名是 test
,实例是 example.com
,静态页面地址是 https://example.com/testpage
,那应该输入以下内容(千万不要盲目复制)
{
"stickerpicker": {
"content": {
"type": "m.stickerpicker",
"url": "https://example.com/testpage?theme=$theme",
"name": "Stickerpicker",
"data": {}
},
"sender": "@test:example.com",
"state_key": "stickerpicker",
"type": "m.widget",
"id": "stickerpicker"
}
}
确认无误后点击Send发送即可。
如果后续想要取消自定义表情包,将此处内容改为`{}`即可。
输入完毕后重启Element即可使用,且多端同步。
资深大佬们别笑,真的有人不会。
Git去 该网址 下载,请注意提前了解你的Windows位数并据此在Standalone Installer一栏下选择你的安装包,x86下载32-bit,x64下载64-bit
安装傻瓜式全打勾即可。
Python去 该网址 下载,同样注意位数,下载3.x最新版本,并且要在Windows Installer选择。
安装开始先别急,把最下面两个框都勾上,然后点第二项,就是Customize installation,看看第一页是不是全部勾选状态,如果是,直接Next。
第二页确保前四项全部勾选或者取消勾选第一项,注意下面三项空着就行,在这里可以更改安装目录。确认无误后直接Install就可以了。
打开命令行,输入该命令
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
(此处是换源,换成清华源,可以让pip速度有显著提升)
Win+R打开运行,输入cmd回车即可
想要在指定目录下运行,在该目录下按住Shift键同时按鼠标右键,在弹出的菜单里点击“在终端打开”或者类似于在powershell/命令提示符打开的字样即可。
这就是Windows用户面临的问题。
打开Python IDLE(在Windows菜单全部程序那里可以找到)或者其他的代码编辑器(别用记事本),找到这个仓库sticker文件夹里面的get_version.py,将第九行,也就是`"HOME": os.environ["HOME"],`的第二个HOME改成HOMEPATH,然后将以下代码覆盖掉根目录的setup.py。
import setuptools
from sticker.get_version import git_tag, git_revision, version, linkified_version
with open("requirements.txt") as reqs:
install_requires = reqs.read().splitlines()
try:
#long_desc = open("README.md").read()
pass
except IOError:
long_desc = "Failed to read README.md"
with open("sticker/version.py", "w") as version_file:
version_file.write(f"""# Generated in setup.py
git_tag = {git_tag!r}
git_revision = {git_revision!r}
version = {version!r}
linkified_version = {linkified_version!r}
""")
setuptools.setup(
name="maunium-stickerpicker",
version=version,
url="https://github.com/maunium/stickerpicker",
author="Tulir Asokan",
author_email="[email protected]",
description="A fast and simple Matrix sticker picker widget",
long_description="",
long_description_content_type="text/markdown",
packages=setuptools.find_packages(),
install_requires=install_requires,
python_requires="~=3.6",
classifiers=[
"Development Status :: 4 - Beta",
"License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)",
"Framework :: AsyncIO",
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: 3.7",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
],
entry_points={"console_scripts": [
"sticker-import=sticker.stickerimport:cmd",
"sticker-pack=sticker.pack:cmd",
]},
)
保存再运行即可。
你可以直接在GitHub下载zip文件。
另外如果你找不到可以突破网络封锁的工具,可以试试一些反代站,就比如你可以将 github.com
替换为 git.codeproxy.net
解决问题。
欢迎提问或者Google一下,“如何开关机”这类水平的问题恕不解答。
本人水平有限,如有缺漏谬误,请及时指出。如果你恰好在MacOS上遇到此类问题,欢迎一起探讨!