Curso GNU/ Linux
  Scripts
 
Algunos scripts disponibles


Abrir terminal Aqui:

#!/bin/sh
# From Chris Picton
# Replaces a Script by Martin Enlund
# Modified to work with spaces in path by Christophe Combelles

# This script either opens in the current directory,

# or in the selected directory

base=”`echo $NAUTILUS_SCRIPT_CURRENT_URI | cut -d’/’ -f3- | sed ’s/%20/ /g’`”
if [ -z "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" ]; then
dir=”$base”
else
while [ ! -z "$1" -a ! -d "$base/$1" ]; do shift; done
dir=”$base/$1″
fi

gnome-terminal –working-directory=”$dir”


Covertir Wma a MP3:

#!/usr/bin/env python
# -*- coding: latin-1 -*-

import os, sys

sys.path.insert(0, os.path.join(os.path.abspath(os.path.dirname(sys.argv[0])),".."))
import Process

if Process.verifyCommands("mplayer|lame")==False:
    sys.exit()

def ProcessDirectory(d):
    files = os.listdir(d)
    for f in files:
        f = d + "/" + f
        if os.path.isdir(f):
            ProcessDirectory(f)
        else:
            ProcessFile(f)

def ProcessFile(f):
    if Process.getExtension(f) == "WMA":
        Process.ProcessFileByArgument("mplayer "" + f + "" -ao pcm")
        Process.ProcessFileByArgument("lame -h -m j audiodump.wav "" + Process.getPath(f) + "/" + Process.getName(f) + ".mp3"")
        Process.ProcessFileByArgument("rm audiodump.wav")



files = os.environ['NAUTILUS_SCRIPT_SELECTED_FILE_PATHS'].split("n")


for f in files:
    if f != "":
        if os.path.isdir(f):
            ProcessDirectory(f)
        else:
            ProcessFile(f)


Convertir Wav a MP3:

#!/usr/bin/env python
# -*- coding: latin-1 -*-

import sys, os

sys.path.insert(0, os.path.join(os.path.abspath(os.path.dirname(sys.argv[0])),".."))
import Process

if Process.verifyCommands("lame")==False:
    sys.exit()

Process.ProcessFiles(
    "lame -h -m j $FILE$ $NAME$.mp3", # comando a ejecutar
    "wav", # tipo de archivos
    True, # leer directorios?
    False, # procesar directorio como un archivo
    "") # mensaje final

Añadir comentarios a Fotografia:

#!/usr/bin/env python
# -*- coding: latin-1 -*-

import gtk
import os
import sys
import string

sys.path.insert(0, os.path.join(os.path.abspath(os.path.dirname(sys.argv[0])),".."))
import Process

from xml.dom import minidom

dirPath = ""
fileXML = ""
nPhotosWithoutInfo = 0
nPhoto = 0


def ClickCancel(widget):
    gtk.main_quit()

def ClickImage(widget, f=None):

    global nPhotosWithoutInfo

    if f == None:
        return
   
    dialog = gtk.Dialog("Modificar datos de la imagen", w, 0, (gtk.STOCK_OK, gtk.RESPONSE_OK, gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_REMOVE, gtk.RESPONSE_NO))
    dialog.set_border_width(4)

    dialog.set_default_size(360,100)

    data = readPhotoXML(f)
         
    table = gtk.Table(2, 2, False)
    table.set_row_spacings(8)
    table.set_col_spacings(8)
         
    lTitle = gtk.Label("Título")
    table.attach_defaults(lTitle, 0, 1, 0, 1)
 
    eTitle = gtk.Entry()
    eTitle.set_text(data[0])
    table.attach_defaults(eTitle, 1, 2, 0, 1)

    lComment = gtk.Label("Comentario")
    table.attach_defaults(lComment, 0, 1, 1, 2)
         
    eComment = gtk.Entry()
    eComment.set_text(data[1])
    table.attach_defaults(eComment, 1, 2, 1, 2)
         
    dialog.vbox.pack_start(table, gtk.FALSE, gtk.FALSE, 0)
         
    dialog.show_all()
         
    respuesta = dialog.run()
         
    if respuesta == gtk.RESPONSE_OK:
        newNode = True
        dom = minidom.parse(fileXML)
        if eTitle.get_text() == "" and eComment.get_text() == "":
            for node in dom.getElementsByTagName('photo'):
                if node.attributes["file"].value == f:
                    node.parentNode.removeChild(node)
                    tooltips.set_tip(widget, "Sin datos")
                    nPhotosWithoutInfo = nPhotosWithoutInfo + 1
                    labelComent.set_label(getTextInfo())
                    widget.modify_bg(gtk.STATE_NORMAL, gtk.gdk.Color(35535,0,0))
                    widget.show()
        else:
            for node in dom.getElementsByTagName('photo'):
                if node.attributes["file"].value == f:
                    newNode = False
                    node.attributes["title"].value = eTitle.get_text()
                    node.attributes["comment"].value = eComment.get_text()

            if newNode == True:
                nodePhoto = dom.createElement("photo")
                nodePhoto.setAttribute("file", f)
                nodePhoto.setAttribute("title", eTitle.get_text())
                nodePhoto.setAttribute("comment", eComment.get_text())
                dom.childNodes[0].appendChild(nodePhoto)
                nPhotosWithoutInfo = nPhotosWithoutInfo - 1
                labelComent.set_label(getTextInfo())
                widget.modify_bg(gtk.STATE_NORMAL, gtk.gdk.Color(0,35535,0))
                widget.show()

            tooltips.set_tip(widget, "Título: " + eTitle.get_text() + "nComentario: " + eComment.get_text()[0:15] + "...")

        saveXML(dom.toxml())

    if respuesta == gtk.RESPONSE_NO:
        dom = minidom.parse(fileXML)
        for node in dom.getElementsByTagName('photo'):
            if node.attributes["file"].value == f:
                node.parentNode.removeChild(node)
                tooltips.set_tip(widget, "Sin datos")
                nPhotosWithoutInfo = nPhotosWithoutInfo + 1
                labelComent.set_label(getTextInfo())
                widget.modify_bg(gtk.STATE_NORMAL, gtk.gdk.Color(35535,0,0))
                widget.show()

        saveXML(dom.toxml())

    dialog.destroy()
   

