23.02.2015 01:31
KirillHome
 
Сразу прошу прощения, если не туда пишу.

Вопрос - можно ли из stdin "выдернуть" и часть строки и всю строку и передать эти два параметра в wget?

Суть проблемы - пытаюсь "парсить" Lostfilm.Tv
Получаю строку (ссылку) типа
Код:
https://www.lostfilm.tv/download.php?id=12978&Elementary.S03E15.1080p.rus.LostFilm.TV.mkv.torrent
через
Код:
wget -qO - https://www.lostfilm.tv/rssdd.xml | grep -ioe 'http.*torrent' | grep -ie '\(Elementary\|Castle\)' | grep -i '1080p' | sed "s/&/\&/"
Но очень хочется дальше "сказать" примерно такое
Код:
wget "https://www.lostfilm.tv/download.php?id=12978&Elementary.S03E15.1080p.rus.LostFilm.TV.mkv.torrent" -O "Elementary.S03E15.1080p.rus.LostFilm.TV.mkv.torrent"
- т.е. и сохранить "полную" строку, и получить её часть.

Пока, без "разделения", команда выглядит так
Код:
wget -qO - https://www.lostfilm.tv/rssdd.xml | grep -ioe 'http.*torrent' | grep -ie '\(Elementary\|Castle\)' | grep -i '1080p' | sed "s/&/\&/" | wget -nc -qi - -P /volume1/TST --header "Cookie: uid=....; pass=............; usess=............"
и скачиваемый файл имеет имя download.php?id=12978&Elementary.S03E15.1080p.rus.LostFilm.TV.mkv.torrent, что, в общем-то, не страшно, но ... не красиво.
23.02.2015 08:53
OlegON
 
Извини, но лучше бы ты почетче выделил, что нужно сделать и где...
Есть замечательная утилитка aria2, ей просто первую ссылку скормить и все...
Если речь о том, чтобы вырезать имя, то оно идет после & и быстро и легко это сделать
Цитата:
echo "https://www.lostfilm.tv/download.php?id=12978&Elementary.S03E15.1080p.rus.LostFilm.TV.mkv.torrent" | cut -d"&" -f2
нет?
23.02.2015 11:02
KirillHome
 
