Skip to content

Commit

Permalink
Gestion doublage français
Browse files Browse the repository at this point in the history
  • Loading branch information
Your Name committed Oct 19, 2016
1 parent 45d9e47 commit bf15e1a
Show file tree
Hide file tree
Showing 11 changed files with 352 additions and 47 deletions.
10 changes: 6 additions & 4 deletions couchpotato/core/helpers/variable.py
Original file line number Diff line number Diff line change
Expand Up @@ -274,8 +274,8 @@ def possibleTitles(raw_title):
def randomString(size = 8, chars = string.ascii_uppercase + string.digits):
return ''.join(random.choice(chars) for x in range(size))

def fillingLanguages(languages):
allLanguages = [
def getAllLanguages():
return [
('aa', 'Afar'),
('ab', 'Abkhazian'),
('af', 'Afrikaans'),
Expand Down Expand Up @@ -330,7 +330,7 @@ def fillingLanguages(languages):
('fj', 'Fijian'),
('fi', 'Finnish'),
('fr', 'French'),
('fr', 'French'),
('fr', 'Truefrench'),
('fy', 'Western Frisian'),
('ff', 'Fulah'),
('Ga', 'Georgian'),
Expand Down Expand Up @@ -426,7 +426,6 @@ def fillingLanguages(languages):
('qu', 'Quechua'),
('rm', 'Romansh'),
('ro', 'Romanian; Moldavian; Moldovan'),
('ro', 'Romanian; Moldavian; Moldovan'),
('rn', 'Rundi'),
('ru', 'Russian'),
('sg', 'Sango'),
Expand Down Expand Up @@ -481,6 +480,9 @@ def fillingLanguages(languages):
('zh', 'Chinese'),
('zu', 'Zulu')]

def fillingLanguages(languages):
allLanguages = getAllLanguages()

languagesToAppend = []

for currentLanguage in languages:
Expand Down
19 changes: 1 addition & 18 deletions couchpotato/core/media/_base/providers/torrent/abnormal.py
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ def _search(self, media, quality, results):
nameSplit = ''.join(match.findall(unicodedata.normalize('NFKD', cleanedReleaseName).encode('ASCII','ignore')))
titleSplit = ''.join(match.findall(unicodedata.normalize('NFKD', title.upper()).encode('ASCII','ignore')))

if titleSplit == nameSplit and self.matchLanguage(media['info']['languages'], re.split('[\. ]', splittedReleaseName[-1])):
if titleSplit == nameSplit:
downloadUrl = downloadCell.find('a')['href']
parsed = urlparse.urlparse(downloadUrl)
torrent_id = urlparse.parse_qs(parsed.query)['id']
Expand All @@ -84,15 +84,6 @@ def _search(self, media, quality, results):
log.error('Failed getting results from %s: %s', (self.getName(), traceback.format_exc()))
except:
continue

def matchLanguage(self, languages, releaseMetaDatas):
if self.conf('vo_only'):
if any(l for l in languages if l.upper() in releaseMetaDatas) or 'MULTI' in releaseMetaDatas:
return True
else:
return False

return True

def getLoginParams(self):
return {
Expand Down Expand Up @@ -153,14 +144,6 @@ def loginSuccess(self, output):
'type': 'int',
'default': 20,
'description': 'Starting score for each release found via this provider.',
},
{
'name': 'vo_only',
'advanced': True,
'label': 'Original language only',
'type': 'bool',
'default': False,
'description': 'Only download releases with the original language of the movie'
}
],
},
Expand Down
23 changes: 3 additions & 20 deletions couchpotato/core/media/_base/providers/torrent/bluetigers.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ def _search(self, media, quality, results):
try:
TitleStringReal = str(title.encode("latin-1").replace('-',' '))

url = self.urls['search'] + 'c59=1&c56=1&c43=1&c20=1&c222=1&c22=1&c24=1&c26=1&' + urllib.urlencode( {'search': unicodedata.normalize('NFKD', title).encode('ASCII', 'ignore').replace('\'', ' ') }) + '&incldead=0&freeleech=0&lang=0'
url = self.urls['search'] + 'c59=1&c9=1&c56=1&c43=1&c20=1&c222=1&c22=1&c24=1&c26=1&' + urllib.urlencode( {'search': unicodedata.normalize('NFKD', title).encode('ASCII', 'ignore').replace('\'', ' ') }) + '&incldead=0&freeleech=0&lang=0'

