Online video hd

Смотреть красивое видео

Официальный сайт flashgamer 24/7/365

Смотреть видео бесплатно

17.07.10 21:37 pomkalk

PythonМожет кому пригодится!

Может этот скрипт(программка) кому ни будь пригодиться, не судите строго за пост, пишу первый раз...и за python знаком с ним третий день...

Это сделано для автоматизации некоторых действий в консоли!

+ (для новичков) не испортят случайно bashrc
+ Быстрое копирование файлов

Если велосипед извините

Предистория(Кому интересно)
Мне очень нравятся консольные приложения, и mplayer не исключение, но есть одна проблема...когда нужно включить только что скачанное кино, его имя может содержать не только название но и даты, разрешения, и другую информацию, замучаешься набирать....

Сначала я хотел сделать простой скрип, который бы выводил список всех файлов в директории под номерами(как select в bash), и оставалось бы просто ввести цифру файла и выполнялась команда
mlpayer FileName
где FileName имя выделенного файла...

Но тут я подумал, что кроме mplayer есть еще много программ с которыми можно так поступить!
в том числе и копирование файлов!

тогда я взялся сделать скрипт для этого, но тут я его перенес на python.


Вот что получилось

Теперь мы можем сохранить "Макросы", в домашней директории активного пользователя(/home/user/.fselect.macros), и дальше по вызову команды fselect на предоставляется возможность выбора нужного макроса, и далее список файлов в текущем каталоге, где так же цифрой мы выбираем нужный файл...далее следует выполнение макроса

Что может содержать макрос:
  1. Просто любая баш команда
  2. [file;] - заменится на один файл
  3. [files;] - возможность выбрать несколько файлов
  4. [out;] указать значение(например outputFile, например при записи через ffmpeg)


скрипт требует питоновский модуль argparse (python 2.7 уже поставляется с ним)
для этого нужно установить программу, если она не установлена
sudo apt-get install easy_install


далее
sudo easy_install argparse


ну и конечно сохранить код программы в файл fselect(или другим удобным для вас именем) и поместить его в /usr/bin/


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
#!/usr/bin/env python


import argparse
import os,sys
import string
import commands

macros='/home/'+os.getlogin()+'/.fselect.macros'
desc="Using simple macroses and access to files. Macros is like \"cat [file;]\", [file;] will be replace to selected file name, [files;] for more than one file and [out;] for output"
epil="COPYRIGHT:POMKALK. VERSION:1.1 E-MAIL:[email protected]. This is the opensourse project by GNU\Linux."


def getnum(List,text="Enter the number: ",err="You have to enter the Number!",minz=1,null=False):
        while 1:       
                try:
                        ans=int(raw_input(text))
                        if (ans<minz) or (ans>len(List)): raise ValueError
                        break
                except ValueError:
                        if null:
                                return minz-1
                        else:
                                print err
                                print minz,"<=NUM<=",len(List)
                except KeyboardInterrupt:
                        print "\nStopped by",os.getlogin()
                        sys.exit(1)
                except:
                        print "\nFATAL ERROR"
                        sys.exit(0)
        return ans

def add_macros(mac):

        if mac.count("[file;]")>1:
                print "Macros has to include one of [file;]"
                sys.exit(1)
        elif mac.count("[files;]")>1:
                print "Macros has to include one of [files;]"
                sys.exit(1)
        elif (mac.count("[file;]")==1) and (mac.count("[files;]")==1):
                print "Macros can include [file;] or [files;]"
                sys.exit(1)
        try:
                f=open(macros,"a")
                print>>f,mac
                f.close()
                print "Macros \""+mac+"\" is added"
        except IOError:
                print "Cant open macros list"
                sys.exit(1)
        except:
                print "\nFATAL ERROR"
                sys.exit(1)
       

def list_macros():
        print "List of Macroses:"
        try:
                f=open(macros)
                l=f.readlines()
                f.close()
                for i in xrange(len(l)):
                        print str(i+1)+")",l[i].strip()
                return l
        except IOError,x:
                print "NO MACROSES"
        except:
                print "\nFATAL ERROR"
                sys.exit(1)

