Автор Тема: Програма за сваляне на видео от ask.fm  (Прочетена 3745 пъти)

hao123

  • Напреднали
  • *****
  • Публикации: 166
  • Distribution: Ubuntu 12.04LTS; Kubuntu 13.04
  • Window Manager: GNOME; KDE
    • Профил
    • WWW
Здравейте, аз използвам "Linux Ubuntu 12.04 LTS" с графична среда "GNOME Classic". Търся програма за сваляне на видео от ask.fm. Бях повдигнал тема в kaldata.com, но уви там не можем да се разберем.
Добавките (плугините), с които съм пробвал да сваля видео от там са "Download Helper" и "Flash Video Downloader". Принципно с второто си свалям видео отвсякъде (не, че с първото не става, де). Обаче за ask.fm не става.
Ако някой знае програма или приложение за сваляне на видео, моля да пише.  8)
Активен

И преди и сега, "Ubuntu 10.10" е на върха! ;)
http://releases.ubuntu.com/10.10/ubuntu-10.10-desktop-i386.iso
SKYPE: ak-47_123

neter

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 3408
  • Distribution: Debian, SailfishOS, CentOS
  • Window Manager: LXDE, Lipstick
    • Профил
    • WWW
Re: Програма за сваляне на видео от ask.fm
« Отговор #1 -: Jan 06, 2014, 00:22 »
Май за сефте отварям този сайт, та не го зная в подробности, но за видеата, на които попаднах там, забелязах, че в генерирания HTML код на сайта, когато цъкнеш на някое видео се появява object елемент, в който е въпросното видео. В този object елемент в параметъра flashvars имаш две стойности, които те интересуват - "netConnectionUrl" и "url". Като сглобиш тези две стойности в едно url, получаваш адреса на rtmp потока, който можеш да си свалиш с rtmpdump (ако го нямаш, инсталирай си го, ще ти трябва и по-надолу). Изглежда обаче netConnectionUrl се повтаря навсякъде един и същ, а променлива е само стойността на url, която стойност може да се види в HTML кода и без да се цъка на видеото. И понеже ме е хванала музата за писане, а не за търсене, ето ти едно скриптче за целта
Код
GeSHi (Bash):
  1. #!/bin/bash
  2.  
  3. while getopts u:d:h option
  4. do
  5.    case "${option}" in
  6.        u) URL=${OPTARG};;
  7.        d) DIR=${OPTARG};;
  8.        h) HELP=1;;
  9.    esac
  10. done
  11.  
  12. if [[ "$URL" = "" || "$HELP" = 1 ]]; then
  13.    echo 'Използване: scriptname -u URL [-d ДИРЕКТОРИЯ]
  14. Изтегляне на видеа от страница в http://ask.fm с rtmpdump.
  15.  
  16. Налични аргументи:
  17.  -u URL     : URL адрес на страницата в http://ask.fm
  18.  -d ДИРЕКТОРИЯ : Директория, в която да се запазят свалените видеа (ако е празно, в текущата)
  19.  -h            : Тази помощна информация'
  20.    exit
  21. fi
  22.  
  23. if [[ ! $(which curl) || ! $(which rtmpdump) ]]; then
  24.    echo 'Този скрипт се нуждае от инсталирани инструменти curl и rtmpdump, за да работи.'
  25.    exit
  26. fi
  27.  
  28. if [[ "$DIR" = "" ]]; then
  29.    DIR='.'
  30. fi
  31.  
  32. if [[ ! -d "$DIR" || ! -w "$DIR" ]]; then
  33.    echo 'Указаната директория не съществува или няма права за писане в нея.'
  34.    exit
  35. fi
  36.  
  37. pageSource=$(curl -s "$URL")
  38.  
  39. videoArr=( $(echo "$pageSource" | grep flipVideoAnswer | awk -F';|&' '{print $3}') )
  40.  
  41. if [[ ${#videoArr[*]} -eq 0 ]]; then
  42.    echo 'Няма видеа в указания URL адрес.'
  43.    exit
  44. elif [[ ${#videoArr[*]} -eq 1 ]]; then
  45.    rtmpdump -r "rtmp://su0wjemth7nht.cloudfront.net/cfx/st/${videoArr[0]}" -o "$DIR/1.flv"
  46.    exit
  47. fi
  48.  
  49. IFS="|DELIMITER|"
  50. titleArr=( $(echo "$pageSource" | grep -B 15 flipVideoAnswer | grep 'span dir="ltr"' | awk -F'>|</' '{print $3}' | tr '\n' '|DELIMITER|') )
  51. IFS=" "
  52.  
  53. echo "В страницата има налични ${#videoArr[*]} видеа:"
  54.  
  55. i=1
  56. for title in "${titleArr[@]}"; do
  57.    echo "$i. $title"
  58.    i=$((i+1))
  59. done
  60.  
  61. echo -e '\nНомера за изтегляне, разделени с клавиш Enter (думата "all" за всички; празен ред за край):'
  62.  
  63. numTemplate='^[1-9][0-9]*$'
  64.  
  65. selectedArr=()
  66. while IFS= read -r -p "=> " line; do
  67.    [[ $line ]] || break
  68.    if [[ "$line" = "all" ]]; then
  69.        selectedArr=( all )
  70.        break
  71.    elif [[ $line =~ $numTemplate ]] && [[ $line -le ${#videoArr[*]} ]] && [[ ! $(echo ${selectedArr[*]} | grep -w $line) ]]; then
  72.        selectedArr+=("$line")
  73.    fi
  74. done
  75.  
  76. if [[ "${selectedArr[0]}" = "all" ]]; then
  77.    i=1
  78.    for video in "${videoArr[@]}"; do
  79.        rtmpdump -r "rtmp://su0wjemth7nht.cloudfront.net/cfx/st/$video" -o "$DIR/$i.flv"
  80.        i=$((i+1))
  81.    done
  82. else
  83.    for number in "${selectedArr[@]}"; do
  84.        rtmpdump -r "rtmp://su0wjemth7nht.cloudfront.net/cfx/st/${videoArr[$((number-1))]}" -o "$DIR/$number.flv"
  85.    done
  86. fi
Слагаш това в един файл, правиш файла изпълним и го изпълняваш с описаните параметри. Ако се натъкнеш на бъгче, опиши го, за да го оправим :)

П.П.: За да не стане объркване да кажа, че скриптът сваля видеа от ей такива страници. Ако трябва да се свали видео, което не е налично в началната страница (т.е., трябва да се цъкне бутонът "Виж повече" в дъното на страницата, за да се покаже), тогава на съответния пост се цъка линкът, в който пише преди колко време е публикуван (например "преди около месец") и на скрипта се подава URL-ът на самостоятелното видео. Да ме прощава собственичката на профила, че ѝ ползвам страницата за пример, ама излиза първа в Google при търсене на "ask.fm video" :)

Редактирано в 23:17: Малко корекции по скрипта.
« Последна редакция: Jan 06, 2014, 23:17 от neter »
Активен

"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти

angie_bg

  • Напреднали
  • *****
  • Публикации: 842
  • Distribution: Ubuntu 10.04
  • Window Manager: Gnome
    • Профил
    • WWW
Re: Програма за сваляне на видео от ask.fm
« Отговор #2 -: Jan 07, 2014, 20:00 »
Бих добавил и „-е“ или „--resume“ на 84-и ред - ако прекъсне свалянето и се стартира скриптът със същите параметри, да продължи със свалянето, а да не започва отначало.

Друго решение - безплатната Streamtransport. Инсталира се с wine и работи учудващо добре. Особеност - изисква актуална версия на флаша. Ако си с по-стара версия, което не пречи на браузерите, Streamtransport не тръгва.
« Последна редакция: Jan 07, 2014, 20:08 от angie_bg »
Активен

hao123

  • Напреднали
  • *****
  • Публикации: 166
  • Distribution: Ubuntu 12.04LTS; Kubuntu 13.04
  • Window Manager: GNOME; KDE
    • Профил
    • WWW
Re: Програма за сваляне на видео от ask.fm
« Отговор #3 -: Jan 08, 2014, 22:00 »
neter , съжалявам за писането ти, обаче нищо не разбрах.  ??? Даже още повече се обърках. Дай ми вариант как да разбера URL-а на самото видео, пък аз ще го сваля с "Flash Video Download" (ако става по някакъв начин, де).
"Stream Transporter" не ми свърши работа- цъкам върху видеото, div-а изчезва. :@
Активен

И преди и сега, "Ubuntu 10.10" е на върха! ;)
http://releases.ubuntu.com/10.10/ubuntu-10.10-desktop-i386.iso
SKYPE: ak-47_123

neter

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 3408
  • Distribution: Debian, SailfishOS, CentOS
  • Window Manager: LXDE, Lipstick
    • Профил
    • WWW
Re: Програма за сваляне на видео от ask.fm
« Отговор #4 -: Jan 09, 2014, 00:30 »
Даже още повече се обърках.
Не се стряскай - по-просто е, отколкото изглежда :)
1. Копирай кода на скрипта (от ред 1 до ред 86, без други редове)
2. Сложи копираното в един текстови файл
3. Запази текстовия файл в домашната ти директория и кръсти файла например ask.fm_video_download.sh
4. След това отвори конзола (терминал; онова с черния екран, в което се пишат команди) и изпълни командата:
Цитат
chmod +x ask.fm_video_download.sh
с която команда ще направиш файла изпълним.
5. След това пробвай да свалиш някое видео от ask.fm с команда в конзолата:
Цитат
./ask.fm_video_download.sh -u адрес
Замести думата "адрес" с адреса на страницата в ask.fm, от която искаш да свалиш видео.

За да ти спестя стъпки 1 и 2 направо ти прикачвам файл с кода. Вземи го и изпълни стъпки 3, 4 и 5 ;)

Бих добавил и „-е“ или „--resume“ на 84-и ред - ако прекъсне свалянето и се стартира скриптът със същите параметри, да продължи със свалянето, а да не започва отначало.
Полезно предложение, но много от прекъсванията на rtmpdump водят до счупени фреймове в края на прекъсналия файл, за избягването им ще трябва да се добавя и "--skip", само че и стойността ѝ е неясна, ще трябва да се правят проби и за бройката, а и нищо не гарантира, че в мястото на прекъсването в крайния файл няма да останат бъгливи фреймове, които да дразнят при изпълнението след това... Предпочитам да го оставя да си почва отначало, за да е по-сигурен резултатът, когато се наложи повторно сваляне. А и всички клипчета, на които попаднах в този сайт, бяха доста кратки, твърде вероятно е въобще да не се стигне до сваляне на продължително видео от този сайт, та не си заслужава галимацията за тези кратки видеа. Но пък, който иска, да си добави параметъра. В текущия му вид редовете с rtmpdump са три - 45, 79 и 84.
« Последна редакция: Jan 09, 2014, 00:33 от neter »
Активен

"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти

hao123

  • Напреднали
  • *****
  • Публикации: 166
  • Distribution: Ubuntu 12.04LTS; Kubuntu 13.04
  • Window Manager: GNOME; KDE
    • Профил
    • WWW
Re: Програма за сваляне на видео от ask.fm
« Отговор #5 -: Jan 09, 2014, 05:53 »
Още когато напиша "chmod +x ask.fm_video_download.sh", ми изписва, че няма такъв файл или директория. Аз му сложих отметка "Стартирай като програма". Обаче ефект няма. Снимка от работният ми плот.
Активен

И преди и сега, "Ubuntu 10.10" е на върха! ;)
http://releases.ubuntu.com/10.10/ubuntu-10.10-desktop-i386.iso
SKYPE: ak-47_123

neter

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 3408
  • Distribution: Debian, SailfishOS, CentOS
  • Window Manager: LXDE, Lipstick
    • Профил
    • WWW
Re: Програма за сваляне на видео от ask.fm
« Отговор #6 -: Jan 09, 2014, 10:56 »
Още когато напиша "chmod +x ask.fm_video_download.sh", ми изписва, че няма такъв файл или директория.
Защото не си запазил файла в домашната ти директория (/home/enyo), а в някоя друга папка (предполагам /home/enyo/Свалени). Премести файла в домашната ти директория и пробвай пак!
Активен

"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти

hao123

  • Напреднали
  • *****
  • Публикации: 166
  • Distribution: Ubuntu 12.04LTS; Kubuntu 13.04
  • Window Manager: GNOME; KDE
    • Профил
    • WWW
Re: Програма за сваляне на видео от ask.fm
« Отговор #7 -: Jan 09, 2014, 20:39 »
А, май стана нещо.  :) Обаче как да разбера URL адреса на видеото в ask.fm?
Активен

И преди и сега, "Ubuntu 10.10" е на върха! ;)
http://releases.ubuntu.com/10.10/ubuntu-10.10-desktop-i386.iso
SKYPE: ak-47_123

Ekspert

  • Напреднали
  • *****
  • Публикации: 801
  • Distribution: Debian Wheeze
  • Window Manager: Gnome 3
    • Профил
Re: Програма за сваляне на видео от ask.fm
« Отговор #8 -: Jan 09, 2014, 21:33 »
Опитай и тази добавка за мозилката
Flash and video download или го напиши в търсачката на мозилката за добавки, работи добре, ползвам я от много време.
Активен

Извинението е като ЗАДНИКА. Всеки си го има.

neter

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 3408
  • Distribution: Debian, SailfishOS, CentOS
  • Window Manager: LXDE, Lipstick
    • Профил
    • WWW
Re: Програма за сваляне на видео от ask.fm
« Отговор #9 -: Jan 09, 2014, 21:34 »
Подаваш на скрипта или такъв адрес, като, ако в списъка има повече от едно видео, скриптът ще те попита кое (или кои) искаш да свалиш, или такъв адрес със самостоятелно видео (можеш да го видиш като цъкнеш на "преди 4 месеца" под това видео в общия списък). Ако не укажеш папка, в която да се свали видеото, ще се свали в домашната ти папка (тъй като текущо там ще се намираш в конзолата).

Ако искаш да укажеш папка, където да се свали видеото (видеата), изпълни скрипта така:
Цитат
./ask.fm_video_download.sh -u адрес -d /път/до/папката

Ако скриптът ти каже, че нямаш инсталирани curl и/или rtmpdump, изпълни тази команда в конзолата
Цитат
sudo apt-get install curl rtmpdump
за да ги инсталираш, и опитай пак да изпълниш скрипта.

П.П.: Пак се извинявам на собственичката на профила в ask.fm, че го ползвам за пример :)
« Последна редакция: Jan 09, 2014, 21:44 от neter »
Активен