data = self.getHTMLData(url)

Expand Down Expand Up @@ -65,7 +65,7 @@ def _search(self, media, quality, results):
nameSplit = ''.join(match.findall(unicodedata.normalize('NFKD', cleanedReleaseName).encode('ASCII','ignore')))
titleSplit = ''.join(match.findall(unicodedata.normalize('NFKD', title.upper()).encode('ASCII','ignore')))

if titleSplit == nameSplit and self.matchLanguage(media['info']['languages'], re.split('[\. ]', splittedReleaseName[-1])):
if titleSplit == nameSplit:
downloadUrl = downloadCell.find('a')['href']
parsed = urlparse.urlparse(downloadUrl)
torrent_id = urlparse.parse_qs(parsed.query)['torrent']
Expand All @@ -84,16 +84,7 @@ def _search(self, media, quality, results):
log.error('Failed getting results from %s: %s', (self.getName(), traceback.format_exc()))
except:
continue

def matchLanguage(self, languages, releaseMetaDatas):
if self.conf('vo_only'):
if any(l for l in languages if l.upper() in releaseMetaDatas) or 'MULTI' in releaseMetaDatas:
return True
else:
return False

return True


def getLoginParams(self):
return {
'username': self.conf('username'),
Expand Down Expand Up @@ -153,14 +144,6 @@ def loginSuccess(self, output):
'type': 'int',
'default': 20,
'description': 'Starting score for each release found via this provider.',
},
{
'name': 'vo_only',
'advanced': True,
'label': 'Original language only',
'type': 'bool',
'default': False,
'description': 'Only download releases with the original language of the movie'
}
],
},
Expand Down
261 changes: 261 additions & 0 deletions couchpotato/core/media/_base/providers/torrent/cpasbien.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,261 @@
from bs4 import BeautifulSoup
from couchpotato.core.helpers.variable import getTitle, tryInt
from couchpotato.core.logger import CPLog
from couchpotato.core.helpers.encoding import simplifyString, tryUrlencode
from couchpotato.core.media._base.providers.torrent.base import TorrentProvider
import cookielib
import re
import traceback
import urllib
import urllib2
import unicodedata
from couchpotato.core.helpers import namer_check

log = CPLog(__name__)


class Base(TorrentProvider):

urls = {
'test': 'http://www.cpasbien.cm/',
'search': 'http://www.cpasbien.cm/recherche/',
}

http_time_between_calls = 1 #seconds
cat_backup_id = None

class NotLoggedInHTTPError(urllib2.HTTPError):
def __init__(self, url, code, msg, headers, fp):
urllib2.HTTPError.__init__(self, url, code, msg, headers, fp)

class PTPHTTPRedirectHandler(urllib2.HTTPRedirectHandler):
def http_error_302(self, req, fp, code, msg, headers):
log.debug("302 detected; redirected to %s" % headers['Location'])
if (headers['Location'] != 'login.php'):
return urllib2.HTTPRedirectHandler.http_error_302(self, req, fp, code, msg, headers)
else:
raise Base.NotLoggedInHTTPError(req.get_full_url(), code, msg, headers, fp)

def _search(self, movie, quality, results):

# Cookie login
if not self.last_login_check and not self.login():
return


TitleStringReal = (getTitle(movie['info']) + ' ' + simplifyString(quality['identifier'] )).replace('-',' ').replace(' ',' ').replace(' ',' ').replace(' ',' ').encode("utf8")

URL = (self.urls['search']).encode('UTF8')
URL=unicodedata.normalize('NFD',unicode(URL,"utf8","replace"))
URL=URL.encode('ascii','ignore')
URL = urllib2.quote(URL.encode('utf8'), ":/?=")

values = {
'champ_recherche' : TitleStringReal
}

data_tmp = urllib.urlencode(values)
req = urllib2.Request(URL, data_tmp, headers={'User-Agent' : "Mozilla/5.0"} )

