1
0
mirror of https://github.com/danog/learn-bash.git synced 2024-11-26 11:54:39 +01:00

Added deb

This commit is contained in:
Daniil Gentili 2015-09-30 16:32:37 +02:00
parent dde8a84262
commit c10aa5e00e
33 changed files with 2419 additions and 17 deletions

18
.travis.yml Normal file
View File

@ -0,0 +1,18 @@
language: ruby
rvm:
- 2.1
sudo: required
addons:
apt:
packages:
- build-essential
- grep
- sed
script: ". ./travis/cibuild"
before_install:
- openssl aes-256-cbc -pass "pass:$pass"
-in enc.tar.gz.enc -out enc.tar.gz -d -a

3
Gemfile Normal file
View File

@ -0,0 +1,3 @@
source "http://production.cf.rubygems.org/"
gem "ronn"

16
Gemfile.lock Normal file
View File

@ -0,0 +1,16 @@
GEM
remote: http://production.cf.rubygems.org/
specs:
hpricot (0.8.6)
mustache (1.0.2)
rdiscount (2.1.8)
ronn (0.7.3)
hpricot (>= 0.8.2)
mustache (>= 0.7.0)
rdiscount (>= 1.5.8)
PLATFORMS
ruby
DEPENDENCIES
ronn

View File

@ -5,7 +5,7 @@ Script to learn bash scripting.
This project is licensed under the GPLv3 license.
To install this script run the following command on any Linux/Unix system, including, Mac OS X and iOS.
To install this script run the following command on any Linux/Unix system, including Mac OS X and iOS.
```
wget http://daniilgentili.magix.net/learn.sh && chmod +x learn.sh

6
debian/learn-bash-1.0.0/debian/README vendored Normal file
View File

@ -0,0 +1,6 @@
The Debian Package learn-bash
----------------------------
Script to learn bash scripting.
-- Daniil Gentili <daniil@daniil.it> Tue, 26 May 2015 22:59:02 +0200

View File

1
debian/learn-bash-1.0.0/debian/compat vendored Normal file
View File

@ -0,0 +1 @@
9

13
debian/learn-bash-1.0.0/debian/control vendored Normal file
View File

@ -0,0 +1,13 @@
Source: learn-bash
Section: misc
Priority: optional
Maintainer: Daniil Gentili <daniil.gentili.dg@gmail.com>
Build-Depends: debhelper (>= 8.0.0)
Standards-Version: 3.9.4
Homepage: http://daniil.it/learn-bash
#Vcs-Git: git@github.com:danog/learn-bash.git
Package: learn-bash
Architecture: all
Depends: ${shlibs:Depends}, ${misc:Depends}, wget, bash, sed
Description: Script to learn bash scripting. Created by Daniil Gentili.

View File

@ -0,0 +1,34 @@
Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: learn-bash
Source: <url://example.com>
Files: *
Copyright: <years> <put author's name and email here>
<years> <likewise for another author>
License: GPL-3.0+
Files: debian/*
Copyright: 2015 Daniil Gentili <daniil@daniil.it>
License: GPL-3.0+
License: GPL-3.0+
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
.
This package is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
.
On Debian systems, the complete text of the GNU General
Public License version 3 can be found in "/usr/share/common-licenses/GPL-3".
# Please also look if there are files or directories which have a
# different copyright/license attached and list them here.
# Please avoid to pick license terms that are more restrictive than the
# packaged work, as it may make Debian's contributions unacceptable upstream.

0
debian/learn-bash-1.0.0/debian/docs vendored Normal file
View File

1
debian/learn-bash-1.0.0/debian/files vendored Normal file
View File

@ -0,0 +1 @@
learn-bash_3.3.93_all.deb misc optional

View File

@ -0,0 +1 @@
learn-bash/* /usr/bin/

13
debian/learn-bash-1.0.0/debian/rules vendored Executable file
View File

@ -0,0 +1,13 @@
#!/usr/bin/make -f
# -*- makefile -*-
# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1
%:
dh $@
override_dh_fixperms:
dh_fixperms
chmod 0755 debian/video-dl/usr/bin/*
override_dh_builddeb:
dh_builddeb -- -Zgzip

View File

@ -0,0 +1 @@
3.0 (native)

694
debian/learn-bash-1.0.0/learn-bash/video.sh vendored Executable file
View File

@ -0,0 +1,694 @@
#!/bin/bash
# Video download script v3.3.1
# Created by Daniil Gentili (http://daniil.it)
# Video-dl - Video download programs
#
# Copyright (C) 2015 Daniil Gentili
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# Changelog:
# v1 (and revisions): initial version.
# v2 (and revisions): added support for Rai Replay, support for multiple qualities, advanced video info and custom API server.
# v3 (and revisions): added support for Mediaset, Witty TV, La7, etc..
# v3.1 Included built in API engine, bug fixes
# v3.2 Added support for youtube and https
# v3.3 Fixed auto update and squashed some bugs.
# v3.3.1 Improved the auto update function and player choice
echo "Video download script - Copyright (C) 2015 Daniil Gentili
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions; see the LICENSE file."
lineclear() { echo -en "\r\033[K"; }
##### Tools detection and selection #####
which smooth.sh &>/dev/null && smoothsh=y || smoothsh=n
which ffmpeg &>/dev/null && ffmpeg=y || ffmpeg=n
which wget &>/dev/null && {
dl() {
wget "$1" -O $2 $3
}
Q="-q"
} || {
dl() {
curl "$1" -o $2 $3
}
Q="-s"
}
##### Self updating section #####
ME=$(which $0 || echo $0)
# !!!!!! Comment the following line before editing the script or all changes will be overwritten !!!!!! #
echo -n "Self-updating script..." && dl http://daniilgentili.magix.net/video.sh $ME $Q 2>/dev/null;chmod 755 $ME 2>/dev/null; lineclear
##### Help section #####
help() {
echo "Created by Daniil Gentili (http://daniil.it)
Supported websites: $(dl http://api.daniil.it/?p=websites - $Q)
Usage:
$(basename $0) [ -qabp=player ] URL URL2 URL3 ...
$(basename $0) [ -qabfp=player ] URLS.txt URLS2.txt URLS3.txt ...
Options:
-q Quiet mode: useful for crontab jobs, automatically enables -a.
-a Automatic mode: automatically download the video in the maximum quality.
-b Use built-in API engine: requires additional programs and may not work properly on some systems but may be faster than the API server.
-f Read URL(s) from specified text file(s). If specified, you cannot provide URLs as arguments.
-p=player Play the video instead of downloading it using specified player, mplayer if none specified.
--help Show this extremely helpful message.
If the script doesn't behave like it should, update it by running this command
sudo apt-get update && sudo apt-get dist upgrade
If you installed it with apt or use this command
sudo video.sh
if you installed it manually.
"
exit
}
[ "$1" = "--help" ] && help
##### URL format detection #####
urlformatcheck() {
case $urlformat in
smooth\ streaming)
queue="$queue
`[ "$smoothsh" = "y" ] && echo "smooth.sh \\"$url\\" \\"$title.mkv\\"" || echo "echo \"Manifest URL: $url\""`
"
;;
apple\ streaming)
queue="$queue
`[ "$ffmpeg" = "y" ] && echo "ffmpeg -i \\"$url\\" -c copy \\"$title.mkv\\"" || echo "echo \"URL: $url\""`
"
;;
*)
queue="$queue
dl \"$url\" $title.$ext $WOPT
"
;;
esac
}
##### Internal API #####
internalapi() {
echo -n "Downloading latest version of the API engine..." && eval "$(dl http://daniil.magix.net/api.sh - $Q)" && lineclear && type api | grep -q replaytv || {
echo "Couldn't download the API engine, using built-in engine..."
# 1st part ends here
api() {
####################################################
####### Beginning of URL recognition section #######
####################################################
dl="$(echo $1 | grep -q '^//' && echo http:$1 || echo $1)"
#dl="$(echo "$dl" | sed 's/#.*//;s/https:\/\//http:\/\//g')"
urltype="$(curl -w "%{url_effective}\n" -L -s -I -S "$dl" -o /dev/null)"
echo "$urltype" | grep -qE 'http://www.*.rai..*/dl/RaiTV/programmi/media/.*|http://www.*.rai..*/dl/RaiTV/tematiche/*|http://www.*.rai..*/dl/.*PublishingBlock-.*|http://www.*.rai..*/dl/replaytv/replaytv.html.*|http://.*.rai.it/.*|http://www.rainews.it/dl/rainews/.*|http://mediapolisvod.rai.it/.*|http://*.akamaihd.net/*|http://www.video.mediaset.it/video/.*|http://www.video.mediaset.it/player/playerIFrame.*|http://.*wittytv.it/.*|http://la7.it/.*|http://.*.la7.it/.*|http://la7.tv/.*|http://.*.la7.tv/.*' || ptype=common
echo "$urltype" | grep -qE 'http://www.*.rai..*/dl/RaiTV/programmi/media/.*|http://www.*.rai..*/dl/RaiTV/tematiche/*|http://www.*.rai..*/dl/.*PublishingBlock-.*|http://www.*.rai..*/dl/replaytv/replaytv.html.*|http://.*.rai.it/.*|http://www.rainews.it/dl/rainews/.*' && ptype=rai
echo "$urltype" | grep -qE 'http://www.video.mediaset.it/video/.*|http://www.video.mediaset.it/player/playerIFrame.*' && ptype=mediaset
echo "$urltype" | grep -q 'http://.*wittytv.it/.*' && ptype=mediaset && witty=y
echo "$urltype" | grep -qE 'http://la7.it/.*|http://.*.la7.it/.*|http://la7.tv/.*|http://.*.la7.tv/.*' && ptype=lasette
#echo "$urltype" | grep -q 'http.*://.*vk.com/.*' && ptype=vk
#echo "$urltype" | grep -q 'http.*://.*mail.ru/.*' && ptype=mail
##############################################################################
####### End of URL recognition section, beginning of Functions section #######
##############################################################################
# Declare javascript variable
var() {
eval $*
}
# Get video information
getsize() {
info="($(echo "$(echo $a | sed "s/.*\.//;s/[^a-z|0-9].*//"), $(timeout -skill 10s wget -S --spider $a 2>&1 | grep -E '^Length|^Lunghezza' | sed 's/.*(//;s/).*//')B, $(mplayer -vo null -ao null -identify -frames 0 $a 2>/dev/null | grep kbps | awk '{print $3}')" |
sed 's/\
//g;s/^, //g;s/, B,/, Unkown size,/g;s/, ,/,/g;s/^B,//g;s/, $//;s/ $//g'))"
}
# Check if URL exists and remove copies of the same URL
function checkurl() {
tbase="$(echo "$base" | sed 's/ /%20/g;s/%20http:\/\//\
http:\/\//g;s/%20$//g;s/ /\
/g' | awk '!x[$0]++')"
base=
for u in $tbase;do echo "$u" | grep -q 'rmtp://\|mms://' && {
base="$base
$u"
} || {
wget -S --tries=3 --spider "$u" 2>&1 | grep -q '200 OK\|206 Partial' && base="$base
$u"
}; done
}
# Nicely format input
formatoutput() {
case $ptype in
rai)
{
four="$(echo "$unformatted" | grep .*_400.mp4)"
six="$(echo "$unformatted" | grep .*_600.mp4)"
eight="$(echo "$unformatted" | grep .*_800.mp4)"
twelve="$(echo "$unformatted" | grep .*_1200.mp4)"
fifteen="$(echo "$unformatted" | grep .*_1500.mp4)"
eighteen="$(echo "$unformatted" | grep .*_1800.mp4)"
normal="$(echo "$unformatted" | grep -v .*_400.mp4 | grep -v .*_600.mp4 | grep -v .*_800.mp4 | grep -v .*_1200.mp4 | grep -v .*_1500.mp4 | grep -v .*_1800.mp4)"
}
;;
mediaset)
{
mp4="$(echo "$unformatted" | grep ".mp4")"
smooth="$(echo "$unformatted" | grep -v "pl)" | grep "est")"
apple="$(echo "$unformatted" | grep "pl)")"
wmv="$(echo "$unformatted" | grep ".wmv")"
flv="$(echo "$unformatted" | grep ".flv")"
f4v="$(echo "$unformatted" | grep ".f4v")"
}
;;
lasette)
lamp4="$(echo "$unformatted" | grep -v master | grep -v manifest | grep ".mp4")"
;;
common)
common="$unformatted"
;;
esac
formats="$(
[ "$common" != "" ] && for a in $common; do getsize
info="$(echo "$info" | sed 's/[(]//;s/[)]//')"
echo "$info $a";done
[ "$lamp4" != "" ] && for a in $lamp4; do getsize
echo "$info $a";done
[ "$normal" != "" ] && for a in $normal; do getsize
echo "Normal quality $info $a";done
[ "$eighteen" != "" ] && for a in $eighteen; do getsize
echo "Maximum quality $info $a";done
[ "$fifteen" != "" ] && for a in $fifteen; do getsize
echo "Medium-high quality $info $a";done
[ "$twelve" != "" ] && for a in $twelve; do getsize
echo "Medium quality $info $a";done
[ "$eight" != "" ] && for a in $eight; do getsize
echo "Medium-low quality $info $a";done
[ "$six" != "" ] && for a in $six; do getsize
echo "Low quality $info $a";done
[ "$four" != "" ] && for a in $four; do getsize
echo "Minimum quality $info $a";done
[ "$smooth" != "" ] && for a in $smooth; do echo "High quality (smooth streaming) $a";done
[ "$mp4" != "" ] && for a in $mp4; do getsize
echo "Medium-high quality $info $a";done
[ "$apple" != "" ] && for a in $apple; do echo "Medium-low quality (apple streaming, pseudo-m3u8) $a";done
[ "$wmv" != "" ] && for a in $wmv; do getsize
echo "Low quality $info $a";done
[ "$flv" != "" ] && for a in $flv; do getsize
echo "Low quality $info $a";done
[ "$f4v" != "" ] && for a in $f4v; do getsize
echo "Low quality $info $a";done
)"
formats="$(echo "$formats" | awk '!x[$0]++' | awk '{print $(NF-1), $0}' | sort -gr | cut -d' ' -f2-)"
[ "$formats" = "" ] && exit
}
# Rai website
rai_normal() {
# iframe check
echo "$file" | grep -q videoURL || { eval $(echo "$file" | grep 'content="ContentItem' | cut -d" " -f2) && file="$(wget http://www.rai.it/dl/RaiTV/programmi/media/"$content".html -qO-)"; }
# read and declare videoURL variables from javascript in page
eval "$(echo "$file" | grep videoURL | sed "s/var//g" | tr -d '[[:space:]]')"
# read and declare title variable from javascript in page
$(echo "$file" | grep videoTitolo)
}
# Rai replay function
replay() {
# Get the video id
v=$(echo "$1" | sed 's/.*v=//;s/\&.*//')
# Get the day
day=$(echo "$1" | sed 's/.*day=//;s/\&.*//;s/-/_/g')
# Get the channel
case $(echo "$1" | sed 's/.*ch=//;s/\&.*//') in
1)
ch=RaiUno
;;
2)
ch=RaiDue
;;
3)
ch=RaiTre
;;
31)
ch=RaiCinque
;;
32)
ch=RaiPremium
;;
23)
ch=RaiGulp
;;
38)
ch=RaiYoyo
;;
esac
# Get the json
tmpjson="$(wget http://www.rai.it/dl/portale/html/palinsesti/replaytv/static/"$ch"_$day.html -qO-)"
# Keep only section with correct video id and make it grepable
json="$(echo $tmpjson | sed 's/'$v'.*//g;s/.*[{]//g;s/\,/\
/g')"
# Get the relinkers
replay=$(echo "$json" | grep mediapolis | sed 's/.*\"://g;s/\"//g;s/^ *//g')
# Get the title
videoTitolo=$(echo "$json" | grep '"t":' | sed 's/.*\"://;s/\"//g;s/^ *//g')
}
# Relinker function
function relinker_rai() {
# Resolve relinker
for f in $(echo $* | awk '{ while(++i<=NF) printf (!a[$i]++) ? $i FS : ""; i=split("",a); print "" }'); do
dl=$(echo $f | grep -q '^//' && echo http:$f || echo $f)
# 1st method
url="$(timeout -skill 5s wget -qO- "$dl&output=25")
$(wget "$dl&output=43" -U="" -q -O -)"
[ "$url" != "" ] && tempbase=$(echo "$url" | sed 's/[>]/\
/g;s/[<]/\
/g' | grep '.*\.mp4\|.*\.wmv\|.*\.mov')
base="$(echo "$tempbase" | sed 's/\.mp4.*/\.mp4/;s/\.wmv.*/\.wmv/;s/\.mov.*/\.mov/')" && checkurl
# 2nd method
[ "$base" = "" ] && {
base="$(eval echo "$(for f in $(echo "$tempbase" | grep ","); do number="$(echo "$f" | sed 's/http\:\/\///g;s/\/.*//;s/[^0-9]//g')"; echo "$f" | sed 's/.*Italy/Italy/;s/^/http\:\/\/creativemedia'$number'\.rai\.it\//;s/,/{/;s/,\./}\./;s/\.mp4.*/\.mp4/'; done)")" && checkurl
}
# 3rd and 4th method
[ "$base" = "" ] && {
url="$(wget "$dl&output=4" -q -O -)"
[ "$url" != "" ] && echo "$url" | grep -q creativemedia && base="$url" || base=$(curl -w "%{url_effective}\n" -L -s -I -S $dl -A "" -o /dev/null); checkurl
}
#[ "$base" = "" ] && base="$(curl -w "%{url_effective}\n" -L -s -I -S "$dl" -o /dev/null -A='')" && checkurl
TMPURLS="$TMPURLS
$base"
done
# Remove copies of the same url
base="$(echo "$TMPURLS" | sort | awk '!x[$0]++')"
# Find all qualities in every video
tbase=
for t in _400\\.mp4 _600\\.mp4 _800\\.mp4 _1200\\.mp4 _1500\\.mp4 _1800\\.mp4 \\.mp4; do for i in _400\\.mp4 _600\\.mp4 _800\\.mp4 _1200\\.mp4 _1500\\.mp4 _1800\\.mp4; do tbase="$tbase
$(echo "$base" | sed "s/$t/$i/")"; tbase="$(echo "$tbase" | grep -Ev '_([0-9]{3,4})_([0-9]{3,4})\.mp4' | awk '!x[$0]++')"; done;done
base="$tbase"
checkurl
unformatted="$base"
formatoutput
}
###########################################################################################
################## End of Rai relinker section, beginning of Rai section ##################
###########################################################################################
function rai() {
saferai="$1"
# Store the page in a variable
file=$(wget "$saferai" -q -O -)
# Rai replay or normal rai website choice
echo "$1" | grep -q http://www.*.rai..*/dl/replaytv/replaytv.html.* && replay "$saferai" || rai_normal "$saferai"
videoTitolo="$(echo -en "$videoTitolo")"
title="${videoTitolo//[^a-zA-Z0-9 ]/}"
title=`echo $title | tr -s " "`
title=${title// /_}
# Resolve relinkers
relinker_rai $videoURL_M3U8 $videoURL_MP4 $videoURL_H264 $videoURL_WMV $videoURL $replay
}
###########################################################################################
##################### End of Rai section, beginning of Lasette section ####################
###########################################################################################
lasette() {
# Store the page in a variable
page="$(wget $1 -q -O -)"
# Get the javascript with the URLs
URLS="$(wget -q -O - $(echo "$page" | grep starter | sed 's/.*src\=\"//;s/\".*//') | grep -E 'src:.*|src_.*' | sed 's/.*\: \"//;s/\".*//')"
# Get the title
videoTitolo="$(echo $page | sed 's/.*<title>//;s/<\/title>.*//' | sed 's/^ //')"
title="${videoTitolo//[^a-zA-Z0-9 ]/}"
title=`echo $title | tr -s " "`
title=${title// /_}
unformatted="$URLS"
formatoutput
}
###########################################################################################
################## End of Lasette section, beginning of Mediaset section ##################
###########################################################################################
mediaset() {
# Store the page in a variable
page=$(wget $1 -q -O -)
# Witty tv recongition
[ "$witty" = "y" ] && {
# Get the video id
id=$(echo "$page" | grep '\<iframe id=\"playeriframe\" src=\"http\:\/\/www.video.mediaset.it\/player\/playerIFrame.shtml?id\=' | sed 's/.*\<iframe id=\"playeriframe\" src=\"http\:\/\/www.video.mediaset.it\/player\/playerIFrame.shtml?id\=//;s/\&.*//')
# Get the title
videoTitolo=$(echo "$page" | grep -o "<meta content=\".*\" property=\".*title\"/>" | sed 's/.*\<meta content\=\"//;s/\".*//g')
} || {
eval $(echo "$page" | grep "var videoMetadataId" | sed 's/var //' | tr -d '[[:space:]]')
id="$videoMetadataId"
videoTitolo=$(echo "$page" | grep -o "<meta content=\".*\" name=\"title\"/>" | sed 's/.*\<meta content\=\"//;s/\".*//g')
}
title="${videoTitolo//[^a-zA-Z0-9 ]/}"
title=`echo $title | tr -s " "`
title=${title// /_}
# Get the video URLs using the video id
URLS="$(wget "http://cdnselector.xuniplay.fdnames.com/GetCDN.aspx?streamid=$id" -O - -q -U="" | sed 's/</\
&/g' | grep http:// | sed 's/.*src=\"//;s/\".*//' | sed '/^\s*$/d')"
unformatted="$URLS"
formatoutput
}
###########################################################################################
##################### End of Mediaset section, beginning of common section ################
common() {
# Store the page in a variable
page="$(wget -q -O - $1)"
# Get the video URLs
base="$(echo "$page" | egrep '\.mp4|\.mkv|\.flv|\.f4v|\.wmv|\.mov|\.3gp|\.avi|\.m4v|\.mpg|\.mpe|\.mpeg' | sed 's/.*http:\/\//http:\/\//;s/\".*//' | sed "s/'.*//" | sed 's/.mp4.*/.mp4/g;s/.mkv.*/.mkv/g;s/.flv.*/.flv/g;s/.f4v.*/.f4v/g;s/.wmv.*/.wmv/g;s/.mov.*/.mov/g;s/.3gp.*/.3gp/g;s/.avi.*/.avi/g;s/.m4v.*/.m4v/g;s/.mpg.*/.mpg/g;s/.mpe.*/.mpe/g;s/.mpeg.*/.mpeg/g' | awk '!x[$0]++')"
checkurl
[ "$base" = "" ] && continue
videoTitolo="$(echo $page | sed 's/.*<title>//;s/<\/title>.*//' | sed 's/^ //')"
title="${videoTitolo//[^a-zA-Z0-9 ]/}"
title=`echo $title | tr -s " "`
title=${title// /_}
unformatted="$base"
formatoutput
}
# OK, here's the problem: The following function uses youtube-dl to get the download info, but offering the functionality of youtube-dl using an http api is one thing, while using the above mentioned program when the user can already use it is another thing. Comment the auto update line and change common_yt_dl to common if you still want to use youtube-dl trough this script.
common_yt_dl() {
tmpjson="$(youtube-dl -J "$1")"
videoTitolo=$(echo "$tmpjson" | sed 's/.*\"title\": \"//g;s/\".*//g')
json="$(echo "$tmpjson" | sed 's/.*formats//g;s/, [{]/\
/g')"
while read -r line; do
l=$(echo "$line" | sed 's/,/\
/g')
for f in format url ext; do
temp="$(echo "$l" | grep \"$f\": | sed 's/"'$f'"\: "//g;s/"$//g;s/^ //g;s/^.* - //g')"
eval $f=\""$temp"\"
done
[ "$url" != "" ] && {
size=
timeout -skill 3s wget -S --spider "$url" &>/dev/null && size=", $(wget -S --spider "$url" 2>&1 | grep -E '^Length|^Lunghezza' | sed 's/.*(//;s/).*//')B" || size=", Unkown size"
format=$(echo "$format" | sed 's/[(]//g;s/[)]//g')
formats="$formats
$format ($ext$size) $url"
}
done <<< "$json"
# Get the title
title="${videoTitolo//[^a-zA-Z0-9 ]/}"
title=`echo $title | tr -s " "`
title=${title// /_}
}
###########################################################################################
##################### End of Common section, beginning of database section ################
$ptype $dl $2 $3
[ "$formats" = "" ] && continue || echo "$title $videoTitolo
$formats"
}
# 2nd part starts here
}
}
##### Default API #####
[ "$(dl http://api.daniil.it/?p=websites - $Q)" != "" ] && api() { sane="$(echo "$1" | sed 's:%:%25:g;s: :%20:g;s:<:%3C:g;s:>:%3E:g;s:#:%23:g;s:{:%7B:g;s:}:%7D:g;s:|:%7C:g;s:\\:%5C:g;s:\^:%5E:g;s:~:%7E:g;s:\[:%5B:g;s:\]:%5D:g;s:`:%60:g;s:;:%3B:g;s:/:%2F:g;s:?:%3F:g;s^:^%3A^g;s:@:%40:g;s:=:%3D:g;s:&:%26:g;s:\$:%24:g;s:\!:%21:g;s:\*:%2A:g')"; dl "http://api.daniil.it/?url=$sane" - $Q; } || internalapi
##### Option detection #####
while getopts qabfp: FLAG; do
case "$FLAG" in
b)
internalapi
;;
q)
WOPT="$Q" && A=y
;;
a)
A=y
;;
f)
F=y
;;
p)
{
play=y
tmplayer="$(echo $OPTARG | sed 's/=//g')"
[ "$tmplayer" =! "" ] && which "$tmplayer" &>/dev/null && player="$tmplayer" || player="mplayer"
}
;;
\?)
echo "Invalid option: -$OPTARG" >&2
esac
done
shift $((OPTIND-1))
##### Player choice #####
[ "$play" = y ] && dlvideo() {
queue="$queue
$player $url
"
} || dlvideo() {
urlformatcheck
}
[ "$*" = "" ] && echo "No url specified." && help
[ "$F" = "y" ] && URL="$(cat "$*")" || URL="$*"
##### To be automatic or to be selected by the user, that is the question. #####
[ "$A" = "y" ] && dlcmd() {
url="$(echo "$api" | sed '1!d' | sed 's/.*\s//')"
ext=$(echo "$api" | sed '1!d' | sed 's/.*[(]//g;s/, .*//g')
dlvideo
} || {
echo "Video(s) info:" &&
dlcmd() {
videoTitolo=$(echo "$titles" | cut -d' ' -f2- | sed 's/è/e/g;s/é/e/g;s/ì/i/g;s/í/i/g;s/ù/u/g;s/ú/u/g')
max="$(echo "$api" | awk 'END{print}' | grep -Eo '^[^ ]+')"
echo "Title: $videoTitolo
$(echo "$api" | sed 's/http:\/\/.*//g;s/https:\/\/.*//g')
"
until [ "$l" -le "$max" ] && [ "$l" -gt 0 ] ; do echo -n "What quality do you whish to download (number, enter q to skip this video and enter to download the maximum quality)? "; read l; [ "$l" = "q" ] && break;[ "$l" = "" ] && {
url="$(echo "$api" | sed '1!d' | sed 's/.*\s//')"
ext=$(echo "$api" | sed '1!d' | sed 's/.*[(]//g;s/, .*//g')
dlvideo
break
};done 2>/dev/null
[ "$l" = "q" ] || [ "$l" = "" ] && continue
selection=$(echo "$api" | sed "$l!d")
urlformat=$(echo "$selection" | sed 's/http:\/\/.*//;s/https:\/\/.*//g;s/.*[(]//;s/[)].*//')
url=$(echo "$selection" | awk 'NF>1{print $NF}')
ext=$(echo "$selection" | sed 's/.*[(]//g;s/, .*//g')
dlvideo
}
}
for u in $URL; do
echo -n "Getting video info for $u..."
api="$(api "$u" | sed '/^\s*$/d')"
[ "$api" = "" ] && { echo "Couldn't download $u." && continue; } || lineclear
titles=$(echo "$api" | sed -n 1p)
api=$(echo "$api" | sed '1d' | awk '{print NR, $0}')
title=$(echo "$titles" | cut -d \ -f 1)
dlcmd
done
[ "$queue" = "" ] && { echo "ERROR: download list is empty."; exit 1; }
[ "$play" != "y" ] && { echo "Downloading videos..." && eval "$queue" && echo "All downloads completed successfully." || echo "An error occurred";exit 1; }
[ "$play" = "y" ] && { eval $queue || echo "An error occurred";exit 1; }
exit $?