def remove_macros():
        l=list_macros()
        if (l != None) and (len(l)>0):
                ans=getnum(l)
        else:
                print "Macros list is clear"
                sys.exit(0)
        removed=l.pop(ans-1)
        try:
                f=open(macros,"w")
                for i in l:
                        print>>f,i.strip()
                f.close()
                print removed.strip(),"is removed"
        except IOError,x:
                print "Error, Try again"
        except:
                print "\nFATAL ERROR"
                sys.exit(1)
       

def get_dirlist(args):
        lc = "ls -1"

        if args.sortr: lc=lc+"r"
        if args.sortt: lc=lc + "t"
        elif args.sorts: lc=lc+"S"

        if args.format:
                lc = lc + " *." + args.format
        lc = lc +" | while read i; do if [ ! -d \"$i\" ]; then echo \"$i\"; fi; done"
        dl = commands.getoutput(lc)
        dl=dl.split("\n")
        if len(dl)>0:
                return dl
        else:
                print "Folder is Empty!"
                sys.exit(1)

def print_dirlist(dl):
        print "List of Files of Current Directory:"
        for i in xrange(len(dl)):
                print str(i+1)+")",dl[i]       

def main():
        parser = argparse.ArgumentParser(description=desc,epilog=epil)
        actgroup = parser.add_argument_group("Actions")
        actgroup.add_argument("-a","--add",metavar="\"Command\"",action="store",dest='add',help="Add new MACROS to MACROS' data bese, has include [file;]")
        actgroup.add_argument("-r","--remove",action="store_true",dest="remove",help="Remove the macros from macros' list")
        actgroup.add_argument("-l","--list",action="store_true",dest="list",help="List all macroses")
        parser.add_argument("-f","--format",metavar="%FORMAT%",action="store",dest="format",help="set format for search")
        parser.add_argument("-b","--background",action="store_true",dest="bg",help="Run in BackGround like \"prog file &\"")
        parser.add_argument("-v","--version",action="version",version="Version 1.1 by PomkaLK",help="Show Version and exit")
        parser.add_argument("-o","--output",action="store",dest="output",help="Set output in macros \"[out;]\"")
        sortg = parser.add_argument_group("SORT")
        sortg.add_argument("-t","--sort-time",action="store_true",dest="sortt",help="Sort files by Modefy Time")
        sortg.add_argument("-s","--sort-size",action="store_true",dest="sorts",help="Sort by File Size")
        sortg.add_argument("-R","--sort-reverse",action="store_true",dest="sortr",help="Reverse sort")
       
        args=parser.parse_args()
       
        if args.list:
                list_macros()
                sys.exit(0)
        elif args.add:
                add_macros(args.add)
                sys.exit(0)
        elif args.remove:
                remove_macros()
                sys.exit(0)
       
        maclist=list_macros()
        if (maclist == None) or (len(maclist)<=0):
                print "Macros list is empty!"
                sys.exit(0)
        else:
                ans=getnum(maclist,"Enter the number of macros: ")
                cmd=maclist[ans-1].strip()
                if cmd.count("[out;]")>0:
                        if args.output:
                                cmd=cmd.replace("[out;]","\""+args.output+"\"")
                        else:
                                while 1:
                                        ans=raw_input("Enter the output: ")
                                        if len(ans)>0:break
                                cmd=cmd.replace("[out;]","\""+ans+"\"")                        
                if cmd.count("[file;]")==1:
                        dirlist=get_dirlist(args)
                        print_dirlist(dirlist)
                        ans=getnum(dirlist,"Enter the number of File: ")
                        cmd=cmd.replace("[file;]","\""+dirlist[ans-1].strip()+"\"")
                elif cmd.count("[files;]")==1:
                        dirlist=get_dirlist(args)
                        print_dirlist(dirlist)
                        ans=1
                        files=""
                        while 1:
                                ans = getnum(dirlist,"Enter the number of file (anything-stop, 0-print files): ","Error: Need Number",0,True)
                                if ans==0: print_dirlist(dirlist)
                                elif ans>0: files=files+" \""+dirlist[ans-1].strip()+"\""
                                elif ans<0:
                                        if len(files)==0:
                                                print "You have Select one or more files!"
                                        else:
                                                break
                        cmd=cmd.replace("[files;]",files)
                if args.bg: cmd=cmd+" &"
                os.system(cmd)

