Author Topic: Ad ognuno il suo!  (Read 2845 times)

0 Members and 2 Guests are viewing this topic.

Offline genuzzu

  • Solista
  • *****
  • Posts: 1854
  • Reputazione dell'utente: +29/-0
  • Gender: Male
Ad ognuno il suo!
« on: May 22, 2009, 06:48:33 PM »
Siccome ognuno vorrebbe una diversa impostazione grafica del forum, che ne dite di creare uno script per greasemonkey? Greasemonkey è un addon per firefox (perchè usate FF, vero?!?) che permette di modificare l' aspetto di un sito. Il suo linguaggio di programmazione è il js (JavaScript) e quindi molto conosciuto. Ci sarà un programmatore qui dentro, no? Ecco un' esempio Di Script Per GM che consente di scaricare i video da facebook:
Quote
scr_meta=<><![CDATA[
// ==UserScript==
// @name           Facebook Video
// @namespace      sizzlemctwizzle
// @description    Adds links to download or convert videos with Zamzar.com, and provides code to embed videos in other sites.
// @version        2.2.2
// @include        http://*.facebook.com/*
// ==/UserScript==
]]></>;

// Copyleft Michael Medley <medleymind@gmail.com>, All Wrongs Reserved
function get_values(swfid) {
  // Get the Video url
  values = new Array();
  if (unsafeWindow[swfid].getVariable('highqual_src')) { // Get High Quality if available
    src = unsafeWindow.getVariable('highqual_src');
    unsafeWindow.addVariable("video_src", unsafeWindow.getVariable('highqual_src'));
  } else { // Default to Low Quality if unavailable
    src = unsafeWindow.getVariable('video_src');
  }
  values[0] = decodeURIComponent(src);
  values[1] = "http://www.zamzar.com/url/?u=" + src;
  return values;
}

function addGlobalStyle(css) {
  var head, style;
  head = document.getElementsByTagName('head')[0];
  if (!head) { return; }
  style = document.createElement('style');
  style.type = 'text/css';
  style.innerHTML = css;
  head.appendChild(style);
}

function $(element) { return document.getElementById(element); }
function insertAfter(node, after) { after.parentNode.insertBefore(node, after.nextSibling);}

// Get the abosolute url of the current page
function current_url() {
  if (window.location.hash.match(/\.php/)) {
      return 'http://'+window.location.host+window.location.hash.split('#')[1];
  } else if (window.location.href.indexOf('#') != -1) {
      return window.location.hash.split('#')[0];
  } else {
    return window.location.href;
  }
}

// Get the Emebd Code using Ajax
function get_code(swfid, callback) {
  if (!code) {
    var xmlhttp =  new XMLHttpRequest();
    xmlhttp.open("POST", "http://www.facebook.com/ajax/video/embed.php", true);
    var params = "vid="+unsafeWindow.getVariable('video_id')+"&post_form_id="+$('post_form_id').value+"&post_form_id_source=AsyncRequest&nectar_impid="+unsafeWindow.env_get("nectar_last_impression_id");
    xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    xmlhttp.setRequestHeader("Content-length", params.length);
    xmlhttp.setRequestHeader("Connection", "close");
    xmlhttp.onreadystatechange = function() {
      if (xmlhttp.readyState==4 && xmlhttp.status==200) {
    ajax_code = eval('('+xmlhttp.responseText.split('for (;;);')[1]+')').payload.body;
    code = ajax_code.split('value="')[1].split('"')[0].replace(/&lt;/g, '<').replace(/&gt;/g, '>').replace(/&quot;/g, '"');
    width = /width="(.*?)"/.exec(code)[1];
    height = /height="(.*?)"/.exec(code)[1];
    callback();
      }
    }
    xmlhttp.send(params);
  } else {
    callback();
  }
}

