петък, 11 март 2011 г.

YouTube в Mplayer (или друг плейър)

Големи благодарности на целия екип на FreeBSD, че не си бяха свършили работата да предоставят работеща алтернатива на flashplayer която да може да пуска видеа от youtube.

По този начин те предоставиха предизвикателството да се намери заобиколен начин за пускане на youtubе-ските видеа с външен плейър.

Решението което ще покажа е работещо към датата на публикуване и устройва автора като начин/удобство на употреба.

Решението се състои от 3 основни стъпки:
  1. firefox
  2. greasemonkey script
  3. bash script 
По точка първа ще ви трябва работещ firefox 3.5+ (тествано с 3.6) с инсталиран greasemonkey.  Конфигурираме нов протокол във firefox който да работи с външно приложение. Справки тук:
http://kb.mozillazine.org/Register_protocol#Linux

Точка втора е създаването на greasemonkey script който да изрязва video id-то от отворената youtube страница и да го изпраща към bash скрипта. Ето скрипта който аз използвам:

// ==UserScript==
// @name Youtube Video Play to Mplayer
// @namespace http://admin-fu.blogspot.com/
// @description Play You Tube video to Mplayer
// @include http://*.youtube.com/*
// @include http://youtube.com/*
// ==/UserScript==
function youtubeIDextract(url)
{
var youtube_id;
youtube_id = url.replace(/^[^v]+v.(.{11}).*/,"$1");
return youtube_id;
}
var id = youtubeIDextract(window.location.href);
GM_openInTab("ytm://"+id);


И последната точка 3 е bash скрипта който се явява протокол хендлър за новият портокол на firefox (обяснено в точка 1). Ето скрипта:

#!/bin/bash
i=`echo "$1" | cut -d"/" -f3`
mplayer $(wget http://www.youtube.com/watch?v=$i -qO- | sed -n "/fmt_url_map/{s/[\'\"\|]/\n/g;p}" | sed -n '/^fmt_url_map/,/videoplayback/p' | sed -e :a -e '$q;N;5,$D;ba' | tr -d '\n' | sed -e 's/\(.*\),\(.\)\{1,3\}/\1/')


Предполагам ще се налага промяна в bash скрипта всеки път като youtube параноясат и решат да защитават нечии авторски права.

Няма коментари:

Публикуване на коментар