用于备份乳齿象内容的实用程序

mastodon-archive的Python项目详细描述


乳齿象档案

此工具允许您将您的状态 收藏和媒体在您的状态和您的收藏。 从这个存档中,您可以生成一个简单的文本文件,或者一个html文件 有或没有媒体。看一看 示例 如果你好奇的话。

注意乳齿象 v2.3.0版 添加了帐户存档下载功能:"每7天您可以 请求完整的卡通档案。这些香椿是在 activitypub json格式以及附加到它们的媒体文件, 你的头像和头像以及你的私钥 用于签名内容的帐户。"如果您只想 备份你的数据,也许这就足够了,你不需要这个 工具。

请报告 软件维基。 你可以得到最新的消息来源 来自作者网站的

目录

安装

下面的命令将安装Mastodon Archive及其所有 依赖关系:

# Python 3
pip3 install mastodon-archive

如果这是您使用pip安装的第一个工具,那么 安装在路径之外的目录中。 我必须在我的~/.bashrc文件中添加以下内容:

exportPATH=$PATH:$HOME/.local/bin

如果出现以命令"python setup.py egg_info"结尾的错误,错误代码为1…则可能必须安装 安装工具。尝试以下操作:

pip3 install --user setuptools
pip3 install mastodon-archive

制作存档

首次使用应用程序时,您必须对其进行授权:

$ mastodon-archive archive kensanata@dice.camp
Registering app
Log in
Visit the following URL and authorize the app:
[the app gives you a huge URL which you need to visit using a browser]
Then paste the access token here:
[this is where you paste the authorization code]
Get user info
Get statuses (this may take a while)
Save 41 statuses

请注意,我们使用的库中说:"乳齿象API速率限制 每IP。默认情况下,限制为每5分钟一个时隙300个请求。 这可能因实例而异,而且可能会有所更改。" 因此,如果每个请求得到20个toots,那么我们最多可以得到6000个 每五分钟嘟嘟声。

如果花费的时间太长,请考虑跳过您的收藏夹:

$ mastodon-archive archive --no-favourites kensanata@dice.camp

如果你想要更好的对话图片,你还可以包括 提到。提到的是你所处状态的通知 与你的地位相对应 博被别人炫耀。注意,如果您以前取消通知 使用"清除通知"菜单,则找不到任何提示 如前所述,只是一种特殊的通知。

$ mastodon-archive archive --with-mentions kensanata@dice.camp

不管你做了什么,最终都会得到三个新文件:

dice.camp.client.secret是此实例的客户端机密 存储。dice.camp.user.kensanata.secret是 存储此用户和实例的授权令牌。如果这两个 文件存在,下次运行应用程序时不必登录。 如果登录过期,则需要删除包含 授权令牌,您将被要求再次授权应用程序。

dice.camp.user.kensanata.json是包含数据的json文件(但是 没有媒体附件)。如果此文件存在,则仅丢失 下次运行应用程序时将下载toots。如果你怀疑 有个问题,想确保所有内容都被再次下载, 您需要删除此文件。

下载媒体文件

默认情况下,上载的媒体和添加的状态的媒体 收藏夹不在您的存档中。您可以使用 但是,要单独使用命令。

假设您已经对您的卡通进行了存档:

$ mastodon-archive media kensanata@dice.camp
44 urls in your archive (half of them are previews)
34 files already exist
Downloading |################################| 10/10

你将得到一个新目录,dice.camp.user.kensanata。它 包含您上载的所有媒体及其相应的预览。

如果您重新运行它,它只会尝试获取剩余的文件。注: 但是,实例管理员可以删除媒体文件。因此, 你可能会永远丢失一些文件,特别是那些 远程实例(如果您在收藏夹中添加了实例)。

不过,有一件事你需要记住:媒体目录 包含来自您的状态的所有媒体,以及来自您的 最喜欢的。没有什么特别的原因 两个源必须位于同一目录中,请参见 问题11

生成文本文件

假设您已经对您的卡通进行了存档:

$ mastodon-archive text kensanata@dice.camp
[lots of other toots]
Alex Schroeder ? @kensanata 2017-11-14T22:21:50.599000+00:00
https://dice.camp/@kensanata/99005111284322450
[#introduction](https://dice.camp/tags/introduction) I run
[#osr](https://dice.camp/tags/osr) games using my own hose rule document but
it all started with Labyrinth Lord which I knew long before I knew B/X. Sadly,
my Indie Game Night is no longer a thing but I still love Lady Blackbird, all
the [#pbta](https://dice.camp/tags/pbta) hacks on my drive, and so much more.
But in the three campaigns I run, it’s all OSR right now.

生成文本文件只意味着将输出重定向到文本 文件:

$ mastodon-archive text kensanata@dice.camp > statuses.txt

如果你正在处理文本,你可能会期望第一个声音出现在 顶部和最后一个在底部的嘟嘟声。在这种情况下,你需要 要反转列表:

# Python 3
pip3 install mastodon-archive
0

搜索存档

也可以使用正则表达式进行筛选。这些要检查 相对于状态内容(显然),显示名称用户名(对增强的toots都很重要),并且 在日期。还要注意,正则表达式将应用于 原始状态内容。换句话说,状态包含所有的html 可能以<;p>;开头,然后在 输出:

# Python 3
pip3 install mastodon-archive
1

你可以提供多个正则表达式 检查:

# Python 3
pip3 install mastodon-archive
2

记住基本 正则表达式语法: \b是单词边界,(?i)忽略大小写,(a b)用于 选择一些有用的方法。使用单引号 保护你的反斜杠和问号。

# Python 3
pip3 install mastodon-archive
3

您还可以搜索您的收藏夹或推荐信:

# Python 3
pip3 install mastodon-archive
4

日期采用ISO格式(例如2017-11-19t14:00)。我通常只关心 但是,大约是年和月:

# Python 3
pip3 install mastodon-archive
5

显示工具的上下文

有时你只记得一个线程的一些内容。假设你 刚才问了一个问题,但现在你记不起来了 你回来了。首先,找到问题:

# Python 3
pip3 install mastodon-archive
6

使用url,您现在可以在存档文件中搜索一些上下文:

# Python 3
pip3 install mastodon-archive
7

这将显示相同的信息,单击嘟嘟给你看 web客户端:它的所有祖先和所有后代。显然,如果 这些工具不在你的档案里,我们找不到。你会拥有 单击链接并希望它们仍然存在。

生成HTML文件

假设您已经对您的卡通进行了存档:

# Python 3
pip3 install mastodon-archive
8

这将创建以 dice.camp.user.kensanata.statuses.0.html,每页有2000个卡通。

您可以使用以下选项更改每页的卡通数量:

# Python 3
pip3 install mastodon-archive
9

如果您下载了媒体附件,这些附件将用于 HTML文件。因此,如果你想上传html文件,现在 还需要上传媒体目录,否则所有媒体链接都将 破碎。

您还可以为您的收藏夹生成一个文件:

exportPATH=$PATH:$HOME/.local/bin
0

这将创建以 dice.camp.user.kensanata.favorites.0.html,每页2000 嘟嘟声,

请注意,包含您的状态的html文件和包含 您的收藏夹将指向媒体目录中的媒体文件。

报告

一些数字,包括您最常用的十个标签:

exportPATH=$PATH:$HOME/.local/bin
1

您可以指定要考虑使用的不同时间周数 --比n新,或者使用--all来考虑您的所有状态和 收藏夹。

您可以使用--top n列出不同数量的标签,然后 可以使用--top-1列出所有这些。这可能会导致 长列表。

默认情况下,标签只考虑您的toot。使用--include boosts也包括您已增强的toot。

使您的卡通和收藏夹过期

警告:这是一个破坏性操作。您将删除 对你的情况吹嘘,或是对你的最爱不利,或是拒绝你的 实例上的通知。尽可能地 再宠爱你所有的最爱,没有办法再寄出所有的 嘟嘟声。你的档案里会有一份副本,但是没有办法 将它们还原到您的实例。

但是为什么?我可能想保留一份我的卡通,但我不想 想想看,它们在过去的几个月和几年里都很有价值。我从不读书 通过多年的微博历史!这只会让你的敌人受益, 从来不是你的朋友。所以我想让我的卡通过期。我们总是可以写作 关于好东西的博客文章。您可以在我的 博客

备选方案:查看忘记 这是一个网页应用程序,只会在没有存档的情况下过期 主题。 mastopurgee 做同样的事情,但它是一个独立的二进制文件。取决于你的 需要,这些可能足够好。

无论如何,回到乳齿象档案。< < /P>

您可以使用expire命令使toots过期,并提供 --早于选项。此选项指定 继续在服务器上。任何早于此的内容都将被删除或不受欢迎。 如果使用早于0的-- 所有您最喜爱的内容都将不受欢迎,或所有您的通知 将被解雇。

exportPATH=$PATH:$HOME/.local/bin
2

实际上,默认操作只是进行一次试运行。你需要使用 --已确认继续操作选项。

还有一件事:因为这需要写入的权限 您的帐户,您必须重新授权应用程序。

exportPATH=$PATH:$HOME/.local/bin
3

过一段时间,你会注意到归档需要更多 更多的时间。原因是当提到过期时,工具会通过 所有你的通知,看看"提到"和 如果他们足够大的话就过期。有其他类型 但是,通知:"follow"、"favorite"和"reblog"(在 写作时间)。由于这些文件没有存档,我们也不会过期 他们。因此,归档时要查看的通知列表 如果不使用 乳齿象网络客户端。或者,您可以使用 --delete other notifications选项与--collection提及一起,然后该工具将忽略所有较旧的其他通知 通知您。

故障排除

如果您正在归档大量的toot,并且遇到一个通用api 问题,请使用--pace选项。问题是这样的:

exportPATH=$PATH:$HOME/.local/bin
4

解决方案:

exportPATH=$PATH:$HOME/.local/bin
5

问题似乎与乳齿象的发病率有关。 极限 请求。

如果你有很多嘟嘟声,同样的事情。默认利率限制 是每5分钟300个请求,所以当超过300个toots时 被删除,应用程序只需等待五分钟 持续的。这需要时间。

exportPATH=$PATH:$HOME/.local/bin
6

如果你正在尝试过期,你需要给应用程序 写入权限。如果您删除用户机密文件,希望 在归档时,首先要做一个干净的记录,您将被要求授权 又是这个应用程序,但不知怎的,乳齿象记得你已经 授予应用程序读写权限,您将获得 错误:

mastodon.mastodon.mastodonapierror:授予的作用域"读写"与请求的作用域"读"不同。

为了解决这个问题,你需要访问网站 设置→授权的应用程序并吊销您的授权 乳齿象档案。现在您可以再次尝试授权url,然后 将只获取读取权限,而不是同时获取读取和写入权限 权限。

关注者

这是正在进行的工作。我真的不知道我想去哪里 有了这个。现在它列出了你所有的追随者 与你互动。如果他们的嘟嘟声提到你,那么 算是一种互动。恩惠和提振不算数。通过 默认情况下,这是过去12周的情况。为了让这个 工作,您需要一个包含提及和关注者的存档。

exportPATH=$PATH:$HOME/.local/bin
7

现在您可以确定潜伏者列表:

exportPATH=$PATH:$HOME/.local/bin
8

正如我所说,这是在进行中的工作,我不知道我在哪里 就这样。更多 在我的博客上

此命令支持白名单

跟随

假设你只是为了谈话而在少数人中间。你不是 真的有兴趣跟踪那些从不跟你说话的人:不 记者,没有名人,没有专家。你只是想跟着 经常和你交流的人。你可以列出你是谁 跟随那些从未提及你的人,你就可以将他们全部展开!

但是,有两个先决条件:

  1. 您需要将正在跟踪的人添加到存档中
  2. 您需要将提及内容添加到存档中(这可能需要很长时间)
exportPATH=$PATH:$HOME/.local/bin
9

根据这些数据,您现在可以列出我们感兴趣的人:

pip3 install --user setuptools
pip3 install mastodon-archive
0

所有这些从没提过你的人:你真的想 跟着他们?如果没有,请使用以下方法展开:

pip3 install --user setuptools
pip3 install mastodon-archive
1

请注意,应用程序需要权限才能在 您的姓名,因此您需要再次授权。

此命令支持白名单

白名单

你可以有一份白名单,上面有你想免除的人 命令。创建名称如下的文本文件: dice.camp.user.kensanata.whitelist.txt

即:<;您的域>;.user.<;您的帐户>;.whitelist.txtDE>< /P>

在这里,列出你想在白名单中拥有的帐户,每个帐户一个 线。所有这些格式都应该有效:

pip3 install --user setuptools
pip3 install mastodon-archive
2

要验证白名单,请使用白名单命令:

pip3 install --user setuptools
pip3 install mastodon-archive
3

使用wc-l计算输出中的行数,下面是您可以看到的 它的工作原理:

pip3 install --user setuptools
pip3 install mastodon-archive
4

相互作用

但是,如何创建白名单呢?太难了!你可以 从跟踪你的人的名单开始,也许吧? 这里有一个命令可以这样做:

pip3 install --user setuptools
pip3 install mastodon-archive
5

我们目前不将关系状态存储在存档中,因此 这就是为什么这个命令需要实时连接。我们确实有 在我们的档案中,我们跟踪的人的列表,所以我们使用它。如果 您还没有这样做,您需要使用 --使用下面的选项,然后才能使用mutuals命令。

pip3 install --user setuptools
pip3 install mastodon-archive
6

示例设置

我有一个名为backup mastodon的shell脚本,它执行以下操作:

pip3 install --user setuptools
pip3 install mastodon-archive
7

文档

我们存档文件中的数据是一个具有三个键的哈希值:

  1. 帐户是一个用户指令
  2. 状态是指向指令的列表
  3. Favorites是指向dicts的列表
  4. 提到的是一个列表,其中包含toot dicts

如果您想了解这些 数据结构,您需要查看乳齿象api文档。 一个开始的方法是看看 状态 实体看起来像。

开发

setup.py 确定应用程序的安装方式及其依赖关系。

如果您签出了存储库并希望从中运行代码 在单用户系统上的工作目录,使用工作目录中的sudo pip3 install--upgrade--editable将其设置为 "可编辑"(即,您的安装已链接到您的工作 目录,现在)。

如果你不想对整个系统这么做,你需要你自己的 虚拟环境:pip3安装virtualenvwrapper 称为ma),pip install-e.-e安装"可编辑"副本) 你准备好了。在中的虚拟环境中使用 未来。

使用jq进行处理

jq是一个轻量级且灵活的 命令行json处理器。也就是说你可以用它来工作 您的档案。

下面的命令将获取您所有的收藏夹并创建一个地图 使用每个键的timemessage并将其放入 全部在一个数组中。

pip3 install --user setuptools
pip3 install mastodon-archive
8

示例输出,假设我只有一个最喜欢的:

pip3 install --user setuptools
pip3 install mastodon-archive
9

探索API

既然有了标记文件,就可以使用 卷曲。您的访问令牌是文件中的长字符串 *.user.*.secret。以下是使用方法。

获得单一状态:

$ mastodon-archive archive kensanata@dice.camp
Registering app
Log in
Visit the following URL and authorize the app:
[the app gives you a huge URL which you need to visit using a browser]
Then paste the access token here:
[this is where you paste the authorization code]
Get user info
Get statuses (this may take a while)
Save 41 statuses
0

使用jq从存档中提取帐户ID,并使用echo去掉周围的双引号。 然后使用id从帐户获取一些状态,并使用jq来打印状态标识:

$ mastodon-archive archive kensanata@dice.camp
Registering app
Log in
Visit the following URL and authorize the app:
[the app gives you a huge URL which you need to visit using a browser]
Then paste the access token here:
[this is where you paste the authorization code]
Get user info
Get statuses (this may take a while)
Save 41 statuses
1

备选方案

有两种选择:

  1. 从您的个人资料中提取公共工具的解决方案,例如 https://octton.social/@kensanata。 问题是你只会得到"顶级"的嘟嘟声 提高但没有回复

  2. 从Atom提要中提取公共工具的解决方案,例如 https://octton.social/users/kensanata.atom。 问题是你只能得到几页 嘟嘟,不是全部的。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
带有嵌套JAR的java RCP ClassNotFoundException   java在输入框中设置默认值,crud应用程序使用spring   java如何在Heroku中使用fs创建新文件   java将JPanel放在JFrame中   java这个正则表达式会匹配“i.imgur.com/xxx”吗?   java在片段内创建RecylerView,而无需在Android中设置片段   Android上Groovy导致java错误的双精度浮点精度损失   swing Java查找JFrame属于JPanel的内容   java Spring junit自连线自定义类本身必须有构造函数吗?   java textswitcher支持前面的文本   从Android客户端到JAXRS的java Post自定义对象   java如何检索JSON数据并使用MPAndroidChart绘制折线图,以及在安卓上的改进   拒绝用户“root”@“localhost”的java c3p0访问(使用密码“是”)   使用Selenium Webdriver自动化ExtJS应用程序时java面临的问题