// Add elements to a video page
function add_elements(swfid, values) {

  if (embed = document.evaluate('//a[contains(@onclick, "motion_show_embed_video_dialog")]', document, null,  9, null).singleNodeValue) embed.style.display = "none";

  // Embed Code
  link = document.createElement('a');
  link.href = "#";
  link.appendChild(document.createTextNode("Embed this Video"));
  link.addEventListener('click',function (e) {show_code(swfid); e.preventDefault();},false);
  li = document.createElement('li');
  li.appendChild(link);

  // Wizard link
  link = document.createElement('a');
  link.href = "#";
  link.appendChild(document.createTextNode("Customize Code"));
  li2 = document.createElement('li');
  li2.appendChild(link);
  link.addEventListener('click',function (e) {run_wizard(swfid);e.preventDefault();},false);

  // Download Flv Link
  link = document.createElement('a');
  link.href = values[0];
  link.id = "download_" + swfid;
  link.appendChild(document.createTextNode("Download Video"));
  li3 = document.createElement('li');
  li3.appendChild(link);

  // Convert Link
  link = document.createElement('a');
  link.href = values[1];
  link.id = "convert_" + swfid;
  link.appendChild(document.createTextNode("Convert Video"));
  li4 = document.createElement('li');
  li4.appendChild(link);

  // Public Links
  pubdiv = document.createElement('div');
  pubdiv.id = "public_link_photo";
  pubdiv.appendChild(document.createTextNode("Show people this video by sending them this public link: "));
  pubdiv.appendChild(document.createElement('span').appendChild(document.createTextNode(current_url())));

  // Append Elements
  ($('main_column')) ? insertAfter(pubdiv, $('main_column').parentNode) : void(0);
  var ul = document.evaluate('//ul[@class="actionspro"]', document, null, 9, null).singleNodeValue;
  ul.appendChild(li);
  ul.appendChild(li2);
  ul.appendChild(li3);
  ul.appendChild(li4);
}

// Run the script if video posted on site besides a video page: feeds, walls, and messages
function posted_videos(swfid, values) {
  actions = document.getElementById("actions_"+swfid);
  actions.innerHTML = '<a href="' + values[0] + '" id="download_' + swfid + '">Download Video[/url] | <a href="' + values[1] + '" id="convert_' + swfid + '">Convert Video[/url] | <a href="#" id="embed_' + swfid + '">Embed this Video[/url] | <a href="#" id="wizard_' + swfid +'">Customize Code[/url]';
  actions.setAttribute('class', 'fb_vid_actions');
  // Embed Code
  $('embed_'+swfid).addEventListener('click',function (e) {show_code(swfid); e.preventDefault();},false);
  // Wizard link
  $('wizard_'+swfid).addEventListener('click',function (e) {run_wizard(swfid); e.preventDefault();},false);

}

function show_code(swfid) {
  get_code(swfid, function() {
  $('independent').style.display = 'block';
  $('independent').innerHTML = '<div style="top: 125px;" class="generic_dialog_popup"><table style="width: 487px;" id="pop_dialog_table" class="pop_dialog_table"><tbody><tr><td class="pop_topleft"></td><td class="pop_border pop_top"></td><td class="pop_topright"></td></tr><tr><td class="pop_border pop_side"></td><td class="pop_content" id="pop_content"><h2 class="dialog_title"><span>Embed this video</span></h2><div class="dialog_content"><div class="dialog_body"><div class="embed_description">You can use this code to display this video on any site on the web.The video will respect Facebook privacy settings.</div>
<div>Embed code:<input size="40" class="code_block" onclick="this.focus(); this.select();" id="" name="" value=\''+code+'\' type="text"></div></div><div class="dialog_buttons"><input class="inputsubmit" name="ok" value="Okay" onclick="document.getElementById(\'independent\').style.display = \'none\';" type="button"></div></div></td><td class="pop_border pop_side"></td></tr><tr><td class="pop_bottomleft"></td><td class="pop_border pop_bottom"></td><td class="pop_bottomright"></td></tr></tbody></table></div>';
    });
}

