Cam*_*tin 1 irc bash bots download
比方说,我们有一个IRC #ChannelName在irc.server.com这里人们可以自由地从机器人下载文件,通过如命令/msg BotName xdcc send #123,我们要下载一个这样的文件到我们/download/dir.如何在简单的wget/curl-like命令中执行此操作?
它可能不止一个命令或一个脚本,但请记住,我想将它封装到一个脚本中,这样我就可以输入一些内容.
irc-download.sh irc.server.com ChannelName BotName 123 /download/dir
Run Code Online (Sandbox Code Playgroud)
然后等待一段时间,然后获取文件,就像下载wget一样.
解决方案中的好东西:
对于一个不是超级麻烦的解决方案,我看起来又高又低(比如在Windows上安装Cygwin,来吧,有大约250行C编码的IRC客户端,你甚至可以telnet这个****).
虽然没有人简单地制定一个程序来执行比祖母泳衣更早的协议的基本任务,但事实证明我们生活在一个NodeJS存在的世界里.
首先,安装这些NPM软件包(-g如果需要,可以全局安装):
npm install irc xdcc progress
Run Code Online (Sandbox Code Playgroud)
然后,将此代码放入irc-download.js:
var irc = require('xdcc').irc, ProgressBar = require('progress'), progress, arg = process.argv;
var user = 'user_' + Math.random().toString(36).substr(2), bar = 'Downloading... [:bar] :percent, :etas remaining';
var client = new irc.Client(arg[2], user, { channels: [ '#' + arg[3] ], userName: user, realName: user });
var last = 0, handle = received => { progress.tick(received - last); last = received; };
client.on('join', (channel, nick) => nick == user && client.getXdcc(arg[4], 'xdcc send #' + arg[5], arg[6]));
client.on('xdcc-connect', meta => progress = new ProgressBar(bar, {incomplete: ' ', total: meta.length, width: 40}));
client.on('xdcc-data', handle).on('xdcc-end', r => { handle(r); process.exit(); } ).on('error', m => console.error(m));
Run Code Online (Sandbox Code Playgroud)
然后你可以使用我在问题中基本相同的命令行:
node irc-download.js irc.server.com ChannelName BotName 123 /download/dir
Run Code Online (Sandbox Code Playgroud)
Javascript就像Christopher Hitchens的编程或其他东西.