Sida 1 av 1

Howto; Youtube utan flash!

Postat: 29 apr 2009, 12:12
av dmz
Då flash är det sämsta skit som någonsin skapats så tänkte jag dela med mig om hur man kan avinstallera skräpet utan att gå miste om alla youtube-videos man får skickade till sig.

Kod: Markera allt

#!/bin/sh
# This script is intended to let you launch a youtube video in mplayer. Very
# handy if you primarily use text mode browsers with no javascript or flash
# support, such as lynx or w3m.
#
# Usage: youtube [url] [--exec program] [-- program options]
#
# If no url is given, the script expects to receive the html from the page on
# standard input.
#
# --exec can be used to specify which program to open the final flv url in.
# mplayer is used by default, but wget is another useful option.
#
# Examples:
#
# No fuzz, just play the video with mplayer:
# youtube.sh http://www.youtube.com/watch?v=...
#
# If you found a nice piece of music and just want to listen to it:
# youtube.sh http://www.youtube.com/watch?v=... -- -novideo
#
# Download a video:
# youtube.sh http://www.youtube.com/watch?v=... --exec wget -- -O foobar.flv
#
# If you use w3m, you can configure this script to be used as an external
# browser. This will allow you to browse youtube in w3m and simply press M to
# view the video.
#

extract_final_url()
{
	# The javascript line containing "fullscreenUrl" contains the info we need.
	# head -n1 makes sure only the first such line gets processed (otherwise the script would break if someone left a comment containing that string).
	# sed does the actual extraction and assembles them as the final url.
	# egrep at the end ensures that we only continue if sed did indeed manage to construct a correct url
	grep 'fullscreenUrl' \
	|head -n1 \
	|sed 's#^.*[&?]\(video_id=[^&]\+\).*&\(t=[^&]\+\).*$#http://www.youtube.com/get_video?\1\&\2#g' \
	|egrep '^http://.+\.youtube\.com/get_video\?video_id=.+&t=.+$'

	if [ $? -ne 0 ]; then
		echo "Could not extract the final url. Maybe youtube changed design?" 1>&2
		return 1
	fi
}

EXEC="mplayer"
# Parse parameters
while [ $# -gt 0 ]; do
	case "$1" in
		http://*)
			HTML_URL="$1"
		;;
		--exec)
			if [ $# -gt 1 ] && [ "$2" != "--" ]; then
				EXEC="$2"; shift
			else
				echo "Parameter '$1' expects an option"
				exit 2
			fi
		;;
		--)
			shift
			break
		;;
		*)
			echo "Unknown parameter '$1'" 1>&2
			exit 3
		;;
	esac
	shift
done

if [ "$HTML_URL" ]; then
	# If a url was given, assume that it was the html url (e.g. http://www.youtube.com/watch?v=4Swzbt76wBM)
	FINAL_URL="$(curl -s "$HTML_URL"|extract_final_url)"
else
	# If no parameter was given, read the html on standard input
	FINAL_URL="$(extract_final_url)"
fi

if [ "$FINAL_URL" ]; then
	"$EXEC" "$FINAL_URL" "${@}"
else
	echo "No final url found, not launching ${EXEC}" 1>&2
	exit 2
fi
Matcher för urxvt;

Kod: Markera allt

/(?:http:\/\/|www\.|http:\/\/www\.)youtube\.com\/watch\?\S*v=([^\s&\?\.,!]+)/

Re: Howto; Youtube utan flash!

Postat: 29 apr 2009, 13:38
av nixy
Va bra, men hur gör man? ??? Till exempel, hur används "Matcher för urxvt"?

Re: Howto; Youtube utan flash!

Postat: 29 apr 2009, 14:29
av dmz
Borde räcka med att lägga till följande i .Xdefaults/.Xresources;

Kod: Markera allt

URxvt*urlLauncher: $HOME/bin/youtube
URxvt*matcher.pattern.1: /(?:http:\/\/|www\.|http:\/\/www\.)youtube\.com\/watch\?\S*v=([^\s&\?\.,!]+)/
Ersätt sökvägen med din egen.

Re: Howto; Youtube utan flash!

Postat: 03 maj 2009, 19:23
av whac
Vore najs med ett script som funkade med andra sajter också. :)

Re: Howto; Youtube utan flash!

Postat: 03 maj 2009, 19:30
av rancor
whac skrev:Vore najs med ett script som funkade med andra sajter också. :)
"Andra"? Menar du redtube? ;D

Re: Howto; Youtube utan flash!

Postat: 03 maj 2009, 19:50
av whac
ja tex =)

eller det jag tänkte på: bambuser

Re: Howto; Youtube utan flash!