data = urllib2.urlopen(req )

id = 1000

if data:

try:
html = BeautifulSoup(data)
lin=0
erlin=0
resultdiv=[]
while erlin==0:
try:
classlin='ligne'+str(lin)
resultlin=html.findAll(attrs = {'class' : [classlin]})
if resultlin:
for ele in resultlin:
resultdiv.append(ele)
lin+=1
else:
erlin=1
except:
erlin=1
for result in resultdiv:

try:

new = {}
name = result.findAll(attrs = {'class' : ["titre"]})[0].text
testname=namer_check.correctName(name,movie)
if testname==0:
continue
detail_url = result.find("a")['href']
tmp = detail_url.split('/')[-1].replace('.html','.torrent')
url_download = ('http://www.cpasbien.cm/telechargement/%s' % tmp)
size = result.findAll(attrs = {'class' : ["poid"]})[0].text
seeder = result.findAll(attrs = {'class' : ["seed_ok"]})[0].text
leecher = result.findAll(attrs = {'class' : ["down"]})[0].text
age = '1'

verify = getTitle(movie['info']).split(' ')

add = 1

for verify_unit in verify:
if (name.lower().find(verify_unit.lower()) == -1) :
add = 0

def extra_check(item):
return True

if add == 1:

new['id'] = id
new['name'] = name.strip()
new['url'] = url_download
new['detail_url'] = detail_url

new['size'] = self.parseSize(size)
new['age'] = self.ageToDays(age)
new['seeders'] = tryInt(seeder)
new['leechers'] = tryInt(leecher)
new['extra_check'] = extra_check
new['download'] = self.loginDownload

#new['score'] = fireEvent('score.calculate', new, movie, single = True)

#log.error('score')
#log.error(new['score'])

results.append(new)

id = id+1

except:
log.error('Failed parsing cPASbien: %s', traceback.format_exc())

except AttributeError:
log.debug('No search results found.')
else:
log.debug('No search results found.')

def ageToDays(self, age_str):
age = 0
age_str = age_str.replace(' ', ' ')

regex = '(\d*.?\d+).(sec|heure|jour|semaine|mois|ans)+'
matches = re.findall(regex, age_str)
for match in matches:
nr, size = match
mult = 1
if size == 'semaine':
mult = 7
elif size == 'mois':
mult = 30.5
elif size == 'ans':
mult = 365

age += tryInt(nr) * mult

return tryInt(age)

def login(self):

cookieprocessor = urllib2.HTTPCookieProcessor(cookielib.CookieJar())
opener = urllib2.build_opener(cookieprocessor, Base.PTPHTTPRedirectHandler())
opener.addheaders = [
('User-Agent', 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko)'),
('Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'),
('Accept-Language', 'fr-fr,fr;q=0.5'),
('Accept-Charset', 'ISO-8859-1,utf-8;q=0.7,*;q=0.7'),
('Keep-Alive', '115'),
('Connection', 'keep-alive'),
('Cache-Control', 'max-age=0'),
]

try:
response = opener.open('http://www.cpasbien.cm', tryUrlencode({'url': '/'}))
except urllib2.URLError as e:
log.error('Login to cPASbien failed: %s' % e)
return False

if response.getcode() == 200:
log.debug('Login HTTP cPASbien status 200; seems successful')
self.last_login_check = opener
return True
else:
log.error('Login to cPASbien failed: returned code %d' % response.getcode())
return False


def loginDownload(self, url = '', nzb_id = ''):
values = {
'url' : '/'
}
data_tmp = urllib.urlencode(values)
req = urllib2.Request(url, data_tmp, headers={'User-Agent' : "Mozilla/5.0"} )

try:
if not self.last_login_check and not self.login():
log.error('Failed downloading from %s', self.getName())
return urllib2.urlopen(req).read()
except:
log.error('Failed downloading from %s: %s', (self.getName(), traceback.format_exc()))

def download(self, url = '', nzb_id = ''):

if not self.last_login_check and not self.login():
return

values = {
'url' : '/'
}
data_tmp = urllib.urlencode(values)
req = urllib2.Request(url, data_tmp, headers={'User-Agent' : "Mozilla/5.0"} )