if __name__ == '__main__':
        main()
 


Справка!

usage: fselect [-h] [-a "Command"] [-r] [-l] [-f %FORMAT%] [-b] [-v] [-t] [-s] [-R]

Макрос должен включать [file;] который будет заменен на имя файла,[files;] - выбор нескольких файлов, [out;] outpput файл
Пример fselect -a "cat [file;]"
fselect --add="mplayer [file;]"

Опции:
-h, --help Показать помошь
-f %FORMAT%, --format %FORMAT% Установть формат маски файлов like "ls *.%FORMA%"
-o Text, --output Text

-b, --background Запустить в скрытом режиме like "prog file &"
-v, --version Показать версию программы

Действия:
-a "Command", --add "Command" Добавить макрос где "Command" - макрос

-r, --remove Удалить макрос из предложенного списка
-l, --list Показать список макросов

Сортировка:
-t, --sort-time Сортировать по времени
-s, --sort-size Сортировать по размеру
-R, --sort-reverse В обратном порядке




Пример использования:

1. Запускаем программу выводя список не всех файлов, а только avi
fselect -f avi



2. выбераем уже созданный мкрос


3. Выбераем файл из предложенного списка(файла с расширением avi так как мы это указали в первом шаге)

4. Получаем результат


Теги:

as3k 17.07.10 22:00 # +0
третий день работы с питоном и научились писать такие программы ?
да ну нафиг :>
xT 17.07.10 22:05 # +2
почему нет? особенно если ранее писал на чем-то другом
pomkalk 17.07.10 22:10 # +0
c++ delphi bash php
хотя бы знаний чего то из этого поможет!
silent 17.07.10 22:00 # +7
По-моему, кнопку Tab придумали как раз для таких целей, а этот скрипт лишь увеличит путь до воспроизведения файла еще на несколько шагов.
Разве нет?
uscr 17.07.10 22:08 # +0
Может была цель написать программу, а не написать нужную программу? Ну там потренироваться...
silent 17.07.10 22:10 # +1
см.спойлер с предысторией
pomkalk 17.07.10 22:29 # +0
И это тоже
pomkalk 17.07.10 22:09 # +0
Разве нет....Там написано, кому то, пригодится....так как макрос можно любой написать, хоть на копирование файлов или еще что то где используется имя файла...
silent 17.07.10 22:12 # +3
Очень плохо с русскама языканама? Включи проверку орфографии в браузере что-ли.
Причем тут макросы? Надо сделать что-то сложное - пишем скрипт, что-то простое, проигрывание это или еще чего простое - пользуемся клавишей Tab и никакого геммороя пошагового.
xT 17.07.10 22:10 # +4
а можно юзать zsh
silent 17.07.10 22:13 # +1
ну тут много чего можно придумать, главное что все на самом деле проще чем автор думает :)
pomkalk 17.07.10 23:56 # +0
1. это именно для консоли
2. Если уж на то пошло то и не нужна....просто мышкой файл открыл с помошью нужной программы и все...
silent 18.07.10 00:50 # +0
чувак, ты не понимаешь что именно в консоли можно ввести кусок названия файла, нажать кнопку Tab и он сам подставит (или предложит на выбор что подставлять) оставшуюся часть?
pomkalk 18.07.10 07:35 # +0
Ты сам то понимаешь, я тебе не замену Таба предлогаю, он был и всегда будет, это просто программа....там руским написано, "Может кому пригодится"
У меня есть файли типа 0Ffsdw432.f4.mp3 043He4242.mp3
в которых совпадает первые 5-6 символов пару других, а помот еще совпадает.....как будет быстрее написать fselect и тыкать таб подставляя сначала одно, потом другое....расматрива где там большая буква стоит, а где маленькая...
Прога с одним файл добавляет, три строчки дописать будет много добавлять, и этот точно будет быстрее раскидывать скачаные файлы по папкам...
razum2um 18.07.10 08:57 # +0
вообще не врубаю, за что топик минусуют, ибо есть такая же фигня: даже с табом...
а переименовывать их влом.
silent 18.07.10 11:51 # +2
Как же ты невнятно говоришь, я нифига не могу понять, что ты имеешь в виду. Перечитывай свой коммент перед отправкой.
pomkalk 17.07.10 22:29 # +-5
Короче, Суть в чем, это я просто про mplayer так все рассказал....bash команда бывает в две строчки, и что бы это не писать постоянно...и не создавать alias в bashrc прото создаешь "Макрос" в который подставится имя файла
silent 17.07.10 22:38 # +3
т.е. макрос написать проще чем алиас?
pomkalk 17.07.10 22:48 # +-4
Возни меньше
Shihad 17.07.10 22:09 # +1
+1 за факт написания.
-1 за орфографию.

