%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 - 1.3.1-1 - Package Spec generated