一个工具,可以将你在twitter上的私人对话中的直接信息存档。

dmarchiver的Python项目详细描述


[![github发布](https://img.shields.io/github/release/mincka/dmarchiver.svg)](https://github.com/mincka/dmarchiver/releases)[![pypi](https://img.shields.io/pypi/v/dmarchiver.svg)(https://pypi.python.org/pypi/dmarchiver)[![Github所有版本](https://img.shields.io/github/downloads/mincka/dmarchiver/total.svg)](http://www.somsubhra.com/github-release-stats/?用户名=mincka&repository=dmarchiver) < BR>
数据存档器
一个存档**所有**来自您在Twitter上的私人对话的直接消息的工具。 < BR>
简介
您是否需要从Twitter上与朋友的聊天中检索旧信息?或者也许你只是想备份所有这些快乐的时刻,让它们安全。 < BR>
我制作了这个工具,从我的私人对话中检索所有tweets,并将它们转换成类似irc的日志进行存档。 < BR>
**输出示例:**

[2016-09-07 10:35:55]<;michael>;[媒体图片]https://ton.twitter.com/1.1/ton/data/dm/773125478562429059/77340154876366208/mfedmxxj.jpg我是一个超级粉丝……
[2016-09-07 10:36:12]<;michael>;[媒体贴纸][笑脸]https://ton.twimg.com/stickers/stickers/10001_raw.png
[2016-09-07 10:37:12]<;凯西>;他太性感了。我爱他。{ }
[2016-09-07 10:38:10]<;史蒂夫>;你们真可笑!γ
< BR>
此工具还可以**以原始分辨率下载所有上传的图像和视频**,另外,还可以检索您在对话中使用的**gif**作为mp4文件(twitter用于优化它们和节省空间的格式)。 < BR>
您可能已经找到了使用twitter存档功能执行相同操作的建议,但生成的存档中不包括直接消息。 < BR>
脚本没有利用twitter api,因为它在处理直接消息方面有非常严格的限制。实际上,目前只能检索私人对话的最新200条消息。 < BR>
由于仍然可以通过向上滚动从会话中检索较旧的消息,因此此脚本仅模拟此行为以自动获取消息。 < BR>
**警告:可能的帐户锁定** < BR>
由于使用此工具,一些用户报告了帐户锁定。如果检测到新的登录上下文,Twitter似乎会更积极地锁定帐户。即使可以恢复锁定,使用此工具时也应注意此风险。解锁后再次尝试可以使工具在第二次运行时性能更好。 < BR>
如果需要多次运行该工具,还建议使用"-s"参数重用前一个会话中的cookie。由于该工具将重用现有会话,因此不会通过电子邮件收到新的登录警告。 < BR>
**免责声明:** < BR>
使用此工具的行为只会与使用浏览器的twitter网站的行为相似,因此使用它检索自己的数据并不违法。但是,根据你的对话长度,它可能会引发很多对Twitter可能有怀疑的请求。在这种情况下,twitter可以抢先锁定帐户。 < BR>
由于此脚本使用不受支持的方法来检索tweets,因此它可能随时中断。事实上,twitter可能会在没有警告的情况下更改输出代码。如果您得到以前没有的错误,请检查该工具的新版本是否可用。 < BR>
安装和快速启动 < BR>
运行该工具时不带任何参数,系统只会提示您输入用户名和密码。该脚本将检索所有的消息,从所有对话没有图像或gif。 < BR>
窗户 < BR>
从[项目版本](https://github.com/mincka/dmarchiver/releases)下载Windows生成。 < BR>
将存档文件解压缩到一个临时文件夹中,然后双击可执行文件或在命令提示符下运行它(如果要使用参数下载图像和视频,则必须执行此操作):

>;C:\temp\dmarchiver.exe
< BR>
注意:如果直接从zip archive窗口运行该工具,则在写入日志文件时可能会失败。相反,将'dmarchiver.exe'复制到任何目录并从那里运行它。 < BR>
苹果操作系统x/mac os < BR>
从[项目版本](https://github.com/mincka/dmarchiver/releases)下载MacOS构建。 < BR>
然后单击可执行文件,或运行终端并执行以下命令(如果要使用参数下载图像和视频,则必须执行此命令):

$cd下载
美元/d档案
< BR>
注意:如果通过单击运行该工具,结果文件将在`/users/username`文件夹中可用。 < BR>
ubuntu公司 < BR>

$pip3安装dmarchiver
$d档案
< BR>
使用PIP(任何平台)安装和升级 < BR>

$pip3安装dmarchiver
$d档案
$pip3安装dmarchiver--升级
< BR>
高级使用 < BR>
命令行工具

$dmarchiver[-h][-id会话\u id][-u][-p][-di][-dg][-dv] < BR>
$dmarchiver—帮助
用法:cmdline.py[-h][-id会话\u id][-u][-p][-di][-dg][-dv] < BR>
可选参数:
-h,--帮助显示此帮助消息并退出
-id对话id,--对话id对话id
对话ID
-u,--用户名(电子邮件或句柄)
-p,--密码密码
-d,--请求之间的延迟(秒)
-s,--保存会话本地保存会话
-di,--下载图像
下载图像
-dg,--下载gifs下载gifs(作为mp4)
-dg,--下载视频
下载视频(作为MP4)
-th,--twitter句柄
使用twitter句柄而不是显示名称
-r,--raw输出将原始html写入文件
< BR>
示例 < BR>
使用图像和视频存档所有对话:

$dmarchiver-di-dv
< BR>
脚本输出将是"64575409757131337.txt"文件,会话格式为类似irc的样式。 < BR>
图像和视频文件分别位于"64575409757131337/images"和"64575409757131337/mp4-*"文件夹中。 < BR>

要仅检索一个ID为"64575409757131337"的对话: < BR>

$dmarchiver-id"64575409757131337"-第
< BR>
脚本输出将是"64575409757131337.txt"文件,对话格式为类似irc的格式,使用twitter句柄而不是显示名称。 < BR>
如何获取"对话ID"? < BR>
"conversation\u id"是要备份的特定会话的标识符。 < BR>
-点击Twitter上的"消息"按钮。
-按F12键并转到浏览器的"控制台"选项卡。
-通过并执行以下javascript代码,在对话标题旁边显示id: < BR>
`` javascript
对话=document.getelementsbyclassname('dminbox-conversationitem') < BR>
对于(var i=0;i<;conversations.length;i++){
thread id=conversations[i].getelementsbyclassname('dminboxitem')[0].getattribute('data-thread-id');
fullname=对话[i].getelementsbyclassname('fullname')[0];
var p=document.createElement("p");
var t=document.createtextnode("对话id for\"+fullname.innerHTML.replace(/<;img\s+*?类="\s*emoji\s**?"*?alt ="(?*?)*?>;/g,"$1")+"\"是"+"threadid+"\""";
附加物(t);
对话[i].parentnode.insertbefore(p,对话[i]);

< BR>

您还可以在选项中指定用户名和密码。由于dmarchiver能够执行增量更新,因此可以使用以下参数计划任务或创建快捷方式: < BR>

$dmarchiver-id"对话id"-di-dg-dv-u您的用户名-p您的密码-s
< BR>
注意使用"-s"标志来使用现有会话,而不是创建新会话。 < BR>
开发 < BR>
ubuntu/windows系统 < BR>
``外壳
$git克隆https://github.com/mincka/dmarchiver.git
$cd dmarchiver文件
$virtualenv虚拟机
$source venv/bin/activate"venv/scripts/activate.bat"(在Windows上)
$pip安装-r requirements.txt
$python-m dmarchiver.cmdline
< BR>
苹果操作系统x/mac os < BR>
要构建并运行"pip3"包,需要有**xcode**(≈130 MB)、**自制**和**python 3**(≈20 MB): < BR>

$xcode select—安装
$/usr/bin/ruby-e"$(curl-fssl https://raw.githubusercontent.com/homebrew/install/master/install)"
$brew安装python3
< BR>
pyinstaller二进制编译 < BR>
建议使用python 3.4(32位)分支来构建二进制文件。它将允许与所有平台的最佳兼容性。 < BR> 在Windows上 < BR>

>;pip3安装pyinstaller
>;pyinstaller—一个文件dmarchiver\cmdline.py-n dmarchiver.exe
或在导入错误时选择
pyinstaller--onefile dmarchiver\cmdline.py--path=dmarchiver-n dmarchiver.exe--hidden import queue
>;CD距离
>;dmarchiver.exe
< BR>
在Mac OS/Mac OS上 < BR>

$pip3安装pyinstaller
$pyinstaller—一个文件dmarchiver/cmdline.py-n dmarchiver
或Macos Sierra处理外部进口的替代方案
$/library/frameworks/python.framework/versions/3.4/bin/pyinstaller--onefile dmarchiver/cmdline.py-n dmarchiver--hidden import cssselect--hidden import lxml--hidden import urllib3--hidden import requests--hidden import queue
$cd距离
美元/d档案
< BR>
包上传到PYPI Live < BR>

python setup.py sdist upload-r pypi
< BR>
已知问题 < BR>

有时,通常由于连接错误,脚本会在检索所有消息之前写入对话的消息。在这种情况下,应该再次尝试运行脚本。 < BR>

twitter可能随时引入新功能或更改html输出。发生这种情况时,dmarchiver可能会生成空的、断开的日志,甚至崩溃。此类错误消息意味着必须更新工具以处理新输出。当您遇到这些消息之一时,请随意创建新问题。 < BR>
故障排除 < BR>
生成错误'lxml`
您可能会遇到windows上"lxml"库的构建问题(`error:unable to find vcvarsall.bat`)。最简单和直接的修复方法是从[此站点](http://www.lfd.uci.edu/~gohlke/pythonlibs/lxml)下载并安装预编译的二进制文件,然后在本地安装包: < BR>
`$pip安装lxml-3.8.0-cp34-cp34m-win32.whl` < BR> 在"pip3安装"后未找到
`dmarchiver`脚本`
如果python bin path in不在环境路径变量中,则找不到该程序。只需运行完整的路径(位置可能不同…):

$/library/frameworks/python.framework/versions/3.4/bin/dmarchiver
< BR>< Br>< BR>
他们被送到第三方服务?
一点也不。与其他在线备份服务不同,这里的一切都发生在您的计算机上。您的用户名和密码只使用安全连接发送一次到Twitter。您的消息是从您的连接下载的,并在脚本执行结束时写入您的计算机,如果您选择下载图像和gif,图像和gif也是如此。 < BR>

一点也不。该工具模拟当前操作系统上的chrome(windows或linux)或safari(macos)浏览器。因为该工具不在本地保存任何cookie,所以每次使用时twitter都会警告您。如果在使用工具的同时收到此消息,则可以安全地忽略此消息。 < BR>
macos说,应用程序被阻止,因为它不是来自已标识的开发人员,我该怎么办?
我无法签署MacOS可执行文件。如果要使用该应用程序,则必须解除阻止。转到"安全和隐私"设置并单击"无论如何打开"按钮。 < BR>
许可证 < BR>
版权所有(c)2016-2017 Julien Ehrhart < BR>
此程序是免费软件:您可以重新分发和/或修改
根据由
自由软件基金会,或者许可证的第3版,或者
(由您选择)任何更高版本。 < BR>
分发此程序是希望它有用,
但没有任何保证;甚至没有
适销性或特定用途的适用性。见
GNU通用公共许可证了解更多详细信息。 < BR>
您应该已经收到GNU通用公共许可证的副本
与此程序一起使用。如果没有,请参见http://www.gnu.org/licenses/>;。 < BR>

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

推荐PyPI第三方库


热门话题
java共享首选项保存复选框操作   Android上的文本视图上的java Drop shadow   java在windows上将firebase添加到JavaFX   java Android MotionEvent指针索引混乱   java一些文本被添加到JavaScript的变量中   如何使用Java将十六进制转换为rgb?   java非服务JSP   java将侦听器添加到ArrayList   java在使用Scanner类获取输入时遇到问题   使用Mockito将非空列表作为参数进行匹配的java   java Liferay Maven Service Builder Portlet(开发者工作室)   如何在Java8中创建好的迭代   java JTable单元格不可编辑,但可单击   java决定Android应用程序的使用次数   java如何在没有ActiveX的情况下创建多个文件下载程序?   Java/Android,多类   JavaJSF外部链接   java[org.springframework.web.multipart.support.MissingServletRequestPartException:不存在所需的请求部分“image”]   java正则表达式选择直到字符串而不是子字符串