Такие ошибки, помню, делали в девятом "бэ". Где был один дебил со справкой, а остальные - дебилы без справок.

%username% love BDSM!

sakal 17.07.10 22:24 # +1
В debian нет необходимости использовать easy_install для получения argparse, достаточно установить пакет python-argparse. В Python в stdlib есть модуль для парсинга параметров getopt.

P.S.
не сужу строго
pomkalk 17.07.10 22:26 # +0
getopt и optparse считаеются устаревшими
в python 2.7 не будет optparse а будет argparse
digiwhite 17.07.10 22:52 # +0
Думается что до python 2.7 лететь еще как до луны.
leonike 18.07.10 00:36 # +0
он уже вышел две недели назад
leonike 18.07.10 00:38 # +0
понял, что вы имели ввиду )
distruktor 18.07.10 13:49 # +3
Я вот в толк никак не возьму. Народ чего вы так набросились? Человек ясно сказал "может кому и пригодится", вам не нужно бог с вами не пользуйтесь, минусовать то его зачем? На энтузиазме начинался Linux!!!
silent 18.07.10 14:38 # +0
Линукс начинался как что-то полезное, а тут совсем бесполезная фигня.
distruktor 18.07.10 14:45 # +0
Бесполезная мне и тебе, а кому-то может и пригодиться, не стоит все мерять одной мерой, Linux тем и хорош что есть выбор!
silent 18.07.10 16:49 # +0
Может толкнуть новичков в неправильную сторону
exelens 18.07.10 22:35 # +0
Тут человек учится и делиться.
Вот ты можешь показать примеры своих скриптов? Программ?
Не согласен с автором? Покажи что можешь лучше.

В общем =) Попробуй как Элвис.
silent 18.07.10 23:54 # +0
http://code.google.com/p/0byte/source/browse/branches/silent?spec=svn258&r=258 мой бывший бренч в 0byte перед его удалением.

если будет чем поделиться - я поделюсь если посчитаю что это поможет людям и будет написано правильно.
exelens 30.08.10 15:12 # +0
Другой момент. Я не програмист.
Код не читаю.
Напиши нормальным языком.
Накодит ... смотрть тут... работает так.

Иначе не понятно
silent 30.08.10 16:01 # +0
в общем, одним прекрасным днем я решил сделать мир еще лучше и поучаствовать в каком-то оупенсорс-проекте, смотрю - велинукс-то оупенсорс, посмотрел код - страшненький, есть куда стремиться и написал nvbn, даже доступ получил.
кодил наверное с неделю, очень увлекся. начал делать кеширование, начал переводить все на mvc и в итоге получил от автора ответ что mvc тут вообще не нужен и лучше оставить этот код (код хуже вордпресса я вижу редко, но это - как раз тот случай), он работает и всем похуй.
в результате на продакшне оказалось только мое псевдокеширование css и js, а свой бренч я удалил.
exelens 30.08.10 16:04 # +0
Я не могу тебе помочь.
У нас договорённость. Я не лезу в разработку, он не лезет в мои дела.
silent 30.08.10 17:22 # +0
мне уже не надо помогать, я потратил неделю своего недешевого времени на это и обломался :)
exelens 31.08.10 09:46 # +0
Это проблема коммуникаций.
Разбирайтесь сами.

