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
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
|
%global _empty_manifest_terminate_build 0
Name: python-timecode
Version: 1.3.1
Release: 1
Summary: SMPTE Time Code Manipulation Library
License: MIT License
URL: https://github.com/eoyilmaz/timecode
Source0: https://mirrors.nju.edu.cn/pypi/web/packages/2e/d3/6bc621ae1c1bbc02c0b751a235e9cd57f70d12e3d0f10b8c9225cf917426/timecode-1.3.1.tar.gz
BuildArch: noarch
%description
Python Module for manipulating SMPTE timecode. Supports 23.976, 23.98, 24, 25,
29.97, 30, 50, 59.94, 60 frame rates and milliseconds (1000 fps).
This library is a fork of the original PyTimeCode python library. You should
not use the two library together (PyTimeCode is not maintained and has known
bugs).
The math behind the drop frame calculation is based on the
`blog post of David Heidelberger`_ .
Simple math operations like, addition, subtraction, multiplication or division
with an integer value or with a timecode is possible. Math operations between
timecodes with different frame rates are supported. So::
from timecode import Timecode
tc1 = Timecode('29.97', '00:00:00:00')
tc2 = Timecode('24', '00:00:00:10')
tc3 = tc1 + tc2
assert tc3.framerate == '29.97'
assert tc3.frames == 12
assert tc3 == '00:00:00:11'
Creating a Timecode instance with a start timecode of '00:00:00:00' will
result a timecode object where the total number of frames is 1. So::
tc4 = Timecode('24', '00:00:00:00')
assert tc4.frames == 1
Use the ``frame_number`` attribute if you want to get a 0 based frame number::
assert tc4.frame_number == 0
Frame rates 29.97 and 59.94 are always drop frame, and all the others are non
drop frame.
The timecode library supports rational frame rates passed as a either a string
or tuple::
tc5 = Timecode('30000/1001', '00:00:00;00')
assert tc5.framerate == '29.97'
tc6 = Timecode((30000, 1001), '00:00:00;00')
assert tc6.framerate == '29.97'
You may also pass a big "Binary Coded Decimal" integer as start timecode::
tc7 = Timecode('24', 421729315)
assert repr(tc7) == '19:23:14:23'
This is useful for parsing timecodes stored in OpenEXR's and extracted through
OpenImageIO for instance.
Timecode also supports passing start timecodes formatted like HH:MM:SS.sss where
SS.sss is seconds and fractions of seconds::
tc8 = Timecode(25, '00:00:00.040')
assert tc8.frame_number == 1
You may set any timecode to be represented as fractions of seconds::
tc9 = Timecode(24, '19:23:14:23')
assert repr(tc9) == '19:23:14:23'
tc9.set_fractional(True)
assert repr(tc9) == '19:23:14.958'
Fraction of seconds is useful when working with tools like FFmpeg.
The SMPTE standard limits the timecode with 24 hours. Even though, Timecode
instance will show the current timecode inline with the SMPTE standard, it will
keep counting the total frames without clipping it.
Please report any bugs to the `GitHub`_ page.
%package -n python3-timecode
Summary: SMPTE Time Code Manipulation Library
Provides: python-timecode
BuildRequires: python3-devel
BuildRequires: python3-setuptools
BuildRequires: python3-pip
%description -n python3-timecode
Python Module for manipulating SMPTE timecode. Supports 23.976, 23.98, 24, 25,
29.97, 30, 50, 59.94, 60 frame rates and milliseconds (1000 fps).
This library is a fork of the original PyTimeCode python library. You should
not use the two library together (PyTimeCode is not maintained and has known
bugs).
The math behind the drop frame calculation is based on the
`blog post of David Heidelberger`_ .
Simple math operations like, addition, subtraction, multiplication or division
with an integer value or with a timecode is possible. Math operations between
timecodes with different frame rates are supported. So::
from timecode import Timecode
tc1 = Timecode('29.97', '00:00:00:00')
tc2 = Timecode('24', '00:00:00:10')
tc3 = tc1 + tc2
assert tc3.framerate == '29.97'
assert tc3.frames == 12
assert tc3 == '00:00:00:11'
Creating a Timecode instance with a start timecode of '00:00:00:00' will
result a timecode object where the total number of frames is 1. So::
tc4 = Timecode('24', '00:00:00:00')
assert tc4.frames == 1
Use the ``frame_number`` attribute if you want to get a 0 based frame number::
assert tc4.frame_number == 0
Frame rates 29.97 and 59.94 are always drop frame, and all the others are non
drop frame.
The timecode library supports rational frame rates passed as a either a string
or tuple::
tc5 = Timecode('30000/1001', '00:00:00;00')
assert tc5.framerate == '29.97'
tc6 = Timecode((30000, 1001), '00:00:00;00')
assert tc6.framerate == '29.97'
You may also pass a big "Binary Coded Decimal" integer as start timecode::
tc7 = Timecode('24', 421729315)
assert repr(tc7) == '19:23:14:23'
This is useful for parsing timecodes stored in OpenEXR's and extracted through
OpenImageIO for instance.
Timecode also supports passing start timecodes formatted like HH:MM:SS.sss where
SS.sss is seconds and fractions of seconds::
tc8 = Timecode(25, '00:00:00.040')
assert tc8.frame_number == 1
You may set any timecode to be represented as fractions of seconds::
tc9 = Timecode(24, '19:23:14:23')
assert repr(tc9) == '19:23:14:23'
tc9.set_fractional(True)
assert repr(tc9) == '19:23:14.958'
Fraction of seconds is useful when working with tools like FFmpeg.
The SMPTE standard limits the timecode with 24 hours. Even though, Timecode
instance will show the current timecode inline with the SMPTE standard, it will
keep counting the total frames without clipping it.
Please report any bugs to the `GitHub`_ page.
%package help
Summary: Development documents and examples for timecode
Provides: python3-timecode-doc
%description help
Python Module for manipulating SMPTE timecode. Supports 23.976, 23.98, 24, 25,
29.97, 30, 50, 59.94, 60 frame rates and milliseconds (1000 fps).
This library is a fork of the original PyTimeCode python library. You should
not use the two library together (PyTimeCode is not maintained and has known
bugs).
The math behind the drop frame calculation is based on the
`blog post of David Heidelberger`_ .
Simple math operations like, addition, subtraction, multiplication or division
with an integer value or with a timecode is possible. Math operations between
timecodes with different frame rates are supported. So::
from timecode import Timecode
tc1 = Timecode('29.97', '00:00:00:00')
tc2 = Timecode('24', '00:00:00:10')
tc3 = tc1 + tc2
assert tc3.framerate == '29.97'
assert tc3.frames == 12
assert tc3 == '00:00:00:11'
Creating a Timecode instance with a start timecode of '00:00:00:00' will
result a timecode object where the total number of frames is 1. So::
tc4 = Timecode('24', '00:00:00:00')
assert tc4.frames == 1
Use the ``frame_number`` attribute if you want to get a 0 based frame number::
assert tc4.frame_number == 0
Frame rates 29.97 and 59.94 are always drop frame, and all the others are non
drop frame.
The timecode library supports rational frame rates passed as a either a string
or tuple::
tc5 = Timecode('30000/1001', '00:00:00;00')
assert tc5.framerate == '29.97'
tc6 = Timecode((30000, 1001), '00:00:00;00')
assert tc6.framerate == '29.97'
You may also pass a big "Binary Coded Decimal" integer as start timecode::
tc7 = Timecode('24', 421729315)
assert repr(tc7) == '19:23:14:23'
This is useful for parsing timecodes stored in OpenEXR's and extracted through
OpenImageIO for instance.
Timecode also supports passing start timecodes formatted like HH:MM:SS.sss where
SS.sss is seconds and fractions of seconds::
tc8 = Timecode(25, '00:00:00.040')
assert tc8.frame_number == 1
You may set any timecode to be represented as fractions of seconds::
tc9 = Timecode(24, '19:23:14:23')
assert repr(tc9) == '19:23:14:23'
tc9.set_fractional(True)
assert repr(tc9) == '19:23:14.958'
Fraction of seconds is useful when working with tools like FFmpeg.
The SMPTE standard limits the timecode with 24 hours. Even though, Timecode
instance will show the current timecode inline with the SMPTE standard, it will
keep counting the total frames without clipping it.
Please report any bugs to the `GitHub`_ page.
%prep
%autosetup -n timecode-1.3.1
%build
%py3_build
%install
%py3_install
install -d -m755 %{buildroot}/%{_pkgdocdir}
if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi
if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi
if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi
if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi
pushd %{buildroot}
if [ -d usr/lib ]; then
find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst
fi
if [ -d usr/lib64 ]; then
find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst
fi
if [ -d usr/bin ]; then
find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst
fi
if [ -d usr/sbin ]; then
find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst
fi
touch doclist.lst
if [ -d usr/share/man ]; then
find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst
fi
popd
mv %{buildroot}/filelist.lst .
mv %{buildroot}/doclist.lst .
%files -n python3-timecode -f filelist.lst
%dir %{python3_sitelib}/*
%files help -f doclist.lst
%{_docdir}/*
%changelog
* Fri May 05 2023 Python_Bot <Python_Bot@openeuler.org> - 1.3.1-1
- Package Spec generated
|