bazarr/bazarr/check_update.py

80 lines
2.5 KiB
Python
Raw Normal View History

# coding=utf-8
2017-11-07 04:53:31 +00:00
import os
2017-12-06 04:07:37 +00:00
import logging
import sqlite3
2018-11-02 19:08:07 +00:00
import json
import requests
2017-11-07 04:53:31 +00:00
from get_args import args
from config import settings
2019-01-01 20:31:01 +00:00
if not args.no_update:
import git
current_working_directory = os.path.dirname(os.path.dirname(__file__))
2017-11-21 21:09:33 +00:00
def gitconfig():
g = git.Repo.init(current_working_directory)
config_read = g.config_reader()
config_write = g.config_writer()
2019-01-15 16:25:13 +00:00
try:
username = config_read.get_value("user", "name")
except:
2018-10-02 14:28:47 +00:00
logging.debug('BAZARR Settings git username')
config_write.set_value("user", "name", "Bazarr")
2019-01-15 16:25:13 +00:00
try:
email = config_read.get_value("user", "email")
except:
2018-10-02 14:28:47 +00:00
logging.debug('BAZARR Settings git email')
config_write.set_value("user", "email", "bazarr@fake.email")
2017-12-30 05:09:51 +00:00
def check_and_apply_update():
gitconfig()
2018-11-02 19:08:07 +00:00
check_releases()
2018-12-15 00:36:28 +00:00
branch = settings.general.branch
2017-12-30 05:09:51 +00:00
g = git.cmd.Git(current_working_directory)
g.fetch('origin')
2018-06-05 03:25:07 +00:00
result = g.diff('--shortstat', 'origin/' + branch)
if len(result) == 0:
logging.info('BAZARR No new version of Bazarr available.')
2017-12-30 13:33:36 +00:00
else:
2018-06-05 03:50:23 +00:00
g.reset('--hard', 'HEAD')
g.checkout(branch)
g.reset('--hard', 'origin/' + branch)
2018-06-05 03:28:16 +00:00
g.pull()
logging.info('BAZARR Updated to latest version. Restart required. ' + result)
2018-06-05 03:25:07 +00:00
updated()
2018-11-02 19:08:07 +00:00
def check_releases():
releases = []
url_releases = 'https://api.github.com/repos/morpheus65535/Bazarr/releases'
try:
r = requests.get(url_releases, timeout=15)
r.raise_for_status()
except requests.exceptions.HTTPError as errh:
logging.exception("Error trying to get releases from Github. Http error.")
except requests.exceptions.ConnectionError as errc:
logging.exception("Error trying to get releases from Github. Connection Error.")
except requests.exceptions.Timeout as errt:
logging.exception("Error trying to get releases from Github. Timeout Error.")
except requests.exceptions.RequestException as err:
logging.exception("Error trying to get releases from Github.")
else:
for release in r.json():
releases.append([release['name'], release['body']])
2018-11-28 11:53:37 +00:00
with open(os.path.join(args.config_dir, 'config', 'releases.txt'), 'w') as f:
2018-11-02 19:08:07 +00:00
json.dump(releases, f)
def updated():
conn = sqlite3.connect(os.path.join(args.config_dir, 'db', 'bazarr.db'), timeout=30)
c = conn.cursor()
c.execute("UPDATE system SET updated = 1")
conn.commit()
c.close()