You are currently browsing the phreekz posts tagged: scripting


RTLNow in XBMC

rtlnow 4 xbmcJuhei, Ich saß also an diesem Problem. Die “noch nicht fertige” Lösung ist ein Python-Miniscript (Videoplugin), welches die freien Videos der RTL-Now-Seite scraped und dann zum Abspielen bereitstellt. Abgesehen davon, dass die scheinbar ständig an der Seite rumwerkeln (das macht sich beim Datensammeln per Regex bemerkbar) ist das Hauptproblem, dass die per RTMP gesendeten FLV-Videos verschiedene Schutzmechanismen nutzen können, zB in diesem Fall die SWF Verification, welche die Checksumme des Players unregelmäßig (etwa jede Minute) abfragt. Wenn diese nicht kommt, bricht das Video ab. Somit kann ich im Moment nur sagen,

  • Ja, alle Online-Videos werden mit dem Plugin gefunden
  • Ja, alle freien Videos können gestartet werden
  • Ja, das Video bricht nach etwa 1 Minute ab, weil die Verification Response nicht kommt.

Man wird sehen, ob die XBMC-Developer irgendwann so etwas einbauen werden. Sowas kann auch recht schnell nach Hinten losgehen und XBMC hat ne Anzeige, weil die Software ermöglicht, nicht für die Software bestimmte Videos abspielen zu können. Vielleicht seh ich es aber auch nur zu eng.. Übrigens, Hier noch der Link zum XBMC-Forum, wo ich ständig auf Neuigkeiten hoffe

Hier zum Download die Version v.096 (Stand : 02.08.2009)

v0.961 – Die haben n bissel an der Schraube gedreht, ich hab nachjustiert.. thirdslash in rtmp_url

Hier zum Download die Version v.0961 (Stand : 29.09.2009)

Photoshop Scripting II – automatisches Keying

Diese Frage wird recht oft gestellt : Das automatische Freistellen mehrerer Bilder/Objekte. Also, hier das zugehörige Script, welches einfach nur den Farbwert an Pixelstelle 10/10 ausliest und in einer Javascript-Alert-Box anzeigt.

getColor.jsx

#target photoshop
var docAktuell = app.activeDocument;

var pixelLoc = [UnitValue("10 pixels") , UnitValue("10 pixels")];
var colorSamplerRef = docAktuell.colorSamplers.add(pixelLoc);
var currentColor = colorSamplerRef.color;

var redVal = Math.round(currentColor.rgb.red);
var greenVal = Math.round(currentColor.rgb.green);
var blueVal = Math.round(currentColor.rgb.blue);

alert("Pixel [10, 10] = (" + redVal + ", " + greenVal + ", " + blueVal + ")");

Scripts werden grundsätzlich in ./Photoshop/Presets/Scripts/ abgelegt und sind dann in Photoshop unter Script erreichbar. Übrigens, es gibt ein tolles Forum dafür : http://www.ps-scripts.com/bb/index.php – Leider ist da nicht soviel los, Scripting ist halt nicht Jedermanns Sache.

Hier also eine Minimalversion eines Photoshopscripts, dass in einer Datei 4 Selections in den Ecken nimmt, per Similar eine Keyingauswahl erstellt und diese in einer Maske speichert.

AutoKeyer.jsx

#target photoshop
var docAktuell = app.activeDocument;
var maxX = docAktuell.width;
var maxY = docAktuell.height;

//change backgroundlayer to worklayer
if(docAktuell.layers[0].isBackgroundLayer==true){
docAktuell.layers[0].isBackgroundLayer=false;
}

// makeLayerMask function - done by Paul Riggott
// http://forums.adobe.com/thread/290125
function makeLayerMask(maskType) {
if( maskType == undefined) maskType = 'RvlS' ; //from selection
var desc140 = new ActionDescriptor();
desc140.putClass( charIDToTypeID('Nw  '), charIDToTypeID('Chnl') );
var ref51 = new ActionReference();
ref51.putEnumerated( charIDToTypeID('Chnl'), charIDToTypeID('Chnl'), charIDToTypeID('Msk ') );
desc140.putReference( charIDToTypeID('At  '), ref51 );
desc140.putEnumerated( charIDToTypeID('Usng'), charIDToTypeID('UsrM'), charIDToTypeID(maskType) );
executeAction( charIDToTypeID('Mk  '), desc140, DialogModes.NO );
}

