Login
Username:

Password:

Remember me



Lost Password?

Register now!

Sections

Who's Online
137 user(s) are online (106 user(s) are browsing Forums)

Members: 1
Guests: 136

BillE, more...

Support us!

Headlines

 
  Register To Post  

Odyssey YouTube issues ?
Quite a regular
Quite a regular


See User information
Just realised that I am having an issue trying to play videos in Odyssey in YouTube.

I always spoof as IPad 6.1, when I travel to YouTube it is in the m.youtube.com form.

I notice that when I click the SEARCH button at the top right I get a pop up message that says:

newlib.library error
exit() of process 143 called from wrong process 187, using IExec->RemTask(NULL)

Process: "[OWB] MediaPlayer".

I have OWB 1.23 r5 with the youtube HTML5/Fullscreen scripts installed.

I noticed the same thing even after a fresh install of OWB.

===

This also happens even if I just load up youtube and click on a video without clicking the SEARCH button.

If liberty means anything at all, it means the right to tell people what they do not want to hear.
George Orwell.
Go to top
Re: Odyssey YouTube issues ?
Quite a regular
Quite a regular


See User information
I see the problem also on my X1000 (original post was wrt. X5000).

The X1000 configuration has never changed in months and it used to work before, so perhaps it is another YouTube change?

If liberty means anything at all, it means the right to tell people what they do not want to hear.
George Orwell.
Go to top
Re: Odyssey YouTube issues ?
Just popping in
Just popping in


See User information
@rjd324

Hmm... I see the same issue on my setup

Go to top
Re: Odyssey YouTube issues ?
Quite a regular
Quite a regular


See User information
Anyone else can reproduce this?

If liberty means anything at all, it means the right to tell people what they do not want to hear.
George Orwell.
Go to top
Re: Odyssey YouTube issues ?
Quite a regular
Quite a regular


See User information
@rjd324Quote:
Just realised that I am having an issue trying to play videos in Odyssey in YouTube.
I always spoof as IPad 6.1, when I travel to YouTube it is in the m.youtube.com form.

I'm running an X1000 and spoof as IPad 6.1 and YouTube is working find for me. Both playing videos and searching. I'm in the U.S. and using english language.

AmigaOne X1000, A1222Plus, uA1
Go to top
Re: Odyssey YouTube issues ?
Quite a regular
Quite a regular


See User information
And here is YouTube working fone, poof as Ipad 6.1.

Amiga x5000 ı o2o ı 4GB RAM ı RadeonRX580 | SBlaster Audigy Fx - AmigaOS4.1 FInal Edition

A1200 sandwich

Warp - Croatian Amiga portal
Go to top
Re: Odyssey YouTube issues ?
Quite a regular
Quite a regular


See User information
Doesn't always seem to happen, and it didn't used to. Somtimes I can play the videos and then sometimes I get this message.

If liberty means anything at all, it means the right to tell people what they do not want to hear.
George Orwell.
Go to top
Re: Odyssey YouTube issues ?
Not too shy to talk
Not too shy to talk


See User information
@rjd324

I can't reproduce this, when I click on search it will let me search for videos. X5000, Odyssey v1.23 r5_beta07 with fix for youtube full screen, spoofed as iPad 6.1 on m.youtube.com.

Go to top
Re: Odyssey YouTube issues ?
Quite a regular
Quite a regular


See User information
Woah, well this is weird. But, at least one other person can reproduce it.

Will have to do some more testing to see if I can conclusively create a list of steps to reproduce the issue from power on of the Amiga.

I guess I can also cross compile the latest from kas1e github and add in some printf debugging....

If liberty means anything at all, it means the right to tell people what they do not want to hear.
George Orwell.
Go to top
Re: Odyssey YouTube issues ?
Quite a regular
Quite a regular


See User information
Odyssey Version 1.23 r5 (Jan 2 2022) r155188
Scripts Enabled:
1. StackOverflow CSS fixes
2. GitHub CSS fixes
3. Youtube HTML5 Converter
4. YouTube Fullscreen Fix

The contents of which follow:

1. StackOverflow CSS fixes
// StackOverflow CSS fixes
// version 1.0
// 2022-04-26
// Copyright (c) 2022 Created by Georgios Sokianos
// Released under the GPL license
// http://www.gnu.org/copyleft/gpl.html
//
// ==UserScript==
// @name           StackOverflow CSS fixes
// @namespace      none
// @description    Fixes css in StackOverflow
// @include        https://stackoverflow.com/*
// @version        $VER: StackOverflow CSS fixes 1.0 (26.04.2022)
// @url            https://ko-fi.com/walkero
// ==/UserScript==


var css ' \
.s-topbar {z-index: 100; background-color: #eee;} \
.s-topbar--container {} \
.s-topbar--container > * {display: inline-block;} \
.s-topbar--container > ol > li {display: inline-block;} \
.s-topbar--container > div.s-popover {display: none;} \
h1 {font-size: 1.4rem;} \
h1 > a {color: black;} \
#left-sidebar {width: 20%; display: inline-block; vertical-align: top;} \
#content {width: 78%; display: inline-block;} \
#mainbar {width: 76%; vertical-align: top;} \
#sidebar {width: 20%; vertical-align: top;} \
#footer {background-color: rgb(35, 38, 41); color: white; padding: 20px 10px;} \
#footer a {font-size: 12px; color: white;} \
.site-footer--logo {width: 10%; display: inline-block; vertical-align: top;} \
.site-footer--copyright {width: 26%; display: inline-block; vertical-align: top;} \
.site-footer--nav {width: 60%; display: inline-block; vertical-align: top;} \
.site-footer--nav > div {width: 20%; display: inline-block; vertical-align: top;} \
#mainbar pre {background-color: rgb(246, 246, 246); padding: 5px; overflow: auto;} \
'
;

