Merge branch 'develop' into redesign
This commit is contained in:
commit
1a2d79f719
6 files changed
+28
-12
No files matched your search
@@ -40,6 +40,8 @@ class WebHandler(BaseHandler):
|
|||||||
return
|
return
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
if route == 'robots.txt':
|
||||||
|
self.set_header('Content-Type', 'text/plain')
|
||||||
self.write(views[route]())
|
self.write(views[route]())
|
||||||
except:
|
except:
|
||||||
log.error("Failed doing web request '%s': %s", (route, traceback.format_exc()))
|
log.error("Failed doing web request '%s': %s", (route, traceback.format_exc()))
|
||||||
@@ -60,6 +62,13 @@ def index():
|
|||||||
addView('', index)
|
addView('', index)
|
||||||
|
|
||||||
|
|
||||||
|
# Web view
|
||||||
|
def robots():
|
||||||
|
return 'User-agent: * \n' \
|
||||||
|
'Disallow: /'
|
||||||
|
addView('robots.txt', robots)
|
||||||
|
|
||||||
|
|
||||||
# API docs
|
# API docs
|
||||||
def apiDocs():
|
def apiDocs():
|
||||||
routes = list(api.keys())
|
routes = list(api.keys())
|
||||||
|
|||||||
+9
-5
@@ -7,7 +7,6 @@ import urllib
|
|||||||
|
|
||||||
from couchpotato.core.helpers.request import getParams
|
from couchpotato.core.helpers.request import getParams
|
||||||
from couchpotato.core.logger import CPLog
|
from couchpotato.core.logger import CPLog
|
||||||
from tornado.ioloop import IOLoop
|
|
||||||
from tornado.web import RequestHandler, asynchronous
|
from tornado.web import RequestHandler, asynchronous
|
||||||
|
|
||||||
|
|
||||||
@@ -34,7 +33,7 @@ def run_async(func):
|
|||||||
def run_handler(route, kwargs, callback = None):
|
def run_handler(route, kwargs, callback = None):
|
||||||
try:
|
try:
|
||||||
res = api[route](**kwargs)
|
res = api[route](**kwargs)
|
||||||
IOLoop.current().add_callback(callback, res, route)
|
callback(res, route)
|
||||||
except:
|
except:
|
||||||
log.error('Failed doing api request "%s": %s', (route, traceback.format_exc()))
|
log.error('Failed doing api request "%s": %s', (route, traceback.format_exc()))
|
||||||
callback({'success': False, 'error': 'Failed returning results'}, route)
|
callback({'success': False, 'error': 'Failed returning results'}, route)
|
||||||
@@ -84,10 +83,11 @@ def addNonBlockApiView(route, func_tuple, docs = None, **kwargs):
|
|||||||
|
|
||||||
# Blocking API handler
|
# Blocking API handler
|
||||||
class ApiHandler(RequestHandler):
|
class ApiHandler(RequestHandler):
|
||||||
|
route = None
|
||||||
|
|
||||||
@asynchronous
|
@asynchronous
|
||||||
def get(self, route, *args, **kwargs):
|
def get(self, route, *args, **kwargs):
|
||||||
route = route.strip('/')
|
self.route = route = route.strip('/')
|
||||||
if not api.get(route):
|
if not api.get(route):
|
||||||
self.write('API call doesn\'t seem to exist')
|
self.write('API call doesn\'t seem to exist')
|
||||||
self.finish()
|
self.finish()
|
||||||
@@ -124,7 +124,7 @@ class ApiHandler(RequestHandler):
|
|||||||
except:
|
except:
|
||||||
log.error('Failed write error "%s": %s', (route, traceback.format_exc()))
|
log.error('Failed write error "%s": %s', (route, traceback.format_exc()))
|
||||||
|
|
||||||
api_locks[route].release()
|
self.unlock()
|
||||||
|
|
||||||
post = get
|
post = get
|
||||||
|
|
||||||
@@ -151,7 +151,11 @@ class ApiHandler(RequestHandler):
|
|||||||
try: self.finish({'success': False, 'error': 'Failed returning results'})
|
try: self.finish({'success': False, 'error': 'Failed returning results'})
|
||||||
except: pass
|
except: pass
|
||||||
|
|
||||||
api_locks[route].release()
|
self.unlock()
|
||||||
|
|
||||||
|
def unlock(self):
|
||||||
|
try: api_locks[self.route].release()
|
||||||
|
except: pass
|
||||||
|
|
||||||
|
|
||||||
def addApiView(route, func, static = False, docs = None, **kwargs):
|
def addApiView(route, func, static = False, docs = None, **kwargs):
|
||||||
|
|||||||
@@ -42,6 +42,7 @@ class Base(TorrentProvider):
|
|||||||
|
|
||||||
link = result.find('td', attrs = {'class': 'ttr_name'}).find('a')
|
link = result.find('td', attrs = {'class': 'ttr_name'}).find('a')
|
||||||
url = result.find('td', attrs = {'class': 'td_dl'}).find('a')
|
url = result.find('td', attrs = {'class': 'td_dl'}).find('a')
|
||||||
|
seeders = result.find('td', attrs = {'class': 'ttr_seeders'}).find('a')
|
||||||
leechers = result.find('td', attrs = {'class': 'ttr_leechers'}).find('a')
|
leechers = result.find('td', attrs = {'class': 'ttr_leechers'}).find('a')
|
||||||
torrent_id = link['href'].replace('details?id=', '')
|
torrent_id = link['href'].replace('details?id=', '')
|
||||||
|
|
||||||
@@ -51,7 +52,7 @@ class Base(TorrentProvider):
|
|||||||
'url': self.urls['download'] % url['href'],
|
'url': self.urls['download'] % url['href'],
|
||||||
'detail_url': self.urls['detail'] % torrent_id,
|
'detail_url': self.urls['detail'] % torrent_id,
|
||||||
'size': self.parseSize(result.find('td', attrs = {'class': 'ttr_size'}).contents[0]),
|
'size': self.parseSize(result.find('td', attrs = {'class': 'ttr_size'}).contents[0]),
|
||||||
'seeders': tryInt(result.find('td', attrs = {'class': 'ttr_seeders'}).find('a').string),
|
'seeders': tryInt(seeders.string) if seeders else 0,
|
||||||
'leechers': tryInt(leechers.string) if leechers else 0,
|
'leechers': tryInt(leechers.string) if leechers else 0,
|
||||||
'get_more_info': self.getMoreInfo,
|
'get_more_info': self.getMoreInfo,
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -394,8 +394,9 @@ class MovieSearcher(SearcherBase, MovieTypeBase):
|
|||||||
log.info('Trying next release for: %s', getTitle(media))
|
log.info('Trying next release for: %s', getTitle(media))
|
||||||
self.single(media, manual = manual, force_download = force_download)
|
self.single(media, manual = manual, force_download = force_download)
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
return False
|
||||||
except:
|
except:
|
||||||
log.error('Failed searching for next release: %s', traceback.format_exc())
|
log.error('Failed searching for next release: %s', traceback.format_exc())
|
||||||
return False
|
return False
|
||||||
|
|||||||
@@ -110,11 +110,11 @@ class CoreNotifier(Notification):
|
|||||||
|
|
||||||
if limit_offset:
|
if limit_offset:
|
||||||
splt = splitString(limit_offset)
|
splt = splitString(limit_offset)
|
||||||
limit = splt[0]
|
limit = tryInt(splt[0])
|
||||||
offset = 0 if len(splt) is 1 else splt[1]
|
offset = tryInt(0 if len(splt) is 1 else splt[1])
|
||||||
results = db.get_many('notification', limit = limit, offset = offset, with_doc = True)
|
results = db.all('notification', limit = limit, offset = offset, with_doc = True)
|
||||||
else:
|
else:
|
||||||
results = db.get_many('notification', limit = 200, with_doc = True)
|
results = db.all('notification', limit = 200, with_doc = True)
|
||||||
|
|
||||||
notifications = []
|
notifications = []
|
||||||
for n in results:
|
for n in results:
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||||
<meta name="mobile-web-app-capable" content="yes">
|
<meta name="mobile-web-app-capable" content="yes">
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||||
|
<meta name="robots" content="noindex, nofollow" />
|
||||||
|
|
||||||
{% for url in fireEvent('clientscript.get_styles', location = 'front', single = True) %}
|
{% for url in fireEvent('clientscript.get_styles', location = 'front', single = True) %}
|
||||||
<link data-url="{{ url }}" rel="stylesheet" href="{{ Env.get('web_base') }}{{ url }}" type="text/css">{% end %}
|
<link data-url="{{ url }}" rel="stylesheet" href="{{ Env.get('web_base') }}{{ url }}" type="text/css">{% end %}
|
||||||
|
|||||||
Reference in new issue
Block a user