function run_wizard(swfid) {
  get_code(swfid, function() {
  // Embed Wizard
  $('independent').style.display = 'block';
  wizard_html = '<div style="top: 125px;" class="generic_dialog_popup"><table style="width: 487px;" id="pop_dialog_table" class="pop_dialog_table"><tbody><tr><td class="pop_topleft"></td><td class="pop_border pop_top"></td><td class="pop_topright"></td></tr><tr><td class="pop_border pop_side"></td><td class="pop_content" id="pop_content"><h2 class="dialog_title"><span>Customize Embed Code</span></h2><div id="embed_options" style="padding:20px;"><p>'+
'<form id="custom_'+swfid+'"><table><tr><td><label>Width</lable></td><td><input type="text" id="width_'+swfid+'" class="code_block" size="15" value="'+width+'" /></td></tr>'+
    '<tr><td><label>Height</lable></td><td><input type="text" id="height_'+swfid+'" class="code_block" size="15" value="'+height+'" /></td></tr></table></form></p></div>\n'+
  '<div class="dialog_buttons"><input class="inputsubmit" value="Update" id="update_'+swfid+'" type="button" onclick="document.getElementById(\'independent\').style.display = \'none\';" /></div></td><td class="pop_border pop_side"></td></tr><tr><td class="pop_bottomleft"></td><td class="pop_border pop_bottom"></td><td class="pop_bottomright"></td></tr></tbody></table></div>';
  $('independent').innerHTML = wizard_html;

 $("width_"+swfid).addEventListener('blur',function () {
    $("height_"+swfid).value = Math.round(($("width_"+swfid).value/width)*height);
   },false);

  $("height_"+swfid).addEventListener('blur',function () {
    $("width_"+swfid).value = Math.round(($("height_"+swfid).value/height)*width);
    },false);

  $("update_"+swfid).addEventListener('click',function () {
      update_video(swfid);
    },false);
   });
}

// Show the effect of the video customizer in the page
function update_video(swfid) {
  new_width = $("width_"+swfid).value;
  new_height = $("height_"+swfid).value;
  code = code.replace(new RegExp('width="'+width+'"', 'g'), 'width="'+new_width+'"').replace(new RegExp('height="'+height+'"', 'g'), 'height="'+new_height+'"');
  width = new_width;
  height = new_height;
  $(swfid+"_holder").innerHTML = code;
}

// Locate Videos
function find_videos() {
  document.body.removeEventListener('DOMNodeInserted', find_videos, false);
  var videos = document.evaluate('//div[@class="fb_video_holder"] | //div[@class="mvp_holder"]', document, null, 6, null), video, i=videos.snapshotLength;
  while (video=videos.snapshotItem(--i)) {
    if (!video.getAttribute('mod')) {
      // Is it a holder or an embed object?
      if (video.className == "fb_video_holder") {
    swfid = video.getAttribute('id').split('_holder')[0];
      } else if (video.getElementsByTagName('embed')[0]) {
    swfid = video.getElementsByTagName('embed')[0].getAttribute('id');
    video.setAttribute('id', swfid+"_holder");
      }
      if (current_url().match('/video/') == null) { // Posted Video
    div = document.createElement('div');
        div.setAttribute('id', "actions_"+swfid);
    video.parentNode.parentNode.insertBefore(div, video.parentNode.nextSibling);
    if (unsafeWindow) posted_videos(swfid, get_values(swfid));
      } else if ($("video_actions")) { // Video Page
    $("video_actions").setAttribute('id', "actions_"+swfid);
    if (unsafeWindow) add_elements(swfid, get_values(swfid));
      }
      video.setAttribute('mod', "done");
    } // Modifications have already been made
  }
}

// Style I stole from Facebook
style = '\n.code_block {\n'+
'font-size:12px;\n' +
'background:#f7f7f7;\n' +
'width: 190px;\n' +
'border:1px solid #ccc;\n' +
'color:#555;\n' +
'}\n\n' +
'#public_link_photo {\n' +
'clear: both;\n' +
'color: #333;\n' +
'font-size: 9px;\n' +
'padding: 5px 5px;\n' +
'text-align: center;\n' +
'margin: 10px 0px 0px 0px;\n' +
'background: #f7f7f7;\n' +
'border-top: 1px solid #D8DFEA;\n' +
'}\n\n' +
'#public_link_photo span {\n' +
'color: black;\n' +
'display: block;\n' +
'font-size: 11px;\n' +
'}\n' +
'.fb_vid_actions { background-color: rgb(236, 239, 245);\n' +
'padding: 5px;\n' +
'text-align: center;\n' +
'display:block;\n' +
'float:none;\n' +
'margin-top: 10px;\n' +
'}\n' +
'#independent { display:none;\n' +
'z-index:10000;\n' +
'position: fixed;\n' +
'}\n\n';