var 
head document.head || document.getElementsByTagName('head')[0],
    
style document.createElement('style');

head.appendChild(style);

style.type 'text/css';
if (
style.styleSheet){
  
// This is required for IE8 and below.
  
style.styleSheet.cssText css;
} else {
  
style.appendChild(document.createTextNode(css));
}


2. GitHub CSS fixes
// GitHub CSS fixes
// version 1.1
// 2022-04-04
// Copyright (c) 2021 Created by Georgios Sokianos
// Released under the GPL license
// http://www.gnu.org/copyleft/gpl.html
//
// ==UserScript==
// @name           GitHub CSS fixes
// @namespace      none
// @description    Fixes css in GitHub
// @include        https://github.com/*
// @version        $VER: GitHub CSS fixes 1.1 (04.04.2022)
// @url            https://ko-fi.com/walkero
// ==/UserScript==


var css ' \
.col-md-1 { width: 8.333333% !important; } \
.col-md-2 { width: 16.666667% !important; } \
.col-md-3 { width: 25% !important; } \
.col-md-4 { width: 33.333333% !important; } \
.col-md-5 { width: 41.666667% !important; } \
.col-md-6 { width: 50% !important; } \
.col-md-7 { width: 58.333333% !important; } \
.col-md-8 { width: 66.666667% !important; } \
.col-md-9 { width: 75% !important; } \
.col-md-10 { width: 83.333333% !important; } \
.col-md-11 { width: 91.666667% !important; } \
.col-md-12 { width: 100% !important; } \
.d-inline-flex { display: inline-block !important; } \
div.d-flex > div, \
div.d-lg-flex > div, \
ul.d-lg-flex > li, \
ul.d-flex > li { display: inline-block !important; vertical-align: top; } \
header nav { display: inline-block !important; } \
.Box--overlay, \
header nav li.d-block .dropdown-menu { background-color: white !important; } \
header nav li summary { color: black !important; } \
a.HeaderMenu-link { color: black !important; } \
summary.HeaderMenu-link svg { display: none !important; } \
input.header-search-input { color: black; border: #323232; } \
#responsive-meta-container > div > div { display: inline-block !important; } \
div.Layout > div { display: inline-block; } \
div.Layout-main { width: 70%; } \
div.Layout-sidebar { width: 26%; margin-left: 2%; vertical-align: top; } \
#repository-container-header { max-width: 1260px; margin: 10px auto; } \
#repository-container-header > nav { clear: both; } \
#repository-container-header > div > div { display: inline-block !important; width: 38%; } \
#repository-container-header > div > ul { display: inline-block !important; width: 60%; } \
div.Layout-main .Box-header, \
div.Layout-main .Box { border-color: #c1c1c1 !important; } \
div.js-details-container div.Box-row { border-color: #c1c1c1; clear: both; } \
.header-search input.header-search-input { float: left; border: 1px solid #c1c1c1; color: black; } \
'
;

var 
head document.head || document.getElementsByTagName('head')[0],
    
style document.createElement('style');

head.appendChild(style);

style.type 'text/css';
if (
style.styleSheet){
  
// This is required for IE8 and below.
  
style.styleSheet.cssText css;
} else {
  
style.appendChild(document.createTextNode(css));
}

window.onload = function () {
  var 
canonicalElem document.querySelector("link[rel='canonical']");
  if (
canonicalElem !== null) {
    var 
canonicalUrl canonicalElem.href;
    var 
container document.getElementById("repository-container-header");
    var 
archiveText document.createTextNode("Download ZIP");
    var 
archiveUrl canonicalUrl;
    
    if (
canonicalUrl.indexOf("tree") > -1) {
      
archiveUrl archiveUrl.replace("tree""archive/refs/heads");
    } else {
      var 
branchElem document.querySelector("span[data-menu-button]");
      if (
branchElem !== null) {
        
archiveUrl += "/archive/refs/heads/" branchElem.textContent;
      }
    }
    
    if (
archiveUrl != canonicalUrl) {
      var 
archiveLink document.createElement("a");
      
archiveLink.appendChild(archiveText);
      
archiveLink.title "Download as a ZIP file";
      
archiveLink.href archiveUrl ".zip";
      
      
container.appendChild(archiveLink);
    }
  }
}


3. Youtube HTML5 Converter
// Youtube HTML5 converter
// version 0.95
// 2014-03-19
// Copyright (c) 2010, Arne Schneck, Rob Middleton(aka themiddleman), chromeuser8
// Reworked by Fabien Coeurjoly to be up-to-date and work properly with current HTML5 implementations and Youtube endless changes
// Released under the GPL license
// http://www.gnu.org/copyleft/gpl.html
//
// Changes version 0.94 -> 0.95 :
//     * Don't use for...of construct for pre-1.24 Odyssey versions.
// Changes version 0.92 -> 0.94 :
//     * Added support for videos using encrypted signatures, which should hopefully fix many videos that didn't work anymore. VEVO ones should also work.
//     * Fixed a layout issue with the video element caused by recent youtube changes.
//     * Downloading a video now shows the video title instead of a meaningless "videoplayback" filename.
//     * Code cleanup here and there. 
// Changes version 0.91 -> 0.92 :
//     * Reworked script initialization to work more reliably with all Youtube "modes" (HTML5, broken HTML5 and Flash)
// Changes version 0.90 -> 0.91 :
//     * Also suppressed more Youtube's madness : when html5 cookie is set and flash is disabled, they sometimes show a "you need flash player" message while their html5 player is already loaded ready to play the video. Seriously... 
// Changes version 0.89 -> 0.90 :
//     * Heavy refactoring to deal with all recent YouTube changes. 
// Changes version 0.88 -> 0.89 :
//     * Adapted to work again with latest changes from YouTube. 
// Changes version 0.87 -> 0.88 :
//     * Adapted to work again with latest changes from YouTube.
// Changes version 0.86 -> 0.87 :
//     * Adapted to work again with latest changes from YouTube.
// Changes version 0.85 -> 0.86 :
//     * Fixes download links after Youtube's latest changes.
// Changes version 0.84 -> 0.85 :
//     * Don't attempt to execute anything of this script in HTML5 mode. 
// Changes version 0.83 -> 0.84 :
//     * YouTube suppressed the url_fmt_map this script relied on previously... 
//       Now using another method, let's hope it won't change too soon!      
//     * Removed some dead code and cleanup in a few places 
// Changes version 0.82 -> 0.83 :
//     * Added very basic support for YouTube channels (only first title is played).
// Changes version 0.81 -> 0.82 :
//       * The player container height set by YouTube is too small to show entirely
//       the HTML5 bultin-player controls. Adjusted its height accordingly.
// Changes version 0.80 -> 0.81 :
//     * "get_video" mode isn't supported by YouTube anymore, so "raw" mode is now
//       the default and only available mode.
//
// ==UserScript==
// @name          Youtube HTML5 Converter
// @namespace     none
// @description   Adds links below the video and replaces Flash with the builtin HTML5 mediaplayer.
// @include       http://youtube.com/watch*
// @include          http://*.youtube.com/watch*
// @include       http://youtube.*/watch*
// @include          http://youtube-nocookie.com/watch*
// @include          http://*.youtube-nocookie.com/watch*
// @include          http://youtube-nocookie.*/watch*
// @include          http://*.youtube.com/user/*
// @include          http://www.youtube.com/results*
// @include          http://www.youtube.com/*
// @include       https://youtube.com/watch*
// @include          https://*.youtube.com/watch*
// @include       https://youtube.*/watch*
// @include          https://youtube-nocookie.com/watch*
// @include          https://*.youtube-nocookie.com/watch*
// @include          https://youtube-nocookie.*/watch*
// @include          https://*.youtube.com/user/*
// @include          https://www.youtube.com/results*
// @include          https://www.youtube.com/*
// @version          $VER: Youtube HTML5 converter 0.95 (19.03.2014)
// @url              http://fabportnawak.free.fr/owb/scripts/Youtube.js
// ==/UserScript==

var startupDelay 500// delay in ms before the script kicks in (lame workaround for lame YouTube behaviour).

/*------------------------------------------------------------------------------------------------------------------*/

function GM_addScript(contentsidisurl) {
    var 
headscript;
    
head document.getElementsByTagName('head')[0];
    if (!
head) { return; }
    
script document.getElementById(id);
    if(
script != undefined) {
        
head.removeChild(script);
    }
    
script document.createElement('script');
    
script.type 'text/javascript';
    
script.id id;
    if(
isurl) {
        
script.src contents
    
} else {
        
script.innerHTML contents;
    }
    
head.appendChild(script);
}

//http://diveintogreasemonkey.org/patterns/add-css.html
function GM_addGlobalStyle(css) {
    var 
headstyle;
    
head document.getElementsByTagName('head')[0];
    if (!
head) { return; }
    
style document.createElement('style');
    
style.type 'text/css';
    try {
        
style.innerHTML css;
    } catch(
x) { style.innerText css; }
    
head.appendChild(style);
}

GM_getValue = function ( cookieNameoDefault ) {
    var 
cookieJar document.cookie.split"; " );
    for( var 
0cookieJar.lengthx++ ) {
        var 
oneCookie cookieJar[x].split"=" );
        if( 
oneCookie[0] == escapecookieName ) ) {
            try {
                var 
footm unescapeoneCookie[1] );
            } catch(
e) { return oDefault; }
            return 
footm;
        }
    }
    return 
oDefault;
};

GM_setValue = function ( cookieNamecookieValuelifeTime ) {
    if( !
cookieName ) { return; }
    if( 
lifeTime == "delete" ) { lifeTime = -10; } else { lifeTime 31536000; }
    
document.cookie escapecookieName ) + "=" escapecookieValue ) + ";expires=" + ( new Date( ( new Date() ).getTime() + ( 1000 lifeTime ) ) ).toGMTString() + ";path=/";
}

function 
GMlog(text) {
    
window.console.log(text);
}

/*------------------------------------------------------------------------------------------------------------------*/

/*
 * pMan preferences manager for greasemonkey scripts
 * http://userscripts.org/scripts/show/71904
 */
var pMan=function(a){var d=this;d.parentElm=null;d.PMan=function(){if(a.elmId)d.parentElm=document.getElementById(a.elmId);else{var c=document.createElement("div");c.style.width="300px";c.style.position="fixed";c.style.left="50%";c.style.marginLeft="-150px";c.style.top="150px";document.getElementsByTagName("body")[0].appendChild(c);d.parentElm=c}};d._save=function(){for(var c=0;c<a.prefs.length;c++){var b=document.getElementById("pManOption"+c);GM_setValue(a.prefs[c].name,b.value)}return false};d._hide= function(){d.parentElm.style.display="none";return false};d._savehide=function(){d._save();d._hide();return false};d.show=function(){for(var c="<div style='"+(a.bordercolor?"border:1px solid "+a.bordercolor+";":"")+(a.color?"color:"+a.color+";":"")+(a.bgcolor?"background-color:"+a.bgcolor+";":"")+"padding:3px;'><div style='font-weight:bold;text-align:center;padding:3px;'>"+(a.title||"")+"</div>",b=0;b<a.prefs.length;b++){c+="<div title='"+(a.prefs[b].description||"")+"'>"+a.prefs[b].name+" <select id='pManOption"b+"'>";for(var e=0;e<a.prefs[b].opts.length;e++)c+="<option value='"+(a.prefs[b].vals?a.prefs[b].vals[e]:a.prefs[b].opts[e])+"'>"+a.prefs[b].opts[e]+"</option>";c+="</select></div>"}c+="<div style='text-align:right'><a href='#' id='pManButtonCancel'>Cancel</a> <a href='#' id='pManButtonSave'>Save</a></div></div>";d.parentElm.innerHTML=c;document.getElementById("pManButtonCancel").addEventListener("click",d._hide,true);document.getElementById("pManButtonSave").addEventListener("click",d._savehidetrue);for(b=0;b<a.prefs.length;b++)document.getElementById("pManOption"+b).value=d.getVal(a.prefs[b].name);d.parentElm.style.display=""};d.getVal=function(c){for(var b=0;b<a.prefs.length;b++)if(a.prefs[b].name==c)return a.prefs[b].vals?GM_getValue(a.prefs[b].name,a.prefs[b].vals[a.prefs[b].defaultVal]):GM_getValue(a.prefs[b].name,a.prefs[b].opts[a.prefs[b].defaultVal]);return"pref default doesnt exist"};d.PMan()};

/*
 * Players
 * The default is the generic player that should work with whatever 
 *  plugin is installed.
 * All should have the following:
 *
 * string name
 * 
 * string desctiption
 * 
 * function init
 * arguments: (none)
 * returns "this" player object
 * 
 * function writePlayer
 * arguments: (string) id of the parent element to fill with player
 *            (string) video url
 *            (string) autoplay (true or false)
 *            (string) width (number and 'px')
 *            (string) height (number and 'px')
 * returns: none
 * 
 * function seek
 * arguments: (int) time to seek to in seconds
 * returns: none
 * (If this doesnt work just use an empty function anyway.)
 */

var playersAvailable = [{
    
name:"HTML5 Player",
    
description:"HTML5 Builtin player",
    
init:function() {
        return 
this;
    },
    
writePlayer:function(parentDivIdurlautoplaywidthheight) {
        var 
parentDiv document.getElementById(parentDivId);
        var 
s_autoplay autoplay "autoplay" "";
        
parentDiv.innerHTML '<video id="movie_player" src="' url '" width="' parseInt(width) + '" height="' parseInt(height) + '"' s_autoplay ' controls></video>';
    },
    
seek:function(seconds) {
        
// should get added someday
    
}
}];

// Unused table, here for reference
var formats = {
    
5:  { itagquality5description"Low Quality, 240p"                 format"FLV"         fres"240p",     mres: { width:  400height:  240 }, acodec"MP3"   vcodec"SVQ"   },
    
17: { itag17quality4description"Low Quality, 144p"                format"3GP"         fres"144p",     mres: { width:  0height0  }, acodec"AAC"   vcodec"" },
    
18: { itag18quality15description"Low Definition, 360p"            format"MP4"         fres"360p",     mres: { width:  480height:  360 }, acodec"AAC"   vcodec"H.264" },
    
22: { itag22quality35description"High Definition, 720p"             format"MP4"         fres"720p",     mres: { width1280height:  720 }, acodec"AAC"   vcodec"H.264" },
    
34: { itag34quality10description"Low Definition, 360p"              format"FLV"         fres"360p",     mres: { width:  640height:  360 }, acodec"AAC"   vcodec"H.264" },
    
35: { itag35quality25description"Standard Definition, 480p"          format"FLV"         fres"480p",     mres: { width:  854height:  480 }, acodec"AAC"   vcodec"H.264" },
    
36: { itag36quality6description"Low Quality, 240p"                  format"3GP"         fres"240p",     mres: { width:  0height:  }, acodec"AAC"   vcodec"" },
    
37: { itag37quality45description"Full High Definition, 1080p"        format"MP4"         fres"1080p",     mres: { width1920height1080 }, acodec"AAC"   vcodec"H.264" },
    
38: { itag38quality55description"Original Definition"             format"MP4"         fres"Orig",     mres: { width4096height3072 }, acodec"AAC"   vcodec"H.264" },
    
43: { itag43quality20description"Low Definition, 360p"              format"WebM"        fres"360p",     mres: { width:  640height:  360 }, acodec"Vorbis"vcodec"VP8"   },
    
44: { itag44quality30description"Standard Definition, 480p"        format"WebM"        fres"480p",     mres: { width:  854height:  480 }, acodec"Vorbis"vcodec"VP8"   },
    
45: { itag45quality40description"High Definition, 720p"             format"WebM"        fres"720p",     mres: { width1280height:  720 }, acodec"Vorbis"vcodec"VP8"   },
    
46: { itag46quality50description"Full High Definition, 1080p"        format"WebM"        fres"1080p",     mres: { width1280height:  720 }, acodec"Vorbis"vcodec"VP8"   },
    
82: { itag82quality16description"Low Definition 3D, 360p"            format"MP4"            fres"360p",        mres: { width640,  height:  360 }, acodec"AAC"     vcodec"H.264" },
    
84: { itag84quality41description"High Definition 3D, 720p"        format"MP4"            fres"720p",        mres: { width1280height:  720 }, acodec"AAC"     vcodec"H.264" },
    
100: { itag100quality17description"Low Definition 3D, 360p"        format"WebM"        fres"360p",     mres: { width640,  height:  360 }, acodec"Vorbis"vcodec"VP8"   },
    
102: { itag102quality42description"High Definition 3D, 720p"        format"WebM"        fres"720p",     mres: { width1280height:  720 }, acodec"Vorbis"vcodec"VP8"   },
    
133: { itag133quality133description"Low Definition, 240p"            format"DASH MP4"    fres"240p",     mres: { width400,  height:  240 }, acodec"",       vcodec"H.264" },
    
134: { itag134quality134description"Low Definition, 360p"            format"DASH MP4"    fres"360p",     mres: { width480,  height:  360 }, acodec"",       vcodec"H.264" },
    
135: { itag135quality135description"Standard Definition, 480p"    format"DASH MP4"    fres"480p",     mres: { width854,  height:  480 }, acodec"",       vcodec"H.264" },
    
136: { itag136quality136description"High Definition, 720p"        format"DASH MP4"    fres"720p",     mres: { width1280height:  720 }, acodec"",       vcodec"H.264" },
    
137: { itag137quality137description"Full Definition, 1080p"        format"DASH MP4"    fres"1080p",     mres: { width1920height1080 }, acodec"",       vcodec"H.264" },

    
139: { itag139quality139description"Low Bitrate, 48k"                format"DASH MP4"    fres"48k",         mres: { width0height:},          acodec"AAC",    vcodec"" },
    
140: { itag140quality140description"Standard Bitrate, 128k"        format"DASH MP4"    fres"128k",     mres: { width0height:},          acodec"AAC",    vcodec"" },
    
141: { itag141quality141description"High Bitrate, 256k"            format"DASH MP4"    fres"256k",     mres: { width0height:},          acodec"AAC",    vcodec"" },
    
160: { itag160quality160description"High Bitrate, 192k"            format"DASH MP4"    fres"192k",     mres: { width0height:},          acodec"H.264",  vcodec"" },
    
171: { itag171quality171description"Standard Bitrate, 128k"        format"DASH Vorbis"    fres"128k",     mres: { width0height:},          acodec"OGG",    vcodec"" },
    
172: { itag12,  quality172description"High Bitrate, 192k"            format"DASH Vorbis"    fres"192k",     mres: { width0height:},          acodec"OGG",    vcodec"" },
    }
    
var 
orderedformats = [];

var 
success false;

//////////////////////////////////////////////////////////

function qr(sr) {
  var 
qa = [];
  var 
params sr.split('&');
  for (
0params.lengthi++) {
    
prs params[i];
    var 
pra prs.split('=');
    
qa[pra[0]] = pra[1];
  }
  return 
qa;
}

function 
dc(sg) {
  var 
xhr = new XMLHttpRequest();
  
/* cors-anywhere.herokuapp.com */
  
px 'allow-any-origin.appspot.com/https:';
  
xhr.open('get''https://' px ytplayer.config.assets.jsfalse);
  
xhr.send();
  var 
rpt xhr.responseText;
  var 
fcnm rpt.match(/signature=([^(]+)/)[1];
  var 
fs = new RegExp('function ' fcnm '[^}]+}[^}]+}');
  eval(
rpt.match(fs)[0]);
  return eval(
fcnm '("' sg '")');
}

////////////////////////////////////////////////////////////////////////////////////

function parseLink(urltitlenum){
   
/*
    * Check for expected params and rebuild link
    * http entry - required (ex http://123.a-z.youtube.com/videoplayback?key=yt1)
    * fallback_host - required
    * itag - required (exclude duplicate)
    * sig(nature) - required
    * sver - required
    * sparams - required
    * cp - required
    * upn - required
    * ms - required
    * ipbits - required
    * gcr - required
    * ratebypass - required
    * source - required
    * mv - required
    * expire - required
    * ip - required
    * newshard - required
    * mt - required
    * fexp - required
    * quality - not needed
    * type - not needed
    */

    
var zztmp "";
    
url decodeURIComponent(url);
    
url url.replace("url=""").replace("sig=""signature=");
    if (
url.indexOf("http") != -1) {
        
zztmp url.split("&");
        
url "";
        for (var 
0zztmp.length++)    {
            if (/^(
type)/.test(zztmp[j])) {
            } else {
                if (/^(
http)/.test(zztmp[j])) {
                    
url zztmp[j] + url;
                } else {
                    
url url "&" zztmp[j];
                }
            }
        }

        
pattern = /itag=([0-9]+)/ig;
        
matches url.match(pattern);
        
itag matches[0].replace(pattern"$1");
        
orderedformats[num] = {};
        
orderedformats[num]["itag"] = itag;

        
url encodeURI(url);
        
url url.replace(/%5Cu0026/ig"&");
        
url url.replace(/%252C/ig",");
        
url url.replace(/\&itag=[0-9]+/ig"");
        
url url "&itag=" itag "&begin=0";
        
        
GMlog(url);
        
        
orderedformats[num]["url"] = url;
        
orderedformats[num]["itag"] = itag;
        
orderedformats[num]["title"] = title;
    }
}

function 
getFormatName(quality) {
    var 
ret "(" quality.toString() + ") unknown";
    switch(
quality)
    {
        case 
5:
            
ret "(" quality.toString() + ") FLV H.263 400x240";
            break;
        case 
34:
            
ret "(" quality.toString() + ") FLV H.264 640x360";
            break;    
        case 
35:
            
ret "(" quality.toString() + ") FLV H.264 854x480";
            break;    
        case 
18:
            
ret "(" quality.toString() + ") MP4 H.264 640x360";
            break;    
        case 
22:
            
ret "(" quality.toString() + ") MP4 H.264 1280x720";
            break;    
        case 
37:
            
ret "(" quality.toString() + ") MP4 H.264 1920x1080";
            break;    
        case 
38:
            
ret "(" quality.toString() + ") MP4 H.264 4096x3072";
            break;    
        case 
43:
            
ret "(" quality.toString() + ") WEBM VP8 640x360";
            break;    
        case 
44:
            
ret "(" quality.toString() + ") WEBM VP8 854x480";
            break;    
        case 
45:
            
ret "(" quality.toString() + ") WEBM VP8 1280x720";
            break;
        case 
46:
            
ret "(" quality.toString() + ") WEBM VP8 1920x1080";
            break;
        case 
17:
            
ret "(" quality.toString() + ") 3GP MP4 176x144";
            break;                                                                                                        
    }
    return 
ret;
}

function 
getFormatExtension(quality) {
    var 
ret ".unknown";
    switch(
parseInt(quality))
    {
        case 
5:
            
ret ".flv";
            break;
        case 
34:
            
ret ".flv";
            break;    
        case 
35:
            
ret ".flv";
            break;    
        case 
18:
            
ret ".mp4";
            break;    
        case 
22:
            
ret ".mp4";
            break;    
        case 
37:
            
ret ".mp4";
            break;    
        case 
38:
            
ret ".mp4";
            break;    
        case 
43:
            
ret ".webm";
            break;    
        case 
44:
            
ret ".webm";
            break;    
        case 
45:
            
ret ".webm";
            break;
        case 
46:
            
ret ".webm";
            break;
        case 
17:
            
ret ".3gp";
            break;                                                                                                        
    }
    return 
ret;
}


function 
getHTML5Object()
{
    var 
ret null;
    
    var 
elements document.getElementsByTagName("video");

    if(
elements.length 0)
    {
        var 
element elements[0]; 

        if(
element.className == "video-stream html5-main-video")
        {
            
ret element;
        }
    }
    
    return 
ret;
}

function 
isUselessHTML5Object(obj)
{
    return 
obj == null || obj.src == "";
}

function 
getFlashObject()
{
    var 
ret null;
    
    var 
element document.getElementById("movie_player");
    
    if(
element && element.attributes['flashvars'])
    {
        
ret element;
    }
    
    return 
ret;
}

function 
runScript() {

if(
success)

    return;
}

if(!
HTML5obj && !Flashobj)
    return;

var 
views document.getElementById('watch-ratings-views');

if(!
views)
    
views document.getElementById('watch7-views-info');
    
if(!
views)
    
views document.getElementById('playnav-video-details');

if(!
views)
    return;

var 
prefloc document.createElement("div");

prefloc.style.width "300px";
prefloc.style.margin "auto";
prefloc.id "ywofpreferences";
    
views.parentNode.insertBefore(preflocviews);

var 
prefMan = new pMan({
    
title:"Youtube HTML5 Converter Preferences",
    
color:"black",
    
bgcolor:"white",
    
bordercolor:"black",
    
prefs:[
        {
            
name:"Default Quality",
            
description:"If the default quality is not available the next best quality video will be played",
            
opts:[    getFormatName(5),getFormatName(34),getFormatName(35),
                    
getFormatName(18),getFormatName(22),getFormatName(37),getFormatName(38),
                    
getFormatName(43),getFormatName(44),getFormatName(45),getFormatName(46),
                    
getFormatName(17),
                    
"Flash"
                 
],
            
vals:["5","34","35","18","22","37","38","43","44","45","17","Flash"],
            
defaultVal:3
        
},{
            
name:"Autoplay",
            
description:"",
            
opts:["On","Off"],
            
vals:["true","false"],
            
defaultVal:0
        
},{
            
name:"Player Size",
            
description:"The size of the player",
            
opts:["small","big"],
            
defaultVal:0
        
}
    ],
    
elmId:"ywofpreferences"
});

// Add css for links.
// This is probably the best way to make text look like links, using the
// normal ways wont work in GM because there is nowhere to put 
// "return false;" in the link.
GM_addGlobalStyle(".link{color:#0033CC;}" 
        
".link:hover{cursor: pointer; text-decoration:underline;}");

var 
defaultQuality prefMan.getVal("Default Quality");

// Retrieve direct links

GMlog("Available YouTube direct links:");

var 
urlsAvailable = new Array();
var 
formatsAvailable = new Array();
var 
titlesAvailable = new Array();

// Retrieving direct links
var args ytplayer.config.args;
0;

stream_maps = new Array(args.url_encoded_fmt_stream_mapargs.adaptive_fmts);
for (
0stream_maps.lengthj++) {
  var 
ft stream_maps[j];
  if(
ft)
  {
      var 
ft_params ft.split(',');
      for (
0ft_params.lengthk++) {
        
ft_params[k];
        var 
qs qr(z);
        var 
href unescape(qs.url);
        try 
        {
            if(
qs.itag <= 130)
            {
                if (
qs.sig)
                  
href += '&signature=' qs.sig;
                if (
qs.s)
                  
href += '&signature=' dc(qs.s);
                  
                
parseLink(hrefargs.titlei++);
            }
        }
        catch(
e)
        {
        }        
      }
  }
}

var 
default_url "";
for (var 
0orderedformats.length++) {    
    
urlsAvailable[i] = orderedformats[i]["url"];
    
formatsAvailable[i] = orderedformats[i]["itag"];
    
titlesAvailable[i] = orderedformats[i]["title"] + getFormatExtension(orderedformats[i]["itag"]);
        
    if(
orderedformats[i]["itag"] == "18")
    {
        
default_url orderedformats[i]["url"];
    }
}

GMlog("HTML5 "+HTML5obj+" Flash "+Flashobj);

if(!
isUselessHTML5Object(HTML5obj))
{
    
success true;
}
else if(
Flashobj || isUselessHTML5Object(HTML5obj))
{
    var 
playerDiv null;
    
    if(!
playerDiv)
        
playerDiv document.getElementById("player-api");        
        
    
// Last attempt, try replacing useless Youtube's HTML5 player.
    
if(!playerDiv && isUselessHTML5Object(HTML5obj))
        
playerDiv document.getElementById("movie_player");

    var 
playerDivLoad playerDiv.innerHTML// For restoring flash.
    
var activePlayer playersAvailable[0].init();

    if(
defaultQuality != "flash") {
        
// If they don't want flash clear it asap so it doesn't start autoplaying.
        
playerDiv.innerHTML "";
    }

    function 
writePlayer(quality) {

        var 
width  "640px";
        var 
height "388px";
        
        var 
qualityId = -1;
        for(
0i<formatsAvailable.lengthi++)
        { 
            if(
formatsAvailable[i] == quality)
            {
                
qualityId i;
                break;
            }
        }

        
activePlayer.writePlayer(playerDiv.id,
                
urlsAvailable[qualityId],
                
prefMan.getVal("Autoplay"),
                
width,
                
height);
    }

    function 
restoreFlash() {
        
playerDiv.innerHTML playerDivLoad;
    }

    var 
haveFlash;
    var 
noplayerDiv document.getElementById("watch-noplayer-div");
    if(
noplayerDiv == null) {
        
haveFlash true;
    } 
    else {
        
haveFlash false;
    }

    var 
linkbar document.createElement("div");
    var 
linkViewFlash "";
    var 
linkViewPreferences "";
    var 
downloadLinks "";
    var 
playLinks "";

    for(var 
0formatsAvailable.lengthi++) {
        if(
typeof(urlsAvailable[i]) != "undefined") {
            
downloadLinks += '| <a href="' urlsAvailable[i] + '" download="' titlesAvailable[i] + '">' 
                    
formatsAvailable[i].toString() + '</a> ';
            
            
playLinks += '| <a class="link" id="play' formatsAvailable[i] + '">' 
                    
formatsAvailable[i].toString() + '</a> ';
        }
    }

    if(
haveFlash) {
        
linkViewFlash '<br/><a class="link" id="restoreFlash">View Flash</a>';
    }

    
linkViewPreferences '<a class="link" id="preferencesLink">Preferences</a>';
    
linkbar.innerHTML '<div id="dlbar" style="padding-top: 8px;">'
        
'Download '
        
downloadLinks
        
'<br/>View as HTML5 '
        
playLinks
        
linkViewFlash
        
'<div style="float:right;">' linkViewPreferences '</div>'
        
'</div>';

    
views.parentNode.insertBefore(linkbar,views);

    for(var 
0formatsAvailable.lengthi++) {
        if(
typeof(urlsAvailable[i]) != "undefined") {
            var 
playLink document.getElementById('play' formatsAvailable[i]);
            var 
writePlayerFunction = function(qual) {
                return function (
event) {
                    
writePlayer(qual);
                };
            };
            
playLink.addEventListener("click"writePlayerFunction(formatsAvailable[i]), true);
        }
    }

    if(
haveFlash) {
        var 
restoreFlashLink document.getElementById('restoreFlash');
        
restoreFlashLink.addEventListener("click"restoreFlashtrue);
    }

    var 
preferencesLink document.getElementById('preferencesLink');
    
preferencesLink.addEventListener("click"prefMan.showtrue);


    
// Finally, write the player, if the desired format is not available we 
    // keep going down in quality until we find one.

    
if(defaultQuality != "flash") {

        var 
defaultQualityId = -1;
        
        for(
0formatsAvailable.lengthi++)
        { 
            if(
formatsAvailable[i] == parseInt(defaultQuality))
            {
                
defaultQualityId i;
                break;
            }
        }

        if(
defaultQualityId 0)
            
format 18// Try to force it anyway
        
else
            
format formatsAvailable[defaultQualityId]; 
            
        
writePlayer(format);    
    }    

    
// Make sure we remove explicitely the HTMLMediaElement, since it can be leaked in some cases
    
function pageUnloaded()
    {
        
playerDiv.removeChild(playerDiv.firstChild);
    }

    
window.addEventListener("unload"pageUnloadedfalse);
    
    
success=true;    
}    

}

var 
timer;
var 
HTML5obj getHTML5Object();
var 
Flashobj getFlashObject();

// Wait until HTML5 player is there to run the script.
function checkHTML5Object()
{
    
HTML5obj getHTML5Object();

    if(
HTML5obj)
    {
        
FlashObj null;
    
        
runScript();
        
window.clearInterval(timer);
    }
}

timer window.setInterval(checkHTML5Object500);

function 
handleBeforeLoadEvent(event) {
    var 
element event.target;

    if(
element instanceof HTMLEmbedElement
    {
        
runScript();
    }
}

document.addEventListener("beforeload"handleBeforeLoadEventtrue);

function 
startup()
{
    if(
Flashobj)
    {
        
// Erase it, this will cause the Flash element to be loaded again, caught in beforeloadevent.
        
var obj document.getElementById("player-api");
        if(
obj)
            
obj.innerHTML "";
    }
}

startup();


4. YouTube Fullscreen Fix
// ==UserScript==
// @name          YouTube Fullscreen Fix
// @namespace     none
// @description   Enables overlay for YouTube HTML5 player. In normal mode, click "fullscreen" or "large player" button. In embedded mode, click settings button. Also replaces youtube links so that the page is reloaded and userscripts still work after clicking another video.
// @include       http://youtube.*/watch*
// @include       http://*.youtube.com/watch*
// @include       http://www.youtube.com/embed/*
// @include       https://youtube.*/watch*
// @include       https://*.youtube.com/watch*
// @include       https://www.youtube.com/embed/*
// @include          http://www.youtube.com/results*
// @include          https://www.youtube.com/results*
// @include          http://www.youtube.com/*
// @include          https://www.youtube.com/*
// @include          https://m.youtube.com/*
// @version       $VER: Youtube Fullscreen Fix 1.20 (02.07.2020)
// ==/UserScript==

var embedded document.location.href.indexOf("/embed/") !== -1;
var 
allHTMLTags document.getElementsByTagName("*");
var 
found false;
var 
activeVideo "";

function 
goFullscreen(e)
{
    
e.preventDefault();
    
e.stopPropagation();

    for (
i=0allHTMLTags.lengthi++)
    {
        if(
allHTMLTags[i].className == "video-stream html5-main-video" && allHTMLTags[i].src != "")
        {
            
allHTMLTags[i].webkitEnterFullScreen();
        }
    }

    return 
false;
}

function 
bindEvent()
{
    if(!
found)
    {
        for (
i=0allHTMLTags.lengthi++)
        {
            var 
name allHTMLTags[i].className;
            var 
rel  allHTMLTags[i].getAttribute("rel");

            
// Bind fullscreen to large size button
            
if (name && name.length && name.search("ytp-size-button") != -1)
            {
                
found true;
                
allHTMLTags[i].addEventListener('click'goFullscreentrue);
            }
            else if (
name && name.length && name.search("ytp-fullscreen-button") != -1)
            {
                
found true;
                
allHTMLTags[i].addEventListener('click'goFullscreentrue);
            }
            
// Add fullscreen button of mobile version of YouTube
            
else if (name && name.length && name.search("fullscreen-icon") != -1)
            {
                
found true;
                
allHTMLTags[i].addEventListener('click'goFullscreentrue);
            }
            
// Since FS icon is not shown in embedded mode, we use this one instead...
            
else if (embedded && name && name.length && name.search("ytp-settings-button") != -1
            {
                
found true;
                
allHTMLTags[i].addEventListener('click'goFullscreentrue);
            }
            
// Force youtube to reload when selecting links in related videos, so that this script is reloaded again
            
else if(rel && rel.length && rel.search("spf-prefetch") != -1)
            {
                
allHTMLTags[i].setAttribute("rel"rel.replace("spf-prefetch"""));
            }
            
// Force youtube to reload when selecting links in related videos, so that this script is reloaded again
            
else if(name && name.length && name.search("spf-link") != -1)
            {
                
allHTMLTags[i].className allHTMLTags[i].className.replace("spf-link""");
            }
        }
    }
    else
    {
        if(
document.getElementById("movie-player").firstElementChild.firstElementChild.src)
        {
            if(
document.getElementById("movie-player").firstElementChild.firstElementChild.src !== activeVideo)
            {
                
activeVideo document.getElementById("movie-player").firstElementChild.firstElementChild.src;    
                var 
found false;
            }
        }
        
window.clearInterval(timer_fix);
    }
}

// Lame workaround
var timer_fix window.setInterval(bindEvent1000);


I have not modified any of these scripts.

In my "URL Preferences" I have an entry for:
"https://www.youtube.com/":
- JavaScript Support (Enabled)
- Load images automatically (Enabled)
- Plugins (Enabled)
- Enable local storage (Enabled)
Spoof As: IPad 6.1
Cookie Policy: Accept. Cookie Name Filter: .*

I have a bookmark named "YouTube" who address is: "https://www.youtube.com/"

For me, the reproducible steps:
1 - Start the X5000
2 - Open Odyssey
3 - Click on the "YouTube" bookmark
4 - When the site loads click the YouTube search button
5 - Notice that I get a pop up saying "newlib.library error: exit() of process 125 called from wrong process 198, using
IExec->RemTask(NULL)"

I can also sometimes reproduce it when instead of doing step 4 I just click on one of the videos that pops up.

newlib.library error: exit() of process 125 called from wrong process 198using
 IExec
->RemTask(NULL)
[
DOSNOTERemTask()->ResourceHook doing full cleanup for PPC program #198 "[OW
BMediaPlayer"
[DOS] NOTE: CleanupProcess() is now deleting proc #198 ('[OWB] MediaPlayer')
[DOS] NOTE: CleanupProcess() removing from proc list #198 ('[OWB] MediaPlayer')
[DOS] NOTE: CleanupProcess() unlocking the CD for proc #198 ('[OWB] MediaPlayer'
)
[DOS] NOTE: CleanupProcess() unlocking the PD for proc #198 ('[OWB] MediaPlayer'
)
[DOS] NOTE: CleanupProcess() closing COS for proc #198 ('[OWB] MediaPlayer')
[DOS] NOTE: CleanupProcess() closing CIS for proc #198 ('[OWB] MediaPlayer')
[DOS] NOTE: CleanupProcess() freeing localvars for proc #198 ('[OWB] MediaPlayer
')
[DOS] NOTE: CleanupProcess() clearing; tc_Flags/tc_Launch/tc_Switch for proc #19
8 ('[OWB] MediaPlayer')
[DOS] NOTE: CleanupProcess empty RestoreList for proc #198 ('[OWB] MediaPlayer')

[DOS] NOTE: CleanupProcess() freeing ETask's DOS nodes for proc #198 ('[OWB] Med
iaPlayer')
[DOS] NOTE: CleanupProcess() checking for children of proc #198 ('[OWB] MediaPla
yer')
[DOS] NOTE: CleanupProcess() freeing launch-seglist for proc #198 ('[OWB] MediaP
layer')
[DOS] NOTE: CleanupProcess() sending DeathMessage 0x61CF8ED8 for proc #198 ('[OW
B] MediaPlayer')
[DOS] NOTE: CleanupProcess() now exiting for proc #198 ('[OWB] MediaPlayer')
[DOS]...bye !!


Will I need to use debuglevel=20 in combination with the debug kernel to get even more information?

If liberty means anything at all, it means the right to tell people what they do not want to hear.
George Orwell.
Go to top

  Register To Post

 




Currently Active Users Viewing This Thread: 1 ( 0 members and 1 Anonymous Users )




Powered by XOOPS 2.0 © 2001-2024 The XOOPS Project