Title: [Python] vid2gif Author: Anonymous Pastebin link: http://pastebin.com/JR1k2Aiz First Edit: Tuesday 21st of August 2012 09:23:41 PM CDT Last Edit: Tuesday 21st of August 2012 09:23:41 PM CDT #!/usr/bin/python   import sys, curses from subprocess import call from tempfile import mkdtemp from glob import glob   vidStart = 0 vidLength = 3 temp_dir = mkdtemp()   select_keys = ["Left/Right         = Move start by 1",                "Shift + Left/Right = Move start by 10",                "PgUp/PgDn          = Move start by 50",                "Up/Down            = Change duration by 1", "",                "q = quit", "",                "p = pick",                "other = replay"]   def select_region():     global vidStart     global vidLength       while 1:         call(["mplayer", "-nosound",               "-ss", str(vidStart),               "-endpos", str(vidLength),               sys.argv[1]])                 myscreen = curses.initscr()           myscreen.clear()         myscreen.border(0)         for i, line in enumerate(select_keys):             myscreen.addstr(7 + i, 4, line)         myscreen.addstr(2, 4, "Duraion: " + str(vidLength))         myscreen.addstr(2, 20, "Start at: " + str(vidStart))         myscreen.addstr(3, 4, "Destination: " + temp_dir)         myscreen.refresh()           press = myscreen.getch()           if press == ord('q'):             sys.exit()         elif press == ord('p'):             return True         elif press == curses.KEY_SLEFT:             vidStart = max(0, vidStart -10)         elif press == curses.KEY_SRIGHT:             vidStart += 10         elif press == curses.KEY_LEFT:             vidStart = max(0, vidStart -1)         elif press == curses.KEY_RIGHT:             vidStart += 1         elif press == curses.KEY_NPAGE:             vidStart = max(0, vidStart -50)         elif press == curses.KEY_PPAGE:             vidStart += 50         elif press == curses.KEY_DOWN:             vidLength = max(0, vidLength -1)         elif press == curses.KEY_UP:             vidLength += 1   def collect_frames():     call(["mplayer", "-nosound",           "-ss", str(vidStart),           "-endpos", str(vidLength),           sys.argv[1],           "-vo", "jpeg:outdir=" + temp_dir])     call(["feh", "-r", temp_dir])     frames = glob(temp_dir + "/*jpg")     frames.reverse()     myscreen = curses.initscr()       myscreen.clear()     myscreen.border(0)     myscreen.addstr(3, 4, "Creating animation ...")     myscreen.addstr(4, 4, "(This may take a while)")     myscreen.refresh()       call(["convert", "-enhance", "-resize", "300x300",           "-delay", "4", "-loop", "0"]          + frames + [sys.argv[2]])   def main(*args):     select_region()     collect_frames()   if len(sys.argv) == 3:     curses.wrapper(main) else:     print "Usage: vid2gif [video name] [output name]"