Source code for flexget.components.sites.utils
"""Common tools used by plugins implementing search plugin api.
.. NOTE:: Try to avoid using or extending this file!
We have normalizers in way too many places as is ...
"""
import re
from unicodedata import normalize
[docs]
def normalize_unicode(text):
if isinstance(text, str):
# Convert to combined form for better search results
return normalize('NFC', text)
return text
[docs]
def normalize_scene(text):
"""Normalize string according to scene standard.
Mainly, it replace accented chars by their 'normal' counterparts
and removes special chars.
https://en.wikipedia.org/wiki/Standard_(warez)#Naming for more information
"""
# Allowed chars in scene releases are:
# ABCDEFGHIJKLMNOPQRSTUVWXYZ
# abcdefghijklmnopqrstuvwxyz
# 0123456789-._()
text = normalize('NFKD', text).encode('ASCII', 'ignore').decode()
return re.sub(r'[^a-zA-Z0-9 \-._()]', '', text.replace('...', ''))
[docs]
def torrent_availability(seeds, leeches):
"""Return a rating based on seeds and leeches for a given torrent.
:param seeds: Number of seeds on the torrent
:param leeches: Number of leeches on the torrent
:return: A numeric rating
"""
return seeds * 2 + leeches