// This is triggered by Facebook whenever the page changes
function watchforchange() {
  document.documentElement.removeEventListener('DOMNodeInserted', watchforchange, false);
  setTimeout(function () {
      if ( document.evaluate('//div[@mod]', document, null, 6, null).snapshotLength < 1) {
    $('independent').style.display = 'none';
      }
      find_videos();
      document.documentElement.addEventListener('DOMNodeInserted', watchforchange, false);
    }, 500);
}

// Wait for the body element to exist
var checker=setInterval(function(){
    if(document.body) {
      clearInterval(checker);
      var ourpopup = document.createElement('div');
      ourpopup.id = 'independent';
      ourpopup.className = 'generic_dialog video_embed_dialog pop_dialog';
      addGlobalStyle(style);
      document.body.appendChild(ourpopup);
      code = {};
      width = {};
      height = {};
      watchforchange();
    }
  },200);


// Auto update script
// I know everyone and their mother has wrote one, but I thought I'd toss my hat in
CheckScriptForUpdate = {
 name: /\/\/\s*@name\s*(.*)\s*\n/i.exec(scr_meta)[1],
 version: /\/\/\s*@version\s*(.*)\s*\n/i.exec(scr_meta)[1],
 id: '9789',
 days: 2,
 time: new Date().getTime() | 0,
 call: function(response) {
    GM_xmlhttpRequest({
      method: 'GET',
      url: 'http://userscripts.org/scripts/source/'+this.id+'.meta.js',
      headers: {
      'User-agent': window.navigator.userAgent,
        'Accept': 'application/atom+xml,application/xml,text/xml',
        },
      onload: function(xpr) {CheckScriptForUpdate.compare(xpr,response);}
      });
  },
 compare: function(xpr,response) {
    this.xversion=/\/\/\s*@version\s*(.*)\s*\n/i.exec(xpr.responseText)[1];
    this.xname=/\/\/\s*@name\s*(.*)\s*\n/i.exec(xpr.responseText)[1];
    if ( (this.xversion != this.version) && (confirm('A new version of the '+this.xname+' user script is available. Do you want to update?')) ) {
      GM_setValue('updated', this.time);
      GM_openInTab('http://userscripts.org/scripts/source/'+this.id+'.user.js');
    } else if ( (this.xversion) && (this.xversion != this.version) ) {
      if(confirm('Do you want to turn off auto updating for this script?')) {
    GM_setValue('updated', 'off');
    GM_registerMenuCommand("Auto Update "+this.name, function(){GM_setValue('updated', new Date().getTime() | 0);CheckScriptForUpdate.call('return');});
    alert('Automatic updates can be re-enabled for this script from the User Script Commands submenu.');
      } else {
    GM_setValue('updated', this.time);
      }
    } else {
      if(response) alert('No updates available for '+this.name);
      GM_setValue('updated', this.time);
    }
  },
 check: function() {
if (GM_getValue('updated', 0) == 0) GM_setValue('updated', this.time);
if ( (GM_getValue('updated', 0) != 'off') && (+this.time > (+GM_getValue('updated', 0) + (1000*60*60*24*this.days))) ) {
      this.call();
    } else if (GM_getValue('updated', 0) == 'off') {
      GM_registerMenuCommand("Enable "+this.name+" updates", function(){GM_setValue('updated', new Date().getTime() | 0);CheckScriptForUpdate.call(true);});
    } else {
      GM_registerMenuCommand("Check "+this.name+" for updates", function(){GM_setValue('updated', new Date().getTime() | 0);CheckScriptForUpdate.call(true);});
    }
    }
};
if (self.location == top.location) CheckScriptForUpdate.check();[/s]
PS: in mezzo c'è un emoticon perchè il forum riconosce quel testo in automatico ; ) (però attaccato) al posto di quell emoticon.

