Commit 9549d6d8 authored by echel0n's avatar echel0n

Merge branch 'release/9.4.78'

parents bb70cc66 74f6d460
# Changelog
- * 8f00c06 - 2019-02-24: Release v9.4.77
- * 491da55 - 2019-03-04: Release v9.4.78
- * 3c0d05a - 2019-03-04: Source updates now download and unpack to main program folder to resolve update issues.
- * 3151280 - 2019-03-04: Cleaned up backup and restore functions for database. Bumped keycloak requirement to v0.2.2
- * fe70b17 - 2019-03-03: Added backup and restore functions to database class. Refactored backup and restore system for app to accommodate for migration to python 3.
- * a72ca25 - 2019-02-24: Release v9.4.77
- * b09d78a - 2019-02-24: Added Anime regex for Erai-raws
- * e0f2db6 - 2019-02-24: Release v9.4.76
- * ed84483 - 2019-02-24: Fixed IndexerErrors for TV cache. Added files to .gitignore related to AniDB.
......
......@@ -41,7 +41,7 @@ chardet == 3.0.4
pytz == 2018.7
tzlocal == 2.0.0b1
raven == 6.9.0
python-keycloak-client == 0.2.1
python-keycloak-client == 0.2.2
simplejson == 3.16.0
service_identity == 17.0.0
certifi
......
......@@ -48,7 +48,7 @@ from sickrage.core.config import Config
from sickrage.core.databases.cache import CacheDB
from sickrage.core.databases.main import MainDB
from sickrage.core.helpers import findCertainShow, generate_secret, makeDir, get_lan_ip, restoreSR, \
getDiskSpaceUsage, getFreeSpace, launch_browser, torrent_webui_url
getDiskSpaceUsage, getFreeSpace, launch_browser, torrent_webui_url, move_file
from sickrage.core.helpers.encoding import get_sys_encoding, ek, patch_modules
from sickrage.core.logger import Logger
from sickrage.core.nameparser.validator import check_force_season_folders
......@@ -202,7 +202,7 @@ class Core(object):
# Check if we need to perform a restore first
if os.path.exists(os.path.abspath(os.path.join(self.data_dir, 'restore'))):
success = restoreSR(os.path.abspath(os.path.join(self.data_dir, 'restore')), self.data_dir)
print("Restoring SiCKRAGE backup: %s!\n" % ("FAILED", "SUCCESSFUL")[success])
self.log.info("Restoring SiCKRAGE backup: {}!".format(("FAILED", "SUCCESSFUL")[success]))
if success:
shutil.rmtree(os.path.abspath(os.path.join(self.data_dir, 'restore')), ignore_errors=True)
......
......@@ -18,7 +18,10 @@
from __future__ import unicode_literals
import datetime
import io
import os
import pickle
import re
import shutil
import tarfile
......@@ -57,19 +60,21 @@ class srDatabase(object):
def initialize(self):
# Remove database folder if both exists
if self.db.exists() and os.path.isfile(self.old_db_path):
self.db.open()
if not self.opened:
self.db.open()
self.db.destroy()
if self.db.exists():
self.backup()
self.db.open()
# self.backup()
if not self.opened:
self.db.open()
else:
self.db.create()
# setup database indexes
self.setup_indexes()
def backup(self):
def old_backup(self):
# Backup before start and cleanup old backups
backup_path = os.path.join(sickrage.app.data_dir, 'db_backup', self.name)
backup_count = 5
......@@ -197,6 +202,9 @@ class srDatabase(object):
self.db.add_index(self._indexes[index_name](self.db.path, index_name))
self.db.reindex_index(index_name)
def open(self):
self.db.open()
def close(self):
self.db.close()
......@@ -346,7 +354,7 @@ class srDatabase(object):
def all(self, *args, **kwargs):
with_doc = kwargs.pop('with_doc', True)
for data in self.db.all(*args, **kwargs):
if with_doc :
if with_doc:
try:
doc = self.db.get('id', data['_id'])
yield doc
......@@ -387,6 +395,50 @@ class srDatabase(object):
def insert(self, *args):
return self.db.insert(*args)
def delete_all(self):
for index_name in self.db.indexes_names.keys():
for x in self.all(index_name):
try:
self.delete(x)
except:
continue
def backup(self, backup_file=None):
sickrage.app.log.info('Backing up {} database to {}'.format(self.name, backup_file))
with io.open(backup_file, 'wb') as f:
rows = []
for index_name in self.db.indexes_names.keys():
if index_name in ['id']:
continue
for row in self.all(index_name):
for x in ['_rev', '_id']:
del row[x]
rows += [row]
pickle.dump(rows, f)
del rows
return backup_file
def restore(self, restore_file=None):
backup_file = os.path.join(sickrage.app.data_dir, '{}_db.pickle.bak-{}'.format(self.name,
datetime.datetime.now().strftime(
'%Y%m%d_%H%M%S')))
if os.path.exists(restore_file):
self.backup(backup_file)
sickrage.app.log.info('Restoring database file {}'.format(restore_file))
with io.open(restore_file, 'rb') as f:
rows = pickle.load(f)
if not self.opened:
self.db.open()
self.db.destroy()
self.db.create()
[self.insert(row) for row in rows]
del rows
# Monkey-Patch storage to suppress logging messages
IU_Storage.get = Custom_IU_Storage_get
......@@ -985,7 +985,7 @@ def restoreConfigZip(archive, targetDir, restore_database=True, restore_config=T
with zipfile.ZipFile(archive, 'r', allowZip64=True) as zip_file:
for member in zip_file.namelist():
if not restore_database and member.split('/')[0] == 'database':
if not restore_database and member.split('/')[0] in ['database', 'main_db.pickle', 'cache_db.pickle']:
continue
if not restore_config and member.split('/')[0] == 'config.ini':
......@@ -1002,13 +1002,11 @@ def restoreConfigZip(archive, targetDir, restore_database=True, restore_config=T
shutil.rmtree(targetDir)
def backupSR(backupDir, keep_latest=False):
def backupSR(backupDir, keep_latest=False, migrate=True):
source = []
filesList = ['sickrage.db',
'failed.db',
'cache.db',
os.path.basename(sickrage.app.config_file)]
file_list = [os.path.basename(sickrage.app.config_file)]
file_list += ['sickrage.db', 'failed.db', 'cache.db']
def _keep_latest_backup():
import glob
......@@ -1023,15 +1021,15 @@ def backupSR(backupDir, keep_latest=False):
_keep_latest_backup()
# individual files
for f in filesList:
for f in file_list:
fp = os.path.join(sickrage.app.data_dir, f)
if os.path.exists(fp):
source += [fp]
# database folder
for (path, __, files) in os.walk(os.path.join(sickrage.app.data_dir, 'database'), topdown=True):
for filename in files:
source += [os.path.join(path, filename)]
# database
for db in [sickrage.app.main_db, sickrage.app.cache_db]:
backup_file = db.backup(os.path.join(sickrage.app.data_dir, '{}_db.pickle'.format(db.name)))
source += [backup_file]
# cache folder
if sickrage.app.cache_dir:
......@@ -1051,13 +1049,13 @@ def backupSR(backupDir, keep_latest=False):
def restoreSR(srcDir, dstDir):
try:
filesList = ['sickrage.db',
'sickbeard.db',
'failed.db',
'cache.db',
os.path.basename(sickrage.app.config_file)]
files_list = ['sickrage.db',
'sickbeard.db',
'failed.db',
'cache.db',
os.path.basename(sickrage.app.config_file)]
for filename in filesList:
for filename in files_list:
srcFile = os.path.join(srcDir, filename)
dstFile = os.path.join(dstDir, filename)
bakFile = os.path.join(dstDir, '{}.bak-{}'
......@@ -1068,14 +1066,11 @@ def restoreSR(srcDir, dstDir):
move_file(dstFile, bakFile)
move_file(srcFile, dstFile)
# databse
if os.path.exists(os.path.join(srcDir, 'database')):
if os.path.exists(os.path.join(dstDir, 'database')):
move_file(os.path.join(dstDir, 'database'), os.path.join(dstDir, '{}.bak-{}'
.format('database',
datetime.datetime.now().strftime(
'%Y%m%d_%H%M%S'))))
move_file(os.path.join(srcDir, 'database'), dstDir)
# database
for db in [sickrage.app.main_db, sickrage.app.cache_db]:
restore_file = os.path.join(sickrage.app.data_dir, 'restore', '{}_db.pickle'.format(db.name))
if os.path.exists(restore_file):
db.restore(restore_file)
# cache
if os.path.exists(os.path.join(srcDir, 'cache')):
......
......@@ -606,7 +606,7 @@ class SourceUpdateManager(UpdateManager):
try:
# prepare the update dir
sr_update_dir = os.path.join(sickrage.app.data_dir, 'sr-update')
sr_update_dir = os.path.join(sickrage.PROG_DIR, 'sr-update')
if os.path.isdir(sr_update_dir):
sickrage.app.log.info("Clearing out update folder " + sr_update_dir + " before extracting")
......@@ -653,12 +653,12 @@ class SourceUpdateManager(UpdateManager):
# walk temp folder and move files to main folder
content_dir = os.path.join(sr_update_dir, update_dir_contents[0])
sickrage.app.log.info("Moving files from " + content_dir + " to " + sickrage.MAIN_DIR)
sickrage.app.log.info("Moving files from " + content_dir + " to " + sickrage.PROG_DIR)
for dirname, __, filenames in os.walk(content_dir):
dirname = dirname[len(content_dir) + 1:]
for curfile in filenames:
old_path = os.path.join(content_dir, dirname, curfile)
new_path = os.path.join(sickrage.MAIN_DIR, dirname, curfile)
new_path = os.path.join(sickrage.PROG_DIR, dirname, curfile)
if os.path.isfile(new_path) and os.path.exists(new_path):
os.remove(new_path)
......
......@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: sickragetv\n"
"Report-Msgid-Bugs-To: [email protected]\n"
"POT-Creation-Date: 2019-02-24 15:31-0800\n"
"PO-Revision-Date: 2019-02-24 23:32\n"
"POT-Creation-Date: 2019-03-04 12:38-0800\n"
"PO-Revision-Date: 2019-03-04 20:39\n"
"Last-Translator: echel0n <[email protected]>\n"
"Language-Team: Arabic\n"
"MIME-Version: 1.0\n"
......
......@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: sickragetv\n"
"Report-Msgid-Bugs-To: [email protected]\n"
"POT-Creation-Date: 2019-02-24 15:31-0800\n"
"PO-Revision-Date: 2019-02-24 23:32\n"
"POT-Creation-Date: 2019-03-04 12:38-0800\n"
"PO-Revision-Date: 2019-03-04 20:39\n"
"Last-Translator: echel0n <[email protected]>\n"
"Language-Team: Catalan\n"
"MIME-Version: 1.0\n"
......
......@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: sickragetv\n"
"Report-Msgid-Bugs-To: [email protected]\n"
"POT-Creation-Date: 2019-02-24 15:31-0800\n"
"PO-Revision-Date: 2019-02-24 23:32\n"
"POT-Creation-Date: 2019-03-04 12:38-0800\n"
"PO-Revision-Date: 2019-03-04 20:39\n"
"Last-Translator: echel0n <[email protected]>\n"
"Language-Team: Czech\n"
"MIME-Version: 1.0\n"
......
......@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: sickragetv\n"
"Report-Msgid-Bugs-To: [email protected]\n"
"POT-Creation-Date: 2019-02-24 15:31-0800\n"
"PO-Revision-Date: 2019-02-24 23:32\n"
"POT-Creation-Date: 2019-03-04 12:38-0800\n"
"PO-Revision-Date: 2019-03-04 20:39\n"
"Last-Translator: echel0n <[email protected]>\n"
"Language-Team: Danish\n"
"MIME-Version: 1.0\n"
......
......@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: sickragetv\n"
"Report-Msgid-Bugs-To: [email protected]\n"
"POT-Creation-Date: 2019-02-24 15:31-0800\n"
"PO-Revision-Date: 2019-02-24 23:32\n"
"POT-Creation-Date: 2019-03-04 12:38-0800\n"
"PO-Revision-Date: 2019-03-04 20:39\n"
"Last-Translator: echel0n <[email protected]>\n"
"Language-Team: German\n"
"MIME-Version: 1.0\n"
......
......@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: sickragetv\n"
"Report-Msgid-Bugs-To: [email protected]\n"
"POT-Creation-Date: 2019-02-24 15:31-0800\n"
"PO-Revision-Date: 2019-02-24 23:32\n"
"POT-Creation-Date: 2019-03-04 12:38-0800\n"
"PO-Revision-Date: 2019-03-04 20:39\n"
"Last-Translator: echel0n <[email protected]>\n"
"Language-Team: Greek\n"
"MIME-Version: 1.0\n"
......
......@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: sickragetv\n"
"Report-Msgid-Bugs-To: [email protected]\n"
"POT-Creation-Date: 2019-02-24 15:31-0800\n"
"PO-Revision-Date: 2019-02-24 23:33\n"
"POT-Creation-Date: 2019-03-04 12:38-0800\n"
"PO-Revision-Date: 2019-03-04 20:40\n"
"Last-Translator: echel0n <[email protected]>\n"
"Language-Team: English\n"
"MIME-Version: 1.0\n"
......
......@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: sickragetv\n"
"Report-Msgid-Bugs-To: [email protected]\n"
"POT-Creation-Date: 2019-02-24 15:31-0800\n"
"PO-Revision-Date: 2019-02-24 23:32\n"
"POT-Creation-Date: 2019-03-04 12:38-0800\n"
"PO-Revision-Date: 2019-03-04 20:39\n"
"Last-Translator: echel0n <[email protected]>\n"
"Language-Team: Spanish\n"
"MIME-Version: 1.0\n"
......
......@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: sickragetv\n"
"Report-Msgid-Bugs-To: [email protected]\n"
"POT-Creation-Date: 2019-02-24 15:31-0800\n"
"PO-Revision-Date: 2019-02-24 23:32\n"
"POT-Creation-Date: 2019-03-04 12:38-0800\n"
"PO-Revision-Date: 2019-03-04 20:39\n"
"Last-Translator: echel0n <[email protected]>\n"
"Language-Team: Finnish\n"
"MIME-Version: 1.0\n"
......
......@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: sickragetv\n"
"Report-Msgid-Bugs-To: [email protected]\n"
"POT-Creation-Date: 2019-02-24 15:31-0800\n"
"PO-Revision-Date: 2019-02-24 23:31\n"
"POT-Creation-Date: 2019-03-04 12:38-0800\n"
"PO-Revision-Date: 2019-03-04 20:39\n"
"Last-Translator: echel0n <[email protected]>\n"
"Language-Team: French\n"
"MIME-Version: 1.0\n"
......
......@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: sickragetv\n"
"Report-Msgid-Bugs-To: [email protected]\n"
"POT-Creation-Date: 2019-02-24 15:31-0800\n"
"PO-Revision-Date: 2019-02-24 23:32\n"
"POT-Creation-Date: 2019-03-04 12:38-0800\n"
"PO-Revision-Date: 2019-03-04 20:39\n"
"Last-Translator: echel0n <[email protected]>\n"
"Language-Team: Hebrew\n"
"MIME-Version: 1.0\n"
......
......@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: sickragetv\n"
"Report-Msgid-Bugs-To: [email protected]\n"
"POT-Creation-Date: 2019-02-24 15:31-0800\n"
"PO-Revision-Date: 2019-02-24 23:32\n"
"POT-Creation-Date: 2019-03-04 12:38-0800\n"
"PO-Revision-Date: 2019-03-04 20:39\n"
"Last-Translator: echel0n <[email protected]>\n"
"Language-Team: Hungarian\n"
"MIME-Version: 1.0\n"
......
......@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: sickragetv\n"
"Report-Msgid-Bugs-To: [email protected]\n"
"POT-Creation-Date: 2019-02-24 15:31-0800\n"
"PO-Revision-Date: 2019-02-24 23:32\n"
"POT-Creation-Date: 2019-03-04 12:38-0800\n"
"PO-Revision-Date: 2019-03-04 20:39\n"
"Last-Translator: echel0n <[email protected]>\n"
"Language-Team: Italian\n"
"MIME-Version: 1.0\n"
......
......@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: sickragetv\n"
"Report-Msgid-Bugs-To: [email protected]\n"
"POT-Creation-Date: 2019-02-24 15:31-0800\n"
"PO-Revision-Date: 2019-02-24 23:32\n"
"POT-Creation-Date: 2019-03-04 12:38-0800\n"
"PO-Revision-Date: 2019-03-04 20:39\n"
"Last-Translator: echel0n <[email protected]>\n"
"Language-Team: Japanese\n"
"MIME-Version: 1.0\n"
......
......@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: sickragetv\n"
"Report-Msgid-Bugs-To: [email protected]\n"
"POT-Creation-Date: 2019-02-24 15:31-0800\n"
"PO-Revision-Date: 2019-02-24 23:33\n"
"POT-Creation-Date: 2019-03-04 12:38-0800\n"
"PO-Revision-Date: 2019-03-04 20:40\n"
"Last-Translator: echel0n <[email protected]>\n"
"Language-Team: Korean\n"
"MIME-Version: 1.0\n"
......
......@@ -6,9 +6,9 @@
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: sickrage 9.4.77\n"
"Project-Id-Version: sickrage 9.4.78\n"
"Report-Msgid-Bugs-To: [email protected]\n"
"POT-Creation-Date: 2019-02-24 15:31-0800\n"
"POT-Creation-Date: 2019-03-04 12:38-0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <[email protected]>\n"
"Language-Team: LANGUAGE <[email protected]>\n"
......
......@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: sickragetv\n"
"Report-Msgid-Bugs-To: [email protected]\n"
"POT-Creation-Date: 2019-02-24 15:31-0800\n"
"PO-Revision-Date: 2019-02-24 23:33\n"
"POT-Creation-Date: 2019-03-04 12:38-0800\n"
"PO-Revision-Date: 2019-03-04 20:40\n"
"Last-Translator: echel0n <[email protected]>\n"
"Language-Team: Dutch\n"
"MIME-Version: 1.0\n"
......
......@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: sickragetv\n"
"Report-Msgid-Bugs-To: [email protected]\n"
"POT-Creation-Date: 2019-02-24 15:31-0800\n"
"PO-Revision-Date: 2019-02-24 23:33\n"
"POT-Creation-Date: 2019-03-04 12:38-0800\n"
"PO-Revision-Date: 2019-03-04 20:40\n"
"Last-Translator: echel0n <[email protected]>\n"
"Language-Team: Norwegian\n"
"MIME-Version: 1.0\n"
......
......@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: sickragetv\n"
"Report-Msgid-Bugs-To: [email protected]\n"
"POT-Creation-Date: 2019-02-24 15:31-0800\n"
"PO-Revision-Date: 2019-02-24 23:33\n"
"POT-Creation-Date: 2019-03-04 12:38-0800\n"
"PO-Revision-Date: 2019-03-04 20:40\n"
"Last-Translator: echel0n <[email protected]>\n"
"Language-Team: Polish\n"
"MIME-Version: 1.0\n"
......
......@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: sickragetv\n"
"Report-Msgid-Bugs-To: [email protected]\n"
"POT-Creation-Date: 2019-02-24 15:31-0800\n"
"PO-Revision-Date: 2019-02-24 23:33\n"
"POT-Creation-Date: 2019-03-04 12:38-0800\n"
"PO-Revision-Date: 2019-03-04 20:40\n"
"Last-Translator: echel0n <[email protected]>\n"
"Language-Team: Portuguese\n"
"MIME-Version: 1.0\n"
......
......@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: sickragetv\n"
"Report-Msgid-Bugs-To: [email protected]\n"
"POT-Creation-Date: 2019-02-24 15:31-0800\n"
"PO-Revision-Date: 2019-02-24 23:31\n"
"POT-Creation-Date: 2019-03-04 12:38-0800\n"
"PO-Revision-Date: 2019-03-04 20:38\n"
"Last-Translator: echel0n <[email protected]>\n"
"Language-Team: Romanian\n"
"MIME-Version: 1.0\n"
......
......@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: sickragetv\n"
"Report-Msgid-Bugs-To: [email protected]\n"
"POT-Creation-Date: 2019-02-24 15:31-0800\n"
"PO-Revision-Date: 2019-02-24 23:33\n"
"POT-Creation-Date: 2019-03-04 12:38-0800\n"
"PO-Revision-Date: 2019-03-04 20:40\n"
"Last-Translator: echel0n <[email protected]>\n"
"Language-Team: Russian\n"
"MIME-Version: 1.0\n"
......
......@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: sickragetv\n"
"Report-Msgid-Bugs-To: [email protected]\n"
"POT-Creation-Date: 2019-02-24 15:31-0800\n"
"PO-Revision-Date: 2019-02-24 23:33\n"
"POT-Creation-Date: 2019-03-04 12:38-0800\n"
"PO-Revision-Date: 2019-03-04 20:40\n"
"Last-Translator: echel0n <[email protected]>\n"
"Language-Team: Swedish\n"
"MIME-Version: 1.0\n"
......
......@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: sickragetv\n"
"Report-Msgid-Bugs-To: [email protected]\n"
"POT-Creation-Date: 2019-02-24 15:31-0800\n"
"PO-Revision-Date: 2019-02-24 23:33\n"
"POT-Creation-Date: 2019-03-04 12:38-0800\n"
"PO-Revision-Date: 2019-03-04 20:40\n"
"Last-Translator: echel0n <[email protected]>\n"
"Language-Team: Turkish\n"
"MIME-Version: 1.0\n"
......
......@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: sickragetv\n"
"Report-Msgid-Bugs-To: [email protected]\n"
"POT-Creation-Date: 2019-02-24 15:31-0800\n"
"PO-Revision-Date: 2019-02-24 23:33\n"
"POT-Creation-Date: 2019-03-04 12:38-0800\n"
"PO-Revision-Date: 2019-03-04 20:40\n"
"Last-Translator: echel0n <[email protected]>\n"
"Language-Team: Ukrainian\n"
"MIME-Version: 1.0\n"
......
......@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: sickragetv\n"
"Report-Msgid-Bugs-To: [email protected]\n"
"POT-Creation-Date: 2019-02-24 15:31-0800\n"
"PO-Revision-Date: 2019-02-24 23:33\n"
"POT-Creation-Date: 2019-03-04 12:38-0800\n"
"PO-Revision-Date: 2019-03-04 20:40\n"
"Last-Translator: echel0n <[email protected]>\n"
"Language-Team: Vietnamese\n"
"MIME-Version: 1.0\n"
......
......@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: sickragetv\n"
"Report-Msgid-Bugs-To: [email protected]\n"
"POT-Creation-Date: 2019-02-24 15:31-0800\n"
"PO-Revision-Date: 2019-02-24 23:33\n"
"POT-Creation-Date: 2019-03-04 12:38-0800\n"
"PO-Revision-Date: 2019-03-04 20:40\n"
"Last-Translator: echel0n <[email protected]>\n"
"Language-Team: Chinese Simplified\n"
"MIME-Version: 1.0\n"
......
......@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: sickragetv\n"
"Report-Msgid-Bugs-To: [email protected]\n"
"POT-Creation-Date: 2019-02-24 15:31-0800\n"
"PO-Revision-Date: 2019-02-24 23:33\n"
"POT-Creation-Date: 2019-03-04 12:38-0800\n"
"PO-Revision-Date: 2019-03-04 20:40\n"
"Last-Translator: echel0n <[email protected]>\n"
"Language-Team: Chinese Traditional\n"
"MIME-Version: 1.0\n"
......
9.4.77
\ No newline at end of file
9.4.78
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment