[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[技术讨论] Shell脚本批量转换电影的下载地址教学及求助

雇佣兵
thunder://
QUFmdHA6Ly82djo2dkBmdHAxLmthbjY2LmNvbToxMjY5LyVFMyU4MCU5MDZ2JUU3JTk0JUI1JUU1JUJEJUIxd3d3LmR5MTMxLmNvbSVFMyU4MCU5MSVFOSU5QiU4NyVFNCVCRCVBMyVFNSU4NSVCNUJEJUU0JUI4JUFEJUU4JThCJUIxJUU1JThGJThDJUU1JUFEJTk3MTI4MCVFOSVBQiU5OCVFNiVCOCU4NS5ybXZiWlo=

恐龙星1
thunder://
QUFmdHA6Ly82djo2dkBmdHAxLmthbjY2LmNvbToxMjY5LyVFMyU4MCU5MDZ2JUU3JTk0JUI1JUU1JUJEJUIxd3d3LmR5MTMxLmNvbSVFMyU4MCU5MUJCQyVFRiVCQyU5QSVFNiU4MSU5MCVFOSVCRSU5OSVFNiU5OCU5RiVFNyU5MCU4M0JEJUU0JUI4JUFEJUU4JThCJUIxJUU1JThGJThDJUU1JUFEJTk3MTI4MCVFOSVBQiU5OCVFNiVCOCU4NSVFNyVBQyVBQyVFNCVCOCU4MCVFOSU5QiU4NiVFRiVCQyU5QSVFNSVBNCVCMSVFOCU5MCVCRCVFNyU5QSU4NCVFNCVCOCU5NiVFNyU5NSU4Qy5ybXZiWlo=

恐龙星2
thunder://
QUFmdHA6Ly82djo2dkBmdHAxLmthbjY2LmNvbToxMjY5LyVFMyU4MCU5MDZ2JUU3JTk0JUI1JUU1JUJEJUIxd3d3LmR5MTMxLmNvbSVFMyU4MCU5MUJCQyVFRiVCQyU5QSVFNiU4MSU5MCVFOSVCRSU5OSVFNiU5OCU5RiVFNyU5MCU4M0JEJUU0JUI4JUFEJUU4JThCJUIxJUU1JThGJThDJUU1JUFEJTk3MTI4MCVFOSVBQiU5OCVFNiVCOCU4NSVFNyVBQyVBQyVFNCVCQSU4QyVFOSU5QiU4NiVFRiVCQyU5QSVFNSVCOCVBNiVFNyVCRSVCRCVFNiU4MSU5MCVFOSVCRSU5OS5ybXZiWlo=

恐龙星3
thunder://
QUFmdHA6Ly82djo2dkBmdHAxLmthbjY2LmNvbToxMjY5LyVFMyU4MCU5MDZ2JUU3JTk0JUI1JUU1JUJEJUIxd3d3LmR5MTMxLmNvbSVFMyU4MCU5MUJCQyVFRiVCQyU5QSVFNiU4MSU5MCVFOSVCRSU5OSVFNiU5OCU5RiVFNyU5MCU4M0JEJUU0JUI4JUFEJUU4JThCJUIxJUU1JThGJThDJUU1JUFEJTk3MTI4MCVFOSVBQiU5OCVFNiVCOCU4NSVFNyVBQyVBQyVFNCVCOCU4OSVFOSU5QiU4NiVFRiVCQyU5QSVFNiU5QyU4MCVFNSU5MCU4RSVFNyU5QSU4NCVFNiU5RCU4MCVFNiU4OSU4Qi5ybXZiWlo=

恐龙星4
thunder://
QUFmdHA6Ly82djo2dkBmdHAxLmthbjY2LmNvbToxMjY5LyVFMyU4MCU5MDZ2JUU3JTk0JUI1JUU1JUJEJUIxd3d3LmR5MTMxLmNvbSVFMyU4MCU5MUJCQyVFRiVCQyU5QSVFNiU4MSU5MCVFOSVCRSU5OSVFNiU5OCU5RiVFNyU5MCU4M0JEJUU0JUI4JUFEJUU4JThCJUIxJUU1JThGJThDJUU1JUFEJTk3MTI4MCVFOSVBQiU5OCVFNiVCOCU4NSVFNyVBQyVBQyVFNSU5QiU5QiVFOSU5QiU4NiVFRiVCQyU5QSVFNyU5NCU5RiVFNSVBRCU5OCVFNCVCOSU4QiVFNiU4OCU5OC5ybXZiWlo=

恐龙星5
thunder://
QUFmdHA6Ly82djo2dkBmdHAxLmthbjY2LmNvbToxMjY5LyVFMyU4MCU5MDZ2JUU3JTk0JUI1JUU1JUJEJUIxd3d3LmR5MTMxLmNvbSVFMyU4MCU5MUJCQyVFRiVCQyU5QSVFNiU4MSU5MCVFOSVCRSU5OSVFNiU5OCU5RiVFNyU5MCU4M0JEJUU0JUI4JUFEJUU4JThCJUIxJUU1JThGJThDJUU1JUFEJTk3MTI4MCVFOSVBQiU5OCVFNiVCOCU4NSVFNyVBQyVBQyVFNCVCQSU5NCVFOSU5QiU4NiVFRiVCQyU5QSVFNiU5NiVCMCVFNyU5NCU5RiVFNSVCNyVBOCVFOSVCRSU5OS5ybXZiWlo=

恐龙星6
thunder://
QUFmdHA6Ly82djo2dkBmdHAxLmthbjY2LmNvbToxMjY5LyVFMyU4MCU5MDZ2JUU3JTk0JUI1JUU1JUJEJUIxd3d3LmR5MTMxLmNvbSVFMyU4MCU5MUJCQyVFRiVCQyU5QSVFNiU4MSU5MCVFOSVCRSU5OSVFNiU5OCU5RiVFNyU5MCU4M0JEJUU0JUI4JUFEJUU4JThCJUIxJUU1JThGJThDJUU1JUFEJTk3MTI4MCVFOSVBQiU5OCVFNiVCOCU4NSVFNyVBQyVBQyVFNSU4NSVBRCVFOSU5QiU4NiVFRiVCQyU5QSVFNCVCQyU5RiVFNSVBNCVBNyVFNyU5QSU4NCVFNyU5NCU5RiVFNSVBRCU5OCVFOCU4MCU4NS5ybXZiWlo=

407航班
thunder://
QUFmdHA6Ly82djo2dkBmdHAxLmthbjY2LmNvbToxMjY5LyVFMyU4MCU5MDZ2JUU3JTk0JUI1JUU1JUJEJUIxd3d3LmR5MTMxLmNvbSVFMyU4MCU5MTQwNyVFOCU4OCVBQSVFNyU4RiVBREJEJUU0JUI4JUFEJUU1JUFEJTk3MTI4MCVFOSVBQiU5OCVFNiVCOCU4NS5ybXZiWlo=

===========以上内容均为文件中真实内容的再现,包括空行==========================
教学:
       上方的内容是linux下用gedit文本编辑器保存的文件内容(至于文件中thunder://后为什么出现“自动换行”的效果,我也不是很清楚。但是可以肯定的是,任何一个地址从网络上拷贝下来的时候都是一整行的,并没有分行,而电影和电影地址间的空行则是我回车后得到的效果,目的是为了让结构清晰。),里面记录得是几部电影的迅雷下载地址,现在已知可以通过”echo url | base64 -d“这条命令在终端中得到电影的真实下载地址,即非迅雷要求的专用地址,以便可以在任意的软件或者是浏览器下实现文件的下载。(希望大家学会这个方法)

例如echo 第一个url | base64 -d,终端中得到的结果如下
AAftp://6v:6v@ftp1.kan66.com:1269/ ... %98%E6%B8%85.rmvbZZ

这里有两点需要格外注意:一、url——这个地址在终端中使用的时候要去掉“thunder://”部分;二、得出的结果中要去掉首尾的“AA”、“ZZ”两个特殊字符。只有这两点注意到后才可以任意的去下载了,你懂的,呵。

问题:
       大家也看到了,对于单一的一部电影地址来说,直接采用复制、粘贴的方法在终端和文件之间来回,就可以实现了,但是如果像本帖一样有多个的下载地址,那么要一个个的去复制、粘贴的话显得很笨拙。因本人的脚本功底不好,在这里请高人写一个脚本或者是程序,以自动实现这些地址的自动转换,并将结果自动保存到单独的"jg"文件中。在此谢过!
       希望大家可以学到下载的方法,也可以回复我的问题。

没有人回答吗?当顶

TOP

  1. #!/bin/bash
  2. touch newfile
  3. for i in `sed -n '/thunder/{n;p}' filename`
  4. do
  5. echo $i | base64 -d>>newfile
  6. done
  7. sed -i 's/AA//g;s/ZZ/\n/g' newfile
复制代码
---学无止境---

TOP

回复 3# broly


    首先感谢你的回复,毕竟用linux的人还是不多的。

我存放诸多电影地址的文件名为“dy”,那么针对程序来说, 我是要把filename改成dy后就可以直接sh ./脚本,之后就会在newfile里
得到每部电影的真实下载地址了是吧?

只不过我用得shell不是bash,而是用sh,所以我第一行写得是#!/bin/sh

可是如我上面形容的那样,我运行脚本之后在newfile里什么也没有得到,为此我还是上传我的dy文件吧,烦请再查看一下。

附件:[attach]5520[/attach]

TOP

本帖最后由 Demon 于 2012-7-22 21:28 编辑
  1. #!/usr/env/perl
  2. use MIME::Base64;
  3. $in = 'dy';
  4. $out = 'jg';
  5. open DY, '<', $in or die $!;
  6. open JG, '>', $out or die $!;
  7. while (<DY>) {
  8.     if (/^thunder:\/\//i) {
  9.         $url = substr(decode_base64(), 2, -2);
  10.         print JG "$url\n"
  11.     }
  12. }
  13. close DY;
  14. close JG;
复制代码

TOP

本帖最后由 hacker85 于 2012-7-22 21:16 编辑

回复 5# Demon


    哇噢   这个代码我还是头一次看到过
这个是perl语言程序吧?
代码中的dy、jg有大小写之分吗?
天,我不会用这个程序,可以告诉我怎么运行之吗?

我是把代码复制到桌面上的一个文本文件中了,保存成dyperl.pl名字
然后在终端里找到文件的位置后,运行perl dyperl.pl
这个时候dy、jg文件也和dyperl在一个目录下。

其显示的结果为:
Not enough arguments for MIME::Base64::decode_base64 at dyperl line 12, near "()"
Execution of dyperl aborted due to compilation errors.

TOP

回复  Demon


    哇噢   这个代码我还是头一次看到过
这个是perl语言程序吧?
代码中的dy、jg有大小 ...
hacker85 发表于 2012-7-22 20:57

代码有部分被吃掉了,你下载附件吧。

TOP

回复 7# Demon


    恩哼,这回好用了。
再追问几个问题不知可以不:
1、代码运行后得出来的结果是各个电影的下载地址以回车换行符为界,一段一段的排列下去,如同:
ftp://6v:6v@ftp1.kan66.com:1269/ ... AB%98%E6%B8%85.rmvb
ftp://6v:6v@ftp1.kan66.com:1269/ ... B8%96%E7%95%8C.rmvb
……
这样就不便于知道哪个地址是哪部电影的,所以能不能如同四楼附件(电影文件的原文件)中的那种结构来实现jg文件呢?即
电影1
地址1
电影2
地址2
……

2、地址转换目的是为了能下载之。这里涉及到两个问题——一、我在linux上一直没有找到比较好的下载软件,尤其是对这种ftp下载地址的(对于种子文件下载形式的我一般用ktorrent,不过也不怎么好用),所以想请问你在用哪个软件,可否推荐一下。二、在你推荐的软件的基础上,如何能将这些文件的下载自动运行起来?

我目前在你这个代码运行后,就到了ftp的下载地址,然后去一个个的复制、粘贴到浏览器的地址栏中去,然后再一个个的点击保存……(不知道今天这是怎么了,有的文件可以下载成功,有的则根本不可以下载,有的虽然下载了,但是却是0kb,不过这不应该是本帖讨论的内容)。

TOP

回复 4# hacker85


你运行一下这个命令,把结果贴出来看看:
  1. ls -l /bin/sh
复制代码

TOP

回复 9# forfiles

o@O:~$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 2012-02-24 21:14 /bin/sh -> dash
o@O:~$

TOP

回复 10# hacker85


如果直接复制粘贴3楼的代码,不做任何修改,这样执行有问题吗?
  1. chmod u+x test.sh
  2. ./test.sh
复制代码

TOP

回复 11# forfiles


    四楼有文件下载,你可试一下 我现在没有在linux下

TOP

回复 12# hacker85


    昂,那就等你在Linux下的时候再测试吧。

TOP

回复 13# forfiles


    这根本就不是权限的问题   如你说得那样做了之后还是收获一个空的newfile文件而已  而终端上也没有任何的提示……

TOP

回复 14# hacker85


非常好,能否这样执行一下,把过程贴出来看看?
  1. bash -vx test.sh
复制代码

TOP

返回列表