Postat: 05 maj 2009, 20:31
av m!rage
Provade att köra skriptet från kommandoraden, funkade kanon. Jag hänger dock inte med var man ska lägga urxvt-grejerna. Måste jag installera rxvt eller kan jag köra det med gnome-terminal?

Re: Howto; Youtube utan flash!

Postat: 05 maj 2009, 21:25
av dmz
m!rage skrev:Provade att köra skriptet från kommandoraden, funkade kanon. Jag hänger dock inte med var man ska lägga urxvt-grejerna. Måste jag installera rxvt eller kan jag köra det med gnome-terminal?
Du vill installera urxvt. gnome-terminal är värdelös ur alla avseenden.

Re: Howto; Youtube utan flash!

Postat: 06 maj 2009, 20:11
av m!rage
Värdelös är väl att ta i? Hur som helst har jag nu urxvt med lite ögongodis. Hur är det tänkt att skriptet ska fungera? Jag stoppade in raderna

Kod: Markera allt

URxvt*urlLauncher: $HOME/youtube
URxvt*matcher.pattern.1: /(?:http:\/\/|www\.|http:\/\/www\.)youtube\.com\/watch\?\S*v=([^\s&\?\.,!]+)/
i .Xdefaults men det händer inte mycket när jag klickar på en youtube-länk. Ska Mplayer öppnas istället för firefox eller?

Re: Howto; Youtube utan flash!

Postat: 06 maj 2009, 20:33
av dmz
Ursäkta;

Kod: Markera allt

URxvt*urlLauncher: $HOME/youtube
URxvt*matcher.pattern: /(?:http:\/\/|www\.|http:\/\/www\.)youtube\.com\/watch\?\S*v=([^\s&\?\.,!]+)/

Re: Howto; Youtube utan flash!

Postat: 06 maj 2009, 20:55
av m!rage
Det fungerar fortfarande inte. Eller fattar jag helt fel hur skriptet ska användas? Jag försöker klicka på länkar i firefox, kanske måste jag ställa in något där?

Re: Howto; Youtube utan flash!

Postat: 06 maj 2009, 21:58
av dmz
Öhm. Syftet är att slippa starta firefox när man får länkar via irc/im osv.

Re: Howto; Youtube utan flash!

Postat: 07 maj 2009, 17:54
av m!rage
Aha då fattar jag :) Det var nog inte riktigt det jag sökte, jag letade mer efter ngt sånt här: http://userscripts.org/scripts/show/41722
Ursäkta missförståndet då, haha ;D

Re: Howto; Youtube utan flash!

Postat: 13 maj 2009, 04:26
av whac
Hur gör jag om jag vill kunna öppna youtube-länkar i youtube och sen andra länkar i firefox? Min .Xdefaults ser ut såhär:

Kod: Markera allt

URxvt.font: xft:Bitstream Vera Sans Mono-8.5
URxvt.background: black
URxvt.foreground: white
URxvt*scrollBar: false
URxvt.perl-ext-common: default,matcher
URxvt.urlLauncher: firefox
URxvt.matcher.button: 1
URxvt.matcher.pattern.1: \\bwww\\.[\\w-]\\.[\\w./?&@#-]*[\\w/-]
URxvt.matcher.pattern.2: \\bspotify:[\\w:]*\\w
Hur lägger jag till:

Kod: Markera allt

URxvt*urlLauncher: $HOME/youtube
URxvt*matcher.pattern: /(?:http:\/\/|www\.|http:\/\/www\.)youtube\.com\/watch\?\S*v=([^\s&\?\.,!]+)/
Så att det funkar? För det verkar ju inte funka med två stycken urlLaunchers :(

Re: Howto; Youtube utan flash!

Postat: 13 maj 2009, 10:24
av dmz

Kod: Markera allt

URxvt*matcher.pattern.2:
URxvt*matcher.launcher.2:
osv ..

Re: Howto; Youtube utan flash!

Postat: 15 aug 2009, 11:40
av whac
Nu har youtube bytt design...

"Could not extract the final url. Maybe youtube changed design?"

:(

Hur fixa? :(

Re: Howto; Youtube utan flash!

Postat: 15 aug 2009, 11:42
av dmz
whac skrev:Nu har youtube bytt design...

"Could not extract the final url. Maybe youtube changed design?"

:(

Hur fixa? :(

Kod: Markera allt

#!/usr/bin/perl
use LWP::Simple;

my $player = 'mplayer -fs';

my $url = shift or die("Needs argument");
my $body = get($url);

my($t) = $body =~ /"t":\s*"(.+?)"/is;
my($video_id) = $body =~ /"video_id":\s*"(.+?)"/is;

my $real_url = "http://www.youtube.com/get_video?video_id=$video_id&t=$t";
system("$player '$real_url'"); 

exit 0;