"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти

hao123

  • Напреднали
  • *****
  • Публикации: 166
  • Distribution: Ubuntu 12.04LTS; Kubuntu 13.04
  • Window Manager: GNOME; KDE
    • Профил
    • WWW
Re: Програма за сваляне на видео от ask.fm
« Отговор #10 -: Jan 10, 2014, 17:44 »
Проработи.  ;) Благодаря.  8) Обаче трябва да си създам файл с тези команди, защото не мога да ги назубря. :D  [_]3
Активен

И преди и сега, "Ubuntu 10.10" е на върха! ;)
http://releases.ubuntu.com/10.10/ubuntu-10.10-desktop-i386.iso
SKYPE: ak-47_123

neter

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 3408
  • Distribution: Debian, SailfishOS, CentOS
  • Window Manager: LXDE, Lipstick
    • Профил
    • WWW
Re: Програма за сваляне на видео от ask.fm
« Отговор #11 -: Jan 10, 2014, 19:34 »
Честито! :)

За записването на командите във файл... Може да си ги запишеш, като справка за целия процес по пускане на скрипта в действие (макар че винаги можеш да направиш справка и тук във форума, докато го има), но след като вече си подкарал всичко, ти е нужна само командата за извикване на скрипта (тази, в която пишеш ./ask.fm_video_download.sh). Ако нямаш други файлове в домашната директория, имената на които започват с "ask", за по-бързо може в конзолата да изписваш командата така:
Цитат
./askTAB -u адрес
където TAB е натиснат клавиш TAB от клавиатурата, при което конзолата сама ще изпише останалата част от името на файла. Ако забравиш какви са опциите към командата ("-u" за адрес и "-d" за папка), винаги може да извикаш скрипта и без тези опции (или с опция "-h" отзад), при което ще ти излезе помощната информация за използването на скрипта, която съм ти описал в него. Т.е., за помощ как се използва скриптът изпълняваш в конзолата
Цитат
./askTAB
и ще получиш помощна информация какво да правиш. Тук TAB пак е клавиш TAB от клавиатурата. Няма никакъв проблем и да смениш името на файла със скрипта, ако настоящото име не ти е удобно за автоматично дописване с клавиш TAB, а може и да кръстиш файла само с една буква или една цифра и така хептен си опростяваш помненето. Например:
Цитат
./a -u адрес
а за помощната информация изпълняваш:
Цитат
./a

П.П.: Все пак скриптовете са точно това - записана поредица от команди в един файл, за да не се налага сложно помнене и писане на много команди за едно и също действие. Да си запишеш в отделен файл командата за изпълнение на скрипта, за да не я забравиш, е все едно да си запишеш на една бележка къде си сложил друга бележка. Може, ама е странно :)
« Последна редакция: Jan 10, 2014, 19:39 от neter »
Активен

"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти