Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

[HTML][Greasemonkey]Youtube movies in low quality

Pagina: 1
Acties:
  • 258 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik ben bezig wat PC's voor een school te installeren maar ze zijn nogal traag. De youtube filmpjes spelen alleen zonder schokken als ze op low-quality staan. Zelfs full-screen doen ze het dan goed.

Helaas is er geen registry-entry om de Flash rendering standaard op low-quality te zetten. :|

Nu ben ik aan de slag gegaan om met Greasemonkey <param name="quality" value="low"> binnen de <EMBED> tag toe te voegen. Maar dit heeft geen invloed.

Ook
code:
1
 document.getElementById('movie_player').setAttribute("quality", "low" );
werkt niet :?

Kan iemand mij helpen?

Verwijderd

wanneer roep je die code aan? want het zou moeten werken lijkt me zo (de laatste code iig, want embed doet het met een attribuut)

Verwijderd

Topicstarter
Dat is het volledig Greasemonkey script wat ik heb staan, dus ik denk net voor de onload?

JavaScript:
1
2
3
4
5
6
7
8
9
10
// ==UserScript==
// @name           TestLowQuality
// @namespace      userscripts.org
// @description    Youtube Low quality
// @include        http://www.youtube.com/watch*
// @include        http://youtube.com/watch*
// @include        http://*.youtube.com/w*
// ==/UserScript==
document.getElementById("checker").setAttribute("quality", "low" );
document.getElementById("movie_player").setAttribute("quality", "low" );

[ Voor 82% gewijzigd door Verwijderd op 25-12-2007 15:41 . Reden: Laatste versie van mijn code erbij gezet ]


  • djiwie
  • Registratie: Februari 2002
  • Laatst online: 10:02

djiwie

Wie?

Is de Flash player niet al geladen met de verkeerde (hoge kwaliteit) instelling, op het moment dat GreaseMonkey wordt uitgevoerd?

Verwijderd

Topicstarter
Misschien; ik heb niet zoveel verstand van hoe GreaseMonkey werkt. Kan je de attributen dan vanuit JavaScript achteraf dan aanpassen als de movie al speelt?

Als ik de speler selecteer en dan in dat gedeelte van de source kijk zie ik wel alles netjes op "low" staan. Helaas is het filmpje dan nog steeds in high quality.

[ Voor 34% gewijzigd door Verwijderd op 25-12-2007 15:35 ]


  • djiwie
  • Registratie: Februari 2002
  • Laatst online: 10:02

djiwie

Wie?

Dan lijkt het me dat de Flash player al geladen wordt met de oorspronkelijke instellingen (hoog) en dat het attribuut pas daarna door GreaseMonkey wordt aangepast. Flash doet dan niets meer met het attribuut uit de DOM, de boel is tenslotte al geïnitialiseerd.

Verwijderd

Topicstarter
Okay, dat begrijp ik.

Maar hoe is dat dan op te lossen?

Verwijderd

ik krijg eerder de indruk dat het andersom is, dat de embed nog niet bestaat. Als ik met firebug de quality aanpast, werkt het gewoon, zelfs als de film al loopt (dan herlaadt ie)

onload dus aanroepen lijkt me

Verwijderd

Topicstarter
Verwijderd schreef op woensdag 26 december 2007 @ 11:44:
ik krijg eerder de indruk dat het andersom is, dat de embed nog niet bestaat. Als ik met firebug de quality aanpast, werkt het gewoon, zelfs als de film al loopt (dan herlaadt ie)

onload dus aanroepen lijkt me
Oh, dat verklaart een boel. _/-\o_
Hoe kan je het bij de onload aanroepen met GreaseMonkey?
Of kan je het ook automatiseren met FireBug?

Dit heb ik al geprobeerd:
JavaScript:
1
2
3
4
5
6
7
8
9
// ==UserScript==
// @name           TestLowQuality
// @namespace      userscripts.org
// @description    Youtube Low quality
// ==/UserScript==
window.addEventListener("load", function(e) {
    document.getElementById("checker").setAttribute("quality", "low" );
    document.getElementById("movie_player").setAttribute("quality", "low" );
}, false);


