2018-12-09 20:23:51 +00:00
< html lang = " en " >
2017-12-22 00:49:39 +00:00
< head >
< ! DOCTYPE html >
2018-12-13 02:50:05 +00:00
< link href = " {{ base_url}}static/noty/noty.css " rel = " stylesheet " >
< script src = " {{ base_url}}static/noty/noty.min.js " type = " text/javascript " > < / script >
2017-12-22 00:49:39 +00:00
< style >
#divmenu {
2017-12-22 03:36:22 +00:00
background - color : #000000;
2017-12-22 00:49:39 +00:00
padding - top : 2 em ;
padding - bottom : 1 em ;
padding - left : 1 em ;
padding - right : 128 px ;
}
. prompt {
background - color : #333333 !important;
color : white ! important ;
border - radius : 3 px ! important ;
}
2017-12-23 04:16:50 +00:00
. searchicon {
2017-12-23 03:40:14 +00:00
color : white ! important ;
}
2017-12-22 00:49:39 +00:00
< / style >
< / head >
< body >
2018-08-16 02:01:49 +00:00
% from get_argv import config_dir
2017-12-23 03:56:04 +00:00
% import os
2017-12-23 03:40:14 +00:00
% import sqlite3
2018-12-15 00:36:28 +00:00
% from config import settings
2017-12-23 03:40:14 +00:00
2019-01-06 17:15:43 +00:00
% if settings . sonarr . getboolean ( ' only_monitored ' ) :
% monitored_only_query_string_sonarr = ' AND monitored = " True " '
2018-08-09 03:43:13 +00:00
% else :
2019-01-06 17:15:43 +00:00
% monitored_only_query_string_sonarr = " "
% end
% if settings . radarr . getboolean ( ' only_monitored ' ) :
% monitored_only_query_string_radarr = ' AND monitored = " True " '
% else :
% monitored_only_query_string_radarr = " "
2018-08-09 03:43:13 +00:00
% end
2018-12-09 20:23:51 +00:00
% conn = sqlite3 . connect ( os . path . join ( config_dir , ' db ' , ' bazarr.db ' ) , timeout = 30 )
2017-12-23 03:40:14 +00:00
% c = conn . cursor ( )
2019-01-06 17:15:43 +00:00
% wanted_series = c . execute ( " SELECT COUNT(*) FROM table_episodes WHERE missing_subtitles != ' [] ' " + monitored_only_query_string_sonarr ) . fetchone ( )
% wanted_movies = c . execute ( " SELECT COUNT(*) FROM table_movies WHERE missing_subtitles != ' [] ' " + monitored_only_query_string_radarr ) . fetchone ( )
2017-12-23 03:40:14 +00:00
< div id = " divmenu " class = " ui container " >
2017-12-22 00:49:39 +00:00
< div class = " ui grid " >
< div class = " middle aligned row " >
< div class = " three wide column " >
< a href = " {{ base_url}} " > < img class = " logo " src = " {{ base_url}}static/logo128.png " > < / a >
< / div >
< div class = " twelve wide column " >
< div class = " ui grid " >
< div class = " row " >
< div class = " sixteen wide column " >
2018-04-19 23:45:10 +00:00
< div class = " ui inverted borderless labeled icon massive menu six item " >
2017-12-22 00:49:39 +00:00
< div class = " ui container " >
2018-12-27 19:19:59 +00:00
% if settings . general . getboolean ( ' use_sonarr ' ) :
2018-05-27 03:01:57 +00:00
< a class = " item " href = " {{ base_url}}series " >
2017-12-22 00:49:39 +00:00
< i class = " play icon " > < / i >
Series
< / a >
2018-05-27 03:01:57 +00:00
% end
2018-12-27 19:19:59 +00:00
% if settings . general . getboolean ( ' use_radarr ' ) :
2018-04-19 23:45:10 +00:00
< a class = " item " href = " {{ base_url}}movies " >
< i class = " film icon " > < / i >
Movies
< / a >
2018-05-27 03:01:57 +00:00
% end
2017-12-22 00:49:39 +00:00
< a class = " item " href = " {{ base_url}}history " >
< i class = " wait icon " > < / i >
History
< / a >
< a class = " item " href = " {{ base_url}}wanted " >
2018-01-03 19:25:49 +00:00
< i class = " warning sign icon " >
2018-12-27 19:19:59 +00:00
% if settings . general . getboolean ( ' use_sonarr ' ) :
2018-05-02 10:25:42 +00:00
< div class = " floating ui tiny yellow label " style = " left:90 % !important;top:0.5em !important; " >
{ { wanted_series [ 0 ] } }
< / div >
2018-05-27 03:01:57 +00:00
% end
2018-12-27 19:19:59 +00:00
% if settings . general . getboolean ( ' use_radarr ' ) :
2018-05-02 10:25:42 +00:00
< div class = " floating ui tiny green label " style = " left:90 % !important;top:3em !important; " >
{ { wanted_movies [ 0 ] } }
2017-12-23 03:40:14 +00:00
< / div >
2018-05-27 03:01:57 +00:00
% end
2018-01-03 19:25:49 +00:00
< / i >
2017-12-22 00:49:39 +00:00
Wanted
< / a >
< a class = " item " href = " {{ base_url}}settings " >
< i class = " settings icon " > < / i >
Settings
< / a >
< a class = " item " href = " {{ base_url}}system " >
< i class = " laptop icon " > < / i >
System
< / a >
< / div >
< / div >
< / div >
< / div >
2018-12-09 20:23:51 +00:00
< div style = ' padding-top:0; ' class = " row " >
2017-12-22 00:49:39 +00:00
< div class = " three wide column " > < / div >
< div class = " ten wide column " >
< div class = " ui search " >
< div class = " ui left icon fluid input " >
2018-09-24 22:04:33 +00:00
< input class = " prompt " type = " text " placeholder = " Search in your library " >
2017-12-23 04:16:50 +00:00
< i class = " searchicon search icon " > < / i >
2017-12-22 00:49:39 +00:00
< / div >
< / div >
< / div >
< div class = " three wide column " > < / div >
< / div >
< / div >
< / div >
< / div >
< / div >
2017-12-23 03:40:14 +00:00
2018-09-27 15:50:48 +00:00
% restart_required = c . execute ( " SELECT configured, updated FROM system " ) . fetchone ( )
% c . close ( )
2017-12-23 03:40:14 +00:00
2018-09-27 15:50:48 +00:00
% if restart_required [ 1 ] == ' 1 ' and restart_required [ 0 ] == ' 1 ' :
2018-10-14 13:32:16 +00:00
< div class = ' ui center aligned grid ' > < div class = ' fifteen wide column ' > < div class = " ui red message " > Bazarr need to be restarted to apply last update and changes to general settings . Click < a href = # id="restart_link">here</a> to restart.</div></div></div>
2018-09-27 15:50:48 +00:00
% elif restart_required [ 1 ] == ' 1 ' :
2018-10-14 13:32:16 +00:00
< div class = ' ui center aligned grid ' > < div class = ' fifteen wide column ' > < div class = " ui red message " > Bazarr need to be restarted to apply last update . Click < a href = # id="restart_link">here</a> to restart.</div></div></div>
2018-09-27 15:50:48 +00:00
% elif restart_required [ 0 ] == ' 1 ' :
2018-10-14 13:32:16 +00:00
< div class = ' ui center aligned grid ' > < div class = ' fifteen wide column ' > < div class = " ui red message " > Bazarr need to be restarted to apply changes to general settings . Click < a href = # id="restart_link">here</a> to restart.</div></div></div>
2018-09-27 15:50:48 +00:00
% end
< / div >
2017-12-22 00:49:39 +00:00
< / body >
< / html >
< script >
$ ( ' .ui.search ' )
. search ( {
apiSettings : {
2018-04-24 14:48:52 +00:00
url : ' {{ base_url}}search_json/ {query} ' ,
2017-12-22 00:49:39 +00:00
onResponse : function ( results ) {
2018-12-09 20:23:51 +00:00
const response = {
2017-12-22 00:49:39 +00:00
results : [ ]
} ;
$ . each ( results . items , function ( index , item ) {
response . results . push ( {
title : item . name ,
url : item . url
} ) ;
} ) ;
return response ;
}
} ,
minCharacters : 2
} )
;
2017-12-22 03:36:22 +00:00
if ( window . location . href . indexOf ( " episodes " ) > - 1 ) {
$ ( ' .menu ' ) . css ( ' background ' , ' #000000 ' ) ;
2018-09-28 14:40:36 +00:00
$ ( ' .menu ' ) . css ( ' opacity ' , ' 0.8 ' ) ;
2017-12-22 03:36:22 +00:00
$ ( ' #divmenu ' ) . css ( ' background ' , ' #000000 ' ) ;
2018-09-28 14:40:36 +00:00
$ ( ' #divmenu ' ) . css ( ' opacity ' , ' 0.8 ' ) ;
2018-12-09 20:23:51 +00:00
$ ( ' #divmenu ' ) . css ( ' box-shadow ' , ' 0 0 5px 5px #000000 ' ) ;
2018-09-28 14:40:36 +00:00
}
else if ( window . location . href . indexOf ( " movie/ " ) > - 1 ) {
$ ( ' .menu ' ) . css ( ' background ' , ' #000000 ' ) ;
$ ( ' .menu ' ) . css ( ' opacity ' , ' 0.8 ' ) ;
$ ( ' #divmenu ' ) . css ( ' background ' , ' #000000 ' ) ;
$ ( ' #divmenu ' ) . css ( ' opacity ' , ' 0.8 ' ) ;
2018-12-09 20:23:51 +00:00
$ ( ' #divmenu ' ) . css ( ' box-shadow ' , ' 0 0 5px 5px #000000 ' ) ;
2017-12-22 03:36:22 +00:00
}
else {
$ ( ' .menu ' ) . css ( ' background ' , ' #272727 ' ) ;
$ ( ' #divmenu ' ) . css ( ' background ' , ' #272727 ' ) ;
}
2018-10-14 13:32:16 +00:00
2018-12-09 20:23:51 +00:00
$ ( ' #restart_link ' ) . on ( ' click ' , function ( ) {
2018-10-14 13:32:16 +00:00
$ ( ' #loader_text ' ) . text ( " Bazarr is restarting, please wait... " ) ;
$ . ajax ( {
url : " {{ base_url}}restart " ,
async : true
} )
. done ( function ( ) {
setTimeout ( function ( ) { setInterval ( ping , 2000 ) ; } , 8000 ) ;
} ) ;
2018-12-09 20:23:51 +00:00
} ) ;
2018-10-14 13:32:16 +00:00
2018-12-15 00:36:28 +00:00
% from config import settings
% ip = settings . general . ip
% port = settings . general . port
% base_url = settings . general . base_url
2018-10-16 14:58:25 +00:00
2018-12-09 20:23:51 +00:00
if ( " {{ ip}} " == = " 0.0.0.0 " ) {
2018-10-16 14:58:25 +00:00
public_ip = window . location . hostname ;
} else {
public_ip = " {{ ip}} " ;
}
2018-10-17 01:15:42 +00:00
protocol = window . location . protocol ;
2018-12-09 20:23:51 +00:00
if ( window . location . port == = ' {{ current_port}} ' ) {
2018-10-17 03:25:04 +00:00
public_port = ' {{ port}} ' ;
} else {
public_port = window . location . port ;
}
2018-10-14 13:32:16 +00:00
function ping ( ) {
$ . ajax ( {
2018-10-17 03:25:04 +00:00
url : protocol + ' // ' + public_ip + ' : ' + public_port + ' {{ base_url}} ' ,
2018-10-14 13:32:16 +00:00
success : function ( result ) {
2018-10-17 03:25:04 +00:00
window . location . href = protocol + ' // ' + public_ip + ' : ' + public_port + ' {{ base_url}} ' ;
2018-10-14 13:32:16 +00:00
}
} ) ;
}
2018-11-30 02:24:48 +00:00
< / script >
< script type = " text/javascript " >
2019-01-01 04:46:33 +00:00
if ( location . protocol != ' https: ' )
{
var ws = new WebSocket ( " ws:// " + window . location . host + " {{ base_url}}websocket " ) ;
} else {
var ws = new WebSocket ( " wss:// " + window . location . host + " {{ base_url}}websocket " ) ;
}
2018-11-30 02:24:48 +00:00
ws . onmessage = function ( evt ) {
2018-12-13 02:50:05 +00:00
new Noty ( {
text : evt . data ,
timeout : 3000 ,
2018-12-14 11:52:09 +00:00
progressBar : false ,
animation : {
open : null ,
close : null
} ,
killer : true ,
2018-12-14 14:28:14 +00:00
type : ' info ' ,
2018-12-13 02:50:05 +00:00
layout : ' bottomRight ' ,
theme : ' semanticui '
} ) . show ( ) ;
2018-11-30 02:24:48 +00:00
} ;
2017-12-22 00:49:39 +00:00
< / script >