def ClickHelp(widget):
    Process.alert("Este script nos servirá para insertar Títulos y Comentariosn"+
            "a fotografías que posteriormente serán usadas con otrosn"
            "scripts como: Crear DVD o Crear mosaico polaroidsn"
            "El script ha sido creado por Javier Perez Pachecon"+
            "http://www.javielinux.com/")


def readPhotoXML(f):
    global fileXML
    if os.path.isfile(fileXML):
        dom = minidom.parse(fileXML)
        for node in dom.getElementsByTagName('photo'):
            if node.attributes["file"].value == f:
                return [node.attributes["title"].value, node.attributes["comment"].value]

    return ["",""]

def saveXML(strXml):
    xml = open(fileXML, 'w')
    xml.write(strXml)
    xml.close()

def getTextInfo():
    return "Hay " + str(nPhoto) + " fotografías en el directorio, " + str(nPhotosWithoutInfo) + " sin comentarios"

# PROGRAMA

if Process.verifyCommands("convert%ImageMagick")==False:
    sys.exit()

dirPath = Process.getCurrentDirectory()

# creamos XML si no existe

fileXML = dirPath+"/"+".comments_nautilus.xml"

if not os.path.isfile(fileXML):
    saveXML("""<?xml version="1.0" encoding="iso-8859-1"?>
<photos>
</photos>""")


# ventana

w = gtk.Window(gtk.WINDOW_TOPLEVEL)
w.set_title("Añadir comentarios a directorio")
w.set_border_width(8)
w.set_default_size(600,500)

w.connect("destroy", gtk.mainquit)

# tabla de la miniatura

tableMin = gtk.Table(4, 4, True)
tableMin.set_border_width(4)

tableMin.set_row_spacings(8)
tableMin.set_col_spacings(8)

sw = gtk.ScrolledWindow()
sw.set_border_width(10)

sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)

sw.show()

# creamos la tabla de imágenes

#files = os.listdir(dirPath)
row = -1

tooltips = gtk.Tooltips()

directories = os.environ['NAUTILUS_SCRIPT_SELECTED_FILE_PATHS'].split("n")

for f in directories:
    if Process.getExtension(f)=="JPG" or Process.getExtension(f)=="PNG":
        filePath = f
        pb = gtk.gdk.pixbuf_new_from_file( filePath )
        pb = pb.scale_simple(70, 70, gtk.gdk.INTERP_NEAREST)
        image = gtk.Image()
        image.set_from_pixbuf(pb)
        image.show()
        b = gtk.Button()
        b.add(image)
        data = readPhotoXML(Process.getFile(f))
        if data[0]=="" and data[1]=="":
            tooltips.set_tip(b, "Sin datos")
            nPhotosWithoutInfo = nPhotosWithoutInfo + 1
            b.modify_bg(gtk.STATE_NORMAL, gtk.gdk.Color(35535,0,0))
        else:
            tooltips.set_tip(b, "Título: " + data[0] + "nComentario: " + data[1][0:15] + "...")
            b.modify_bg(gtk.STATE_NORMAL, gtk.gdk.Color(0,35535,0))
        b.connect("clicked", ClickImage, Process.getFile(f))
        b.show()
        col = nPhoto % 5
        if col == 0:
            row = row + 1
        tableMin.attach(b, col, col+1, row, row+1)
        nPhoto = nPhoto + 1

sw.add_with_viewport(tableMin)

# botones

aligButtons = gtk.Alignment(1.0, 0.0)
boxButtons = gtk.HBox(True, 4)

bHelp = gtk.Button("Ayuda", gtk.STOCK_HELP)

bHelp.connect("clicked", ClickHelp)

boxButtons.pack_start(bHelp, False, False, 0)

bCancel = gtk.Button("Cerrar", gtk.STOCK_CLOSE)

bCancel.connect("clicked", ClickCancel)

boxButtons.pack_start(bCancel, False, False, 0)

aligButtons.add(boxButtons)

#row = row + 1

labelComent = gtk.Label(getTextInfo())

vbox = gtk.VBox(gtk.FALSE, 0)
vbox.set_border_width(4)

vbox.pack_start(labelComent, False, True, 0)
vbox.pack_start(sw, True, True, 0)
vbox.pack_start(aligButtons, False, True, 0)

w.add(vbox)
w.show_all()
gtk.main()


Reducir Calidad Fotografica:

#!/usr/bin/env python
# -*- coding: latin-1 -*-

import gtk
import os, sys
import string

sys.path.insert(0, os.path.join(os.path.abspath(os.path.dirname(sys.argv[0])),".."))
import Process

# VARIABLES POR DEFECTO

calidad = "80"

def alerta (cadena):
    dialogo = gtk.MessageDialog(None, gtk.DIALOG_MODAL, gtk.MESSAGE_INFO, gtk.BUTTONS_CLOSE, cadena)
    dialogo.run()
    dialogo.destroy()

def ClickAceptar(widget):
    archivos = os.environ['NAUTILUS_SCRIPT_SELECTED_FILE_PATHS'].split("n")
    for archivo in archivos:
        if archivo != "":
            if os.path.isdir(archivo):
                ProcesarDirectorio(archivo)
            else:
                ProcesarImagen(archivo)

    alerta("El proceso ha finalizado satisfactoriamente")
    gtk.main_quit()

def ProcesarDirectorio(directorio):
    archivos = os.listdir(directorio)
    for archivo in archivos:
        archivo = directorio + "/" + archivo
        if os.path.isdir(archivo):
            ProcesarDirectorio(archivo)
        else:
            ProcesarImagen(archivo)

def ProcesarImagen(archivo):
    program = "convert"

    if getExtension(archivo) == "JPG" or getExtension(archivo) == "PNG":

        arguments = ["-quality", entryCalidad.get_text(), archivo, archivo]
        os.spawnvp(os.P_NOWAIT, program, (program,) +  tuple(arguments))


def getExtension(archivo):
    trozos = archivo.split(".")
    return string.upper(trozos[len(trozos)-1])

def ClickCancelar(widget):
    gtk.main_quit()


# PROGRAMA

if Process.verifyCommands("convert%ImageMagick")==False:
    sys.exit()

w = gtk.Window(gtk.WINDOW_TOPLEVEL)
w.set_title("Reducir calidad")
w.set_border_width(20)

w.connect("destroy", gtk.mainquit)
#l = gtk.Label(os.environ['NAUTILUS_SCRIPT_SELECTED_FILE_PATHS'])

# tabla de la miniatura

tableMin = gtk.Table(2, 1, False)
tableMin.set_border_width(10)

tableMin.set_row_spacings(8)
tableMin.set_col_spacings(8)


lCalidad = gtk.Label("Calidad:")

tableMin.attach(lCalidad, 0, 1, 0, 1)

entryCalidad = gtk.Entry()
entryCalidad.set_text(calidad)

tableMin.attach(entryCalidad, 1, 3, 0, 1)

# botones

aligBotones = gtk.Alignment(1.0, 0.0)
boxBotones = gtk.HBox(True, 4)

bAceptar = gtk.Button("Aceptar", gtk.STOCK_OK)

bAceptar.connect("clicked", ClickAceptar)

boxBotones.pack_start(bAceptar, False, False, 0)

bCancelar = gtk.Button("Cancelar", gtk.STOCK_CANCEL)

bCancelar.connect("clicked", ClickCancelar)

boxBotones.pack_start(bCancelar, False, False, 0)

aligBotones.add(boxBotones)

tableMin.attach(aligBotones, 1, 2, 4, 5)

w.add(tableMin)
w.show_all()
gtk.main()

Unir archivos PDF:

#!/usr/bin/env python
# -*- coding: latin-1 -*-

# Creado por Javier Rovegno

import sys, os

sys.path.insert(0, os.path.join(os.path.abspath(os.path.dirname(sys.argv[0])),".."))
import Process

if Process.verifyCommands("pdftk%pdftk")==False:
    sys.exit()

Process.ProcessTogetherFiles(
    "pdftk $FILES$ cat output out.pdf", # comando a ejecutar
    "pdf", # tipo de archivos
    "") # mensaje final

 
 
  Hoy habia 29 visitantes (41 clics a subpáginas) ¡Aqui en esta página!  
 
Este sitio web fue creado de forma gratuita con PaginaWebGratis.es. ¿Quieres también tu sitio web propio?
Registrarse gratis