En deze variant:
JavaScript:
1
2
3
4
5
6
7
8
9
// ==UserScript==
// @name           TestLowQuality
// @namespace      userscripts.org
// @description    Youtube Low quality
// ==/UserScript==
document.body.setAttribute("onload", '
    document.getElementById("checker").setAttribute("quality", "low" );
    document.getElementById("movie_player").setAttribute("quality", "low" );
    '); 

[ Voor 48% gewijzigd door Verwijderd op 26-12-2007 15:34 . Reden: Code erin geplakt. ]


  • Kiphaas7
  • Registratie: Februari 2005
  • Laatst online: 15:59
Ik weet niet veel van dit alles, maar ik zie wel al een rood lijntje in de code highlighter in je tweede voorbeeld. Syntax foutje dus?

Verwijderd

Topicstarter
Kiphaas7 schreef op woensdag 26 december 2007 @ 18:54:
Ik weet niet veel van dit alles, maar ik zie wel al een rood lijntje in de code highlighter in je tweede voorbeeld. Syntax foutje dus?
Neeh, dat is geen syntax foutje.

Omdat ik het wat netter wilde uitlijnen heb ik de regels tussen de enkele quotes op twee regels gezet.
De parser van tweakers.net ziet niet dat de twee quotes bij elkaar horen maar in JavaScript geeft dat geen problemen (daar had ik het trouwens wél op één lijn staan).

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 16:04

crisp

Devver

Pixelated

Verwijderd schreef op woensdag 26 december 2007 @ 19:02:
[...]

Neeh, dat is geen syntax foutje.

Omdat ik het wat netter wilde uitlijnen heb ik de regels tussen de enkele quotes op twee regels gezet.
De parser van tweakers.net ziet niet dat de twee quotes bij elkaar horen maar in JavaScript geeft dat geen problemen (daar had ik het trouwens wél op één lijn staan).
Dat geeft in javascript wel degelijk problemen ;)

Maar anyway, hou je er rekening mee dat YouTube in feite geen object/embed elementen op z'n pagina's heeft staan maar SWFObject gebruikt?

HTML:
1
2
3
4
5
6
7
<script type="text/javascript">
    // <![CDATA[
    writeMoviePlayer("playerDiv");
    var to = new SWFObject("/version-check.swf", "checker", "0", "0", "0", "#FFFFFF");
    to.write("checkerDiv");
    // ]]>
</script>


writeMoviePlayer() is de functie die uiteindelijk SWFObject gebruikt om een object of embed aan te maken voor het filmpje zelf, ik denk dat je daar somehow een fo.addParam("quality","low"); aan toe moet zien te voegen (geen idee of dat kan met GreaseMonkey though).

Na het initialiseren van flash-objecten ben je overgeleverd aan de mogelijkheden die de flash-api aan javascript exposeert, maar daar zal vast ook wel een setQuality() method bijzitten ;)

Intentionally left blank


Verwijderd

Topicstarter
crisp schreef op donderdag 27 december 2007 @ 00:01:
[...]writeMoviePlayer() is de functie die uiteindelijk SWFObject gebruikt om een object of embed aan te maken voor het filmpje zelf, ik denk dat je daar somehow een fo.addParam("quality","low"); aan toe moet zien te voegen (geen idee of dat kan met GreaseMonkey though).
Zoiets deed ik maar dat werkte dus niet.
Na het initialiseren van flash-objecten ben je overgeleverd aan de mogelijkheden die de flash-api aan javascript exposeert, maar daar zal vast ook wel een setQuality() method bijzitten ;)
Dit zou de oplossing kunnen zijn, alleen is de documentatie die ik heb kunnen vinden zeer onduidelijk. Ik heb al van alles geprobeerd maar nog steeds geen succes.

Dit werkt ook niet:
JavaScript:
1
document.getElementById("checker").sendEvent("quality", "low");

Ik heb het gevoel dat ik heel close zit en dat met één regel code het op te lossen moet zijn.

[ Voor 11% gewijzigd door Verwijderd op 27-12-2007 17:19 ]


Verwijderd

Topicstarter
Maandag wil ik die PC's afleveren alleen staat er dit probleem nog open.

Is er iemand die me please hiermee wil helpen? Ik vermoed dat het simpel is voor een Javascript/Flash wizzard maar voor mij is het onoplosbaar. :/

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 16:04

crisp

Devver

Pixelated

Sowieso moet je niet de checker hebben maar movie_player ;)

Anyway, er lijken tegenwoordig geen standaard methods meer te zijn die exposed worden aan JS als je daarvoor geen support hebt ingebouwd mbv JSFL. Het enige dat ik nog kan bedenken is door met GreaseMonkey een replace te doen op de innerHTML van de 'playerDiv' div, iets als:

JavaScript:
1
document.getElementById('playerDiv').innerHTML.replace(/quality="high"/,'quality="low"');

De vraag is of dat nog iets uitmaakt als de player al geinitialiseerd is...

Intentionally left blank


  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 19-11 18:15

Sebazzz

3dp

Misschien een andere aanpak: Je zoek op welk swf bestand wordt aangeroepen, je hide het en zet er zelf iets voor in de plaats, en daarvan kan je uiteraard wél de parameters aanpassen.

[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]

Pagina: 1