Есть rss от Lostfim.
Содержание типа такого
Код:
<item>
<title>Элементарно (Elementary). Когда твоя песенка спета (When Your Number\'s Up) [MP4]. (S03E15)</title>
<description><![CDATA[<font color=""><strong>Сезон 3, серия 15</strong></font><br>
<br>
<img src="http://i551.photobucket.com/albums/ii448/suslikcorp/lostfilm/posters/elementary-s03-lostfilm.jpg" alt="" /><br>
<br>
<strong>Озвучание:</strong> Студия \"LostFilm\".]]></description><pubDate>Sun, 22 Feb 2015 17:34:20 +0000</pubDate>
<link>https://www.lostfilm.tv/download.php?id=12979&amp;Elementary.S03E15.720p.WEB.rus.LostFilm.TV.mp4.torrent</link>
</item>
<item>
<title>Элементарно (Elementary). Когда твоя песенка спета (When Your Number\'s Up) [1080p]. (S03E15)</title>
<description><![CDATA[<font color=""><strong>Сезон 3, серия 15</strong></font><br>
<br>
<img src="http://i551.photobucket.com/albums/ii448/suslikcorp/lostfilm/posters/elementary-s03-lostfilm.jpg" alt="" /><br>
<br>
<strong>Озвучание:</strong> Студия \"LostFilm\".]]></description><pubDate>Sun, 22 Feb 2015 17:33:43 +0000</pubDate>
<link>https://www.lostfilm.tv/download.php?id=12978&amp;Elementary.S03E15.1080p.rus.LostFilm.TV.mkv.torrent</link>
</item>
<item>
<title>Элементарно (Elementary). Когда твоя песенка спета (When Your Number's Up). (S03E15)</title>
<description><![CDATA[<font color=""><strong>Сезон 3, серия 15</strong></font><br>
<br>
<img src="http://i551.photobucket.com/albums/ii448/suslikcorp/lostfilm/posters/elementary-s03-lostfilm.jpg" alt="" /><br>
<br>
<strong>Озвучание:</strong> Студия "LostFilm".]]></description><pubDate>Sun, 22 Feb 2015 17:32:10 +0000</pubDate>
<link>https://www.lostfilm.tv/download.php?id=12977&amp;Elementary.S03E15.rus.LostFilm.TV.avi.torrent</link>
</item>
При парсинге
Код:
wget -qO - https://www.lostfilm.tv/rssdd.xml | grep -ioe 'http.*torrent' | grep -ie '\(Elementary\|Castle\)' | grep -i '1080p' | sed "s/&amp;/\&/"
получаю в stdin строки типа (в данном случае - одну строку)
Код:
https://www.lostfilm.tv/download.php?id=12978&Elementary.S03E15.1080p.rus.LostFilm.TV.mkv.torrent
Если я просто говорю, что собираюсь скачать указанные в stdin файлы через wget
Код:
wget -nc -qi - -P /volume1/TST --header "Cookie: uid=...; pass=...; usess=..."
то получаю в /volume1/TST файлы с "некрасивыми именами" (в данном случае download.php?id=12978&Elementary.S03E15.1080p.rus.LostFilm.TV.mkv.torrent)

Вот и захотелось как-то скормить wget-у stdin не просто построчно, а представив каждую строку как два параметра - и целиком строку (как ссылку на файл) и часть строки (как имя сохраняемого файла).
К примеру, так
Код:
wget "https://www.lostfilm.tv/download.php?id=12978&Elementary.S03E15.1080p.rus.LostFilm.TV.mkv.torrent" -O "/volume1/TST/Elementary.S03E15.1080p.rus.LostFilm.TV.mkv.torrent" --header "Cookie: uid=...; pass=...; usess=..."
И как это сделать - не соображу.
23.02.2015 11:19
OlegON
 
Написал все то же, только другими словами :) Привел бы весь скрипт, а не словами чтоль... Там, где запускаешь, репозиторий есть? Или это рутер какой-нибудь?
23.02.2015 11:56
KirillHome
 
Цитата:
OlegON Привел бы весь скрипт, а не словами чтоль...
Так я его весь и привёл в первом сообщении :)

Код:
wget -qO - https://www.lostfilm.tv/rssdd.xml | grep -ioe 'http.*torrent' | grep -ie '\(Elementary\|Castle\)' | grep -i '1080p' | sed "s/&amp;/\&/" | wget -nc -qi - -P /volume1/TST --header "Cookie: uid=...; pass=...; usess=..."
Цитата:
OlegON Там, где запускаешь, репозиторий есть? Или это рутер какой-нибудь?
Всё дело происходит на NAS Synology

Дальше - полученные торрент-файлы уже подхватит Transmission

Не устраивает то, что на выходе получаю файлы типа download.php?id=KLMN&Bla-bla-bla.torrent, вместо Bla-bla-bla.torrent
23.02.2015 18:17
vdm
 
Страшненькое, но вроде как то что нужно.
после sed добавить
Код:
... | sed "s/&amp;/\&/" | awk 'BEGIN {FS="&"} {print "\42"$0"\42 -O \42/volume1/TST/"$2"\42"}' | xargs wget параметры
23.02.2015 21:11
OlegON
 
У меня качать неоткуда, поэтому я файлик выше сохранил в "xml" и делал ему cat
Код:
cat xml | grep -ie "https://www.lostfilm.*1080.*torrent" | while read i ; do [[ $i =~ \<link\>(.*)\</link\> ]]; link=`echo ${BASH_REMATCH[1]}|sed "s/amp\;//"`; echo $link" ----> "`echo $link|cut -f2 -d"&"` ; done
Результат
Код:
https://www.lostfilm.tv/download.php?id=12978&Elementary.S03E15.1080p.rus.LostFilm.TV.mkv.torrent ----> Elementary.S03E15.1080p.rus.LostFilm.TV.mkv.torrent
соответственно, под wget поправить нетрудно...
Часовой пояс GMT +3, время: 09:09.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.