Offline miles74

  • Solista
  • *****
  • Posts: 1678
  • Reputazione dell'utente: +24/-0
  • Gender: Male
Re: Ad ognuno il suo!
« Reply #1 on: May 22, 2009, 06:52:28 PM »
io quando parli così non ti capisco   impaurit  horribl

ti preferisco al naturale con il tuo italiano così così  sbellicars
Bb : Harrelson Summit Jazz Raw Brass - Bach New York Vintage 1937(restored by Charlie Melk)
Piccolo : Yamaha Bb-A Ytr 6810
Flicorno : Kanstul ZKF 1525
Mouthpiece : Monette B2S3 81/17 Prana -Monette B6LDS 84/21 Prana - Warburton 6mc  - GR 67 fl - Yamaha 16c4

Offline Zosimo

  • Moderatore Globale
  • Acutista
  • *****
  • Posts: 11338
  • Reputazione dell'utente: +167/-4
  • Gender: Male
Re: Ad ognuno il suo!
« Reply #2 on: May 22, 2009, 08:31:00 PM »
E' colpa del caldo. Genù fatti una bella peroni frescaaa e vai a caccia di ragazzine ;)
Tromba Bb:  Holton Revelation ('23)  Cinesina, Carol Brass 5000, Martin Committee ('48)
Cornetta: York Baronet ('55)
Flicorno: Couesnon Monopole Conservatorie ('60)
Bocchino: ideatore della penna Bar Rocco, Bris Bois e della tazza V6 Turbo

Offline genuzzu

  • Solista
  • *****
  • Posts: 1854
  • Reputazione dell'utente: +29/-0
  • Gender: Male
Re: Ad ognuno il suo!
« Reply #3 on: May 22, 2009, 10:43:44 PM »
Non ho detto che io sò programmare in js... sò solo un pò di VB.net ...ma in un forum grande come questo ci sarà un programmatore!!!

Offline Zosimo

  • Moderatore Globale
  • Acutista
  • *****
  • Posts: 11338
  • Reputazione dell'utente: +167/-4
  • Gender: Male
Re: Ad ognuno il suo!
« Reply #4 on: May 23, 2009, 01:23:14 AM »
Si, un programmatore di cazzate. Nel forum è pieno chiedi a dario t felicissim
Tromba Bb:  Holton Revelation ('23)  Cinesina, Carol Brass 5000, Martin Committee ('48)
Cornetta: York Baronet ('55)
Flicorno: Couesnon Monopole Conservatorie ('60)
Bocchino: ideatore della penna Bar Rocco, Bris Bois e della tazza V6 Turbo

Offline anrapa

  • Administrator
  • Acutista
  • *****
  • Posts: 14489
  • Reputazione dell'utente: +212/-3
  • Gender: Male
    • AR Resonance Website
Re: Ad ognuno il suo!
« Reply #5 on: May 23, 2009, 09:59:02 AM »
Igor DOVREBBE capirci qualcosa, prova a contattarlo mandandogli una decina di messaggi privati al giorno, sono sicuro che apprezzerà.... :D
AR Resonance

Trombe e Bocchini AR Resonance
Tornio a mano nel retro della carrozzeria di mio fratello
Bulini del Penny Market
Pulimentatrice dello sfasciacarozze
Laurea in Youtube
Master in "a mano è meglio che CNC"

Offline genuzzu

  • Solista
  • *****
  • Posts: 1854
  • Reputazione dell'utente: +29/-0
  • Gender: Male
Re: Ad ognuno il suo!
« Reply #6 on: May 23, 2009, 12:57:43 PM »
Ok.
Si, un programmatore di cazzate. Nel forum è pieno chiedi a dario t felicissim
A DarioT non avevo pensato... XD

Offline DarioT

  • Acutista
  • ******
  • Posts: 3985
  • Reputazione dell'utente: +49/-1
Re: Ad ognuno il suo!
« Reply #7 on: May 25, 2009, 11:00:43 AM »
Si, un programmatore di cazzate. Nel forum è pieno chiedi a dario t felicissim

A DarioT non avevo pensato... XD

....mentre voi cazzeggiavate con queste amenita', io ero a sentire il concerto di Tamiati alla Scala !  smil
it's time to play some "D"

Offline Amarilly

  • Prima Tromba
  • ****
  • Posts: 836
  • Reputazione dell'utente: +35/-0
  • Gender: Female
Re: Ad ognuno il suo!
« Reply #8 on: May 25, 2009, 12:45:48 PM »
Orsù, raccontaci ...  :)

Offline DarioT

  • Acutista
  • ******
  • Posts: 3985
  • Reputazione dell'utente: +49/-1
Re: Ad ognuno il suo!
« Reply #9 on: May 25, 2009, 12:57:13 PM »
Orsù, raccontaci ...  :)

eh.....bravo..... di piu'...... un vero spettacolo sentire suonare una tromba in quel modo.
 ovazion
it's time to play some "D"

Offline anrapa

  • Administrator
  • Acutista
  • *****
  • Posts: 14489
  • Reputazione dell'utente: +212/-3
  • Gender: Male
    • AR Resonance Website
Re: Ad ognuno il suo!
« Reply #10 on: May 25, 2009, 02:06:56 PM »
Caspita, quasi quasi questa recensione la metto nel prossimo numero della rivista...... :D
AR Resonance

Trombe e Bocchini AR Resonance
Tornio a mano nel retro della carrozzeria di mio fratello
Bulini del Penny Market
Pulimentatrice dello sfasciacarozze
Laurea in Youtube
Master in "a mano è meglio che CNC"

Offline genuzzu

  • Solista
  • *****
  • Posts: 1854
  • Reputazione dell'utente: +29/-0
  • Gender: Male
Re: Ad ognuno il suo!
« Reply #11 on: May 25, 2009, 02:57:05 PM »
eh.....bravo..... di piu'...... un vero spettacolo sentire suonare una tromba in quel modo.

<SERIO PER FINTA> ovazion Una recensione davvero dettagliata. </SERIO PER FINTA>
 sbellicars

Offline DarioT

  • Acutista
  • ******
  • Posts: 3985
  • Reputazione dell'utente: +49/-1
Re: Ad ognuno il suo!
« Reply #12 on: May 25, 2009, 03:36:53 PM »
Caspita, quasi quasi questa recensione la metto nel prossimo numero della rivista...... :D

Una recensione davvero dettagliata....

mi spiace: a me certe cose lasciano senza parole !

.....c'e' bisogno che dica che ha un bellissimo suono ?
.....c'e' bisogno che dica che ha una buonissima tecnica ?
.....un ottimo uso dell'aria ?

Qui si parla di arte, l'arte suscita emozioni, e le emozioni non sono descrivibili.


it's time to play some "D"

Offline anrapa

  • Administrator
  • Acutista
  • *****
  • Posts: 14489
  • Reputazione dell'utente: +212/-3
  • Gender: Male
    • AR Resonance Website
Re: Ad ognuno il suo!
« Reply #13 on: May 25, 2009, 03:59:50 PM »
Salvato in calcio d'angolo...
AR Resonance

Trombe e Bocchini AR Resonance
Tornio a mano nel retro della carrozzeria di mio fratello
Bulini del Penny Market
Pulimentatrice dello sfasciacarozze
Laurea in Youtube
Master in "a mano è meglio che CNC"

Offline nic

  • Prima Tromba
  • ****
  • Posts: 548
  • Reputazione dell'utente: +23/-0
Re: Ad ognuno il suo!
« Reply #14 on: May 25, 2009, 08:00:16 PM »
be', ragazzi, fra il botta e risposta qui sopra...che dire? da parte mia grazie: questo forum mi fornisce la dose quotidiana di risate che altrove fatico a recuperare.

Per intenderci: lo affermo seriamente.
cornette: Conn Connstellation 28A e Courtois Chambord silver
Tromba: Yamaha 2335 "Jim Barda signature", Yamaha 6310Z