1

だから私はrapidshareから複数のファイルをダウンロードしたい. これは私が現在持っているものです。実行してCookieを作成しました-

wget \
    --save-cookies ~/.cookies/rapidshare \
    --post-data "login=USERNAME&password=PASSWORD" \
    --no-check-certificate \
    -O - \
    https://ssl.rapidshare.com/cgi-bin/premiumzone.cgi \
    > /dev/null

そして今、私は次のようなシェルスクリプトを実行しています-

#!/bin/bash
wget -c --load-cookies ~/.cookies/rapidshare http://rapidshare.com/files/219920856/file1.rar
wget -c --load-cookies ~/.cookies/rapidshare http://rapidshare.com/files/393839302/file2.rar
wget -c --load-cookies ~/.cookies/rapidshare http://rapidshare.com/files/398293204/file3.rar
....

欲しいものは2つ-

  1. シェル スクリプトは、ファイルからダウンロードするファイルを読み取る必要があります。
  2. シェル スクリプトは、一度に 2 ~ 8 個のファイルをダウンロードする必要があります。

ありがとう!

4

2 に答える 2

3

並列ジョブが必要な場合は、考えてみてくださいmake

#!/usr/bin/make -f

login:
        wget -qO/dev/null \
--save-cookies ~/.cookies/rapidshare \
--post-data "login=USERNAME&password=PASSWORD" \
--no-check-certificate \
https://ssl.rapidshare.com/cgi-bin/premiumzone.cgi
$(MAKEFILES):
%: login
        wget -ca$(addsuffix .log,$(notdir $@)) \
--load-cookies ~/.cookies/rapidshare $@
        @echo "Downloaded $@ (log in $(addsuffix .log,$(notdir $@)))"

rsgetこれをどこかに保存し$PATH(インデントにはスペースではなくタブを使用してください)、それを与えてchmod +x実行します

rsget -kj8 \
    http://rapidshare.com/files/219920856/file1.rar \
    http://rapidshare.com/files/393839302/file2.rar \
    http://rapidshare.com/files/398293204/file3.rar \
    ...

これにより、ログインが行われ、次にwget各ターゲットがログインされます。 最大 8 つのジョブを並行して実行するように-j8指示し、 「ターゲットが失敗を返しても続行する」ことを意味します。make-k

編集

GNU Make 3.79 および 3.81 でテスト済み。

于 2009-04-24T16:20:20.113 に答える
0

これを試して。私はそれがあなたが望むことをするべきだと思います:

#! /bin/bash

MAX_CONCURRENT=8
URL_BASE="http://rapidshare.com/files/"
cookie_file=~/.cookies/rapidshare

# do your login thing here...

[ -n "$1" -a -f "$1" ] || { echo "please provide a file containing the stuff to download"; exit 1; }

inputfile=$1
count=0
while read x; do
  if [ $count -ge $MAX_CONCURRENT ]; then
    count=0
    wait
  fi
  { wget -c --load-cookies "$cookie_file" "${URL_BASE}$x" && echo "Downloaded $x"; } &
  count=$((count + 1))
done < $inputfile
于 2009-04-24T11:58:52.300 に答える