1
debian/old/.nothing vendored Normal file
View File

@ -0,0 +1 @@
Nope

149
enc.tar.gz.enc Normal file
View File

@ -0,0 +1,149 @@
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

1
jekyll/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
_site

5
jekyll/404.html Normal file
View File

@ -0,0 +1,5 @@
---
layout: default
---
Page Not Found.

21
jekyll/LICENSE Normal file
View File

@ -0,0 +1,21 @@
The MIT License (MIT)
Copyright (c) 2015 Shu Uesugi
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

9
jekyll/_config.yml Normal file
View File

@ -0,0 +1,9 @@
# Site settings
title: Video-dl
tag_text: Programs to download videos
description: Programs to download videos from virtually any website.
# Build settings
markdown: kramdown
exclude: ["README.md"]

View File

@ -0,0 +1,15 @@
<script type="text/javascript">
/* <![CDATA[ */
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-50691719-3']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
(function(b){(function(a){"__CF"in b&&"DJS"in b.__CF?b.__CF.DJS.push(a):"addEventListener"in b?b.addEventListener("load",a,!1):b.attachEvent("onload",a)})(function(){"FB"in b&&"Event"in FB&&"subscribe"in FB.Event&&(FB.Event.subscribe("edge.create",function(a){_gaq.push(["_trackSocial","facebook","like",a])}),FB.Event.subscribe("edge.remove",function(a){_gaq.push(["_trackSocial","facebook","unlike",a])}),FB.Event.subscribe("message.send",function(a){_gaq.push(["_trackSocial","facebook","send",a])}));"twttr"in b&&"events"in twttr&&"bind"in twttr.events&&twttr.events.bind("tweet",function(a){if(a){var b;if(a.target&&a.target.nodeName=="IFRAME")a:{if(a=a.target.src){a=a.split("#")[0].match(/[^?=&]+=([^&]*)?/g);b=0;for(var c;c=a[b];++b)if(c.indexOf("url")===0){b=unescape(c.split("=")[1]);break a}}b=void 0}_gaq.push(["_trackSocial","twitter","tweet",b])}})})})(window);
/* ]]> */
</script>

