By Yehuda B.
—
Last update
Jul 6, 2008
—
Installed
2,743 times.
// sport5 video for mac user script
// version 0.4
// 2008-07-06
// Copyright (c) 2008, Yehuda B.
// 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.
// http://www.gnu.org/licenses/gpl.html
// ==UserScript==
// @name Sport5 video for mac
// @namespace http://yehudab.com
// @description Fix video playback and broadcast scedule for Sport5 (Israel cable sport channel). Version 0.4
// @include http://*.castup.net/PlayerSupport.inc.asp*
// @include http://www.sport5.co.il/*broadcastsheet*
// ==/UserScript==
function getPlayerHtml(url, width, height)
{
return "<object type=\"video/x-ms-wmv\" data=\"" + url + "\" width=\"" + width + "\" height=\"" + height + "\">" +
"<param name=\"autostart\" value=\"true\" />" +
"<param name=\"controller\" value=\"true\" />" +
"</object>";
}
function fixVideo()
{
try
{
var search = location.href.split("?")[1];
var params = search.split("&");
var clipURL = "";
var width = "100%";
var height = "100%";
for (var i = 0; i < params.length; i++)
{
var p = params[i].toLowerCase();
if (p.indexOf("clipurl=") == 0)
{
clipURL = unescape(params[i].split("=")[1]);
}
if (p.indexOf("videowidth=") == 0)
{
width = params[i].split("=")[1];
}
if (p.indexOf("videoheight=") == 0)
{
height = params[i].split("=")[1];
}
}
GM_log(clipURL);
window.setTimeout(function() {
GM_xmlhttpRequest({
method:"GET",
url:clipURL,
onload:function(details) {
if (details.status != 200)
{
GM_log("Unable to load video: " + clipURL, 2);
}
else
{
var videoUrl = clipURL;
var allTags = details.responseText.match(/<[^>]+>/g);
var i, l = allTags.length;
var inEntry = false;
var canSkip = true;
var tagName;
var haveVideoURL = false;
for (i = 0; i < l; i++)
{
tagName = allTags[i].match(/[a-zA-Z]+/);
if (tagName != null)
{
tagName = tagName[0].toLowerCase();
switch (tagName)
{
case "entry":
if (!inEntry)
{
inEntry = true;
canSkip = true;
haveVideoURL = false;
}
else
{
inEntry = false;
if (canSkip && haveVideoURL)
{
GM_log(videoUrl);
document.body.innerHTML = getPlayerHtml(videoUrl, width, height);
return;
}
}
break;
case "param":
paramName = allTags[i].match(/name[ ]*=[ ]*"[^"]+"/i);
paramValue = allTags[i].match(/value[ ]*=[ ]*"[^"]+"/i);
if (paramValue != null && paramName != null)
{
paramName = paramName[0].replace(/^.*"([^"]+)".*$/, "$1").toLowerCase();
paramValue = paramValue[0].replace(/^.*"([^"]+)".*$/, "$1").toLowerCase();
if (paramName == "canseek" && paramValue == "no")
canSkip = false;
}
break;
case "ref":
if (canSkip)
{
var href = allTags[i].match(/href[ ]*=[ ]*"[^"]+"/i);
if (href != null)
{
videoUrl = href[0].replace(/^.*"([^"]+)".*$/, "$1");
haveVideoURL = true;
}
}
break;
}
}
}
document.body.innerHTML = getPlayerHtml(videoUrl, width, height);
}
}
});
}, 0);
}
catch (ex)
{
GM_log(ex);
}
}
function fixCalendar()
{
if (document.getElementById("div_asDate") == null)
return;
unsafeWindow.ShowCalendar = function(day, month, year, returnFunc, bKeepPrevCalender) {
var objDiv = document.getElementById("div_asDate");
var objTbl = document.getElementById("tbl_asDate");
if (bKeepPrevCalender.toUpperCase() == "TRUE") {
objDiv = document.all.div_asDate[1];
objTbl = document.all.tbl_asDate[1];
}
var arrDays;
var arrMonthes;
var clear;
var closeAlt;
var CAL = unsafeWindow.CAL;
var today = null;
arrDays = new Array(CAL.DAY_1, CAL.DAY_2, CAL.DAY_3, CAL.DAY_4, CAL.DAY_5, CAL.DAY_6, CAL.DAY_7);
arrMonthes = new Array(CAL.MONTH_1, CAL.MONTH_2, CAL.MONTH_3, CAL.MONTH_4, CAL.MONTH_5, CAL.MONTH_6, CAL.MONTH_7, CAL.MONTH_8, CAL.MONTH_9, CAL.MONTH_10, CAL.MONTH_11, CAL.MONTH_12);
clear = "";
closeAlt = "";
var linenumber = 0;
if (today == null) {
today = new Date(year, month, day, 0, 0, 0, 0);
today.setDate(day);
today.setYear(year);
today.setMonth(month);
}
var date1 = new Date(year, month, day, 0, 0, 0, 0);
date1.setDate(1);
date1.setYear(year);
date1.setMonth(month);
var date2 = new Date(year, month, day, 23, 59, 59, 999);
date2.setDate(1);
date2.setYear(year);
date2.setMonth(month);
date2.setMonth(date2.getMonth() * 1 + 1);
date2.setDate(date2.getDate() - 1);
var dayInMonth = (date2 - date1 + 1) / 86400000;
while (objTbl.rows.length > 0) {
objTbl.deleteRow(0);
}
var vRow = objTbl.insertRow(linenumber++);
vRow.className = "cal-rows";
var imgPrev = new Image;
imgPrev.src = "../../images/calendar/prev.gif";
var imgNext = new Image;
imgNext.src = "../../images/calendar/next.gif";
var vCell = vRow.insertCell(-1);
vCell.align = "center";
vCell.className = "cal-cell-arrows-prev";
vCell.innerHTML = "<a class=cal-link-arrow-prev href=\"#\" onclick=\"ShowCalendar('" + day + "','" + (month * 1 - 1) + "','" + year + "','" + returnFunc + "','" + bKeepPrevCalender + "');return false;\"><img src='" + imgPrev.src + "' class='cal-prev'></a>";
var vCell = vRow.insertCell(-1);
vCell.colSpan = 5;
vCell.align = "center";
vCell.className = "cal-cell-arrows-month";
vCell.innerHTML = arrMonthes[date1.getMonth()];
var vCell = vRow.insertCell(-1);
vCell.align = "center";
vCell.className = "cal-cell-close";
vCell.innerHTML = "<a class=cal-link-arrow-next href=\"#\" onclick=\"ShowCalendar('" + day + "','" + (month * 1 + 1) + "','" + year + "','" + returnFunc + "','" + bKeepPrevCalender + "');return false;\"><img src='" + imgNext.src + "' class='cal-next'></a>";
vRow.className = "cal-rows";
var vRow = objTbl.insertRow(linenumber++);
for (var i = 1; i <= 7; i++) {
var vCell = vRow.insertCell(-1);
vCell.className = "cal-cell-weekday";
vCell.innerHTML = eval("CAL.DAY_" + i);
}
var vRow = null;
var currDayInWeek = date1.getDay();
rowsNumber = 0;
if (currDayInWeek > 0) {
rowsNumber++;
var vRow = objTbl.insertRow(linenumber++);
vRow.className = "cal-rows";
for (var i = 0; i < currDayInWeek; i++) {
var vCell = vRow.insertCell(-1);
vCell.className = "cal-cell-empty";
vCell.innerHTML = " ";
}
}
for (; date1 <= date2; date1.setDate(date1.getDate() * 1 + 1)) {
var cellClass = "cal-cell-day-number";
var linkClass = "cal-link-number";
currDayInWeek = date1.getDay();
if (currDayInWeek == 0) {
rowsNumber++;
vRow = objTbl.insertRow(linenumber++);
vRow.className = "cal-rows";
}
if (today.toDateString() == date1.toDateString()) {
cellClass = "cal-cell-today";
linkClass = "cal-link-today";
}
var dateFormat = date1.getDate() + "/" + (date1.getMonth() * 1 + 1) + "/" + (date1.getYear() % 100);
var vCell = vRow.insertCell(-1);
vCell.className = cellClass;
vCell.innerHTML = "<a class=" + linkClass + " href=\"#\" onclick=\"" + returnFunc + "('" + dateFormat + "');return false;\">" + date1.getDate() + "</a>";
}
if (currDayInWeek < 6) {
for (var i = currDayInWeek; i < 6; i++) {
var vCell = vRow.insertCell(-1);
vCell.className = "cal-cell-empty";
vCell.innerHTML = " ";
}
}
if (rowsNumber < 5) {
vRow = objTbl.insertRow(linenumber++);
vRow.className = "cal-rows";
for (var i = 0; i < 6; i++) {
var vCell = vRow.insertCell(-1);
vCell.className = "cal-cell-empty";
vCell.innerHTML = " ";
}
}
objDiv.style.display = "block";
}
var dateToShow = new Date();
var dateParam = (window.location.href.match(/toDate=[0-9]+\/[0-9]+\/[0-9]+/))
if (dateParam != null)
{
var dateArr = dateParam[0].split("=")[1].split("/");
dateToShow.setDate(parseInt(dateArr[0], 10));
dateToShow.setMonth(parseInt(dateArr[1], 10)-1);
dateToShow.setFullYear(parseInt(dateArr[2], 10) + 2000);
}
unsafeWindow.ShowCalendar(dateToShow.getDate(),dateToShow.getMonth(),dateToShow.getFullYear(),'ShowBroadcastsInSpecificDate','False');
}
if (window.location.href.match(/\/broadcastsheet/i))
{
fixCalendar();
}
else if (window.location.href.match(/castup.net\/PlayerSupport/i))
{
fixVideo();
}