try:
return urllib2.urlopen(req).read()
except:
log.error('Failed downloading from %s: %s', (self.getName(), traceback.format_exc()))
config = [{
'name': 'cpasbien',
'groups': [
{
'tab': 'searcher',
'list': 'torrent_providers',
'name': 'cpasbien',
'description': 'See <a href="http://www.cpasbien.cm/">cPASbien</a>',
'icon': 'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAgZJREFUOI2lkj9oE2EYxn93l/Quf440gXg4lBoEMd2MDuLSkk0R6hCnuqjUoR0c7FDo4Ca0CDo7uRRBqEMDXSLUUqRDiZM1NMEI1VKTlDZpUppccvc5nJp/KooPfMPH+z3P+zzv+8F/Quq8XIVEEOY0kASIzpoLlBKUV+CuCblfCjyF/P3V1Qi6jrCs7k4eD/X1dS5NTy9tQaJD2MFDkA23W8UwQFGQRJcB0DS0cBg/DPY4a0OVZcHeHihKf1ifD6pVfGD/VmBAUeDwEGQZLAskCVQV6nVYW+M4lSLQo9stoKpQLoNtO2QhYHsbkkmOczm+AP5eBy/BfwRDn8GHJLkpFp3utRpkMpDLwckJvlCIM9Uqg6YZeAAj58E1CVlXCaaigcCjsWhU8Xq9UCo5lisVx4FhODFkGbdpMtlqXa4IsVUHYkLcVlbg3ddGo3AzErl2emLCGaCmwcAAuL4ntCxoNpFsG8O2odlkXojF17CgAK2PsJna2Xk/ViyOh0dHXWhaewaW1T6mSb5a5V6rtbAMU4D5c18FyCzu7i5fyWZvDMfjOh4PNBpd5A/5vLheq93ZhMc/eF0Lr0NhaX8/eS6djo/EYqfQdUekUuHNxsZR4uDg1id40f9J+qE/CwTeitlZIWZmxKtQqOSFi39D7IQy5/c/fxIMpoGhfyUDMAwXzsL4n958A9jfxsJ8X4WQAAAAAElFTkSuQmCC',
'wizard': True,
'options': [
{
'name': 'enabled',
'type': 'enabler',
'default': False,
},
{
'name': 'seed_ratio',
'label': 'Seed ratio',
'type': 'float',
'default': 1,
'description': 'Will not be (re)moved until this seed ratio is met.',
},
{
'name': 'seed_time',
'label': 'Seed time',
'type': 'int',
'default': 40,
'description': 'Will not be (re)moved until this seed time (in hours) is met.',
},
{
'name': 'extra_score',
'advanced': True,
'label': 'Extra Score',
'type': 'int',
'default': 0,
'description': 'Starting score for each release found via this provider.',
}
],
},
],
}]

10 comments on commit bf15e1a

@maxcore
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

je sais pas ou t'écrire se bug:

Steps to reproduce:

  1. ..
  2. ..

Information:

Movie(s) I have this with: ...
Quality of the movie being searched: ...
Providers I use: ...
Version of CouchPotato: git:(cyberden:CouchPotatoServer master) 9cb7799 (2016-10-20 11:25:04)
Running on: ...

Logs:

11-12 08:23:23 ERROR [   couchpotato.core.event] Error in event "automation.get_chart_list", that wasn't caught: Traceback (most recent call last):
  File "/volume1/@appstore/couchpotatoserver-custom/var/CouchPotatoServer/couchpotato/core/event.py", line 15, in runHandler
    return handler(*args, **kwargs)
  File "/volume1/@appstore/couchpotatoserver-custom/var/CouchPotatoServer/couchpotato/core/media/movie/providers/automation/base.py", line 44, in _getChartList
    return self.getChartList()
  File "/volume1/@appstore/couchpotatoserver-custom/var/CouchPotatoServer/couchpotato/core/media/movie/providers/automation/bluray.py", line 129, in getChartList
    movie = self.search(name, year)
  File "/volume1/@appstore/couchpotatoserver-custom/var/CouchPotatoServer/couchpotato/core/media/movie/providers/automation/base.py", line 49, in search
    cached_imdb = Env.prop(prop_name, default = False)
  File "/volume1/@appstore/couchpotatoserver-custom/var/CouchPotatoServer/couchpotato/environment.py", line 82, in prop
    v = s.getProperty(identifier)
  File "/volume1/@appstore/couchpotatoserver-custom/var/CouchPotatoServer/couchpotato/core/settings.py", line 422, in getProperty
    propert = db.get('property', identifier)
  File "/usr/local/couchpotatoserver-custom/var/CouchPotatoServer/libs/CodernityDB/database_super_thread_safe.py", line 43, in _inner
    res = f(*args, **kwargs)
  File "/usr/local/couchpotatoserver-custom/var/CouchPotatoServer/libs/CodernityDB/database.py", line 940, in get
    l_key, _unk, start, size, status = ind.get(key)
  File "/usr/local/couchpotatoserver-custom/var/CouchPotatoServer/libs/CodernityDB/hash_index.py", line 382, in get
    return self._find_key(self.make_key(key))
  File "<Index: /usr/local/couchpotatoserver-custom/var/database/_indexes/06property.py", line 33, in make_key
UnicodeEncodeError: 'ascii' codec can't encode character u'\xfa' in position 39: ordinal not in range(128)
encoding=UTF-8 debug=False args=['--daemon', '--pid_file', '/usr/local/couchpotatoserver-custom/var/couchpotatoserver-custom.pid', '--config_file', '/usr/local/couchpotatoserver-custom/var/settings.conf'] app_dir=/usr/local/couchpotatoserver-custom/var/CouchPotatoServer data_dir=/usr/local/couchpotatoserver-custom/var desktop=None options=Namespace(config_file='/usr/local/couchpotatoserver-custom/var/settings.conf', console_log=False, daemon=True, data_dir=None, debug=False, pid_file='/usr/local/couchpotatoserver-custom/var/couchpotatoserver-custom.pid', quiet=False)  

@cyberden
Copy link
Owner

@cyberden cyberden commented on bf15e1a Nov 14, 2016

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Une idée d'où ça peut venir? A priori c'est dans le module "Automation" qui permets de récupérer les charts courant et autre. Est-ce possible d'avoir la config pour savoir ce qui est activé ou pas?

Edit : J'ai trouvé :)

@maxcore
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Merci :) jadore ton git ;)

@cyberden
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Honnêtement je n'ai pas fait grand chose, juste adapté quelques broutilles pour que ça corresponde à mon usage.

@bidulle95
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

moi aussi je l'adore c'est mon git préféré
merci pour le taf que tu fais
pourquoi on peut pas poster d'issue
mais cpasbien et t411 ne marche pas chez moi en tous cas ca marchai avant mais il trouve rien
j'ai souvent des erreurs comme ca :

Steps to reproduce:

  1. ..
  2. ..

Information:

Movie(s) I have this with: ...
Quality of the movie being searched: ...
Providers I use: ...
Version of CouchPotato: source:(cyberden:CouchPotatoServer master) 8d13db2 (2016-11-14 10:00:20)
Running on: ...

Logs:

11-14 17:03:10 ERROR [   couchpotato.core.event] Error in event "provider.search.torrent.movie", that wasn't caught: Traceback (most recent call last):
  File "/share/CACHEDEV1_DATA/.qpkg/QCouchPotato/CouchPotatoServer-master/couchpotato/core/event.py", line 15, in runHandler
    return handler(*args, **kwargs)
  File "/share/CACHEDEV1_DATA/.qpkg/QCouchPotato/CouchPotatoServer-master/couchpotato/core/media/_base/providers/base.py", line 229, in search
    self._search(media, quality, results)
  File "/share/CACHEDEV1_DATA/.qpkg/QCouchPotato/CouchPotatoServer-master/couchpotato/core/media/_base/providers/torrent/t411.py", line 85, in _search
    if not self.last_login_check and not self.login():
  File "/share/CACHEDEV1_DATA/.qpkg/QCouchPotato/CouchPotatoServer-master/couchpotato/core/media/_base/providers/torrent/t411.py", line 190, in login
    response = self.opener.open('https://www.t411.ch/users/login/', self.getLoginParams())
  File "/share/CACHEDEV1_DATA/.qpkg/QCouchPotato/lib/python2.7/urllib2.py", line 401, in open
    response = self._open(req, data)
  File "/share/CACHEDEV1_DATA/.qpkg/QCouchPotato/lib/python2.7/urllib2.py", line 419, in _open
    '_open', req)
  File "/share/CACHEDEV1_DATA/.qpkg/QCouchPotato/lib/python2.7/urllib2.py", line 379, in _call_chain
    result = func(*args)
  File "/share/CACHEDEV1_DATA/.qpkg/QCouchPotato/lib/python2.7/urllib2.py", line 1219, in https_open
    return self.do_open(httplib.HTTPSConnection, req)
  File "/share/CACHEDEV1_DATA/.qpkg/QCouchPotato/lib/python2.7/urllib2.py", line 1150, in do_open
    h = http_class(host, timeout=req.timeout) # will parse host:port
  File "/share/CACHEDEV1_DATA/.qpkg/QCouchPotato/lib/python2.7/httplib.py", line 1258, in __init__
    context = ssl._create_default_https_context()
AttributeError: 'module' object has no attribute '_create_default_https_context'
encoding=UTF-8 debug=False args=['--data_dir', '/share/CACHEDEV1_DATA/.qpkg/QCouchPotato/CouchPotatoServer-master/DATAS', '--config_file', '/share/CACHEDEV1_DATA/.qpkg/QCouchPotato/CouchPotatoServer-master/DATAS/setting.conf', '--daemon'] app_dir=/share/CACHEDEV1_DATA/.qpkg/QCouchPotato/CouchPotatoServer-master data_dir=/share/CACHEDEV1_DATA/.qpkg/QCouchPotato/CouchPotatoServer-master/DATAS desktop=None options=Namespace(config_file='/share/CACHEDEV1_DATA/.qpkg/QCouchPotato/CouchPotatoServer-master/DATAS/setting.conf', console_log=False, daemon=True, data_dir='/share/CACHEDEV1_DATA/.qpkg/QCouchPotato/CouchPotatoServer-master/DATAS', debug=False, pid_file='/share/CACHEDEV1_DATA/.qpkg/QCouchPotato/CouchPotatoServer-master/DATAS/couchpotato.pid', quiet=False)  

@bidulle95
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

et ca aussi :

Steps to reproduce:

  1. ..
  2. ..

Information:

Movie(s) I have this with: ...
Quality of the movie being searched: ...
Providers I use: ...
Version of CouchPotato: source:(cyberden:CouchPotatoServer master) 8d13db2 (2016-11-14 10:00:20)
Running on: ...

Logs:

11-14 17:03:10 ERROR [edia._base.providers.base] Failed to parsing TorrentPotato: Traceback (most recent call last):
  File "/share/CACHEDEV1_DATA/.qpkg/QCouchPotato/CouchPotatoServer-master/couchpotato/core/media/_base/providers/base.py", line 84, in getJsonData
    return json.loads(data)
  File "/share/CACHEDEV1_DATA/.qpkg/QCouchPotato/lib/python2.7/json/__init__.py", line 338, in loads
    return _default_decoder.decode(s)
  File "/share/CACHEDEV1_DATA/.qpkg/QCouchPotato/lib/python2.7/json/decoder.py", line 366, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/share/CACHEDEV1_DATA/.qpkg/QCouchPotato/lib/python2.7/json/decoder.py", line 384, in raw_decode
    raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded
 

@cyberden
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Je regarderai quand j'aurai le temps pour T411. Pour la deuxième erreur, tu as une configuration TorrentPotato? Sur quel site?

@bidulle95
Copy link

@bidulle95 bidulle95 commented on bf15e1a Nov 15, 2016

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

oui pour xthor
c'est pas presser deja le taf que tu a fais c'est super
et c'pasbien aussi qui marche pas
tu veut mon fichier log

@cyberden
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Je ne peux pas tester donc ça va être difficile...

@cyberden
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ca remonte un peu mais j'ai fait un vrai provider xthor donc maintenant ça marche.

Please sign in to comment.