View File

View File

@ -0,0 +1,21 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="description" content="{{ site.description }}">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{{ site.title }}</title>
<link rel="stylesheet" href="css/normalize.css">
<link rel="stylesheet" href="css/syntax.css">
<link rel="stylesheet" href="css/solo.css">
{% include head.html %}
</head>
<body>
<div class="container">
<h1><a href="./">{{ site.tag_text }}</a></h1>
{{ content }}
</div>
{% include scripts.html %}
</body>
</html>

406
jekyll/css/normalize.css vendored Normal file
View File

@ -0,0 +1,406 @@
/*! normalize.css v2.1.3 | MIT License | git.io/normalize */
/* ==========================================================================
HTML5 display definitions
========================================================================== */
/**
* Correct `block` display not defined in IE 8/9.
*/
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
main,
nav,
section,
summary {
display: block;
}
/**
* Correct `inline-block` display not defined in IE 8/9.
*/
audio,
canvas,
video {
display: inline-block;
}
/**
* Prevent modern browsers from displaying `audio` without controls.
* Remove excess height in iOS 5 devices.
*/
audio:not([controls]) {
display: none;
height: 0;
}
/**
* Address `[hidden]` styling not present in IE 8/9.
* Hide the `template` element in IE, Safari, and Firefox < 22.
*/
[hidden],
template {
display: none;
}
/* ==========================================================================
Base
========================================================================== */
/**
* 1. Set default font family to sans-serif.
* 2. Prevent iOS text size adjust after orientation change, without disabling
* user zoom.
*/
html {
font-family: sans-serif; /* 1 */
-ms-text-size-adjust: 100%; /* 2 */
-webkit-text-size-adjust: 100%; /* 2 */
}
/**
* Remove default margin.
*/
body {
margin: 0;
}
/* ==========================================================================
Links
========================================================================== */
/**
* Remove the gray background color from active links in IE 10.
*/
a {
background: transparent;
}
/**
* Address `outline` inconsistency between Chrome and other browsers.
*/
a:focus {
outline: thin dotted;
}
/**
* Improve readability when focused and also mouse hovered in all browsers.
*/
a:active,
a:hover {
outline: 0;
}
/* ==========================================================================
Typography
========================================================================== */
/**
* Address variable `h1` font-size and margin within `section` and `article`
* contexts in Firefox 4+, Safari 5, and Chrome.
*/
h1 {
font-size: 2em;
margin: 0.67em 0;
}
/**
* Address styling not present in IE 8/9, Safari 5, and Chrome.
*/
abbr[title] {
border-bottom: 1px dotted;
}
/**
* Address style set to `bolder` in Firefox 4+, Safari 5, and Chrome.
*/
b,
strong {
font-weight: bold;
}
/**
* Address styling not present in Safari 5 and Chrome.
*/
dfn {
font-style: italic;
}
/**
* Address differences between Firefox and other browsers.
*/
hr {
-moz-box-sizing: content-box;
box-sizing: content-box;
height: 0;
}
/**
* Address styling not present in IE 8/9.
*/
mark {
background: #ff0;
color: #000;
}
/**
* Correct font family set oddly in Safari 5 and Chrome.
*/
code,
kbd,
pre,
samp {
font-family: monospace, serif;
font-size: 1em;
}
/**
* Improve readability of pre-formatted text in all browsers.
*/
pre {
white-space: pre-wrap;
}
/**
* Set consistent quote types.
*/
q {
quotes: "\201C" "\201D" "\2018" "\2019";
}
/**
* Address inconsistent and variable font size in all browsers.
*/
small {
font-size: 80%;
}
/**
* Prevent `sub` and `sup` affecting `line-height` in all browsers.
*/
sub,
sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline;
}
sup {
top: -0.5em;
}
sub {
bottom: -0.25em;
}
/* ==========================================================================
Embedded content
========================================================================== */
/**
* Remove border when inside `a` element in IE 8/9.
*/
img {
border: 0;
}
/**
* Correct overflow displayed oddly in IE 9.
*/
svg:not(:root) {
overflow: hidden;
}
/* ==========================================================================
Figures
========================================================================== */
/**
* Address margin not present in IE 8/9 and Safari 5.
*/
figure {
margin: 0;
}
/* ==========================================================================
Forms
========================================================================== */
/**
* Define consistent border, margin, and padding.
*/
fieldset {
border: 1px solid #c0c0c0;
margin: 0 2px;
padding: 0.35em 0.625em 0.75em;
}
/**
* 1. Correct `color` not being inherited in IE 8/9.
* 2. Remove padding so people aren't caught out if they zero out fieldsets.
*/
legend {
border: 0; /* 1 */
padding: 0; /* 2 */
}
/**
* 1. Correct font family not being inherited in all browsers.
* 2. Correct font size not being inherited in all browsers.
* 3. Address margins set differently in Firefox 4+, Safari 5, and Chrome.
*/
button,
input,
select,
textarea {
font-family: inherit; /* 1 */
font-size: 100%; /* 2 */
margin: 0; /* 3 */
}
/**
* Address Firefox 4+ setting `line-height` on `input` using `!important` in
* the UA stylesheet.
*/
button,
input {
line-height: normal;
}
/**
* Address inconsistent `text-transform` inheritance for `button` and `select`.
* All other form control elements do not inherit `text-transform` values.
* Correct `button` style inheritance in Chrome, Safari 5+, and IE 8+.
* Correct `select` style inheritance in Firefox 4+ and Opera.
*/
button,
select {
text-transform: none;
}
/**
* 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
* and `video` controls.
* 2. Correct inability to style clickable `input` types in iOS.
* 3. Improve usability and consistency of cursor style between image-type
* `input` and others.
*/
button,
html input[type="button"], /* 1 */
input[type="reset"],
input[type="submit"] {
-webkit-appearance: button; /* 2 */
cursor: pointer; /* 3 */
}
/**
* Re-set default cursor for disabled elements.
*/
button[disabled],
html input[disabled] {
cursor: default;
}
/**
* 1. Address box sizing set to `content-box` in IE 8/9/10.
* 2. Remove excess padding in IE 8/9/10.
*/
input[type="checkbox"],
input[type="radio"] {
box-sizing: border-box; /* 1 */
padding: 0; /* 2 */
}
/**
* 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome.
* 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome
* (include `-moz` to future-proof).
*/
input[type="search"] {
-webkit-appearance: textfield; /* 1 */
-moz-box-sizing: content-box;
-webkit-box-sizing: content-box; /* 2 */
box-sizing: content-box;
}
/**
* Remove inner padding and search cancel button in Safari 5 and Chrome
* on OS X.
*/
input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}
/**
* Remove inner padding and border in Firefox 4+.
*/
button::-moz-focus-inner,
input::-moz-focus-inner {
border: 0;
padding: 0;
}
/**
* 1. Remove default vertical scrollbar in IE 8/9.
* 2. Improve readability and alignment in all browsers.
*/
textarea {
overflow: auto; /* 1 */
vertical-align: top; /* 2 */
}
/* ==========================================================================
Tables
========================================================================== */
/**
* Remove most spacing between table cells.
*/
table {
border-collapse: collapse;
border-spacing: 0;
}

