Youtube embed code

Long story short, Adrian Boioglu era nemulțumit că youtube nu are povestea cu embed la îndemână, trebuind să facă vreo două-trei click-uri pentru a lua codul respectiv. Prin urmare… Iată o rezolvare relativ simplă: un script greasemonkey.

E făcut în viteză maximă, căci timpul e scurt. Nu detectează dacă un film poate sau nu poate fi embeded. Probleme, sugestii, comentarii?

// ==UserScript==
// @name            youtube embed
// @namespace      youtube.com
// @include        http://www.youtube.com/*
// ==/UserScript==
// author: Ionut Staicu
// author URI: https://www.iamntz.com


	function parseURL(url) {
	  var a =  document.createElement('a');
	  a.href = url;
	  return {
	      source: url,
	      protocol: a.protocol.replace(':',''),
	      host: a.hostname,
	      port: a.port,
	      query: a.search,
	      params: (function(){
          var ret = {},
              seg = a.search.replace(/^\?/,'').split('&'),
              len = seg.length, i = 0, s;
          for (;i<len;i++) {
              if (!seg&#91;i&#93;) { continue; }
              s = seg&#91;i&#93;.split('=');
              ret&#91;s&#91;0&#93;&#93; = s&#91;1&#93;;
          }
          return ret;
      })(),
      file: (a.pathname.match(/\/(&#91;^\/?#&#93;+)$/i) || &#91;,''&#93;)&#91;1&#93;,
      hash: a.hash.replace('#',''),
      path: a.pathname.replace(/^(&#91;^\/&#93;)/,'/$1'),
      relative: (a.href.match(/tp:\/\/&#91;^\/&#93;+(.+)/) || &#91;,''&#93;)&#91;1&#93;,
      segments: a.pathname.replace(/^\//,'').split('/')
	  };
	}

	var current_movie = window.location.href,
			url = parseURL(current_movie),
			movieTitle = document.getElementById('watch-headline-title').innerHTML,
			movieHeight = document.getElementById('movie_player').height;
	
	var embed_code = '&lt;iframe title="'+movieTitle+'" width="640" height="'+movieHeight+'" src="<strong>http://www.youtube.com/embed/'+url.params.v+'</strong>" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;';
	var embed_pop = document.createElement('div');
	embed_pop.style.marginTop = '10px';
	embed_pop.style.marginBottom = '10px';
	embed_pop.style.border = '1px solid #ccc';
	embed_pop.style.background = '#fff';
	embed_pop.style.padding = '10px';
	embed_pop.innerHTML = embed_code;
	
	document.getElementById('watch-info').appendChild(embed_pop);

4 Comentarii to “Youtube embed code”

  1. Poate te ajuta yt:accessControl din API ca sa rezolvi problema cu embed-ul.

  2. ionut, am si eu un cod simplu pentru filme youtube pe care vreau sa il implementez la mine pe blog, insa nu stiu unde sa introduc acest cod pentru ca blogul este pe platforma php si imi cam prin urechile cu php
    ideea e ca codul este pentru platforma BBcode , blogul meu este cam pe acelasi sistem, putin diferit dar asemanator.
    am incercat sa pun acel cod in index-ul template-ului dar imi da eroare de php

    crezi ca ma poti ajuta daca ai timp cumva sa pot implementa acest cod la mine pe blog?
    daca crezi ca nu ma poti ajuta gratuit atunci poate imi faci un pret, dar te rog nu exagera
    merci si astept raspunsul tau

    //edit (un soi de “merge”)
    tot nu vrea sa mearga, scuze pentru graselile de ortografie, am tastatura in germana si ma incurca foarte tare
    oricum uite un link cu ce vreau sa implementez

  3. Nu trebuie sa parsezi tot html-ul paginii pentru a afla codul embed. Youtube, ca si vimeo sau alti jucatori mari din piata videosharing au implementat oembedul.
    http://oembed.com/
    Deci tot ce trebuie sa faci este sa faci un request la http://www.youtube.com/oembed?url=%5B%5BURL%5D%5D&format=json si sa parsezi jsonul de acolo.
    Asta o sa te ajute si daca o sa vrei mai tarziu de ex sa extinzi scriptul si pentru alte site-uri.

  4. Staicu Ionuț-Bogdan

    @Dan: wow, habar n-aveam. Mulțumesc, mă ajută foarte mult!

Show trackbacks

Ți-a plăcut articolul? Lasă un comentariu!

You can insert code snippets using BBcode:
[js].[/js] [html].[/html] [php].[/php] [css].[/css]
You can also use some HTML tags:
<blockquote>.</blockquote> <code>.</code> <a href="">.</a> <strong>.</strong> <em>.</em>