вторник, 10 июля 2012 г.

Attach USB dev to VirtualBox in cron

#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys, commands, time, datetime
#read is dev is attach??
def checkdev():
 a = commands.getoutput('vboxmanage showvminfo officexp | grep MF4010')
 if a:
  mylog("Есть устройство")
  sys.exit()

def getUUID():
 uuid = commands.getoutput('vboxmanage list usbhost | grep UUID').split(' ')[-1]
 if not uuid:
  mylog("Устройство не подключено физически к компьютеру или выключено")
  sys.exit()
 mylog(uuid)
 return uuid

def addUUIDtoVBox():
 uuid = getUUID()
 mylog("Подключаю устройство "+uuid+" к виртуальной машине")
 command = 'vboxmanage controlvm officexp usbattach '+uuid
 uuid = commands.getoutput(command)

def mylog(mess):
 mess = datetime.datetime.now().__str__()+" "+mess+"\n"
 print mess
 f = open("/home/serg/pub/scanner/scannerlog.txt", 'a')
 f.write(mess)
 f.close()

while 1:
 checkdev()
 time.sleep(0.5)
 addUUIDtoVBox()
 time.sleep(1)
P.S. Это писалось из-за того, что у девайса меняется UUID. И немаловажный нюанс - девайс один единственный. Для большего количества надо немного изменить getUUID()

воскресенье, 17 июня 2012 г.

шпаргалка по Python

Не судите строго, тут будут вещи которыми я пользуюсь редко и постоянно вспоминаю их тратя время...

Способы удалить повторяющиеся элементы:
1. Единственный минус - не сохраняется порядок элементов.
myList = list(set(myList)) 

Автоматическое определение кодировки.

маленькая шпаргалка по sql

Удалить все дублирующие записи из таблицы products

DELETE FROM products WHERE id NOT IN (SELECT MIN(id) FROM products GROUP BY столбец(ы) с повторяющимися данными)

четверг, 31 мая 2012 г.

Linux, конвертируем mkv в avi

**********************************************
Данная статья - это кросспостинг с http://my.runtu.org/blog/hawk/linux-konvertiruem-mkv-v-avi
Оригинал статьи ,доступен для прочтения здесь: http://unixa.ru/linux/linux-konvertiruem-mkv-v-avi.html

********************************************
Модно стало последнее время фильмы в mkv загонять, но к сожалению данный формат не понимают большинство DVD плееров. Благо есть Linux, в котором делается все это очень просто и легко одной командой:
mencoder /path/file.mkv -oac mp3lame -ovc copy -o /path/file.avi
Команда перекодирует mkv-файл в mpeg4 с mp3 звуком.
Если mencoder не установлен, то исправим это:
$sudo apt-get install mencoder
На самом деле mencoder имеет множество опций, почитать о которых можно в man mencoder.
Можно например перекодировать видео XVIDом (должен присутствовать в системе) с нужным битрейдом:
$mencoder /path/file.mkv -oac mp3lame -ovc xvid -xvidencopts vhq=1:bitrate=1250 -o /path/file.avi
Можно еще поколдовать с опциями и к примеру обрезать черные поля с помощью фильтра crop, а с помощью scale можно смаштабировать картинку и т.д.

суббота, 12 мая 2012 г.

ReSize fotos in folder в 10 потоков

#coding: UTF-8
import threading, Queue, os
from PIL import Image

queue = Queue.Queue() # создаем очередь 
THREADS = 10

for i in os.listdir('.'):
    if i.split('.')[-1] == 'JPG':
        queue.put(Image.open(i))

def chage_file(img):
    #узнать ориентацию файла
    print 'Открытие файла ' + img.filename
    i_size = img.size
    if i_size[0] > i_size[1]: # если больше то 800х600
        #изменить размер
        r_img = img.resize((800,600), Image.ANTIALIAS)
    else:
        r_img = img.resize((600,800), Image.ANTIALIAS)
        #переименовать и сохранить
    print 'Сохранение файла' + img.filename
    r_img.save('NEW_'+img.filename)

def repeat():  
    while True:  
        try:  
            item = queue.get_nowait() # ждём данные  
        except Queue.Empty:  
            break  
        chage_file(item) # передаем данные в нашу функцию  
        #time.sleep(0.5)  
        queue.task_done() # задача завершена  

for tr in xrange(THREADS):
    t = threading.Thread(target=repeat) # создаем нить
    t.start()

queue.join()

четверг, 10 мая 2012 г.

ReSize fotos in folder

#coding: UTF-8
from PIL import Image
import os
def chage_file(img):
    #узнать ориентацию файла
    print 'Открытие файла ' + img.filename
    i_size = img.size
    if i_size[0] > i_size[1]: # если больше то 800х600
        #изменить размер
        r_img = img.resize((800,600), Image.ANTIALIAS)
    else:
        r_img = img.resize((600,800), Image.ANTIALIAS)
    #переименовать и сохранить
    print 'Сохранение файла'
    r_img.save('NEW_'+img.filename)

