youtuber.sh

Tråden skapades och har fått 11 svar. Det senaste inlägget skrevs .
1

Har suttit och lekt med shellscript mest för att få lite mer kunskap i det..
och kom på att kanske fler vill ha detta script...

#!/bin/sh
# youtuber.sh v0.1.3
# Groth, 2006, http://slusk.nu/youtuber/
if [ $# -ne 1 ]; then
        echo 1>&2 "$0 \"<YouTube-url>\""
        exit 1
fi
ver="v0.1.3"
yt_watch=$1
yt_get='http://youtube.com/get_video.php?'

echo -n "Söker efter flv ["
curl -s -A "Mozilla/4.0" -m 30 $yt_watch > data.youtuber
echo -n "."
yt_title=`cat data.youtuber | grep "<title>" | cut -d\>  -f2 | cut -d\< -f1`
echo -n "."
if [ -z `cat data.youtuber | grep player2.swf | cut -d? -f2 | cut -d\" -f1` ]; then
        echo "]"
        echo "ERR: Kontrollera URL:en (hittar inte player2.swf i källan)"
        rm data.youtuber
        exit 1
fi
yt_flvurl=$yt_get`cat data.youtuber | grep player2.swf | cut -d? -f2 | cut -d\" -f1`
echo -n "."
rm data.youtuber
echo -n "."
yt_filename=`echo $yt_title | sed "s+ +_+g"`
echo ".] Klar!"
echo "Titel: $yt_filename"
echo "Sparar flv... ($yt_filename.flv)"
curl -# -A "Mozilla/4.0" -L -o $yt_filename.flv $yt_flvurl
echo "Klar! bara att öppna $yt_filename.flv i VLC om du vill se filmen"
echo "youtuber.sh $ver av groth"

Inte direkt nått fancy.. men bra om man vill ha youtubefilmer på ipoden...
bara att koventera med ffmpeg sedan

  • Medlem
  • Trollhättan
  • 2006-12-20 22:45

Haha snyggt, men det går nog snabbare med tubesock

det gör det nog, men den är alltid kul

  • Medlem
  • International user
  • 2006-12-21 21:03

Ditt script skulle lyfta typ 100 ggr om du kommenterade det. Allways do!

  • Medlem
  • Mölndal
  • 2006-12-22 09:06

Ja absolut. Jag har inte ens förstått vad det gör ännu.

  • Medlem
  • Stockholm
  • 2006-12-22 10:23

Instämmer. T.ex. att usage-texten med en kort mening kunde ge en vink om vad programmet gör.

hahaha kan göra en kommenterad version..

Sådär.. tänkte bara visa att tubesock inte var så bra som jag trodde.. hm..

och lägga upp en kommenterad version..

och för er som vill att scriptet ska koventera filen på direkten när flv filen är hämtad så kan man bara lägga till på slutet av scriptet dock är det inte kanske det bästa ännu (det kräver att du kan komma åt ffmpeg i skalet)

ffmpeg -i $yt_filename.flv -ab 56 -ar 22050 -b 700 -s 320x240 -y $yt_filename.mpg > /dev/null 2>&1
check_size=`du -b $yt_filename.mpg | awk -F "\t" '{print $1}'`
if [ $check_size -lt 1 ]; then
        rm $yt_filename.mpg
        ffmpeg -i $yt_filename.flv -aspect 4:3 -ab 56 -ar 22050 -b 500 -r 20.0 -s 320x240 $yt_filename.mpg > /dev/null 2>&1
        check_size=`du -b $yt_filename.mpg | awk -F "\t" '{print $1}'`
fi
if [ $check_size -lt 1 ]; then
        rm $yt_filename.mpg
        echo "Det gick inte att koventera!"
        exit 1
fi

och här kommer den nya kommenterade versionen:

#!/bin/sh
# youtuber.sh
# Groth, 2006, mgroth@gmail.com
##

# Usage-sak
if [ $# -ne 1 ]; then
        echo 1>&2 "$0 \"<YouTube-url>\""
        echo "(Ett litet script för att hämta hem flv-videon från youtube länkar)"
        exit 1
fi

# Version på scriptet
ver="v0.3.4"

# Vilka länkar har vi
yt_watch=$1
yt_get='http://youtube.com/get_video.php?'


echo -n "Söker efter flv ["

# Hämtar hela sidan ifrån den inmatade URLen
curl -s -A "Mozilla/4.0" -m 30 $yt_watch > data.youtuber
echo -n "."

# Vad för titel/namn har denna film? hämtar ifrån <title>Youtube - filmtitel<title>
yt_title=`cat data.youtuber | grep "<title>" | cut -d\>  -f2 | cut -d\< -f1`
echo -n "."

# Utifall om vi inte hittar player2.swf i koden
if [ -z `cat data.youtuber | grep player2.swf | cut -d? -f2 | cut -d\" -f1` ]; then
        echo "]"
        echo "ERR: Kontrollera URL:en (hittar inte player2.swf i källan)"

        # Får inte ha kvar någon tempdata!
        rm data.youtuber

        exit 1
fi
# Hämta data ifrån player2.swf's GET.a
yt_flvurl=$yt_get`cat data.youtuber | grep player2.swf | cut -d? -f2 | cut -d\" -f1`
echo -n "."

# Ta bort tempdatan
rm data.youtuber
echo -n "."

# Snyggar till filnamnet så varje space blir underscore
yt_filename=`echo $yt_title | sed "s+ +_+g"`
echo ".] Klar!"

# Titel output
echo "Titel: $yt_filename"
                                                                                                            
# Hämta hem flv-film
echo "Sparar flv... ($yt_filename.flv)"
curl -# -A "Mozilla/4.0" -L -o $yt_filename.flv $yt_flvurl

gjorde detta lite snabbt såhär i juletider så jag har säkert skrivit något tokigt!
iallf kommer nog inte sitta så mycket vid dator nu innan jul
så jag vill bara säga:
GOD JUL!

  • Medlem
  • Stockholm
  • 2006-12-25 11:54

Hejsan, får inte skriptet att fungera får bara detta felmeddelande hela tiden.

Citat:

iMac:~/Desktop user$ ./youtube.sh"http://www.youtube.com/watch?v=s3iyAFFElb4"
#: bad interpreter: No such file or directory

Ursprungligen av .mp3:

Hejsan, får inte skriptet att fungera får bara detta felmeddelande hela tiden.

Om du följer instruktionerna så brukar det fungera bra.

sh youtuber.sh "http://www.youtube.com/watch?v=s3iyAFFElb4"

.mp3 du måste ha ett mellan rumm mellan skriptnamnet och om du vill köra ./ istället för sh så måste du skriva "chmod +x youtuber.sh" x = eXecute

och ditt felmedelande är att du försöker köra en fil som inte finns.. pga att du inte har något mellanrumm mellan youtuber.sh och "http://www.youtube.com/watch?v=s3iyAFFElb4". och därför tror skalet att du försöker köra nått som heter > youtuber.sh"http://www.youtube.com/watch?v=s3iyAFFElb4" < vilket inte finns

ajah hoppas det hjälper dig lite hf

Sådär... det är bara att lägga ffmpeg i samma mapp som scriptet nu så byter den formatet själv! (och för er som inte vill ändra formatet är det bara att ta bort # på ffmpeg=nej)

Gott nytt år och ha det kul med scriptet!
(nästa steg kanske är nått med gui? om det änns går )

#!/bin/sh
# youtuber.sh
# Groth, 2006, mgroth@gmail.com
##

# Usage-sak
if [ $# -ne 1 ]; then
	echo 1>&2 "$0 \"<YouTube-url>\""
	echo "(Ett litet script för att hämta hem flv-videon från youtube länkar)"
	exit 1
fi

# Version på scriptet
ver="v0.3.5"

# Vilka länkar har vi
yt_watch=$1
yt_get='http://youtube.com/get_video.php?'

echo -n "Söker efter flv ["

# Hämtar hela sidan ifrån den inmatade URLen
curl -s -A "Mozilla/4.0" -m 30 $yt_watch > data.youtuber
echo -n "."

# Vad för titel/namn har denna film? hämtar ifrån <title>Youtube - filmtitel<title>
yt_title=`cat data.youtuber | grep "<title>" | cut -d\>  -f2 | cut -d\< -f1`
echo -n "."

# Utifall om vi inte hittar player2.swf i koden
if [ -z `cat data.youtuber | grep player2.swf | cut -d? -f2 | cut -d\" -f1` ]; then
	echo "]"
	echo "ERR: Kontrollera URL:en (hittar inte player2.swf i källan)"

	# Får inte ha kvar någon tempdata!
	rm data.youtuber

	exit 1
fi

# Hämta data ifrån player2.swf's GET.a
yt_flvurl=$yt_get`cat data.youtuber | grep player2.swf | cut -d? -f2 | cut -d\" -f1` 
echo -n "."

# Ta bort tempdatan
rm data.youtuber
echo -n "."

# Snyggar till filnamnet så varje space blir underscore
yt_filename=`echo $yt_title | sed "s+ +_+g"`
echo ".] Klar!"

# Titel output
echo "Titel: $yt_filename"

# Hämta hem flv-film
echo "Sparar flv... ($yt_filename.flv)"
curl -# -A "Mozilla/4.0" -L -o $yt_filename.flv $yt_flvurl 

# Ändra format från flv till mp4
# OBS! Se till att ha ffmpeg i samma mapp som (detta script) youtuber.sh! OBS!
# Ta bort # på raden under om du inte vill ändra formatet!
#ffmpeg=nej

if [ -z $ffmpeg ]; then
	echo -n "Ändrar formatet... (OBS DETTA TAR TID!) "
	./ffmpeg -y -threads 4 -i $yt_filename.flv -s 320x240 -r 29.97 -vcodec h264 -g 300 -qmin 27 -b 700  $yt_filename.mp4 > /dev/null 2>&1
	echo "Klar!"
	echo "Tar bort $yt_filename.flv"
	rm $yt_filename.flv
fi
echo "Klar! [ youtuber.sh $ver ]"
1
Bevaka tråden