{ "info": { "author": "Andy Guo", "author_email": "technology@phenom-films.com", "bugtrack_url": null, "classifiers": [ "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: Implementation" ], "description": "dayu_timecode\n=============\n\n|Build Status|\n\nTimecode \u7684\u8ba1\u7b97\u5e93\u3002\u9488\u5bf9\u5f71\u89c6\u884c\u4e1a\u5e38\u89c1\u7684\u5404\u79cdtimecode\u3001frame\n\u8fdb\u884c\u8ba1\u7b97\u3002\u6709\u4e0b\u9762\u7684\u7279\u70b9\uff1a\n\n- \u652f\u6301SMPTE NDF\u3001SMPTE DF\u3001DLP\u3001SRT\u3001FFMPEG\u3001FCPX \u591a\u79cd\u683c\u5f0f\u7684timecode\n- \u76ee\u524d\u652f\u6301\u5230 fps=60 \u7684\u9ad8\u5e27\u901f\u7387\n- \u652f\u6301hour loop \u548c \u8d1f\u6570\u65f6\u95f4\n- timecode\u3001frame \u4e4b\u95f4\u81ea\u7531\u8f6c\u6362\n- \u652f\u6301\u548c\u5176\u4ed6\u5e38\u7528\u7684\u6570\u5b57\u7c7b\u578b\u8fdb\u884c\u8fd0\u7b97\uff0c\u65e0\u9700\u8f6c\u6362\uff08int\u3001float\u3001Fraction\uff09\n\n\u5982\u4f55\u5b89\u88c5\n========\n\n\u76f4\u63a5\u4f7f\u7528pip \u5373\u53ef\u5b89\u88c5\n\n.. code:: shell\n\n pip install -U dayu_timecode\n\nDayuTimeCode \u4f7f\u7528\u7b80\u4ecb\n=====================\n\n.. code:: python\n\n from dayu_timecode import DayuTimeCode\n\n # \u9488\u5bf9\u5404\u79cd\u8f93\u5165\uff0c\u8fdb\u884c\u521d\u59cb\u5316\n smpte_ndf_tc = DayuTimeCode('01:02:03:12', fps=24.0)\n smpte_df_tc = DayuTimeCode('01:09:00;02', fps=29.97)\n srt_tc = DayuTimeCode('00:00:03,245', fps=25.0)\n dlp_tc = DayuTimeCode('01:12:22:136', fps=24.0)\n ffmpeg_tc = DayuTimeCode('00:02:12.24', fps=24.0)\n fcpx_tc = DayuTimeCode('1/24s', fps=24.0)\n frame_int_tc = DayuTimeCode(100, fps=25.0)\n frame_long_tc = DayuTimeCode(86400.2, fps=24.0)\n time_tc = DayuTimeCode([24, 3], fps=24.0)\n\n # \u65f6\u7801\u3001\u5e27\u6570\u8f6c\u6362\n assert smpte_ndf_tc.timecode() == '01:02:03:12'\n assert smpte_ndf_tc.frame() == 89364.00\n\n # \u5f97\u5230\u65f6\u7801\u4e2d \u5c0f\u65f6\u3001\u5206\u949f\u3001\u79d2\u3001\u5e27\u6570\u7684\u5206\u91cf\n assert smpte_ndf_tc.hour == 1\n assert smpte_ndf_tc.minute == 2\n assert smpte_ndf_tc.second == 3\n assert smpte_ndf_tc.sub_frame == 12\n\n a = DayuTimeCode('01:02:03:12', fps=24.0)\n b = DayuTimeCode(86400.2, fps=24.0)\n\n # \u52a0\u6cd5\u3001\u51cf\u6cd5\u3001\u4e58\u6cd5\u3001\u9664\u6cd5\n print a + b # (02:02:03:12, 175764.20, 24.00)\n print a - b # (00:02:03:12, 2963.80, 24.00)\n print a * 3 # (03:06:10:12, 268092.00, 24.00)\n print a / 2 # (00:31:01:18, 44682.00, 24.00)\n\n # \u5404\u79cd\u6bd4\u8f83\u65b9\u5f0f\n print a == b\n print a > b\n print a >= b\n print a < b\n print a <= b\n print a != b\n\n # \u7c7b\u578b\u8f6c\u6362\n print float(a)\n print int(a)\n\n # \u53d8\u901f\uff08\u6307\u5b9a\u4e00\u4e2a\u8d77\u70b9\uff0c\u4ee5\u53ca\u53d8\u901f\u7684\u901f\u5ea6\uff09\n start_tc = DayuTimeCode(0)\n print a.retime(start_tc, 2.0) # \u8868\u793a\u4ece0 \u5f00\u59cb\uff0c\u4e24\u500d\u901f\u64ad\u653e\u540e\u7684timecode\n\nDayuTimeRange \u4f7f\u7528\u7b80\u4ecb\n======================\n\nDayuTimeRange \u7531\u4e24\u4e2aDayuTimeCode \u7ec4\u6210\u7684\u4e00\u4e2a\u65f6\u95f4\u533a\u57df\u3002\n\n.. code:: python\n\n # \u521d\u59cb\u5316\n start = DayuTimeCode(0)\n end = DayuTimeCode(100)\n time_range = DayuTimeRange(start, end)\n # zero_length_range = DayuTimeRange(DayuTimeCode(10), DayuTimeCode(10)) # \u4f1a\u51fa\u9519\uff0c\u56e0\u4e3astart \u548cend \u90fd\u662f\u540c\u4e00\u4e2a\u65f6\u95f4\n\n # \u8bbf\u95ee\u5c5e\u6027\n print time_range.start # \u8d77\u70b9\n print time_range.end # \u7ec8\u70b9\n print time_range.duration.frame() # \u83b7\u5f97 frame \u957f\u5ea6\n print len(time_range) # \u83b7\u5f97 frame \u957f\u5ea6\u7684\u53e6\u4e00\u79cd\u65b9\u6cd5\n\n # \u52a0\u6cd5\u3001\u51cf\u6cd5\u3001\u4e58\u6cd5\u3001\u9664\u6cd5\n print time_range + 10 # \u8868\u793a\u6574\u4e2atime_range \u5411\u53f3\u79fb\u52a8 10 frame\n print time_range - 20 # \u8868\u793a\u6574\u4e2atime_range \u5411\u5de6\u79fb\u52a8 20 frame\n print time_range * 2 # \u8868\u793a\u6574\u4e2atime_range \u8d77\u70b9\u4e0d\u52a8\uff0c\u957f\u5ea6\u53d8\u6210\u539f\u6765\u7684 2 \u500d\n print time_range / 3 # \u8868\u793a\u6574\u4e2atime_range \u8d77\u70b9\u4e0d\u52a8\uff0c\u957f\u5ea6\u53d8\u6210\u539f\u6765\u7684 \u4e09\u5206\u4e4b\u4e00\n\n # \u5904\u7406handle\n time_range.handle(10, 10) # \u8868\u793atime_range \u7684start \u5411\u5de6\u589e\u52a0 10 frame\uff0cend \u5411\u53f3\u589e\u52a0 10 frame\n\n # \u5207\u955c\u5934\u5904\u7406\n cut_point = DayuTimeCode(20)\n print time_range.cut(cut_point) # \u5f97\u5230\u4e24\u4e2a\u533a\u57df (0 - 20), (20 - 100)\n\n # \u5224\u65adtimecode \u6216\u8005\u4e00\u4e2atime range \u662f\u5426\u5728\u5f53\u524dtimerange \u7684\u5185\u90e8\n sample_tc = DayuTimeCode(20)\n sample_time_range = DayuTimeRange(DayuTimeCode(30), DayuTimeCode(70))\n assert sample_tc in time_range\n assert sample_time_range in time_range\n\n # \u4e24\u4e2aDayuTimeRange \u4e4b\u95f4\u7684\u4ea4\u96c6\u3001\u5e76\u96c6\u3001\u5dee\u5f02 \u8fd0\u7b97\n a = DayuTimeRange(DayuTimeCode(0), DayuTimeCode(100))\n b = DayuTimeRange(DayuTimeCode(50), DayuTimeCode(150))\n print a & b # \u4e8c\u8005\u4e4b\u95f4\u4ea4\u53e0\u7684\u90e8\u5206 (50 - 100)\n print a | b # \u4e8c\u8005\u7684\u5e76\u96c6\u8fd0\u7b97 \uff080 - 150\uff09\n print a ^ b # \u4e8c\u8005\u7684\u5dee\u5f02\u8fd0\u7b97 (0 - 50), (100 - 150)\n\n # \u904d\u5386time range \u5185\u7684\u6240\u6709\u65f6\u7801\n for tc in time_range:\n print tc # \u4f1a\u9010\u4e00\u6253\u5370 \u4ece DayuTimeCode(0) ~ DayuTimeCode(99)\n\n.. |Build Status| image:: https://travis-ci.org/phenom-films/dayu_timecode.svg?branch=master\n :target: https://travis-ci.org/phenom-films/dayu_timecode\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/phenom-films/dayu_timecode", "keywords": "", "license": "MIT", "maintainer": "Andy Guo", "maintainer_email": "andyguo@phenom-films.com", "name": "dayu-timecode", "package_url": "https://pypi.org/project/dayu-timecode/", "platform": "dayu_timecode", "project_url": "https://pypi.org/project/dayu-timecode/", "project_urls": { "Homepage": "https://github.com/phenom-films/dayu_timecode" }, "release_url": "https://pypi.org/project/dayu-timecode/0.2/", "requires_dist": null, "requires_python": "", "summary": "timecode lib for human. support SMPTE non-drop frame and drop frames and many other timecode formats.", "version": "0.2" }, "last_serial": 4299562, "releases": { "0.2": [ { "comment_text": "", "digests": { "md5": "f16b0a2dec31be499a4dc546f8dd7da8", "sha256": "f850258872f77771589786e109725b0479c1d08914f82db54f667227a72cdda0" }, "downloads": -1, "filename": "dayu_timecode-0.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f16b0a2dec31be499a4dc546f8dd7da8", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 13101, "upload_time": "2018-09-22T12:26:08", "url": "https://files.pythonhosted.org/packages/ff/01/03afa8b84833efca6ecaab16d50b5bb83115fe20409d9e76c4057ace8a61/dayu_timecode-0.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7bd4a67d48a69f2939a9972546b680cb", "sha256": "ec98f2df075407f02bda12469e7ae577d52c477451d7588e3dd9e25e02d493cf" }, "downloads": -1, "filename": "dayu_timecode-0.2.tar.gz", "has_sig": false, "md5_digest": "7bd4a67d48a69f2939a9972546b680cb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12411, "upload_time": "2018-09-22T12:26:10", "url": "https://files.pythonhosted.org/packages/48/9a/cdb5e46a12bdcdbe38e01564509769336ce826931eb5414ce4eaa6a84255/dayu_timecode-0.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "f16b0a2dec31be499a4dc546f8dd7da8", "sha256": "f850258872f77771589786e109725b0479c1d08914f82db54f667227a72cdda0" }, "downloads": -1, "filename": "dayu_timecode-0.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f16b0a2dec31be499a4dc546f8dd7da8", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 13101, "upload_time": "2018-09-22T12:26:08", "url": "https://files.pythonhosted.org/packages/ff/01/03afa8b84833efca6ecaab16d50b5bb83115fe20409d9e76c4057ace8a61/dayu_timecode-0.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7bd4a67d48a69f2939a9972546b680cb", "sha256": "ec98f2df075407f02bda12469e7ae577d52c477451d7588e3dd9e25e02d493cf" }, "downloads": -1, "filename": "dayu_timecode-0.2.tar.gz", "has_sig": false, "md5_digest": "7bd4a67d48a69f2939a9972546b680cb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12411, "upload_time": "2018-09-22T12:26:10", "url": "https://files.pythonhosted.org/packages/48/9a/cdb5e46a12bdcdbe38e01564509769336ce826931eb5414ce4eaa6a84255/dayu_timecode-0.2.tar.gz" } ] }