А мне.. Да! ОЧЕНЬ!!!!! грустно, что возникла такая ситуация
leonike 18.07.10 17:30 # +2
Вы знаете, может кому и пригодится, но я считаю, статьям, написанным с таким количеством ошибок и таким текстом, не место на ресурсе. Я многое готов простить, но только не "руским языком".
P.S. Надеюсь, не обидел автора.
exelens 18.07.10 22:33 # +0
Вчера не мог исправить.
Сегодня те ошибки что в глаза бросились исправил.
Не нужно за русс яз ругаться.
Aesdana 18.07.10 23:08 # +0
А я вот считаю, что место.
То что не дружит с языком - это, конечно, не гуд. Зато вон со скриптами дружит.
Поэтому опять предлагаю себя в качестве редактора/корректора.
Готова править мелочи вроде ката, а так же разгребать особо тяжёлые случаи.
K-9 18.07.10 23:10 # +0
Я тогда тоже =)
pomkalk 18.07.10 23:49 # +0
Ошибок больше не будет!...я когда по русски быстро печатаю, промахиваюсь много((
K-9 19.07.10 00:03 # +0
Удачи тебе в тяжелом деле слепой десятипальцевой печати =)
kstep 19.07.10 02:13 # +2
Блин. А мопед не мой, бля буду.
Ещё немного и это «может кому пригодится» станет локальным форсед мемом.
K-9 18.07.10 17:09 # +0
Я вот только одного не понимаю: почему бы не юзать автодополнение?
Craftuser 18.07.10 18:17 # +0
Пиши что-нибудь действительно интересное, типа конвертера изображений, интегрируемого в контекстное меню Nautilus, жду. В остальном респект.
atommixz 21.07.10 02:35 # +1
Автор, она само напрашивается, чтобы исключить шаг "2. выбераем уже созданный мкрос". Имхо оно по заданному расширению должно определять какой прогой запускать, а ещё лучше организовывать группы вроде:
"fselect -g video" - покажет все возможные видео файлы. Ты лучше организуй организуй к примеру hg реп на гуглокоде. Может закомитим чо нить, ага ;-)
atommixz 21.07.10 02:47 # +0
Кстати, арчеводы, потому же принципу стал работать и yaourt. Пример:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$ yaourt urbanterror
1 aur/quake3-urbanterror 4.1-2 (21)
    Urban Terror is a team-based tactical shooter based on the Quake 3 Engine (Quake3 Mod Version)
2 aur/urbanterror 4.1-7 [installed] (364)
    Urban Terror is a team-based tactical shooter based on the Quake 3 Engine (Stand-Alone Version)
3 aur/urbanterror-client 4.1-2 (20)
    Urban Terror is a team-based tactical shooter based on the Quake 3 Engine (client only)
4 aur/urbanterror-client-custom-hg 10-1 (0)
    Urban Terror (client only, custom build with improved scripting)
5 aur/urbanterror-data 4.1-1 (20)
    Urban Terror is a team-based tactical shooter based on the Quake 3 Engine (data only)
6 aur/urbanterror-server 4.1-3 (3)
    Urban Terror is a team-based tactical shooter based on the Quake 3 Engine (server only)
7 aur/urbanterror-server-custom-hg 10-1 (0)
    Urban Terror (server only, custom build with improved scripting)
==> Enter n° (separated by blanks, or a range) of packages to be installed
==> ----------------------------------------------------------------------
==>

Посты Комментарии
Последние посты
    Посты Комментарии
    Последние комментарии
      Посты Комментарии
      Изменения
        Посты Комментарии Изменения Черновики Избранное
        Черновики (все)
          Посты Комментарии Изменения Черновики Избранное
          Избранное (всё)
            Посты Комментарии Изменения Черновики Избранное
            Лучшие блоги (все 159)
            Топ пользователей Топ блогов
            Топ пользователей Топ блогов
            Элита (все 3279 из 235 городов)
            Топ пользователей Топ блогов
            В сети: cybsol, doraneko

            Новенькие: aenimus, Mad_Hat, satagik, ZeroOne, h1nt
            welinux.ru

            Смотреть видео онлайн

            Онлайн видео бесплатно


            Смотреть русское с разговорами видео

            Online video HD

            Видео скачать на телефон

            Русские фильмы бесплатно

            Full HD video online

            Смотреть видео онлайн

            Смотреть HD видео бесплатно

            School смотреть онлайн