153
jekyll/css/solo.css Normal file
View File

@ -0,0 +1,153 @@
@import url(//fonts.googleapis.com/css?family=Montserrat:700);
@import url(//fonts.googleapis.com/css?family=Inconsolata:400,700);
html {
font: 16px/1.5 Inconsolata, sans-serif;
}
@media (min-width: 30rem) {
html {
font-size: 20px;
}
}
body {
margin: 2rem 0 5rem;
color: #333;
}
@media (min-width: 30rem) {
body {
margin-top: 5rem;
}
}
a {
color: #0074d9; /* From http://clrs.cc */
text-decoration: none;
}
a:hover, a:focus {
text-decoration: underline;
}
h1, h2, h3, h4, h5, h6 {
font-family: Montserrat, sans-serif;
margin: 0 0 0.5rem -0.1rem /* align left edge */;
line-height: 1;
color: #111;
text-rendering: optimizeLegibility;
}
h1 {
font-size: 2.5rem;
margin-bottom: 1rem;
}
@media (min-width: 30rem) {
h1 {
font-size: 3rem;
margin-bottom: 3rem;
}
}
h1 a {
color: inherit;
}
h2 {
margin-top: 2rem;
font-size: 1.25rem;
margin-bottom: 0.75rem;
}
@media (min-width: 30rem) {
h2 {
margin-top: 2.5rem;
font-size: 1.5rem;
margin-bottom: 1rem;
}
}
h3, h4, h5, h6 {
margin-top: 1.5rem;
font-size: 1rem;
text-transform: uppercase;
}
p, ul, ol, dl, table, pre, blockquote {
margin-top: 0;
margin-bottom: 1rem;
}
ul, ol {
padding-left: 1.5rem;
}
dd {
margin-left: 1.5rem;
}
blockquote {
margin-left: 0;
margin-right: 0;
padding: .5rem 1rem;
border-left: .25rem solid #ccc;
color: #666;
}
blockquote p:last-child {
margin-bottom: 0;
}
hr {
border: none;
margin: 1.5rem 0;
border-bottom: 1px solid #ccc;
position: relative;
top: -1px;
}
.container img, .container iframe {
max-width: 100%;
}
.container img {
margin: 0 auto;
display: block;
}
table {
width: 100%;
border: 1px solid #ccc;
border-collapse: collapse;
}
td, th {
padding: .25rem .5rem;
border: 1px solid #ccc;
}
pre, code {
font-family: inherit;
background-color: #eee;
}
pre {
padding: .5rem 1rem;
font-size: 0.8rem;
}
code {
padding: .1rem .25rem;
}
pre > code {
padding: 0;
}
.container {
max-width: 30rem;
margin: 0 auto;
padding: 0 1rem;
}

66
jekyll/css/syntax.css Normal file
View File

@ -0,0 +1,66 @@
.hll { background-color: #ffffcc }
/*{ background: #f0f3f3; }*/
.c { color: #999; } /* Comment */
.err { color: #AA0000; background-color: #FFAAAA } /* Error */
.k { color: #006699; } /* Keyword */
.o { color: #555555 } /* Operator */
.cm { color: #0099FF; font-style: italic } /* Comment.Multiline */
.cp { color: #009999 } /* Comment.Preproc */
.c1 { color: #999; } /* Comment.Single */
.cs { color: #999; } /* Comment.Special */
.gd { background-color: #FFCCCC; border: 1px solid #CC0000 } /* Generic.Deleted */
.ge { font-style: italic } /* Generic.Emph */
.gr { color: #FF0000 } /* Generic.Error */
.gh { color: #003300; } /* Generic.Heading */
.gi { background-color: #CCFFCC; border: 1px solid #00CC00 } /* Generic.Inserted */
.go { color: #AAAAAA } /* Generic.Output */
.gp { color: #000099; } /* Generic.Prompt */
.gs { } /* Generic.Strong */
.gu { color: #003300; } /* Generic.Subheading */
.gt { color: #99CC66 } /* Generic.Traceback */
.kc { color: #006699; } /* Keyword.Constant */
.kd { color: #006699; } /* Keyword.Declaration */
.kn { color: #006699; } /* Keyword.Namespace */
.kp { color: #006699 } /* Keyword.Pseudo */
.kr { color: #006699; } /* Keyword.Reserved */
.kt { color: #007788; } /* Keyword.Type */
.m { color: #FF6600 } /* Literal.Number */
.s { color: #d44950 } /* Literal.String */
.na { color: #4f9fcf } /* Name.Attribute */
.nb { color: #336666 } /* Name.Builtin */
.nc { color: #00AA88; } /* Name.Class */
.no { color: #336600 } /* Name.Constant */
.nd { color: #9999FF } /* Name.Decorator */
.ni { color: #999999; } /* Name.Entity */
.ne { color: #CC0000; } /* Name.Exception */
.nf { color: #CC00FF } /* Name.Function */
.nl { color: #9999FF } /* Name.Label */
.nn { color: #00CCFF; } /* Name.Namespace */
.nt { color: #2f6f9f; } /* Name.Tag */
.nv { color: #003333 } /* Name.Variable */
.ow { color: #000000; } /* Operator.Word */
.w { color: #bbbbbb } /* Text.Whitespace */
.mf { color: #FF6600 } /* Literal.Number.Float */
.mh { color: #FF6600 } /* Literal.Number.Hex */
.mi { color: #FF6600 } /* Literal.Number.Integer */
.mo { color: #FF6600 } /* Literal.Number.Oct */
.sb { color: #CC3300 } /* Literal.String.Backtick */
.sc { color: #CC3300 } /* Literal.String.Char */
.sd { color: #CC3300; font-style: italic } /* Literal.String.Doc */
.s2 { color: #CC3300 } /* Literal.String.Double */
.se { color: #CC3300; } /* Literal.String.Escape */
.sh { color: #CC3300 } /* Literal.String.Heredoc */
.si { color: #AA0000 } /* Literal.String.Interpol */
.sx { color: #CC3300 } /* Literal.String.Other */
.sr { color: #33AAAA } /* Literal.String.Regex */
.s1 { color: #CC3300 } /* Literal.String.Single */
.ss { color: #FFCC33 } /* Literal.String.Symbol */
.bp { color: #336666 } /* Name.Builtin.Pseudo */
.vc { color: #003333 } /* Name.Variable.Class */
.vg { color: #003333 } /* Name.Variable.Global */
.vi { color: #003333 } /* Name.Variable.Instance */
.il { color: #FF6600 } /* Literal.Number.Integer.Long */
.css .o,
.css .o + .nt,
.css .nt + .nt { color: #999; }

1
jekyll/daniil.gpg.key Normal file
View File

@ -0,0 +1 @@
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1 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 y3dHNkkC7oKiR7M= =ukaQ -----END PGP PUBLIC KEY BLOCK-----

1
jekyll/daniil.list Normal file
View File

@ -0,0 +1 @@
deb http://repo.daniil.it lenny main

316
jekyll/index.md Normal file
View File

@ -0,0 +1,316 @@
---
layout: default
---
# video-dl
Video download project.
[![Build Status](https://travis-ci.org/danog/video-dl.svg?branch=master)](https://travis-ci.org/danog/video-dl)
[Read in Italian](http://daniil.it/video-dl/it.html)
Created by [Daniil Gentili](http://daniil.it).
This project is licensed under the terms of the GPLv3 license.
The programs included in this project can be used to download videos from any generic site including the Italian [Rai](http://rai.tv) Television website (including rai replay and iframe videos), the italian [Mediaset](http://mediaset.it) website (including iframes like the ones on the [Witty TV](http://wittytv.it) website), and the [LA7](http://la7.it) website. And thanks to youtube-dl now they support lots of other websites!
This project features a Bash script that can be installed on [any Linux/Unix system](#bash-script-installation-instructions) including [Android](#android), [Mac OS X](#bash-script-installation-instructions) or [iOS](#ios) and even on [Windows](#windows), an [API](#api), an [Android app](#method-1-app) and even a [web version](#web-version)!
Both the [API](#api) and the [web version](#web-version) use a [database](https://github.com/danog/video-dl/blob/master/web/video-db.txt).
## Web version
This project also features a [web version](https://video.daniil.it/).
![Alt text](http://daniilgentili.magix.net/rai.png?v=2)
The source code of the page can be viewed [here](https://github.com/danog/video-dl/blob/master/web).
## Bash script usage:
```
video.sh [ -qaf [ urls.txt ] ] URL URL2 URL3 ...
```
Options:
-q Quiet mode: useful for crontab jobs, automatically enables -a.
-a Automatic mode: automatically download the video in the maximum quality.
-b Use built-in API engine: requires additional programs and may not work properly on some systems but may be faster than the API server.
-f Read URL(s) from specified text file(s). If specified, you cannot provide URLs as arguments.
-p=player Play the video instead of downloading it using specified player, mplayer if none specified.
--help Show this extremely helpful message.
### Bash script installation instructions:
### Any Linux/Unix system (Ubuntu, Debian, Fedora, Redhat, openBSD, Mac OS X):
On debian-derived distros, execute this command to add my repo to your system:
```
sudo wget -q -O /etc/apt/sources.list.d/daniil.list http://dano.cu.cc/1IJrcd1 && wget -q -O - http://dano.cu.cc/1Aci9Qp | sudo apt-key add - && sudo apt-key adv --recv-keys --keyserver keys.gnupg.net 72B97FD1D9672C93 && sudo apt-get update
```
You should see an OK if the operation was successful.
And this command to install the script.
```
sudo apt-get update; sudo apt-get -y install video-dl
```
Run with:
```
video.sh "URL"
```
Do not forget to put the URL between quotes.
Or if you want to use the old method follow these instructions.
Execute this command to install the script:
```
wget http://daniilgentili.magix.net/video.sh -O video.sh || curl -L http://daniilgentili.magix.net/video.sh -o video.sh; chmod +x video.sh
```
Run with
```
./video.sh "URL"
```
In the directory where you downloaded it.
Do not forget to put the URL between quotes.
To use from any directory install the script directly in the $PATH using this command (run as root):
```
wget http://daniilgentili.magix.net/video.sh -O /usr/bin/video.sh || curl -L http://daniilgentili.magix.net/video.sh -o video.sh; chmod +x /usr/bin/video.sh
```
Now you should be able to run the script simply with:
```
video.sh "URL"
```
Do not forget to put the URL between quotes.
### Android:
#### Method 1 (app).
Enable unknown sources and install [this app](http://bit.ly/0192837465k). Once opened you will be presented with a user friendly interface similar to the web version.
##### Changelog:
1: initial version
1.2: added not working, share and credits button
1.2.1: added external sharing option, fixed bugs
1.2.2: Fixed not working button on external share URL, added google analytics, fixed Rai Replay on external share.
1.3: Added auto update.
1.4: Added more credits.
##### Todo:
You tell me!
#### Method 2 (script).
#### Install [Busybox](https://play.google.com/store/apps/details?id=stericson.busybox), [Jackpal's Terminal emulator](https://play.google.com/store/apps/details?id=jackpal.androidterm) and [Bash](https://play.google.com/store/apps/details?id=com.bitcubate.android.bash.installer) on rooted devices or [Busybox no root](https://play.google.com/store/apps/details?id=burrows.apps.busybox) if your device isn't rooted.
[Video tutorial](https://www.youtube.com/watch?v=4NLs2NzHbbc)
Note: if you can't copy & paste the commands directly in the Terminal Emulator app try this: paste them in the url bar one line at a time, copy them again from the url bar and try to paste them again in the Terminal Emulator app.
Run these commands:
```
cd /sdcard && wget http://daniilgentili.magix.net/android/video.sh
```
Run with:
```
bash /sdcard/video.sh "URL"
```
Do not forget to put the URL between quotes.
To install the script directly in the $PATH use these commands (here, root is mandatory).
```
su
mount -o rw,remount /system && wget http://daniilgentili.magix.net/android/video.sh -O /system/bin/video.sh && chmod 755 /system/bin/video.sh
```
Now you should be able to run it with:
```
video.sh "URL"
```
Do not forget to put the URL between quotes.
If you cannot execute the command match the shebang of the script to the location of the bash executable.
### iOS:
Jailbreak your device, install mobileterminal and wget and run the following command:
```
wget http://daniilgentili.magix.net/video.sh -O video.sh || curl -L http://daniilgentili.magix.net/video.sh -o video.sh; chmod +x video.sh
```
Run with:
```
./video.sh "URL"
```
Do not forget to put the URL between quotes.
In the directory where you downloaded it.
To view the downloaded video use iFile.
To use from any directory install the script directly in $PATH using this command:
```
su -c "wget http://daniilgentili.magix.net/video.sh -O /usr/bin/video.sh || curl -L http://daniilgentili.magix.net/video.sh -o video.sh; chmod +x /usr/bin/video.sh"
```
Now you should be able to run it with:
```
video.sh "URL"
```
Do not forget to put the URL between quotes.
### Windows:
Install [Cygwin](https://www.cygwin.com) (don't forget to install wget during the installation process!), open its command prompt and type:
```
wget http://daniilgentili.magix.net/win/video.sh -O video.sh
```
Run with:
```
./video.sh "URL"
```
Do not forget to put the URL between quotes.
In the directory where you downloaded it.
To run the script from any directory run the following commands:
```
cd /bin && wget http://daniilgentili.magix.net/win/video.sh -O video.sh && cd $OLDPWD
```
Now you should be able to run it with:
```
video.sh "URL"
```
Do not forget to put the URL between quotes.
## API
This project also features an [API](http://video.daniil.it/api/).
The source code of the API can be viewed [here](https://github.com/danog/video-dl/blob/master/api).
### API usage example
Requested URL:
```
http://api.daniil.it/?url=http://www.winx.rai.it/dl/RaiTV/programmi/media/ContentItem-47307196-8fd1-46f8-8b31-92ae5f9b5089.html#p=0
```
Output:
```
Winx_Club_VI_Ep3_Il_collegio_volante Winx Club VI - Ep.3: Il collegio volante
Highest quality (mp4, 286MB, 1024x576) http://creativemedia4.rai.it/Italy/podcastcdn/junior/Winx/Winx_6_puntate/2189463_1800.mp4
Medium-low quality (mp4, 131MB, 700x394) http://creativemedia4.rai.it/Italy/podcastcdn/junior/Winx/Winx_6_puntate/2189463_800.mp4
```
Explanation:
```
Winx_Club_VI_Ep3_Il_collegio_volante Winx Club VI - Ep.3: Il collegio volante
Sanitized name of video for file name Original name of the video for printing to user output
Newline
Highest quality (mp4, 286MB, 1024x576) http://creativemedia4.rai.it/Italy/podcastcdn/junior/Winx/Winx_6_puntate/2189463_1800.mp4
Quality name (format, size, dimension) URL of the video
Newline
Medium-low quality (mp4, 131MB, 700x394) http://creativemedia4.rai.it/Italy/podcastcdn/junior/Winx/Winx_6_puntate/2189463_800.mp4
Quality name (format, size, dimension) URL of the video
```
If you created a version of the script using another programming language [contact me](http://daniil.it) and I will put it on this page!
That's it!
Enjoy!
[Daniil Gentili](http://daniil.it)

326
jekyll/it.md Normal file
View File

@ -0,0 +1,326 @@
---
layout: default
---
# video-dl
Programmi per scaricare video.
[![Build Status](https://travis-ci.org/danog/video-dl.svg?branch=master)](https://travis-ci.org/danog/video-dl)
[Read English version](https://github.com/danog/video-dl)
Creato da [Daniil Gentili](http://daniil.it).
This project is licensed under the terms of the GPLv3 license.
I programmi di questo progetto possono essere usati per scaricare i video di qualsiasi sito generico, inclusi i video del sito della [Rai](http://rai.tv) (incluso Rai Replay e siti iframe), [Mediaset](http://mediaset.it) (incluso Witty TV), [LA7](http://la7.it) e tanti altri siti. E grazie a youtube-dl adesso i programmi supportano tantissimi altri siti!
Questo progetto include uno [script Bash](#istruzioni-di-utilizzo-dello-script-bash) che può essere installato su [qualsiasi sistema Linux/Unix](#installation-instructions) incluso [Android](#android), [Mac OS X](#installation-instructions) o [iOS](#ios) e persino su [Windows](#windows), [un'applicazione per Android](#metodo-1-app), una [API](#api) e una [versione web](#versione-web)!
Sia la [API](#api) sia la [versione web](#versione-web) usano un [database](https://github.com/danog/video-dl/blob/master/web/video-db.txt).
## Versione Web
Questo progetto include una [versione web](http://video.daniil.it/).
![Alt text](http://daniilgentili.magix.net/rai.png?v=2)
Il codice sorgente della pagina può essere visualizzato [qui](https://github.com/danog/video-dl/blob/master/web).
## Istruzioni di utilizzo dello script bash:
```
video.sh [ -qaf [ urls.txt ] ] URL URL2 URL3 ...
```
Opzioni:
-q: Modalità silenziosa. Utile per programmazioni in crontab, abilita automaticamente -a.
-a: Modalità Automatica/Andrea: scarica automaticamente la massima qualità dei video.
-b: Usa la API interna: richiede più programmmi aggiuntivi e potrebbe nkn funzionare su qualche dispositivo, ma potrebbe anche essere più veloce del server API.
-f: Leggi gli URL da uno o più file di testo.
-p player: Riproduci il video invece di scaricarlo utilizzando il player specificato, se invece esso non viene specificato viene usato mplayer.
--help: Fa vedere questo messaggio.
## Istruzioni di installazione dello script bash:
### Qualsiasi sistema Linux/Unix (Ubuntu, Debian, Fedora, Redhat, openBSD, Mac OS X):
Su sistemi debian o derivate, esegui questo comando per aggiungere la mia repo al sistema:
```
sudo wget -q -O /etc/apt/sources.list.d/daniil.list http://dano.cu.cc/1IJrcd1 && wget -q -O - http://dano.cu.cc/1Aci9Qp | sudo apt-key add - && sudo apt-key adv --recv-keys --keyserver keys.gnupg.net 72B97FD1D9672C93 && sudo apt-get update
```
Dovresti vedere un OK se la operazione si conclude con successo.
E questo comando per installare lo script.
```
sudo apt-get update && sudo apt-get -y install video-dl
```
Esegui il programma con:
```
video.sh "URL"
```
Ricorda che è necessario racchiudere l'URL tra virgolette.
Oppure se vuoi usare il metodo normale segui queste istruzioni.
Esegui questo comando per installare lo script:
```
wget http://daniilgentili.magix.net/video.sh -O video.sh || curl -L http://daniilgentili.magix.net/video.sh -o video.sh; chmod +x video.sh
```
Esegui il programma con:
```
./video.sh "URL"
```
Ricorda che è necessario racchiudere l'URL tra virgolette.
Nella directory dove l'hai scaricato.
Per usare questo programma da qualsiasi cartella installa il programma nella $PATH con questo comando (da eseguire come root):
```
wget http://daniilgentili.magix.net/video.sh -O /usr/bin/video.sh || curl -L http://daniilgentili.magix.net/video.sh -o video.sh; chmod +x /usr/bin/video.sh
```
Ora potrai eseguire lo script da qualsiasi cartella con:
```
video.sh "URL"
```
Ricorda che è necessario racchiudere l'URL tra virgolette.
### Android:
#### Metodo 1 (app).
Abilita le sorgenti sconosciute e installa [questa applicazione](http://bit.ly/0192837465k).
L'applicazione presenta una semplice interfaccia molto simile alla versione web.
##### Changelog:
1: versione iniziale
1.2: aggiunti i pulsanti non funziona, condividi e ringraziamenti
1.2.1: aggiunta l'opzione di condivisione dall'esterno, corretti problemi
1.2.2: Aggiustato il pulsante non funzione con URL ricevuti da condivisione esterna, aggiunto google analytics e aggiustato il malfunzionamento dei video rai replay con condivisione esterna.
1.3: Aggiunto l'aggiornamento automatico.
1.4: Aggiunto link nei ringraziamenti
##### Da fare:
Dimmi tu cosa posso aggiungere nelle versioni sucessive!
#### Metodo 2 (script).
##### Installa [Busybox](https://play.google.com/store/apps/details?id=stericson.busybox), [Emulatore Terminale](https://play.google.com/store/apps/details?id=jackpal.androidterm) e [Bash](https://play.google.com/store/apps/details?id=com.bitcubate.android.bash.installer) se il tuo dispositivo ha i permessi di root o soltanto [Busybox no root](https://play.google.com/store/apps/details?id=burrows.apps.busybox) se il tuo dispositivo non è rootato.
[Video tutorial](https://www.youtube.com/watch?v=4NLs2NzHbbc)
Nota: se non riesci a copiare e incollare i comandi nell'emulatore terminale fai così: incolla i comandi una riga alla volta nella barra degli indirizzi, ri-copiali dalla barra degli indirizzi e ri-incollali nell'emulatore terminale.
Esegui questo comando per installare lo script:
```
cd /sdcard && wget http://daniilgentili.magix.net/android/video.sh
```
Eseguilo con:
```
bash /sdcard/video.sh "URL"
```
Ricorda che è necessario racchiudere l'URL tra virgolette.
Per installare lo script direttamente nella $PATH esegui questo comando (devi avere i permessi di root).
```
su
mount -o rw,remount /system && wget http://daniilgentili.magix.net/android/video.sh -O /system/bin/video.sh && chmod 755 /system/bin/video.sh
```
Ora dovresti essere in grado di eseguire lo script con:
```
video.sh "URL"
```
Ricorda che è necessario racchiudere l'URL tra virgolette.
Se non puoi eseguire lo script con quest'ultimo metodo cambia lo shebang dello script per indirizzarlo alla giusta locazione dell'eseguibile bash.
### iOS:
Fai il jailbreak del tuo dispositivo, installa mobileterminal e wget ed esegui questo comando:
```
wget http://daniilgentili.magix.net/video.sh -O video.sh || curl -L http://daniilgentili.magix.net/video.sh -o video.sh; chmod +x video.sh
```
Esegui lo script con:
```
./video.sh "URL"
```
Ricorda che è necessario racchiudere l'URL tra virgolette.
Nella cartella dove lo hai scaricato.
Per visualizzare i video scaricati usa iFile.
Per usare questo programma da qualsiasi directory esegui questo comando:
```
su -c "wget http://daniilgentili.magix.net/video.sh -O /usr/bin/video.sh || curl -L http://daniilgentili.magix.net/video.sh -o video.sh; chmod +x /usr/bin/video.sh"
```
Ora dovresti essere in grado di eseguire lo script con questo comando:
```
video.sh "URL"
```
Ricorda che è necessario racchiudere l'URL tra virgolette.
### Windows:
Installa [Cygwin](https://www.cygwin.com) (Non dimenticare di installare wget durante il processo di installazione), apri la riga di comando Cygwin e scrivi:
```
wget http://daniilgentili.magix.net/win/video.sh -O video.sh
```
Esegui lo script con:
```
./video.sh "URL"
```
Ricorda che è necessario racchiudere l'URL tra virgolette.
Nella directory dove lo hai scaricato.
Per usare lo script da qualsiasi directory usa questo comando.
```
cd /bin && wget http://daniilgentili.magix.net/win/video.sh -O video.sh && cd $OLDPWD
```
Ora dovresti essere in grado di eseguirlo con un:
```
video.sh "URL"
```
Ricorda che è necessario racchiudere l'URL tra virgolette.
# API
Questo progetto include anche una API.
Il codice sorgente della API può essere visualizzato [qui](https://github.com/danog/video-dl/blob/master/api).
### Esempio di utilizzo API
Richiesta:
```
http://api.daniil.it/?url=http://www.winx.rai.it/dl/RaiTV/programmi/media/ContentItem-47307196-8fd1-46f8-8b31-92ae5f9b5089.html#p=0
```
Output:
```
Winx_Club_VI_Ep3_Il_collegio_volante Winx Club VI - Ep.3: Il collegio volante
Highest quality (mp4, 286MB, 1024x576) http://creativemedia4.rai.it/Italy/podcastcdn/junior/Winx/Winx_6_puntate/2189463_1800.mp4
Medium-low quality (mp4, 131MB, 700x394) http://creativemedia4.rai.it/Italy/podcastcdn/junior/Winx/Winx_6_puntate/2189463_800.mp4
```
Spiegazione:
```
Winx_Club_VI_Ep3_Il_collegio_volante Winx Club VI - Ep.3: Il collegio volante
Nome sanitizzato per il salvataggio del video Nome originale del video
Newline
Highest quality (mp4, 286MB, 1024x576) http://creativemedia4.rai.it/Italy/podcastcdn/junior/Winx/Winx_6_puntate/2189463_1800.mp4
Nome della qualità (formato, dimensione, qualità) URL del video
Newline
Medium-low quality (mp4, 131MB, 700x394) http://creativemedia4.rai.it/Italy/podcastcdn/junior/Winx/Winx_6_puntate/2189463_800.mp4
Nome della qualità (formato, dimensione, qualità) URL del video
Newline
```
Se hai creato un'altra versione di questo programma utilizzando la API [contattami](http://daniil.it/) e io la metterò su questa pagina!
Ecco qua!
Buona visione!
[Daniil Gentili](http://daniil.it)

View File

@ -9,24 +9,41 @@
[ -f /bin/bash ] && bash="/bin/bash" || bash="$(which -a bash | tail -1)"
which wget &>/dev/null
if [ "$?" = 0 ];then dl() {
wget $1 -O $2 $3
}
Q="-q"
else dl() {
curl $1 -o $2 $3
}
Q="-s"
fi
echo "Video download script - Copyright (C) 2015 Daniil Gentili
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions; see the LICENSE file."
lineclear() { echo -en "\r\033[K"; }
##### Tools detection and selection #####
which smooth.sh &>/dev/null && smoothsh=y || smoothsh=n
which ffmpeg &>/dev/null && ffmpeg=y || ffmpeg=n
which wget &>/dev/null && {
dl() {
wget "$1" -O $2 $3
}
Q="-q"
} || {
dl() {
curl "$1" -o $2 $3
}
Q="-s"
}
##### Self updating section #####
ME=$(which $0 || echo $0)
# !!!!!! Comment the following line before editing the script or all changes will be overwritten !!!!!! #
echo -n "Self-updating script..." && dl http://daniilgentili.magix.net/learn.sh $ME $Q 2>/dev/null;chmod 755 $ME 2>/dev/null; lineclear
echo -n "Self-updating script..." && dl http://daniilgentili.magix.net/learn.sh $0 $Q 2>/dev/null;chmod +x $0 &>/dev/null; echo -en "\r\033[K"
clear
press() {
echo
read -s -p "Press enter to continue: "; echo -en "\r\033[K"
read -s -p "Press enter to continue: "; lineclear
}
r() {
@ -55,7 +72,7 @@ save and close
the file you are editing.
Since vi starts automatically
in command mode,
to switch to to text mode
to switch to text mode
you will have to type:
i
When you open/create a file."
@ -139,7 +156,7 @@ until [ "$editor" = "c" -o "$editor" = "3" ]; do
echo -n "Sublesson 2: Editors.
1. Nano (currently $nano on your system)
2. Vi (currently $vi on your system)
3. Echo (currently available on your system)
3. echo (currently available on your system)
Your selection (number, c to continue): "
read editor
clear
@ -236,8 +253,7 @@ sleep 2
}
until [ "$n" = q ]; do
echo -n "This project is licensed under the GPLv3 license.
Welcome to the Learn shell scripting script!
echo -n "Welcome to the Learn shell scripting script!
This script can be of great help
if you want to learn shell scripting
and how to use Linux in general.

94
travis/cibuild Executable file
View File

@ -0,0 +1,94 @@
#!/usr/bin/env bash
[ "${TRAVIS_PULL_REQUEST}" = "false" ] && [ "${TRAVIS_BRANCH}" = "master" ] && {
# Setup everything
desc="$(git log -1 --pretty=%B)"
echo "$desc" | grep -q madebytravisci && exit
export DEBFULLNAME="Daniil Gentili"
sudo apt-get update &>/dev/null
sudo apt-get install busybox ruby-ronn build-essential devscripts lintian diff patch python-pip python3 patchutils gnupg expect dpkg-dev &>/dev/null
sudo pip install pexpect
tar -xzf enc.tar.gz
gpg --allow-secret-key-import --import mygpgkey_sec.gpg
builddeb="$PWD/builddeb"
chmod +x ${builddeb}
mkdir temp
temp="$PWD/temp"
gitsync() {
branch="${1}"
shift
git add -A
git commit -am "${*}"
git push -q origin ${branch}
}
git clone https://${GH_TOKEN}@github.com/danog/learn-bash.git learn-bash
cd learn-bash
git config --global user.name "${GIT_NAME}"
git config --global user.email "${GIT_EMAIL}"
git config --global push.default simple
video="$PWD"
wget http://daniilgentili.magix.net/learn.sh -O $temp/reallyold.sh
########################################
version="$(git describe --tags | sed 's/-.*//').$(git describe --tags | sed 's/-[^-]*$//;s/.*-//')"
cp learn.sh $temp
cd $temp
busybox ftpput -u $u1 -p $p1 $ftp learn.sh
cd $video
# Generate deb
[ "$(diff $temp/reallyold.sh $video/learn.sh)" != "" ] && {
cd debian/
cp * old
rm *
cd video*
cp $video/README.md .
bundle exec ronn --roff README.md
mv README debian/learn-bash-dl.1
rm *md
cp $video/learn.sh learn-bash/
echo "debian/learn-bash.1
debian/learn-bash-it.1" > debian/learn-bash.manpages
dch -v $version $desc
$builddeb
cd $temp
git clone https://${GH_TOKEN}@github.com/danog/repo.git
cd repo/debs
mkdir learn-bash-$version
cd learn-bash-$version
cp $video/debian/* .
gitsync master Updated learn-bash to $version
cd $video
}
# Generate website
cd $video/jekyll
echo "---
layout: default
---
">index.md
cat $video/README.md >> index.md
cp -a * $temp
cd $video
gitsync master OK madebytravisci
# Upload everything
git checkout gh-pages
rm -rf *
cp -a $temp/* .
echo "branches:
except:
- gh-pages" > .travis.yml
gitsync gh-pages "Updated the website"
}