def resize_file(orientation, img):
    print 'Изменение размера файла'
    if orientation:
        return img.resize((800,600), Image.ANTIALIAS)
    else:
        return img.resize((600,800), Image.ANTIALIAS)
kolvo_files = 0

for i in os.listdir('.'):
    if i.split('.')[-1] == 'JPG':
        kolvo_files += 1
        chage_file(Image.open(i))
print "Количество обработанных файлов = ", kolvo_files

среда, 21 декабря 2011 г.

Первый опыт PyQt4

pyuic4 название_файла_с_кодом.py -o шаблон.ui
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'dialog1.ui'
#
# Created: Thu Dec 22 00:40:39 2011
#      by: PyQt4 UI code generator 4.7.3
#
# WARNING! All changes made in this file will be lost!

from PyQt4 import QtCore, QtGui

class Ui_MainDialog(object):
    def setupUi(self, MainDialog):
        MainDialog.setObjectName("MainDialog")
        MainDialog.resize(400, 300)
        self.newDialogButton = QtGui.QPushButton(MainDialog)
        self.newDialogButton.setGeometry(QtCore.QRect(300, 260, 90, 27))
        self.newDialogButton.setObjectName("newDialogButton")

        self.retranslateUi(MainDialog)
        QtCore.QMetaObject.connectSlotsByName(MainDialog)

    def retranslateUi(self, MainDialog):
        MainDialog.setWindowTitle(QtGui.QApplication.translate("MainDialog", "Main Dialog", None, QtGui.QApplication.UnicodeUTF8))
        self.newDialogButton.setText(QtGui.QApplication.translate("MainDialog", "New Dialog", None, QtGui.QApplication.UnicodeUTF8))
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'dialog2.ui'
#
# Created: Thu Dec 22 00:40:51 2011
#      by: PyQt4 UI code generator 4.7.3
#
# WARNING! All changes made in this file will be lost!

from PyQt4 import QtCore, QtGui

class Ui_SecondDialog(object):
    def setupUi(self, SecondDialog):
        SecondDialog.setObjectName("SecondDialog")
        SecondDialog.resize(400, 300)

        self.retranslateUi(SecondDialog)
        QtCore.QMetaObject.connectSlotsByName(SecondDialog)

    def retranslateUi(self, SecondDialog):
        SecondDialog.setWindowTitle(QtGui.QApplication.translate("SecondDialog", "Dialog", None, QtGui.QApplication.UnicodeUTF8))
import sys
from PyQt4 import QtGui, QtCore
from dialog1 import Ui_MainDialog
from dialog2 import Ui_SecondDialog

class MainDialig(QtGui.QWidget):
    def __init__(self, parent=None):
        super(MainDialig,self).__init__(parent)
        
        self.secondDialog = SecondDialog(parent)

        self.ui = Ui_MainDialog()
        self.ui.setupUi(self)
        self.ui.newDialogButton.clicked.connect(self.showSecondDialog)

    def showSecondDialog(self):
        self.secondDialog.show()

class SecondDialog(QtGui.QWidget):
    def __init__(self, parent=None):
        super(SecondDialog,self).__init__(parent)
        self.ui = Ui_SecondDialog()
        self.ui.setupUi(self)

def main():
    app = QtGui.QApplication(sys.argv)
    mainWindow = MainDialig()
    mainWindow.show()
    sys.exit(app.exec_())

if __name__=='__main__':
    main()
from dialog1 import Ui_MainDialog
from dialog2 import Ui_SecondDialog
class MainDialig(QtGui.QWidget):
    def __init__(self, parent=None):
        super(MainDialig,self).__init__(parent)
self.secondDialog = SecondDialog(parent)
self.ui = Ui_MainDialog()
self.ui.setupUi(self)
self.ui.newDialogButton.clicked.connect(self.showSecondDialog)
def showSecondDialog(self):
    self.secondDialog.show()
class SecondDialog(QtGui.QWidget):
    def __init__(self, parent=None):
        super(SecondDialog,self).__init__(parent)
        self.ui = Ui_SecondDialog()
        self.ui.setupUi(self)
def main():
    app = QtGui.QApplication(sys.argv)
    mainWindow = MainDialig()
    mainWindow.show()
    sys.exit(app.exec_())

if __name__=='__main__':
    main()
mainWindow = MainDialig()
mainWindow.show()
import sys
from PyQt4 import QtGui, QtCore
from dialog1 import Ui_MainDialog

class MainDialig(QtGui.QWidget):
    def __init__(self, parent=None):
        super(MainDialig,self).__init__(parent)
        
        self.ui = Ui_MainDialog()
        self.ui.setupUi(self)
        ##############
        #Добавление функционала к элементам окна
        ##############

def main():
    app = QtGui.QApplication(sys.argv)

    mainWindow = MainDialig()

    # знак "=" не зря не выделен. Дело в том, что такая строка обязательна, но меняется то, что выделено. 

    mainWindow.show() 
    sys.exit(app.exec_())

if __name__=='__main__':
    main()