HOWTO: parsing html pages for rapidshare links using wget, lynx, awk, egrep
большинство фильмов и книг на этом сайте было добыто при помощи rapidshare.com и командной строки linux. Ниже я хочу рассказать, какие команды были для этого использованы.
самый благоприятный случай, это когда у вас есть линк, ведущий в директорию того или иного пользователя на rapidshare.com, к примеру, вот такой:
"разобрать" подобного рода страничку очень легко, используя текстовый браузер lynx и команды grep и awk:
получив список файлов в таком вот "чистом" виде:
мы можем использовать его как источник данных для команды, которая будет загружать файлы с серверов rapidshare. Если у вас есть аккаунт на rapidshare.com то можно использовать следующий скрипт для загрузки:
сохраните данный скрипт в файле, скажем rapida, сделайте его выполняемым,
поместите в директорию, находящуюся в вашем system path и вы теперь имеете возможность, находясь в любой директории, загружать туда файлы в автоматическом режиме, используя вот такую команду:
после того, как процесс выгрузки заданного вами списка завершился, вы можете автоматически же разархивировать все загруженные файлы при помощи одной команды. Представьте, если у вас в директрии содержится 100 и более архивных файлов, сколько времени у вас займет распаковать их каждый по отдельности?
код, приведенный выше, немного громоздкий, но зато достаточно универсальный, по крайней мере для тех архивов, которые встречались мне последнее время. Если у вас в директории ТОЛЬКО многотомные архивы из более чем 10 томов, то команда может быть короче:
часто возникает необходимость переименовать больше количество файлов по заданному шаблону. Создадим скрипт, который принимает в качестве параметров:
далее, сохраним наш скрипт в файле renamer.sh, сделаем его исполняемым:
и, к примеру, чтобы переименовать кучу файлов с расширением mp3 в другую кучу, но заменив в имени файла один куск на другой, выполним следующую команду:
часто возникает ситуация, когда нужно сравнить два текстовых файла с линками и выделить только разницу. Для этого следует использовать команду diff вот так:
еще бывает, что в процессе загрузки большого списка файлов вы превысили ваш лимит в 25 гигабайт за 5 дней (это текущий лимит на rapidshare.com). В таком случае все линки сверх лимита будут сохранены на диске в файлах с нулевым или иным, но очень небольшим размером. Если потом запустить скрипт снова, то новые архивы будут переписаны в формате filename.ext.1 filename.ext.2 filename.ext.3 и так делее.
Для того, чтобы выбрать из большого списка линков только те, которые в прошлый раз не были загружены, ножно выбрать все файлы малого размера, сравнить их имена с именами в первоначальном списке и сгенерировать новый листинг. Делаем это так:
в результате мы получаем на выходе новый список, но только с теми файлами, коотрые не были загружены в прошлый раз.
встречаются и другие ситуации, но я пока вспомнил только самые "популярные". Возможно, данная тема будет иметь продолжение.
большинство фильмов и книг на этом сайте было добыто при помощи rapidshare.com и командной строки linux. Ниже я хочу рассказать, какие команды были для этого использованы.
самый благоприятный случай, это когда у вас есть линк, ведущий в директорию того или иного пользователя на rapidshare.com, к примеру, вот такой:
Code:
http://rapidshare.com/users/JI39C
Code:
lynx -dump http://rapidshare.com/users/JI39C|egrep rapidshare.*\.rar|awk {'print $2'} > url.list.txt
Code:
http://rapidshare.com/files/41973330/Pover.v.Mechtu._1985_.rar http://rapidshare.com/files/41973085/Music.from.Movies._1994_.part2.rar http://rapidshare.com/files/41973417/Neset.Menya.Techenie._1996_.rar http://rapidshare.com/files/41973427/Dolgozhdanny.Samolet._1986_.rar http://rapidshare.com/files/41973455/Music.from.Movies._1994_.part1.rar http://rapidshare.com/files/41973321/Ot.Pechali.Do.Radosti._1987_.rar http://rapidshare.com/files/41973066/Bonus.rar http://rapidshare.com/files/41973574/Zerkalo._1996_.rar http://rapidshare.com/files/41973315/Krysha.Doma.Tvoego._1983_.rar http://rapidshare.com/files/41973411/Lunnaya.Dorozhka._1996_.rar
Code:
#!/bin/bash usage="Usage: `basename $0` [file]" if [ $# -ne 1 ] ; then echo $usage; exit 1; fi username="[I]username[/I]" password="[I]password[/I]" wget --user=$username --password=$password -i $1
Code:
chmod 755 rapida;mv rapida /your/path
Code:
#rapida url.list.txt
Code:
for files in `ls|egrep "[^1-9]*1\.rar|[^0-9]\.rar"`;do rar -y x $files;done
Code:
for files in `ls *part01.rar`;do rar -y x $files;done
- расширение файлов
- часть, которую нужно заменить
- часть, на которую нужно заменить
далее, сохраним наш скрипт в файле renamer.sh, сделаем его исполняемым:
Code:
#!/bin/bash mask=$1 pattern=$2 replace=$3 for files in `ls -A *$mask`; do source=$files dest=`echo $files|sed "s/$pattern/$replace/"` mv $source $dest; done
Code:
./renamer.sh mp3 [I]oldname newname[/I]
Code:
diff file1 file2
Для того, чтобы выбрать из большого списка линков только те, которые в прошлый раз не были загружены, ножно выбрать все файлы малого размера, сравнить их имена с именами в первоначальном списке и сгенерировать новый листинг. Делаем это так:
Code:
for lines in `find . -size -10k|grep rar`;do cat full.list.txt|grep $lines;done > rest.txt
встречаются и другие ситуации, но я пока вспомнил только самые "популярные". Возможно, данная тема будет иметь продолжение.
Comment