More login fixes
This commit is contained in:
1 parent
c9a4af218e
commit
9ce0c47cd4
5 files changed
+24
-31
No files matched your search
@@ -114,6 +114,8 @@ class Plugin(object):
|
|||||||
headers['Host'] = headers.get('Host', host)
|
headers['Host'] = headers.get('Host', host)
|
||||||
headers['User-Agent'] = headers.get('User-Agent', self.user_agent)
|
headers['User-Agent'] = headers.get('User-Agent', self.user_agent)
|
||||||
headers['Accept-encoding'] = headers.get('Accept-encoding', 'gzip')
|
headers['Accept-encoding'] = headers.get('Accept-encoding', 'gzip')
|
||||||
|
headers['Connection'] = headers.get('Connection', 'keep-alive')
|
||||||
|
headers['Cache-Control'] = headers.get('Cache-Control', 'max-age=0')
|
||||||
|
|
||||||
# Don't try for failed requests
|
# Don't try for failed requests
|
||||||
if self.http_failed_disabled.get(host, 0) > 0:
|
if self.http_failed_disabled.get(host, 0) > 0:
|
||||||
@@ -130,6 +132,10 @@ class Plugin(object):
|
|||||||
self.wait(host)
|
self.wait(host)
|
||||||
try:
|
try:
|
||||||
|
|
||||||
|
# Make sure opener has the correct headers
|
||||||
|
if opener:
|
||||||
|
opener.add_headers = headers
|
||||||
|
|
||||||
if multipart:
|
if multipart:
|
||||||
log.info('Opening multipart url: %s, params: %s', (url, [x for x in params.iterkeys()] if isinstance(params, dict) else 'with data'))
|
log.info('Opening multipart url: %s, params: %s', (url, [x for x in params.iterkeys()] if isinstance(params, dict) else 'with data'))
|
||||||
request = urllib2.Request(url, params, headers)
|
request = urllib2.Request(url, params, headers)
|
||||||
@@ -143,7 +149,12 @@ class Plugin(object):
|
|||||||
response = opener.open(request, timeout = timeout)
|
response = opener.open(request, timeout = timeout)
|
||||||
else:
|
else:
|
||||||
log.info('Opening url: %s, params: %s', (url, [x for x in params.iterkeys()] if isinstance(params, dict) else 'with data'))
|
log.info('Opening url: %s, params: %s', (url, [x for x in params.iterkeys()] if isinstance(params, dict) else 'with data'))
|
||||||
data = tryUrlencode(params) if len(params) > 0 else None
|
|
||||||
|
if isinstance(params, (str, unicode)) and len(params) > 0:
|
||||||
|
data = params
|
||||||
|
else:
|
||||||
|
data = tryUrlencode(params) if len(params) > 0 else None
|
||||||
|
|
||||||
request = urllib2.Request(url, data, headers)
|
request = urllib2.Request(url, data, headers)
|
||||||
|
|
||||||
if opener:
|
if opener:
|
||||||
@@ -156,8 +167,10 @@ class Plugin(object):
|
|||||||
buf = StringIO(response.read())
|
buf = StringIO(response.read())
|
||||||
f = gzip.GzipFile(fileobj = buf)
|
f = gzip.GzipFile(fileobj = buf)
|
||||||
data = f.read()
|
data = f.read()
|
||||||
|
f.close()
|
||||||
else:
|
else:
|
||||||
data = response.read()
|
data = response.read()
|
||||||
|
response.close()
|
||||||
|
|
||||||
self.http_failed_request[host] = 0
|
self.http_failed_request[host] = 0
|
||||||
except IOError:
|
except IOError:
|
||||||
@@ -230,7 +243,7 @@ class Plugin(object):
|
|||||||
|
|
||||||
def getCache(self, cache_key, url = None, **kwargs):
|
def getCache(self, cache_key, url = None, **kwargs):
|
||||||
cache_key = md5(ss(cache_key))
|
cache_key = md5(ss(cache_key))
|
||||||
cache = Env.get('cache').get(cache_key)
|
cache = None #Env.get('cache').get(cache_key)
|
||||||
if cache:
|
if cache:
|
||||||
if not Env.get('dev'): log.debug('Getting cache %s', cache_key)
|
if not Env.get('dev'): log.debug('Getting cache %s', cache_key)
|
||||||
return cache
|
return cache
|
||||||
|
|||||||
@@ -106,7 +106,7 @@ class YarrProvider(Provider):
|
|||||||
now = time.time()
|
now = time.time()
|
||||||
if self.login_opener and self.last_login_check < (now - 3600):
|
if self.login_opener and self.last_login_check < (now - 3600):
|
||||||
try:
|
try:
|
||||||
output = self.urlopen(self.urls['login_check'])
|
output = self.urlopen(self.urls['login_check'], opener = self.login_opener)
|
||||||
if self.loginCheckSuccess(output):
|
if self.loginCheckSuccess(output):
|
||||||
self.last_login_check = now
|
self.last_login_check = now
|
||||||
return True
|
return True
|
||||||
@@ -121,14 +121,10 @@ class YarrProvider(Provider):
|
|||||||
try:
|
try:
|
||||||
cookiejar = cookielib.CookieJar()
|
cookiejar = cookielib.CookieJar()
|
||||||
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookiejar))
|
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookiejar))
|
||||||
opener.addheaders = [('User-Agent', self.user_agent)]
|
output = self.urlopen(self.urls['login'], params = self.getLoginParams(), opener = opener)
|
||||||
urllib2.install_opener(opener)
|
|
||||||
log.info2('Logging into %s', self.urls['login'])
|
|
||||||
f = opener.open(self.urls['login'], self.getLoginParams())
|
|
||||||
output = f.read()
|
|
||||||
f.close()
|
|
||||||
|
|
||||||
if self.loginSuccess(output):
|
if self.loginSuccess(output):
|
||||||
|
self.last_login_check = now
|
||||||
self.login_opener = opener
|
self.login_opener = opener
|
||||||
return True
|
return True
|
||||||
|
|
||||||
@@ -171,7 +167,7 @@ class YarrProvider(Provider):
|
|||||||
return []
|
return []
|
||||||
|
|
||||||
# Login if needed
|
# Login if needed
|
||||||
if self.urls.get('login') and (not self.login_opener and not self.login()):
|
if self.urls.get('login') and not self.login():
|
||||||
log.error('Failed to login to: %s', self.getName())
|
log.error('Failed to login to: %s', self.getName())
|
||||||
return []
|
return []
|
||||||
|
|
||||||
|
|||||||
@@ -3,13 +3,11 @@ from couchpotato.core.helpers.variable import getTitle, tryInt, mergeDicts
|
|||||||
from couchpotato.core.logger import CPLog
|
from couchpotato.core.logger import CPLog
|
||||||
from couchpotato.core.providers.torrent.base import TorrentProvider
|
from couchpotato.core.providers.torrent.base import TorrentProvider
|
||||||
from dateutil.parser import parse
|
from dateutil.parser import parse
|
||||||
import cookielib
|
|
||||||
import htmlentitydefs
|
import htmlentitydefs
|
||||||
import json
|
import json
|
||||||
import re
|
import re
|
||||||
import time
|
import time
|
||||||
import traceback
|
import traceback
|
||||||
import urllib2
|
|
||||||
|
|
||||||
log = CPLog(__name__)
|
log = CPLog(__name__)
|
||||||
|
|
||||||
@@ -25,6 +23,8 @@ class PassThePopcorn(TorrentProvider):
|
|||||||
'search': 'https://tls.passthepopcorn.me/search/%s/0/7/%d'
|
'search': 'https://tls.passthepopcorn.me/search/%s/0/7/%d'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
http_time_between_calls = 2
|
||||||
|
|
||||||
quality_search_params = {
|
quality_search_params = {
|
||||||
'bd50': {'media': 'Blu-ray', 'format': 'BD50'},
|
'bd50': {'media': 'Blu-ray', 'format': 'BD50'},
|
||||||
'1080p': {'resolution': '1080p'},
|
'1080p': {'resolution': '1080p'},
|
||||||
@@ -64,17 +64,8 @@ class PassThePopcorn(TorrentProvider):
|
|||||||
'searchstr': movie['library']['identifier']
|
'searchstr': movie['library']['identifier']
|
||||||
})
|
})
|
||||||
|
|
||||||
# Do login for the cookies
|
url = '%s?json=noredirect&%s' % (self.urls['torrent'], tryUrlencode(params))
|
||||||
if not self.login():
|
res = self.getJsonData(url, opener = self.login_opener)
|
||||||
return
|
|
||||||
|
|
||||||
try:
|
|
||||||
url = '%s?json=noredirect&%s' % (self.urls['torrent'], tryUrlencode(params))
|
|
||||||
txt = self.urlopen(url, opener = self.login_opener)
|
|
||||||
res = json.loads(txt)
|
|
||||||
except:
|
|
||||||
log.error('Search on PassThePopcorn.me (%s) failed (could not decode JSON)', params)
|
|
||||||
return
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
if not 'Movies' in res:
|
if not 'Movies' in res:
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ class SceneAccess(TorrentProvider):
|
|||||||
urls = {
|
urls = {
|
||||||
'test': 'https://www.sceneaccess.eu/',
|
'test': 'https://www.sceneaccess.eu/',
|
||||||
'login': 'https://www.sceneaccess.eu/login',
|
'login': 'https://www.sceneaccess.eu/login',
|
||||||
'login_check': 'https://sceneaccess.eu/inbox',
|
'login_check': 'https://www.sceneaccess.eu/inbox',
|
||||||
'detail': 'https://www.sceneaccess.eu/details?id=%s',
|
'detail': 'https://www.sceneaccess.eu/details?id=%s',
|
||||||
'search': 'https://www.sceneaccess.eu/browse?method=2&c%d=%d',
|
'search': 'https://www.sceneaccess.eu/browse?method=2&c%d=%d',
|
||||||
'download': 'https://www.sceneaccess.eu/%s',
|
'download': 'https://www.sceneaccess.eu/%s',
|
||||||
@@ -40,9 +40,6 @@ class SceneAccess(TorrentProvider):
|
|||||||
})
|
})
|
||||||
url = "%s&%s" % (url, arguments)
|
url = "%s&%s" % (url, arguments)
|
||||||
|
|
||||||
# Do login for the cookies
|
|
||||||
if not self.login():
|
|
||||||
return
|
|
||||||
|
|
||||||
data = self.getHTMLData(url, opener = self.login_opener)
|
data = self.getHTMLData(url, opener = self.login_opener)
|
||||||
|
|
||||||
|
|||||||
@@ -29,10 +29,6 @@ class SceneHD(TorrentProvider):
|
|||||||
})
|
})
|
||||||
url = "%s&%s" % (self.urls['search'], arguments)
|
url = "%s&%s" % (self.urls['search'], arguments)
|
||||||
|
|
||||||
# Cookie login
|
|
||||||
if not self.login():
|
|
||||||
return
|
|
||||||
|
|
||||||
data = self.getHTMLData(url, opener = self.login_opener)
|
data = self.getHTMLData(url, opener = self.login_opener)
|
||||||
|
|
||||||
if data:
|
if data:
|
||||||
|
|||||||
Reference in new issue
Block a user