diff options
Diffstat (limited to 'python-timecode.spec')
| -rw-r--r-- | python-timecode.spec | 219 |
1 files changed, 219 insertions, 0 deletions
diff --git a/python-timecode.spec b/python-timecode.spec new file mode 100644 index 0000000..94ed496 --- /dev/null +++ b/python-timecode.spec @@ -0,0 +1,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 |
