summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--python-parse-torrent-title.spec735
-rw-r--r--sources1
3 files changed, 737 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..5466a0b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/parse-torrent-title-2.5.tar.gz
diff --git a/python-parse-torrent-title.spec b/python-parse-torrent-title.spec
new file mode 100644
index 0000000..7470d98
--- /dev/null
+++ b/python-parse-torrent-title.spec
@@ -0,0 +1,735 @@
+%global _empty_manifest_terminate_build 0
+Name: python-parse-torrent-title
+Version: 2.5
+Release: 1
+Summary: Extract media information from torrent-like filename
+License: MIT
+URL: https://github.com/platelminto/parse-torrent-title
+Source0: https://mirrors.aliyun.com/pypi/web/packages/ec/b7/d61394e76937060027db463677aa3b1ed9ac4a5fa941f1e31b33462bdef2/parse-torrent-title-2.5.tar.gz
+BuildArch: noarch
+
+
+%description
+# parse-torrent-title
+
+> Extract media information from torrent-like filename
+
+![Python versions](https://img.shields.io/badge/Python-2.7%2C%203.5-brightgreen.svg?style=flat-square)
+[![Build Status](https://travis-ci.com/platelminto/parse-torrent-title.svg?branch=master)](https://travis-ci.com/platelminto/parse-torrent-title)
+
+Originally based off of [this JavaScript
+library](https://github.com/jzjzjzj/parse-torrent-name).
+
+Extract all possible media information from a filename. Multiple regex
+rules are applied on the filename, each of which extracts appropriate
+information. If a rule matches, the corresponding part
+is removed from the filename. Finally, what remains is taken as the
+title of the content.
+
+
+## Install
+
+PTN can be installed automatically using `pip`.
+
+```sh
+$ pip install parse-torrent-title
+```
+
+### Requirements
+
+Requirements are **optional**. That being said, the `regex` library increases performance on Python 2 by more than 10x, so it might be worth installing with:
+
+```sh
+$ pip install -r requirements.txt
+```
+
+With Python 3, the default `re` module is faster than `regex`, so it will always be used regardless of installed requirements.
+
+## Why?
+
+Online APIs by providers like
+[TMDb](https://www.themoviedb.org/documentation/api),
+[TVDb](http://thetvdb.com/wiki/index.php?title=Programmers_API), and
+[OMDb](http://www.omdbapi.com/) don't react well to
+queries which include any kind of extra information. To get proper results from
+these APIs, only the title of the content should be provided in the search
+query. The accuracy of the results can be
+improved by passing in the year, which can also be extracted using this library.
+
+## Examples
+
+Movies, series (seasons & episodes), and subtitles can be parsed. All meaningful information is
+extracted and returned in a dictionary. Text which couldn't be
+parsed is returned in the `excess` field.
+
+```py
+import PTN
+
+
+PTN.parse('The Walking Dead S05E03 720p HDTV x264-ASAP[ettv]')
+# {
+# 'encoder': 'ASAP',
+# 'title': 'The Walking Dead',
+# 'season': 5,
+# 'episode': 3,
+# 'resolution': '720p',
+# 'codec': 'H.264',
+# 'quality': 'HDTV',
+# 'website': 'ettv'
+# }
+
+PTN.parse('Vacancy (2007) 720p Bluray Dual Audio [Hindi + English] ⭐800 MB⭐ DD - 2.0 MSub x264 - Shadow (BonsaiHD)')
+# {
+# 'encoder': 'Shadow',
+# 'title': 'Vacancy',
+# 'resolution': '720p',
+# 'codec': 'H.264',
+# 'year': 2007,
+# 'audio': 'Dolby Digital 2.0',
+# 'quality': 'Blu-ray',
+# 'language': ['Hindi', 'English'],
+# 'subtitles': 'Available',
+# 'size': 800MB,
+# 'website': BonsaiHD
+# 'excess': '⭐⭐'
+# }
+
+PTN.parse('Deadliest.Catch.S00E66.No.Safe.Passage.720p.AMZN.WEB-DL.DDP2.0.H.264-NTb[TGx]')
+# {
+# 'encoder': 'NTb',
+# 'title': 'Deadliest Catch',
+# 'resolution': '720p',
+# 'codec': 'H.264',
+# 'audio' : 'Dolby Digital Plus 2.0',
+# 'network': 'Amazon Studios',
+# 'season': 0,
+# 'episode': 66,
+# 'quality': 'WEB-DL',
+# 'episodeName': 'No Safe Passage',
+# 'website': 'TGx'
+# }
+
+PTN.parse('Z Nation (2014)S01-01-13 (2014) Full Season.XviD - Italian English.Ac3.Sub.ita.eng.MIRCrew')
+# {
+# 'website': 'MIRCrew',
+# 'title': 'Z Nation',
+# 'season': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13],
+# 'codec': 'Xvid',
+# 'year': 2014,
+# 'audio': 'Dolby Digital',
+# 'language': ['Italian', 'English'],
+# 'subtitles': ['Italian', 'English']
+# }
+```
+
+More examples (inputs and outputs) can be found looking through `tests/files`.
+
+### Raw info
+
+The matches in the torrent name are standardised into specific strings, according to scene rules where possible - `'WEBDL'`, `'WEB DL'`, and `'HDRip'` are all converted to `'WEB-DL'`, for example. `'DDP51'` becomes `'Dolby Digital Plus 5.1'`. `['ita', 'eng']` becomes `['Italian', 'English']`.To disable this, and return just what was matched in the torrent, run:
+
+```py
+PTN.parse('A freakishly cool movie or TV episode', standardise=False)
+```
+
+### Types of parts
+
+The types of parts can be strings, integers, booleans, or lists of the first 2. To simplify this, you can enable the `coherent_types` flag. This will override the types described below according to these rules:
+- `title` and `episodeName` will always be strings.
+- All other non-boolean fields will become lists of the type they currently are. For example, `language` will always be a list of strings, and `episode` a list of episodes. This can be weird for some fields, but it avoids a lot of `isinstance` calls - just always use `x in y` and you should be fine.
+- Boolean types will remain as booleans.
+
+To enable this flag:
+```py
+PTN.parse('An even cooler movie or TV episode', coherent_types=True)
+```
+
+### Parts extracted
+
+* **audio** *(string)*
+* **bitDepth** *(integer)*
+* **codec** *(string)*
+* **day** *(integer)*
+* **directorsCut** *(boolean)*
+* **documentary** *(boolean)*
+* **encoder** *(string)*
+* **episode** *(integer, integer list)*
+* **episodeName** *(string)*
+* **excess** *(string, string list)*
+* **extended** *(boolean)*
+* **filetype** *(string)*
+* **fps** *(integer)*
+* **genre** *(string, string list)*
+* **hardcoded** *(boolean)*
+* **hdr** *(boolean)*
+* **internal** *(boolean)*
+* **internationalCut** *(boolean)*
+* **language** *(string, string list)*
+* **limited** *(boolean)*
+* **month** *(integer)*
+* **network** *(string)*
+* **proper** *(boolean)*
+* **quality** *(string)*
+* **readnfo** *(boolean)*
+* **region** *(string)*
+* **remastered** *(boolean)*
+* **remux** *(boolean)*
+* **repack** *(boolean)*
+* **resolution** *(string)*
+* **sbs** *(string)*
+* **season** *(integer, integer list)*
+* **site** *(string)*
+* **size** *(string)*
+* **subtitles** *(string, string list)*
+* **title** *(string)*
+* **unrated** *(boolean)*
+* **untouched** *(boolean)*
+* **upscaled** *(boolean)*
+* **widescreen** *(boolean)*
+* **year** *(integer)*
+* **3d** *(boolean)*
+
+## Contributing
+
+Submit a PR on the `dev` branch, including tests for what gets newly matched (if applicable), having run the `pre-commit` hooks. Please provide input torrent names in `tests/files/input.json` and full output json objects (with `standardise=False`) in `tests/files/output_raw.json` (where the fields `encoder`, `excess`, `site`, and `episodeName` don't have to be included). Also add the standardised output to `tests/files/output_standard.json`, only including fields that are changed, along with `title`.
+
+## Additions to parse-torrent-name
+
+Below are the additions that have been made to [/u/divijbindlish's original repo](https://github.com/divijbindlish/parse-torrent-name), including other contributors' work. parse-torrent-title was initially forked from [here](https://github.com/roidayan/parse-torrent-name/tree/updates), but a lot of extra work has been done since, and given that the original repo is inactive, it was unforked.
+
+### Updates on top of [/u/roidayan's work](https://github.com/roidayan/parse-torrent-name/tree/updates)
+
+- Added standardisation of output strings.
+- Added multi-language support.
+- Added multi-episode support.
+- Improved support for anime tv releases.
+- Improved support for Indian releases.
+- Added various fields (see field list above).
+- Added proper subtitle support.
+- Added proper support for matching episode names.
+- Added support for full `YYYY-MM-DD`-type dates, usually useful for daily shows that otherwise have no episode name.
+- Added support for 2020s release years.
+- Added exceptions list for media with known, non-fixable issues.
+- Expanded and improved matching for various fields.
+- Fixed incorrect parsing of titles containing years.
+- Fixed groups/encoders/websites mixups: a group/encoder is now just called an encoder, and a public tracker site goes under website.
+- Added more tests and cleaned up previous ones.
+
+
+### [/u/roidayan's work](https://github.com/roidayan/parse-torrent-name/tree/updates) on top of [the original](https://github.com/divijbindlish/parse-torrent-name)
+
+- Added support for complete season parsing (either just a full season, or a range), not just single episodes.
+- Added to various fields' patterns.
+- Improved season & episode matching.
+- Fixed group names from having the container & bt site name.
+- Added more tests.
+
+## License
+
+MIT © 2015-2017 [Divij Bindlish](http://divijbindlish.in)
+
+MIT © 2020 [Giorgio Momigliano](https://github.com/platelminto)
+
+
+
+
+%package -n python3-parse-torrent-title
+Summary: Extract media information from torrent-like filename
+Provides: python-parse-torrent-title
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+BuildRequires: python3-pip
+%description -n python3-parse-torrent-title
+# parse-torrent-title
+
+> Extract media information from torrent-like filename
+
+![Python versions](https://img.shields.io/badge/Python-2.7%2C%203.5-brightgreen.svg?style=flat-square)
+[![Build Status](https://travis-ci.com/platelminto/parse-torrent-title.svg?branch=master)](https://travis-ci.com/platelminto/parse-torrent-title)
+
+Originally based off of [this JavaScript
+library](https://github.com/jzjzjzj/parse-torrent-name).
+
+Extract all possible media information from a filename. Multiple regex
+rules are applied on the filename, each of which extracts appropriate
+information. If a rule matches, the corresponding part
+is removed from the filename. Finally, what remains is taken as the
+title of the content.
+
+
+## Install
+
+PTN can be installed automatically using `pip`.
+
+```sh
+$ pip install parse-torrent-title
+```
+
+### Requirements
+
+Requirements are **optional**. That being said, the `regex` library increases performance on Python 2 by more than 10x, so it might be worth installing with:
+
+```sh
+$ pip install -r requirements.txt
+```
+
+With Python 3, the default `re` module is faster than `regex`, so it will always be used regardless of installed requirements.
+
+## Why?
+
+Online APIs by providers like
+[TMDb](https://www.themoviedb.org/documentation/api),
+[TVDb](http://thetvdb.com/wiki/index.php?title=Programmers_API), and
+[OMDb](http://www.omdbapi.com/) don't react well to
+queries which include any kind of extra information. To get proper results from
+these APIs, only the title of the content should be provided in the search
+query. The accuracy of the results can be
+improved by passing in the year, which can also be extracted using this library.
+
+## Examples
+
+Movies, series (seasons & episodes), and subtitles can be parsed. All meaningful information is
+extracted and returned in a dictionary. Text which couldn't be
+parsed is returned in the `excess` field.
+
+```py
+import PTN
+
+
+PTN.parse('The Walking Dead S05E03 720p HDTV x264-ASAP[ettv]')
+# {
+# 'encoder': 'ASAP',
+# 'title': 'The Walking Dead',
+# 'season': 5,
+# 'episode': 3,
+# 'resolution': '720p',
+# 'codec': 'H.264',
+# 'quality': 'HDTV',
+# 'website': 'ettv'
+# }
+
+PTN.parse('Vacancy (2007) 720p Bluray Dual Audio [Hindi + English] ⭐800 MB⭐ DD - 2.0 MSub x264 - Shadow (BonsaiHD)')
+# {
+# 'encoder': 'Shadow',
+# 'title': 'Vacancy',
+# 'resolution': '720p',
+# 'codec': 'H.264',
+# 'year': 2007,
+# 'audio': 'Dolby Digital 2.0',
+# 'quality': 'Blu-ray',
+# 'language': ['Hindi', 'English'],
+# 'subtitles': 'Available',
+# 'size': 800MB,
+# 'website': BonsaiHD
+# 'excess': '⭐⭐'
+# }
+
+PTN.parse('Deadliest.Catch.S00E66.No.Safe.Passage.720p.AMZN.WEB-DL.DDP2.0.H.264-NTb[TGx]')
+# {
+# 'encoder': 'NTb',
+# 'title': 'Deadliest Catch',
+# 'resolution': '720p',
+# 'codec': 'H.264',
+# 'audio' : 'Dolby Digital Plus 2.0',
+# 'network': 'Amazon Studios',
+# 'season': 0,
+# 'episode': 66,
+# 'quality': 'WEB-DL',
+# 'episodeName': 'No Safe Passage',
+# 'website': 'TGx'
+# }
+
+PTN.parse('Z Nation (2014)S01-01-13 (2014) Full Season.XviD - Italian English.Ac3.Sub.ita.eng.MIRCrew')
+# {
+# 'website': 'MIRCrew',
+# 'title': 'Z Nation',
+# 'season': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13],
+# 'codec': 'Xvid',
+# 'year': 2014,
+# 'audio': 'Dolby Digital',
+# 'language': ['Italian', 'English'],
+# 'subtitles': ['Italian', 'English']
+# }
+```
+
+More examples (inputs and outputs) can be found looking through `tests/files`.
+
+### Raw info
+
+The matches in the torrent name are standardised into specific strings, according to scene rules where possible - `'WEBDL'`, `'WEB DL'`, and `'HDRip'` are all converted to `'WEB-DL'`, for example. `'DDP51'` becomes `'Dolby Digital Plus 5.1'`. `['ita', 'eng']` becomes `['Italian', 'English']`.To disable this, and return just what was matched in the torrent, run:
+
+```py
+PTN.parse('A freakishly cool movie or TV episode', standardise=False)
+```
+
+### Types of parts
+
+The types of parts can be strings, integers, booleans, or lists of the first 2. To simplify this, you can enable the `coherent_types` flag. This will override the types described below according to these rules:
+- `title` and `episodeName` will always be strings.
+- All other non-boolean fields will become lists of the type they currently are. For example, `language` will always be a list of strings, and `episode` a list of episodes. This can be weird for some fields, but it avoids a lot of `isinstance` calls - just always use `x in y` and you should be fine.
+- Boolean types will remain as booleans.
+
+To enable this flag:
+```py
+PTN.parse('An even cooler movie or TV episode', coherent_types=True)
+```
+
+### Parts extracted
+
+* **audio** *(string)*
+* **bitDepth** *(integer)*
+* **codec** *(string)*
+* **day** *(integer)*
+* **directorsCut** *(boolean)*
+* **documentary** *(boolean)*
+* **encoder** *(string)*
+* **episode** *(integer, integer list)*
+* **episodeName** *(string)*
+* **excess** *(string, string list)*
+* **extended** *(boolean)*
+* **filetype** *(string)*
+* **fps** *(integer)*
+* **genre** *(string, string list)*
+* **hardcoded** *(boolean)*
+* **hdr** *(boolean)*
+* **internal** *(boolean)*
+* **internationalCut** *(boolean)*
+* **language** *(string, string list)*
+* **limited** *(boolean)*
+* **month** *(integer)*
+* **network** *(string)*
+* **proper** *(boolean)*
+* **quality** *(string)*
+* **readnfo** *(boolean)*
+* **region** *(string)*
+* **remastered** *(boolean)*
+* **remux** *(boolean)*
+* **repack** *(boolean)*
+* **resolution** *(string)*
+* **sbs** *(string)*
+* **season** *(integer, integer list)*
+* **site** *(string)*
+* **size** *(string)*
+* **subtitles** *(string, string list)*
+* **title** *(string)*
+* **unrated** *(boolean)*
+* **untouched** *(boolean)*
+* **upscaled** *(boolean)*
+* **widescreen** *(boolean)*
+* **year** *(integer)*
+* **3d** *(boolean)*
+
+## Contributing
+
+Submit a PR on the `dev` branch, including tests for what gets newly matched (if applicable), having run the `pre-commit` hooks. Please provide input torrent names in `tests/files/input.json` and full output json objects (with `standardise=False`) in `tests/files/output_raw.json` (where the fields `encoder`, `excess`, `site`, and `episodeName` don't have to be included). Also add the standardised output to `tests/files/output_standard.json`, only including fields that are changed, along with `title`.
+
+## Additions to parse-torrent-name
+
+Below are the additions that have been made to [/u/divijbindlish's original repo](https://github.com/divijbindlish/parse-torrent-name), including other contributors' work. parse-torrent-title was initially forked from [here](https://github.com/roidayan/parse-torrent-name/tree/updates), but a lot of extra work has been done since, and given that the original repo is inactive, it was unforked.
+
+### Updates on top of [/u/roidayan's work](https://github.com/roidayan/parse-torrent-name/tree/updates)
+
+- Added standardisation of output strings.
+- Added multi-language support.
+- Added multi-episode support.
+- Improved support for anime tv releases.
+- Improved support for Indian releases.
+- Added various fields (see field list above).
+- Added proper subtitle support.
+- Added proper support for matching episode names.
+- Added support for full `YYYY-MM-DD`-type dates, usually useful for daily shows that otherwise have no episode name.
+- Added support for 2020s release years.
+- Added exceptions list for media with known, non-fixable issues.
+- Expanded and improved matching for various fields.
+- Fixed incorrect parsing of titles containing years.
+- Fixed groups/encoders/websites mixups: a group/encoder is now just called an encoder, and a public tracker site goes under website.
+- Added more tests and cleaned up previous ones.
+
+
+### [/u/roidayan's work](https://github.com/roidayan/parse-torrent-name/tree/updates) on top of [the original](https://github.com/divijbindlish/parse-torrent-name)
+
+- Added support for complete season parsing (either just a full season, or a range), not just single episodes.
+- Added to various fields' patterns.
+- Improved season & episode matching.
+- Fixed group names from having the container & bt site name.
+- Added more tests.
+
+## License
+
+MIT © 2015-2017 [Divij Bindlish](http://divijbindlish.in)
+
+MIT © 2020 [Giorgio Momigliano](https://github.com/platelminto)
+
+
+
+
+%package help
+Summary: Development documents and examples for parse-torrent-title
+Provides: python3-parse-torrent-title-doc
+%description help
+# parse-torrent-title
+
+> Extract media information from torrent-like filename
+
+![Python versions](https://img.shields.io/badge/Python-2.7%2C%203.5-brightgreen.svg?style=flat-square)
+[![Build Status](https://travis-ci.com/platelminto/parse-torrent-title.svg?branch=master)](https://travis-ci.com/platelminto/parse-torrent-title)
+
+Originally based off of [this JavaScript
+library](https://github.com/jzjzjzj/parse-torrent-name).
+
+Extract all possible media information from a filename. Multiple regex
+rules are applied on the filename, each of which extracts appropriate
+information. If a rule matches, the corresponding part
+is removed from the filename. Finally, what remains is taken as the
+title of the content.
+
+
+## Install
+
+PTN can be installed automatically using `pip`.
+
+```sh
+$ pip install parse-torrent-title
+```
+
+### Requirements
+
+Requirements are **optional**. That being said, the `regex` library increases performance on Python 2 by more than 10x, so it might be worth installing with:
+
+```sh
+$ pip install -r requirements.txt
+```
+
+With Python 3, the default `re` module is faster than `regex`, so it will always be used regardless of installed requirements.
+
+## Why?
+
+Online APIs by providers like
+[TMDb](https://www.themoviedb.org/documentation/api),
+[TVDb](http://thetvdb.com/wiki/index.php?title=Programmers_API), and
+[OMDb](http://www.omdbapi.com/) don't react well to
+queries which include any kind of extra information. To get proper results from
+these APIs, only the title of the content should be provided in the search
+query. The accuracy of the results can be
+improved by passing in the year, which can also be extracted using this library.
+
+## Examples
+
+Movies, series (seasons & episodes), and subtitles can be parsed. All meaningful information is
+extracted and returned in a dictionary. Text which couldn't be
+parsed is returned in the `excess` field.
+
+```py
+import PTN
+
+
+PTN.parse('The Walking Dead S05E03 720p HDTV x264-ASAP[ettv]')
+# {
+# 'encoder': 'ASAP',
+# 'title': 'The Walking Dead',
+# 'season': 5,
+# 'episode': 3,
+# 'resolution': '720p',
+# 'codec': 'H.264',
+# 'quality': 'HDTV',
+# 'website': 'ettv'
+# }
+
+PTN.parse('Vacancy (2007) 720p Bluray Dual Audio [Hindi + English] ⭐800 MB⭐ DD - 2.0 MSub x264 - Shadow (BonsaiHD)')
+# {
+# 'encoder': 'Shadow',
+# 'title': 'Vacancy',
+# 'resolution': '720p',
+# 'codec': 'H.264',
+# 'year': 2007,
+# 'audio': 'Dolby Digital 2.0',
+# 'quality': 'Blu-ray',
+# 'language': ['Hindi', 'English'],
+# 'subtitles': 'Available',
+# 'size': 800MB,
+# 'website': BonsaiHD
+# 'excess': '⭐⭐'
+# }
+
+PTN.parse('Deadliest.Catch.S00E66.No.Safe.Passage.720p.AMZN.WEB-DL.DDP2.0.H.264-NTb[TGx]')
+# {
+# 'encoder': 'NTb',
+# 'title': 'Deadliest Catch',
+# 'resolution': '720p',
+# 'codec': 'H.264',
+# 'audio' : 'Dolby Digital Plus 2.0',
+# 'network': 'Amazon Studios',
+# 'season': 0,
+# 'episode': 66,
+# 'quality': 'WEB-DL',
+# 'episodeName': 'No Safe Passage',
+# 'website': 'TGx'
+# }
+
+PTN.parse('Z Nation (2014)S01-01-13 (2014) Full Season.XviD - Italian English.Ac3.Sub.ita.eng.MIRCrew')
+# {
+# 'website': 'MIRCrew',
+# 'title': 'Z Nation',
+# 'season': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13],
+# 'codec': 'Xvid',
+# 'year': 2014,
+# 'audio': 'Dolby Digital',
+# 'language': ['Italian', 'English'],
+# 'subtitles': ['Italian', 'English']
+# }
+```
+
+More examples (inputs and outputs) can be found looking through `tests/files`.
+
+### Raw info
+
+The matches in the torrent name are standardised into specific strings, according to scene rules where possible - `'WEBDL'`, `'WEB DL'`, and `'HDRip'` are all converted to `'WEB-DL'`, for example. `'DDP51'` becomes `'Dolby Digital Plus 5.1'`. `['ita', 'eng']` becomes `['Italian', 'English']`.To disable this, and return just what was matched in the torrent, run:
+
+```py
+PTN.parse('A freakishly cool movie or TV episode', standardise=False)
+```
+
+### Types of parts
+
+The types of parts can be strings, integers, booleans, or lists of the first 2. To simplify this, you can enable the `coherent_types` flag. This will override the types described below according to these rules:
+- `title` and `episodeName` will always be strings.
+- All other non-boolean fields will become lists of the type they currently are. For example, `language` will always be a list of strings, and `episode` a list of episodes. This can be weird for some fields, but it avoids a lot of `isinstance` calls - just always use `x in y` and you should be fine.
+- Boolean types will remain as booleans.
+
+To enable this flag:
+```py
+PTN.parse('An even cooler movie or TV episode', coherent_types=True)
+```
+
+### Parts extracted
+
+* **audio** *(string)*
+* **bitDepth** *(integer)*
+* **codec** *(string)*
+* **day** *(integer)*
+* **directorsCut** *(boolean)*
+* **documentary** *(boolean)*
+* **encoder** *(string)*
+* **episode** *(integer, integer list)*
+* **episodeName** *(string)*
+* **excess** *(string, string list)*
+* **extended** *(boolean)*
+* **filetype** *(string)*
+* **fps** *(integer)*
+* **genre** *(string, string list)*
+* **hardcoded** *(boolean)*
+* **hdr** *(boolean)*
+* **internal** *(boolean)*
+* **internationalCut** *(boolean)*
+* **language** *(string, string list)*
+* **limited** *(boolean)*
+* **month** *(integer)*
+* **network** *(string)*
+* **proper** *(boolean)*
+* **quality** *(string)*
+* **readnfo** *(boolean)*
+* **region** *(string)*
+* **remastered** *(boolean)*
+* **remux** *(boolean)*
+* **repack** *(boolean)*
+* **resolution** *(string)*
+* **sbs** *(string)*
+* **season** *(integer, integer list)*
+* **site** *(string)*
+* **size** *(string)*
+* **subtitles** *(string, string list)*
+* **title** *(string)*
+* **unrated** *(boolean)*
+* **untouched** *(boolean)*
+* **upscaled** *(boolean)*
+* **widescreen** *(boolean)*
+* **year** *(integer)*
+* **3d** *(boolean)*
+
+## Contributing
+
+Submit a PR on the `dev` branch, including tests for what gets newly matched (if applicable), having run the `pre-commit` hooks. Please provide input torrent names in `tests/files/input.json` and full output json objects (with `standardise=False`) in `tests/files/output_raw.json` (where the fields `encoder`, `excess`, `site`, and `episodeName` don't have to be included). Also add the standardised output to `tests/files/output_standard.json`, only including fields that are changed, along with `title`.
+
+## Additions to parse-torrent-name
+
+Below are the additions that have been made to [/u/divijbindlish's original repo](https://github.com/divijbindlish/parse-torrent-name), including other contributors' work. parse-torrent-title was initially forked from [here](https://github.com/roidayan/parse-torrent-name/tree/updates), but a lot of extra work has been done since, and given that the original repo is inactive, it was unforked.
+
+### Updates on top of [/u/roidayan's work](https://github.com/roidayan/parse-torrent-name/tree/updates)
+
+- Added standardisation of output strings.
+- Added multi-language support.
+- Added multi-episode support.
+- Improved support for anime tv releases.
+- Improved support for Indian releases.
+- Added various fields (see field list above).
+- Added proper subtitle support.
+- Added proper support for matching episode names.
+- Added support for full `YYYY-MM-DD`-type dates, usually useful for daily shows that otherwise have no episode name.
+- Added support for 2020s release years.
+- Added exceptions list for media with known, non-fixable issues.
+- Expanded and improved matching for various fields.
+- Fixed incorrect parsing of titles containing years.
+- Fixed groups/encoders/websites mixups: a group/encoder is now just called an encoder, and a public tracker site goes under website.
+- Added more tests and cleaned up previous ones.
+
+
+### [/u/roidayan's work](https://github.com/roidayan/parse-torrent-name/tree/updates) on top of [the original](https://github.com/divijbindlish/parse-torrent-name)
+
+- Added support for complete season parsing (either just a full season, or a range), not just single episodes.
+- Added to various fields' patterns.
+- Improved season & episode matching.
+- Fixed group names from having the container & bt site name.
+- Added more tests.
+
+## License
+
+MIT © 2015-2017 [Divij Bindlish](http://divijbindlish.in)
+
+MIT © 2020 [Giorgio Momigliano](https://github.com/platelminto)
+
+
+
+
+%prep
+%autosetup -n parse-torrent-title-2.5
+
+%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-parse-torrent-title -f filelist.lst
+%dir %{python3_sitelib}/*
+
+%files help -f doclist.lst
+%{_docdir}/*
+
+%changelog
+* Tue Jun 20 2023 Python_Bot <Python_Bot@openeuler.org> - 2.5-1
+- Package Spec generated
diff --git a/sources b/sources
new file mode 100644
index 0000000..a1b188a
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+bd12202dc59ccead15b75783937258ac parse-torrent-title-2.5.tar.gz