Browse Source

Merge branch 'master' into develop

pull/1200/head
JackDandy 6 years ago
parent
commit
b803ea1715
  1. 14
      .travis.yml
  2. 8
      CHANGES.md
  3. 7
      lib/imdbpie/imdbpie.py
  4. 6
      lib/trans/__init__.py
  5. 273
      lib/trans/trans.py
  6. 14
      sickbeard/__init__.py
  7. 2
      sickbeard/tv.py
  8. 43
      snap/snapcraft.yaml

14
.travis.yml

@ -1,12 +1,18 @@
dist: xenial
language: python language: python
sudo: false
python: python:
- 2.7 - 2.7
before_install:
- export BOTO_CONFIG=/dev/null # Workaround for https://github.com/travis-ci/travis-ci/issues/7940
- export PYTHONPATH=$PYTHONPATH:$(pwd)
install: install:
- pip install cheetah - pip install -r requirements.txt
- pip install coveralls - pip install coveralls
before_script: cd ./tests before_script:
script: coverage run --source=.. --omit=../lib/*,../tornado/* all_tests.py - cd ./tests
script: coverage run --source=.. --omit=../lib/* ./all_tests.py
after_success: coveralls after_success: coveralls

8
CHANGES.md

@ -20,6 +20,14 @@
### 0.18.8 (2018-12-18 21:00:00 UTC)
* Change first run GUI defaults to enable fanart and episode view as home
* Fix an issue in the Travis CI test system used by GitHub
* Fix potential issue parsing IMDb response
* Update IMDb-pie 5.6.3 (df7411d1) to 5.6.3 (4220e83)
### 0.18.7 (2018-12-14 01:00:00 UTC) ### 0.18.7 (2018-12-14 01:00:00 UTC)
* Fix saving NZBGet priority to Normal * Fix saving NZBGet priority to Normal

7
lib/imdbpie/imdbpie.py

@ -7,6 +7,7 @@ from datetime import date
import tempfile import tempfile
import logging import logging
from trans import trans
import requests import requests
from six import text_type from six import text_type
from six.moves import http_client as httplib from six.moves import http_client as httplib
@ -148,8 +149,10 @@ class Imdb(Auth):
response.raise_for_status() response.raise_for_status()
def _suggest_search(self, query): def _suggest_search(self, query):
query_encoded = quote(query) # translates national characters into similar sounding latin characters
first_alphanum_char = self._query_first_alpha_num(query) cleaned_query = trans(query)
query_encoded = quote(cleaned_query)
first_alphanum_char = self._query_first_alpha_num(cleaned_query)
path = '/suggests/{0}/{1}.json'.format( path = '/suggests/{0}/{1}.json'.format(
first_alphanum_char, query_encoded first_alphanum_char, query_encoded
) )

6
lib/trans/__init__.py

@ -0,0 +1,6 @@
from . import trans as transliteration
def trans(query):
return transliteration.trans(query)

273
lib/trans/trans.py

@ -0,0 +1,273 @@
# coding: utf8
u""" This module translates national characters into similar
sounding latin characters (transliteration).
At the moment, Czech, Greek, Latvian, Polish, Turkish, Russian, Ukrainian
and Kazakh alphabets are supported (it covers 99% of needs).
Python 3:
>>> from trans import trans
>>> trans('Привет, Мир!')
Python 2:
>>> import trans
>>> u'Привет, Мир!'.encode('trans')
u'Privet, Mir!'
>>> trans.trans(u'Привет, Мир!')
u'Privet, Mir!'
Source and full documentations can be found here:
https://github.com/zzzsochi/trans
"""
import sys
import codecs
__version__ = '2.1.0'
__author__ = 'Zelenyak Aleksander aka ZZZ <zzz.sochi@gmail.com>'
PY2 = sys.version_info[0] == 2
class Trans(object):
""" Main class for transliteration with tables.
"""
def __init__(self, tables=None, default_table=None):
self.tables = tables or {}
self.default_table = default_table
def __call__(self, input, table=None):
""" Translate unicode string, using 'table'.
Table may be tuple (diphthongs, other), dict (other) or string name of table.
"""
if table is None:
if self.default_table is not None:
table = self.default_table
else:
raise ValueError('Table not set.')
if not isinstance(input, unicode if PY2 else str): # noqa
raise TypeError(
'trans codec support only unicode string, {0!r} given.'.format(type(input))
)
if isinstance(table, basestring if PY2 else str): # noqa
try:
table = self.tables[table]
except KeyError:
raise ValueError(u'Table "{0}" not found in tables!'.format(table))
if isinstance(table, dict):
table = ({}, table)
first = input
for diphthong, value in table[0].items():
first = first.replace(diphthong, value)
default = table[1].get(None, u'_')
second = u''
for char in first:
second += table[1].get(char, default)
return second
latin = {
u'à': u'a', u'á': u'a', u'â': u'a', u'ã': u'a', u'ä': u'a', u'å': u'a',
u'æ': u'ae', u'ç': u'c', u'è': u'e', u'é': u'e', u'ê': u'e', u'ë': u'e',
u'ì': u'i', u'í': u'i', u'î': u'i', u'ï': u'i', u'ð': u'd', u'ñ': u'n',
u'ò': u'o', u'ó': u'o', u'ô': u'o', u'õ': u'o', u'ö': u'o', u'ő': u'o',
u'ø': u'o', u'ù': u'u', u'ú': u'u', u'û': u'u', u'ü': u'u', u'ű': u'u',
u'ý': u'y', u'þ': u'th', u'ÿ': u'y',
u'À': u'A', u'Á': u'A', u'Â': u'A', u'Ã': u'A', u'Ä': u'A', u'Å': u'A',
u'Æ': u'AE', u'Ç': u'C', u'È': u'E', u'É': u'E', u'Ê': u'E', u'Ë': u'E',
u'Ì': u'I', u'Í': u'I', u'Î': u'I', u'Ï': u'I', u'Ð': u'D', u'Ñ': u'N',
u'Ò': u'O', u'Ó': u'O', u'Ô': u'O', u'Õ': u'O', u'Ö': u'O', u'Ő': u'O',
u'Ø': u'O', u'Ù': u'U', u'Ú': u'U', u'Û': u'U', u'Ü': u'U', u'Ű': u'U',
u'Ý': u'Y', u'Þ': u'TH', u'ß': u'ss',
}
greek = {
u'α': u'a', u'β': u'b', u'γ': u'g', u'δ': u'd', u'ε': u'e', u'ζ': u'z',
u'η': u'h', u'θ': u'8', u'ι': u'i', u'κ': u'k', u'λ': u'l', u'μ': u'm',
u'ν': u'n', u'ξ': u'3', u'ο': u'o', u'π': u'p', u'ρ': u'r', u'σ': u's',
u'τ': u't', u'υ': u'y', u'φ': u'f', u'χ': u'x', u'ψ': u'ps', u'ω': u'w',
u'ά': u'a', u'έ': u'e', u'ί': u'i', u'ό': u'o', u'ύ': u'y', u'ή': u'h',
u'ώ': u'w', u'ς': u's', u'ϊ': u'i', u'ΰ': u'y', u'ϋ': u'y', u'ΐ': u'i',
u'Α': u'A', u'Β': u'B', u'Γ': u'G', u'Δ': u'D', u'Ε': u'E', u'Ζ': u'Z',
u'Η': u'H', u'Θ': u'8', u'Ι': u'I', u'Κ': u'K', u'Λ': u'L', u'Μ': u'M',
u'Ν': u'N', u'Ξ': u'3', u'Ο': u'O', u'Π': u'P', u'Ρ': u'R', u'Σ': u'S',
u'Τ': u'T', u'Υ': u'Y', u'Φ': u'F', u'Χ': u'X', u'Ψ': u'PS', u'Ω': u'W',
u'Ά': u'A', u'Έ': u'E', u'Ί': u'I', u'Ό': u'O', u'Ύ': u'Y', u'Ή': u'H',
u'Ώ': u'W', u'Ϊ': u'I', u'Ϋ': u'Y',
}
turkish = {
u'ş': u's', u'Ş': u'S', u'ı': u'i', u'İ': u'I', u'ç': u'c', u'Ç': u'C',
u'ü': u'u', u'Ü': u'U', u'ö': u'o', u'Ö': u'O', u'ğ': u'g', u'Ğ': u'G'
}
russian = (
{
u'юй': u'yuy', u'ей': u'yay',
u'Юй': u'Yuy', u'Ей': u'Yay'
},
{
u'а': u'a', u'б': u'b', u'в': u'v', u'г': u'g', u'д': u'd', u'е': u'e',
u'ё': u'yo', u'ж': u'zh', u'з': u'z', u'и': u'i', u'й': u'y', u'к': u'k',
u'л': u'l', u'м': u'm', u'н': u'n', u'о': u'o', u'п': u'p', u'р': u'r',
u'с': u's', u'т': u't', u'у': u'u', u'ф': u'f', u'х': u'h', u'ц': u'c',
u'ч': u'ch', u'ш': u'sh', u'щ': u'sh', u'ъ': u'', u'ы': u'y', u'ь': u'',
u'э': u'e', u'ю': u'yu', u'я': u'ya',
u'А': u'A', u'Б': u'B', u'В': u'V', u'Г': u'G', u'Д': u'D', u'Е': u'E',
u'Ё': u'Yo', u'Ж': u'Zh', u'З': u'Z', u'И': u'I', u'Й': u'Y', u'К': u'K',
u'Л': u'L', u'М': u'M', u'Н': u'N', u'О': u'O', u'П': u'P', u'Р': u'R',
u'С': u'S', u'Т': u'T', u'У': u'U', u'Ф': u'F', u'Х': u'H', u'Ц': u'C',
u'Ч': u'Ch', u'Ш': u'Sh', u'Щ': u'Sh', u'Ъ': u'', u'Ы': u'Y', u'Ь': u'',
u'Э': u'E', u'Ю': u'Yu', u'Я': u'Ya',
})
ukrainian = (russian[0].copy(), {
u'Є': u'Ye', u'І': u'I', u'Ї': u'Yi', u'Ґ': u'G',
u'є': u'ye', u'і': u'i', u'ї': u'yi', u'ґ': u'g',
})
ukrainian[1].update(russian[1])
czech = {
u'č': u'c', u'ď': u'd', u'ě': u'e', u'ň': u'n', u'ř': u'r', u'š': u's',
u'ť': u't', u'ů': u'u', u'ž': u'z',
u'Č': u'C', u'Ď': u'D', u'Ě': u'E', u'Ň': u'N', u'Ř': u'R', u'Š': u'S',
u'Ť': u'T', u'Ů': u'U', u'Ž': u'Z',
}
polish = {
u'ą': u'a', u'ć': u'c', u'ę': u'e', u'ł': u'l', u'ń': u'n', u'ó': u'o',
u'ś': u's', u'ź': u'z', u'ż': u'z',
u'Ą': u'A', u'Ć': u'C', u'Ę': u'E', u'Ł': u'L', u'Ń': u'N', u'Ó': u'O',
u'Ś': u'S', u'Ź': u'Z', u'Ż': u'Z',
}
latvian = {
u'ā': u'a', u'č': u'c', u'ē': u'e', u'ģ': u'g', u'ī': u'i', u'ķ': u'k',
u'ļ': u'l', u'ņ': u'n', u'š': u's', u'ū': u'u', u'ž': u'z',
u'Ā': u'A', u'Č': u'C', u'Ē': u'E', u'Ģ': u'G', u'Ī': u'i', u'Ķ': u'k',
u'Ļ': u'L', u'Ņ': u'N', u'Š': u'S', u'Ū': u'u', u'Ž': u'Z',
}
kazakh = (russian[0].copy(), {
u'ә': u'a', u'ғ': u'g', u'қ': u'k', u'ң': 'n', u'ө': u'o', u'ұ': u'u',
u'ү': u'u', u'һ': u'h', u'і': u'i',
u'Ә': u'A', u'Ғ': u'G', u'Қ': u'K', u'Ң': 'N', u'Ө': u'O', u'Ұ': u'U',
u'Ү': u'U', u'Һ': u'H', u'І': u'I',
})
kazakh[1].update(russian[1])
farsi = {
u'ا': u'a',
u'أ': u'a', u'\uFE81': u'a', u'\uFE82': u'a',
u'آ': u'a', u'\uFE83': u'a', u'\uFE84': u'a',
u'ب': u'b', u'\uFE8F': u'b', u'\uFE90': u'b', u'\uFE92': u'b', u'\uFE91': u'b',
u'ت': u't', u'\uFE95': u't', u'\uFE96': u't', u'\uFE98': u't', u'\uFE97': u't',
u'ث': u'th', u'\uFE99': u'th', u'\uFE9A': u'th', u'\uFE9C': u'th', u'\uFE9B': u'th',
u'ج': u'j', u'\uFE9D': u'j', u'\uFE9E': u'j', u'\uFEA0': u'j', u'\uFE9F': u'j',
u'ح': u'h', u'\uFEA1': u'h', u'\uFEA2': u'h', u'\uFEA4': u'h', u'\uFEA3': u'h',
u'خ': u'x', u'\uFEA5': u'x', u'\uFEA6': u'x', u'\uFEA8': u'x', u'\uFEA7': u'x',
u'د': u'd', u'\uFEA9': u'd', u'\uFEAA': u'd',
u'ذ': u'd', u'\uFEAB': u'd', u'\uFEAC': u'd',
u'ر': u'r', u'\uFEAD': u'r', u'\uFEAE': u'r',
u'ز': u'z', u'\uFEAF': u'z', u'\uFEB0': u'z',
u'س': u's', u'\uFEB1': u's', u'\uFEB2': u's', u'\uFEB4': u's', u'\uFEB3 ': u's',
u'ش': u'sh', u'\uFEB5': u'sh', u'\uFEB6': u'sh', u'\uFEB8': u'sh', u'\uFEB7': u'sh',
u'ص': u's', u'\uFEB9': u's', u'\uFEBA': u's', u'\uFEBC': u's', u'\uFEBB': u's',
u'ض': u'd', u'\uFEBD': u'd', u'\uFEBE': u'd', u'\uFEC0': u'd', u'\uFEBF': u'd',
u'ط': u't', u'\uFEC1': u't', u'\uFEC2': u't', u'\uFEC4': u't', u'\uFEC3': u't',
u'ظ': u'z', u'\uFEC5': u'z', u'\uFEC6': u'z', u'\uFEC8': u'z', u'\uFEC7': u'z',
u'ع': u'ao', u'\uFEC9': u'ao', u'\uFECA': u'ao', u'\uFECC': u'ao', u'\uFECB': u'ao',
u'غ': u'za', u'\uFECD': u'za', u'\uFECE': u'za', u'\uFED0': u'za', u'\uFECF': u'za',
u'ف': u'f', u'\uFED1': u'f', u'\uFED2': u'f', u'\uFED4': u'f', u'\uFED3': u'f',
u'ق': u'q', u'\uFED5': u'q', u'\uFED6': u'q', u'\uFED8': u'q', u'\uFED7': u'q',
u'ك': u'k', u'\uFED9': u'k', u'\uFEDA': u'k', u'\uFEDC': u'k', u'\uFEDB': u'k',
u'ل': u'l', u'\uFEDD': u'l', u'\uFEDE': u'l', u'\uFEE0': u'l', u'\uFEDF': u'l',
u'م': u'm', u'\uFEE1': u'm', u'\uFEE2': u'm', u'\uFEE4': u'm', u'\uFEE3': u'm',
u'ن': u'n', u'\uFEE5': u'n', u'\uFEE6': u'n', u'\uFEE8': u'n', u'\uFEE7': u'n',
u'ه': u'h', u'\uFEE9': u'h', u'\uFEEA': u'h', u'\uFEEC': u'h', u'\uFEEB': u'h',
u'و': u'wa', u'\uFEED': u'wa', u'\uFEEE': u'wa',
u'ي': u'ya', u'\uFEF1': u'ya', u'\uFEF2': u'ya', u'\uFEF4': u'ya', u'\uFEF3': u'ya',
u'ة': u'at', u'\uFE93': u'at', u'\uFE94': u'at',
u'ى': u'a', u'\uFEEF': u'a', u'\uFEF0': u'a',
u'ی': u'ye', u'\uFBFC': u'ye', u'\uFBFD': u'ye', u'\uFBFE': u'ye', u'\uFBFF': u'ye',
# Arabic Sukun
u'\u064B': u'', u'\u064C': u'', u'\u064D': u'', u'\u064E': u'', u'\u064F': u'',
u'\u0650': u'', u'\u0651': u'', u'\u0652': u'', u'\u0653': u'', u'\u0670': u'',
# Arabic punctuation
u'،': u',', u'؍': u'.', u'؟': u'?', u'٭': u'', u'؞': u'...', u'٬': u'\'', u'\u200C': u'',
}
ascii_str = (u'_0123456789'
u'abcdefghijklmnopqrstuvwxyz'
u'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
u'!"#$%&\'()*+,_-./:;<=>?@[\\]^`{|}~ \t\n\r\x0b\x0c')
ascii = ({}, dict(zip(ascii_str, ascii_str)))
for t in [latin, greek, turkish, russian, ukrainian, czech, polish, latvian, kazakh, farsi]:
if isinstance(t, dict):
t = ({}, t)
ascii[0].update(t[0])
ascii[1].update(t[1])
del t
ascii[1][None] = u'_'
slug = (ascii[0].copy(), ascii[1].copy())
for c in u'''!"#$%&'()*+,_-./:;<=>?@[\\]^`{|}~ \t\n\r\x0b\x0c''':
del slug[1][c]
tables = {u'ascii': ascii, u'text': ascii, u'slug': slug, u'id': slug}
# Main Trans with default tales
# It uses for str.encode('trans')
trans = Trans(tables=tables, default_table='ascii')
# trans codec work only with python 2
if PY2:
def encode(input, errors='strict', table_name='ascii'):
try:
table = trans.tables[table_name]
except KeyError:
raise ValueError("Table {0!r} not found in tables!".format(table_name))
else:
data = trans(input, table)
return data, len(data)
def no_decode(input, errors='strict'):
raise TypeError("trans codec does not support decode.")
def trans_codec(enc):
if enc == 'trans':
return codecs.CodecInfo(encode, no_decode)
try:
enc_name, table_name = enc.split(u'/', 1)
except ValueError:
return None
if enc_name != 'trans':
return None
if table_name not in trans.tables:
raise ValueError(u"Table {0!r} not found in tables!").format(table_name)
return codecs.CodecInfo(lambda i, e='strict': encode(i, e, table_name), no_decode)
codecs.register(trans_codec)

14
sickbeard/__init__.py

@ -740,7 +740,7 @@ def initialize(console_logging=True):
THEME_NAME = check_setting_str(CFG, 'GUI', 'theme_name', 'dark') THEME_NAME = check_setting_str(CFG, 'GUI', 'theme_name', 'dark')
GUI_NAME = check_setting_str(CFG, 'GUI', 'gui_name', 'slick') GUI_NAME = check_setting_str(CFG, 'GUI', 'gui_name', 'slick')
DEFAULT_HOME = check_setting_str(CFG, 'GUI', 'default_home', 'home') DEFAULT_HOME = check_setting_str(CFG, 'GUI', 'default_home', 'episodes')
FANART_LIMIT = check_setting_int(CFG, 'GUI', 'fanart_limit', 3) FANART_LIMIT = check_setting_int(CFG, 'GUI', 'fanart_limit', 3)
FANART_PANEL = check_setting_str(CFG, 'GUI', 'fanart_panel', 'highlight2') FANART_PANEL = check_setting_str(CFG, 'GUI', 'fanart_panel', 'highlight2')
FANART_RATINGS = check_setting_str(CFG, 'GUI', 'fanart_ratings', None) FANART_RATINGS = check_setting_str(CFG, 'GUI', 'fanart_ratings', None)
@ -1200,18 +1200,18 @@ def initialize(console_logging=True):
FOOTER_TIME_LAYOUT = check_setting_int(CFG, 'GUI', 'footer_time_layout', 0) FOOTER_TIME_LAYOUT = check_setting_int(CFG, 'GUI', 'footer_time_layout', 0)
POSTER_SORTBY = check_setting_str(CFG, 'GUI', 'poster_sortby', 'name') POSTER_SORTBY = check_setting_str(CFG, 'GUI', 'poster_sortby', 'name')
POSTER_SORTDIR = check_setting_int(CFG, 'GUI', 'poster_sortdir', 1) POSTER_SORTDIR = check_setting_int(CFG, 'GUI', 'poster_sortdir', 1)
DISPLAY_SHOW_VIEWMODE = check_setting_int(CFG, 'GUI', 'display_show_viewmode', 0) DISPLAY_SHOW_VIEWMODE = check_setting_int(CFG, 'GUI', 'display_show_viewmode', 2)
DISPLAY_SHOW_BACKGROUND = bool(check_setting_int(CFG, 'GUI', 'display_show_background', 0)) DISPLAY_SHOW_BACKGROUND = bool(check_setting_int(CFG, 'GUI', 'display_show_background', 1))
DISPLAY_SHOW_BACKGROUND_TRANSLUCENT = bool(check_setting_int( DISPLAY_SHOW_BACKGROUND_TRANSLUCENT = bool(check_setting_int(
CFG, 'GUI', 'display_show_background_translucent', 0)) CFG, 'GUI', 'display_show_background_translucent', 1))
DISPLAY_SHOW_VIEWART = check_setting_int(CFG, 'GUI', 'display_show_viewart', 0) DISPLAY_SHOW_VIEWART = check_setting_int(CFG, 'GUI', 'display_show_viewart', 0)
DISPLAY_SHOW_MINIMUM = bool(check_setting_int(CFG, 'GUI', 'display_show_minimum', 1)) DISPLAY_SHOW_MINIMUM = bool(check_setting_int(CFG, 'GUI', 'display_show_minimum', 1))
DISPLAY_SHOW_SPECIALS = bool(check_setting_int(CFG, 'GUI', 'display_show_specials', 0)) DISPLAY_SHOW_SPECIALS = bool(check_setting_int(CFG, 'GUI', 'display_show_specials', 0))
EPISODE_VIEW_VIEWMODE = check_setting_int(CFG, 'GUI', 'episode_view_viewmode', 0) EPISODE_VIEW_VIEWMODE = check_setting_int(CFG, 'GUI', 'episode_view_viewmode', 2)
EPISODE_VIEW_BACKGROUND = bool(check_setting_int(CFG, 'GUI', 'episode_view_background', 0)) EPISODE_VIEW_BACKGROUND = bool(check_setting_int(CFG, 'GUI', 'episode_view_background', 1))
EPISODE_VIEW_BACKGROUND_TRANSLUCENT = bool(check_setting_int( EPISODE_VIEW_BACKGROUND_TRANSLUCENT = bool(check_setting_int(
CFG, 'GUI', 'episode_view_background_translucent', 0)) CFG, 'GUI', 'episode_view_background_translucent', 1))
EPISODE_VIEW_LAYOUT = check_setting_str(CFG, 'GUI', 'episode_view_layout', 'daybyday') EPISODE_VIEW_LAYOUT = check_setting_str(CFG, 'GUI', 'episode_view_layout', 'daybyday')
EPISODE_VIEW_SORT = check_setting_str(CFG, 'GUI', 'episode_view_sort', 'time') EPISODE_VIEW_SORT = check_setting_str(CFG, 'GUI', 'episode_view_sort', 'time')
EPISODE_VIEW_DISPLAY_PAUSED = bool(check_setting_int(CFG, 'GUI', 'episode_view_display_paused', 1)) EPISODE_VIEW_DISPLAY_PAUSED = bool(check_setting_int(CFG, 'GUI', 'episode_view_display_paused', 1))

2
sickbeard/tv.py

@ -1000,7 +1000,7 @@ class TVShow(object):
sqlResults = myDB.select('SELECT * FROM imdb_info WHERE indexer_id = ?', [self.indexerid]) sqlResults = myDB.select('SELECT * FROM imdb_info WHERE indexer_id = ?', [self.indexerid])
if 0 < len(sqlResults): if 0 < len(sqlResults):
self.imdb_info = dict(zip(sqlResults[0].keys(), sqlResults[0])) self.imdb_info = dict(zip(sqlResults[0].keys(), [(r, '')[None is r] for r in sqlResults[0]]))
elif sickbeard.USE_IMDB_INFO: elif sickbeard.USE_IMDB_INFO:
logger.log('%s: The next show update will attempt to find IMDb info for [%s]' % logger.log('%s: The next show update will attempt to find IMDb info for [%s]' %
(self.indexerid, self.name), logger.DEBUG) (self.indexerid, self.name), logger.DEBUG)

43
snap/snapcraft.yaml

@ -24,26 +24,22 @@ parts:
plugin: python plugin: python
source: . source: .
python-version: python2 python-version: python2
python-packages: [cheetah3, cryptography, lxml, regex, scandir] python-packages: [cheetah3, cryptography, lxml, regex, scandir, python-levenshtein]
build-attributes: [no-system-libraries] build-attributes: [no-system-libraries]
stage-packages:
- libffi-dev
- libssl-dev
- p7zip-full
- python-dev
- unrar
build-packages: build-packages:
- libffi-dev - to i386: ["libffi-dev:i386", "libssl-dev:i386", "libxml2-dev:i386", "libxslt1-dev:i386",
- libssl-dev "python-dev:i386", "python-levenshtein:i386", "python-lxml:i386", "python-regex:i386"]
- libxslt1-dev - to amd64: ["libffi-dev:amd64", "libssl-dev:amd64", "libxml2-dev:amd64", "libxslt1-dev:amd64",
- libxml2-dev "python-dev:amd64", "python-levenshtein:amd64", "python-lxml:amd64", "python-regex:amd64"]
- p7zip-full - to arm64: ["libffi-dev:arm64", "libssl-dev:arm64", "libxml2-dev:arm64", "libxslt1-dev:arm64",
- python-dev "python-dev:arm64", "python-levenshtein:arm64", "python-lxml:arm64", "python-regex:arm64"]
- python-lxml - to armhf: ["libffi-dev:armhf", "libssl-dev:armhf", "libxml2-dev:armhf", "libxslt1-dev:armhf",
- python-regex "python-dev:armhf", "python-levenshtein:armhf", "python-lxml:armhf", "python-regex:armhf"]
- unrar - to s390x: ["libffi-dev:s390x", "libssl-dev:s390x", "libxml2-dev:s390x", "libxslt1-dev:s390x",
"python-dev:s390x", "python-levenshtein:s390x", "python-lxml:s390x", "python-regex:s390x"]
- to ppc64el: ["libffi-dev:ppc64el", "libssl-dev:ppc64el", "libxml2-dev:ppc64el", "libxslt1-dev:ppc64el",
"python-dev:ppc64el", "python-levenshtein:ppc64el", "python-lxml:ppc64el", "python-regex:ppc64el"]
override-pull: | override-pull: |
snapcraftctl pull snapcraftctl pull
@ -87,3 +83,16 @@ parts:
for Torrent (*nix), $snap_current/autoProcessTV/onTxComplete.sh for Torrent (*nix), $snap_current/autoProcessTV/onTxComplete.sh
for Torrent (Win), $snap_current/autoProcessTV/onTxComplete.bat for Torrent (Win), $snap_current/autoProcessTV/onTxComplete.bat
EOT EOT
unrar:
plugin: make
source: https://www.rarlab.com/rar/unrarsrc-5.6.8.tar.gz
source-type: tar
build-packages:
- to i386: ["g++:i386"]
- to amd64: ["g++:amd64"]
- to arm64: ["g++:arm64"]
- to armhf: ["g++:armhf"]
- to s390x: ["g++:s390x"]
- to ppc64el: ["g++:ppc64el"]

Loading…
Cancel
Save