summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--python-timecode.spec219
-rw-r--r--sources1
3 files changed, 221 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..12f0e93 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/timecode-1.3.1.tar.gz
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
diff --git a/sources b/sources
new file mode 100644
index 0000000..0b22159
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+a374785c830a0430470b50361f70ff60 timecode-1.3.1.tar.gz