aboutsummaryrefslogtreecommitdiff
path: root/command.py
blob: a610d8cbe4d6b4c4118c3200d81c1589d58f5d48 (plain)
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
# FIXME: commandline functionality broken until we decide how to implement it
'''
class Command(QtCore.QObject):

  videoTask = QtCore.pyqtSignal(str, str, str, list)

  def __init__(self):
    QtCore.QObject.__init__(self)
    self.modules = []
    self.selectedComponents = []

    import argparse
    self.parser = argparse.ArgumentParser(
        description='Create a visualization for an audio file')
    self.parser.add_argument(
        '-i', '--input', dest='input', help='input audio file', required=True)
    self.parser.add_argument(
        '-o', '--output', dest='output',
        help='output video file', required=True)
    self.parser.add_argument(
        '-b', '--background', dest='bgimage',
        help='background image file', required=True)
    self.parser.add_argument(
        '-t', '--text', dest='text', help='title text', required=True)
    self.parser.add_argument(
        '-f', '--font', dest='font', help='title font', required=False)
    self.parser.add_argument(
        '-s', '--fontsize', dest='fontsize',
        help='title font size', required=False)
    self.parser.add_argument(
        '-c', '--textcolor', dest='textcolor',
        help='title text color in r,g,b format', required=False)
    self.parser.add_argument(
        '-C', '--viscolor', dest='viscolor',
        help='visualization color in r,g,b format', required=False)
    self.parser.add_argument(
        '-x', '--xposition', dest='xposition',
        help='x position', required=False)
    self.parser.add_argument(
        '-y', '--yposition', dest='yposition',
        help='y position', required=False)
    self.parser.add_argument(
        '-a', '--alignment', dest='alignment',
        help='title alignment', required=False,
        type=int, choices=[0, 1, 2])
    self.args = self.parser.parse_args()

    self.settings = QSettings('settings.ini', QSettings.IniFormat)
    LoadDefaultSettings(self)

    # load colours as tuples from comma-separated strings
    self.textColor = core.Core.RGBFromString(
        self.settings.value("textColor", '255, 255, 255'))
    self.visColor = core.Core.RGBFromString(
        self.settings.value("visColor", '255, 255, 255'))
    if self.args.textcolor:
      self.textColor = core.Core.RGBFromString(self.args.textcolor)
    if self.args.viscolor:
      self.visColor = core.Core.RGBFromString(self.args.viscolor)

    # font settings
    if self.args.font:
      self.font = QFont(self.args.font)
    else:
      self.font = QFont(self.settings.value("titleFont", QFont()))

    if self.args.fontsize:
      self.fontsize = int(self.args.fontsize)
    else:
      self.fontsize = int(self.settings.value("fontSize", 35))
    if self.args.alignment:
      self.alignment = int(self.args.alignment)
    else:
      self.alignment = int(self.settings.value("alignment", 0))

    if self.args.xposition:
      self.textX = int(self.args.xposition)
    else:
      self.textX = int(self.settings.value("xPosition", 70))

    if self.args.yposition:
      self.textY = int(self.args.yposition)
    else:
      self.textY = int(self.settings.value("yPosition", 375))

    ffmpeg_cmd = self.settings.value("ffmpeg_cmd", expanduser("~"))

    self.videoThread = QtCore.QThread(self)
    self.videoWorker = video_thread.Worker(self)

    self.videoWorker.moveToThread(self.videoThread)
    self.videoWorker.videoCreated.connect(self.videoCreated)

    self.videoThread.start()
    self.videoTask.emit(self.args.bgimage,
      self.args.text,
      self.font,
      self.fontsize,
      self.alignment,
      self.textX,
      self.textY,
      self.textColor,
      self.visColor,
      self.args.input,
      self.args.output,
      self.selectedComponents)

  def videoCreated(self):
    self.videoThread.quit()
    self.videoThread.wait()
    self.cleanUp()

  def cleanUp(self):
    self.settings.setValue("titleFont", self.font.toString())
    self.settings.setValue("alignment", str(self.alignment))
    self.settings.setValue("fontSize", str(self.fontsize))
    self.settings.setValue("xPosition", str(self.textX))
    self.settings.setValue("yPosition", str(self.textY))
    self.settings.setValue("visColor", '%s,%s,%s' % self.visColor)
    self.settings.setValue("textColor", '%s,%s,%s' % self.textColor)
    sys.exit(0)
'''