9.png

8260365e

GF  2023-09-03 22:42
(图床教程 - https://level-plus.net/read.php?tid-2046937.html)

twMediaDownloader挂了,分享下本人现在在用的爬取Twitter的办法

今天看到twMediaDownloader的作者風柳停止继续开发了,在推特被马一龙接手后开始这个插件不太好使了
先是出了[API 34]错误的消息,再然后能用一段时间后就没法爬取媒体文件了
最后找了gallery-dl做为代替,下面讲一下怎么用吧
gallery-dl需要一些命令行JSON的知识,尽量先了解关于这部分的知识再往下看

下载地址: https://github.com/mikf/gallery-dl/releases/latest/download/gallery-dl.exe

把文件放到一个文件夹,然后按住Shift+鼠标右键,在此处打开PowerShell窗口
输入
复制代码
  1. gallery-dl --version

回车,能看到类似下面的输出说明可以使用了
复制代码
  1. 1.25.8


基础的用法:
复制代码
  1. gallery-dl [params] <url>

其中[params]是可选的参数,<url>是推文的地址,也可以是推文作者的地址

下面是一些常用的参数讲解
  • -K / -list-keywords:这个参数可以看作品可以使用的关键字,比如标题、发布日期等等,可以用到--filter以及--filename这两个参数等
  • -D / --directory:这个参数可以强制所有的爬取作品指定到下载路径
  • -f / --filenmae:指定下载文件的命名格式,比如
    --filename "{tweet_id}_{filename}.{extension}"
    可以命名文件为「作品id_文件名.文件扩展名」的格式,关键字要加花括号
  • --filter:这个参数可以过滤你需要的作品,比如
    --filter "date > datetime(2023,8,15)"
    可以下载指定晚于2023年8月15日的作品,后面的字符串用的是python语法


这里介绍一个比较实用的技巧
如果之前已经爬取过一个作者的所有文件的话,如果现在需要更新新内容的话只需要使用下面的命令
复制代码
  1. gallery-dl --filter "tweet_id > <tweet_id>" <url>

其中<tweet_id>是你上次爬取的最近文件的推文ID
比如你在9月3号爬取截至这个内容https://twitter.com/furyutei/status/1698286831283134966
那么填写
复制代码
  1. gallery-dl --filter "tweet_id > 1698286831283134966" https://twitter.com/furyutei

就能爬取这个推文之后的文件了

但是掌握这些还不够,最好整个配置文件
配置文件的位置在~/gallery-dl/config.json
如果是windows的话,这个文件需要被命名为config.json并且放置在个人文件夹下的gallery-dl目录下
不知道个人文件夹的话打开资源管理器,在地址栏里面输入%UserProfile%
配置文件的内容可以以官方的配置为基础来做改动
下载地址:https://github.com/mikf/gallery-dl/blob/master/docs/gallery-dl-example.conf

找到下面爬取twitter的部分
复制代码
  1. "twitter":
  2. {
  3.     "#": "write text content for *all* tweets",
  4.     "postprocessors": ["content"],
  5.     "text-tweets": true
  6. },


其中"#"是注释,用来说明这部分的功能是怎么样的,可以删掉
"postprocessors"开启脚本爬取完文件后脚本继续处理,可以添加多个处理
"content"是处理的名字,可以看后面的"postprocessor"了解到这段功能就是在爬取推文
"text-tweets"为true开启所有推文爬取,无论推文是否包含媒体

这里我不需要示例里的内容所以全部删除掉,替换成以下的内容
复制代码
  1. "twitter":
  2. {
  3.     "#": "twMediaDownloader like name format",
  4.     "filename": "{author[name]}-{tweet_id}-{date:%Y%m%d}_{date:%H%M%S}-{num}.{extension}",
  5.     "#": "import twitter cookies from browser",
  6.     "cookies": ["firefox", "/path/to/firefox/profile"]
  7. },


"filename"是非常常用的参数,他可以规定爬取的文件怎么命名,我使用了类似twMediaDownloader的命名格式
这些参数当前(23/9/3)还是有效的,如果内容有变,请参考下文自行定参
以这条推文为例:https://twitter.com/furyutei/status/1698286831283134966
  • author[name],推文作者的id:furyutei
  • tweet_id,推文的id:1698286831283134966
  • date:%Y%m%d,推文发布的日期:20230903
  • date:%H%M%S,推文发布的时分秒:104827
  • num,第几个媒体文件:这条推文只有一个媒体文件,所以是1
  • extension,文件的扩展名:jpg


组合之后的文件名:furyutei-1698286831283134966-20230903_104827-1.jpg

更多的可以使用的命名参数可以使用下面的命令查询
复制代码
  1. gallery-dl -K https://twitter.com/<tweeter>/status/<tweet_id>

<tweeter><tweet_id>替换成用户名和推文id

而更多可用的命名格式可以查看下面的文档
https://github.com/mikf/gallery-dl/blob/master/docs/formatting.md

"cookies",这个参数可以让脚本使用cookies,有两种使用方式
  1. 固定的cookies,适用服务器之类的使用场景
  2. 从浏览器导入的cookies,适用PC之类的使用场景,省去了查询cookie键值


第一种方法,可以参考示例文件中的exhentai的部分把cookies的键值对填入就行了:
复制代码
  1. "cookies":
  2. {
  3.     "auth_token": "12345",
  4. },


文中使用第二种方法:
本人只使用过firefox导入的方法,基于firefox的浏览器也行(比如Waterfox)
只需要把/path/to/firefox/profile替换成你浏览器的配置文件夹的路径就行了
Windows应该在%AppData%\Firefox\Profiles\xxxxxxxx.xxx
其他浏览器请自行参考官方文档和互联网资料

详细的配置文档
https://github.com/mikf/gallery-dl/blob/master/docs/configuration.rst

顺便一提,gallery-dl不只是能爬取twitter,他还能爬取很多网站的媒体文件
比如sankaku,danbooru,exhentai,pixiv,fanbox,fantia,kemono,patreon,misskey等等这些网站
也就是说只要学会一次这个软件,那么很多时候可以用这个软件通吃现在流行的图站
这点还是很赞的

none.gif

理性客观中立

B1F  2023-09-03 22:50
(我他妈射爆)
可以试试wfdownloader,导入cookie后支持批量下载媒体,包括已锁定的账号,入门也不难,看官微教程操作就行
教程:https://www.wfdownloader.xyz/blog/twitter-downloader-for-images-and-videos

9.png

8260365e

B2F  2023-09-03 22:55
(图床教程 - https://level-plus.net/read.php?tid-2046937.html)

回 1楼(理性客观中立) 的帖子

这个主要开源,开发积极,功能全面,适用性广,你说的这个我也看看吧,能爬被封禁的帐号有点意思

9.png

8260365e

B3F  2023-09-04 04:03
(图床教程 - https://level-plus.net/read.php?tid-2046937.html)
顶一下,让更多的司机看到

none.gif

2a5535c0

不是程序员谁懂这些用法啊

803776.jpg

张纪俊

隔行如隔山,完全看不懂

803776.jpg

张纪俊

能有个在线下载视频的就满足了,存的全挂了

a15.gif

OOXXMM

真是看不懂啊,能不能写一个使用步骤例子啊

1157180.jpg

色图bot

B8F  2023-09-04 09:06
(114514)

回 2楼(8260365e) 的帖子

封禁账号不大可能爬

1748349.png

4091749d

好厉害 哦~

none.gif

93ebb9c2

学习一下

623457.gif

deadstranded

B11F  2023-09-04 09:44
(deadstranded)
我爬twitter倒是有工具,叫什么忘了

none.gif

sakuraaini

先马克,大佬666

otkg


none.gif

阿波


9.png

8260365e

B15F  2023-09-04 18:41
(图床教程 - https://level-plus.net/read.php?tid-2046937.html)

回 7楼(OOXXMMM) 的帖子

使用我都讲明白了
安装没讲,我再补充个安装步骤和一些细节吧

3.gif

千禧de决斗z

B16F  2023-09-14 13:15
(求老司机带我飞)
好复杂又要学新东西

none.gif

chenbo

刚想要问,有大神知道有没有其他替代插件,方便点的?




1714354.jpg

sherlock96

膜拜大佬,特地来学习下

1546221.gif

78e7c3d3




不会用

9.png

8260365e

B21F  2023-09-15 20:38
(图床教程 - https://level-plus.net/read.php?tid-2046937.html)

回 20楼(78e7c3d3) 的帖子

你的配置文件格式有问题,图里面是你的配置文件全部内容?

先别用这个配置文件(把config.json移动到别的文件夹),无配置默认看看能不能下载

能下载的话再仔细看我的教程,下面的讲解都是基于gallery-dl-example.conf这个配置改的
去下载这个文件再做改动

1546221.gif

78e7c3d3

不会弄配置文件
暂时先这样用了


gallery-dl --cookies-from-browser firefox --filter "tweet_id > 1698286831283134966" https://twitter.com/furyutei/media

林无


9.png

8260365e

B24F  2023-09-16 05:09
(图床教程 - https://level-plus.net/read.php?tid-2046937.html)

回 22楼(78e7c3d3) 的帖子

那你可以多加条参数
复制代码
  1. -f "{author[name]}-{tweet_id}-{date:%Y%m%d}_{date:%H%M%S}-{num}.{extension}"


也能有我帖子里面命名的效果

8e2f1a9746e6762044b7a0c2ec74c8a9?s=150

mustlezoos

唉,今早发现原来的api不能用了,马斯克™太艹了,没事瞎改什么api这又要重新写

1192551.gif

a631370312

回 11楼(deadstranded) 的帖子

求分享阿

8e2f1a9746e6762044b7a0c2ec74c8a9?s=150

mustlezoos

唉,找了个代食品yt-dlp,感觉自己好sb,而且原来的古早项目的api1.1不能用了,古早视频下不了除非魔改yt-dlp,卧槽这api比腾讯的还tm难用,马斯克搞jb啊,虽然twitter现在是你的但你别把twitter搞死啊

9.png

8260365e

B28F  2023-09-17 08:07
(图床教程 - https://level-plus.net/read.php?tid-2046937.html)

回 27楼(mustlezoos) 的帖子

Fuck Elon Musk       

话说yt-dlp下twitter比gallery-dl好用么?

8e2f1a9746e6762044b7a0c2ec74c8a9?s=150

mustlezoos

回 28楼(8260365e) 的帖子

怎么说,yt-dlp命令行还是好用的,比起gallery-dl应该就是伯仲之间,但是你要手填,但是比起之前的api还是差了好远,acviate.json没法调用了,之前的可以抓整个推的图片和视频,新的api也没时间看而且挺乱的连流程都没,自己动手阅读肯定费时间的,时间充裕还是搞清楚流程用api是最好的

none.gif

4d96b851

ph站能抓取吗