// change Rulerunits to px
var strtRulerUnits = app.preferences.rulerUnits;
app.preferences.rulerUnits = Units.PIXELS;

// 4 Corner rectangled Selections
docAktuell.selection.select(new Array (new Array(10,10),new Array(20,10), new Array(20,20), new Array(10,20)),SelectionType.REPLACE, 1, false);
docAktuell.selection.select(new Array (new Array(maxX-10,10),new Array(maxX-20,10), new Array(maxX-20,20), new Array(maxX-10,20)),SelectionType.EXTEND, 1, false);
docAktuell.selection.select(new Array (new Array(maxX-10,maxY-10),new Array(maxX-20,maxY-10), new Array(maxX-20,maxY-20), new Array(maxX-10,maxY-20)),SelectionType.EXTEND, 1, false);
docAktuell.selection.select(new Array (new Array(10,maxY-10),new Array(20,maxY-10), new Array(20,maxY-20), new Array(10,maxY-20)),SelectionType.EXTEND, 1, false);

// Grab all pix similar to the selection
docAktuell.selection.similar(60,10);

// change the selection a bit
var Selected = app.activeDocument.selection;
Selected.expand( 0.2 );
//Selected.contract( 5 );
Selected.feather( 0.2 );

//make a mask from it
makeLayerMask('HdSl');

//done ! thx by phreekz.chmee

Wieder mal die wichtige Info, dass keine Fehler abgefangen werden. Ich habe das Script mal mit diesem Bild ausprobiert, mit Diesem und auch mit diesem Hier . Sieht erstmal gut aus. Im Script sind die Variablen recht gut einsehbar, zB im Similar Bereich die Werte für Toleranz (60) und Antialiasing (10), danach auch noch Variablen, um die Selektion zu verbessern, Expand und Feather.

Wenn man am Scripting Gefallen findet, sollte man mit diesem Tutorial weitermachen.

mfg chmee

Photoshop Scripting in JSX

Scripting für Photoshop
Wenn man besondere Wege braucht, Photoshop es so nicht unterstützt oder wiederkehrende Arbeitsschritte in der Aktion nicht sinnvoll umgesetzt werden können, dann greift man zur ultramächtigen Scripting-Engine von Adobe. Das Schöne ist, die Scripts können komplette Arbeitsschritte sein, können aber auch Teilaufgaben in Aktionen ausführen. Hier werden nach und nach meine Scripts erscheinen.

Wie kann ich sie benutzen ?
Man kopiert den Code aus dem Codebereich und speichert ihn mittels eines simplen Texteditors in eine Datei, benennt sie dementsprechend (Endung . jsx) und kopiert jene in den Presets/Scripts-Ordner. Nach einem Neustart von Photoshop findet man den Eintrag in Datei/File->Scripts.

Vorsicht!
Ich fange keine Fehler in meinen Scripten ab, vorteilhaft ist dadurch die Kürze, nachteilig ist aber, dass man Fehler, wenn sie auftreten nicht erkennt. Zudem ist Jeder, der diese Scripts benutzt, für seine Daten selbst verantwortlich, also immer erst testen und selbst entscheiden, ob alles glatt läuft.

SaveAsTIF
Ganz einfaches Script, das von der aktuell geöffneten Datei eine TIF-Kopie im gleichen Ordner speichert. Man fragt sich, wozu so etwas ? Grundsätzlich geht es um den Einsatz in einer Aktion oder Batch, wo bei normalem Einsatz der “Speichern unter..”-Funktion dem Namen -Kopie anhängt UND der Speicherort fixiert bleibt ( Der Ordner, der beim Aktion-Erstellen benutzt wurde ). Das Bild sollte vor dieser Scriptaktion auf eine Ebene zusammengelegt sein!

Da das Script sehr einfach und kurz ist, kann man es recht schnell an eigene Bedürfnisse anpassen.

Script – SaveAsTIF.jsx

#target photoshop

var DokAktuell = app.activeDocument;
var DokFilename = DokAktuell.name;
var DokBasename = DokFilename.match(/(.*)\.[^\.]+$/)[1];
var DokPfad = DokAktuell.path;

var tiffSaveOptions = new TiffSaveOptions();
tiffSaveOptions.embedColorProfile = true;
tiffSaveOptions.imageCompression = TIFFEncoding.NONE;

DokAktuell.saveAs((new File(DokPfad+"/"+DokBasename+".tif")), tiffSaveOptions, false);