mirror of
https://github.com/josegonzalez/python-github-backup.git
synced 2025-12-07 08:48:02 +01:00
Merge pull request #15 from kromkrom/master
Preserve Unicode characters in the output file
This commit is contained in:
@@ -5,6 +5,7 @@ from __future__ import print_function
|
|||||||
import argparse
|
import argparse
|
||||||
import base64
|
import base64
|
||||||
import calendar
|
import calendar
|
||||||
|
import codecs
|
||||||
import errno
|
import errno
|
||||||
import json
|
import json
|
||||||
import logging
|
import logging
|
||||||
@@ -317,8 +318,8 @@ def backup_repositories(args, output_directory, repositories):
|
|||||||
if args.include_issue_events or args.include_everything:
|
if args.include_issue_events or args.include_everything:
|
||||||
issues[number]['event_data'] = retrieve_data(args, events_template.format(number))
|
issues[number]['event_data'] = retrieve_data(args, events_template.format(number))
|
||||||
|
|
||||||
with open('{0}/{1}.json'.format(issue_cwd, number), 'w') as issue_file:
|
with codecs.open('{0}/{1}.json'.format(issue_cwd, number), 'w', encoding='utf-8') as issue_file:
|
||||||
json.dump(issue, issue_file, sort_keys=True, indent=4, separators=(',', ': '))
|
json.dump(issue, issue_file, ensure_ascii=False, sort_keys=True, indent=4, separators=(',', ': '))
|
||||||
|
|
||||||
if args.include_pulls or args.include_everything:
|
if args.include_pulls or args.include_everything:
|
||||||
if args.skip_existing and os.path.isdir('{0}/pulls/.git'.format(repo_cwd)):
|
if args.skip_existing and os.path.isdir('{0}/pulls/.git'.format(repo_cwd)):
|
||||||
@@ -350,8 +351,8 @@ def backup_repositories(args, output_directory, repositories):
|
|||||||
if args.include_pull_commits or args.include_everything:
|
if args.include_pull_commits or args.include_everything:
|
||||||
pulls[number]['commit_data'] = retrieve_data(args, commits_template.format(number))
|
pulls[number]['commit_data'] = retrieve_data(args, commits_template.format(number))
|
||||||
|
|
||||||
with open('{0}/{1}.json'.format(pulls_cwd, number), 'w') as pull_file:
|
with codecs.open('{0}/{1}.json'.format(pulls_cwd, number), 'w', encoding='utf-8') as pull_file:
|
||||||
json.dump(pull, pull_file, sort_keys=True, indent=4, separators=(',', ': '))
|
json.dump(pull, pull_file, ensure_ascii=False, sort_keys=True, indent=4, separators=(',', ': '))
|
||||||
|
|
||||||
if args.include_milestones or args.include_everything:
|
if args.include_milestones or args.include_everything:
|
||||||
if args.skip_existing and os.path.isdir('{0}/milestones/.git'.format(repo_cwd)):
|
if args.skip_existing and os.path.isdir('{0}/milestones/.git'.format(repo_cwd)):
|
||||||
@@ -375,8 +376,8 @@ def backup_repositories(args, output_directory, repositories):
|
|||||||
|
|
||||||
log_info('Saving {0} milestones to disk'.format(len(milestones.keys())))
|
log_info('Saving {0} milestones to disk'.format(len(milestones.keys())))
|
||||||
for number, milestone in milestones.iteritems():
|
for number, milestone in milestones.iteritems():
|
||||||
with open('{0}/{1}.json'.format(milestone_cwd, number), 'w') as milestone_file:
|
with codecs.open('{0}/{1}.json'.format(milestone_cwd, number), 'w', encoding='utf-8') as milestone_file:
|
||||||
json.dump(milestone, milestone_file, sort_keys=True, indent=4, separators=(',', ': '))
|
json.dump(milestone, milestone_file, ensure_ascii=False, sort_keys=True, indent=4, separators=(',', ': '))
|
||||||
|
|
||||||
if args.include_labels or args.include_everything:
|
if args.include_labels or args.include_everything:
|
||||||
if args.skip_existing and os.path.isdir('{0}/labels/.git'.format(repo_cwd)):
|
if args.skip_existing and os.path.isdir('{0}/labels/.git'.format(repo_cwd)):
|
||||||
@@ -391,8 +392,8 @@ def backup_repositories(args, output_directory, repositories):
|
|||||||
labels = retrieve_data(args, _label_template, query_args={})
|
labels = retrieve_data(args, _label_template, query_args={})
|
||||||
|
|
||||||
log_info('Saving {0} labels to disk'.format(len(labels)))
|
log_info('Saving {0} labels to disk'.format(len(labels)))
|
||||||
with open('{0}/labels.json'.format(label_cwd), 'w') as label_file:
|
with codecs.open('{0}/labels.json'.format(label_cwd), 'w', encoding='utf-8') as label_file:
|
||||||
json.dump(labels, label_file, sort_keys=True, indent=4, separators=(',', ': '))
|
json.dump(labels, label_file, ensure_ascii=False, sort_keys=True, indent=4, separators=(',', ': '))
|
||||||
|
|
||||||
|
|
||||||
def fetch_repository(name, remote_url, local_dir, skip_existing=False):
|
def fetch_repository(name, remote_url, local_dir, skip_existing=False):
|
||||||
@@ -426,8 +427,8 @@ def backup_account(args, output_directory):
|
|||||||
starred_template = "https://{0}/users/{1}/starred"
|
starred_template = "https://{0}/users/{1}/starred"
|
||||||
starred = retrieve_data(args, starred_template.format(get_github_api_host(args), args.user))
|
starred = retrieve_data(args, starred_template.format(get_github_api_host(args), args.user))
|
||||||
log_info('Writing {0} starred repositories'.format(len(starred)))
|
log_info('Writing {0} starred repositories'.format(len(starred)))
|
||||||
with open('{0}/starred.json'.format(account_cwd), 'w') as starred_file:
|
with codecs.open('{0}/starred.json'.format(account_cwd), 'w', encoding='utf-8') as starred_file:
|
||||||
json.dump(starred, starred_file, sort_keys=True, indent=4, separators=(',', ': '))
|
json.dump(starred, starred_file, ensure_ascii=False, sort_keys=True, indent=4, separators=(',', ': '))
|
||||||
|
|
||||||
if args.include_watched or args.include_everything:
|
if args.include_watched or args.include_everything:
|
||||||
if not args.skip_existing or not os.path.exists('{0}/watched.json'.format(account_cwd)):
|
if not args.skip_existing or not os.path.exists('{0}/watched.json'.format(account_cwd)):
|
||||||
@@ -437,8 +438,8 @@ def backup_account(args, output_directory):
|
|||||||
watched_template = "https://{0}/users/{1}/subscriptions"
|
watched_template = "https://{0}/users/{1}/subscriptions"
|
||||||
watched = retrieve_data(args, watched_template.format(get_github_api_host(args), args.user))
|
watched = retrieve_data(args, watched_template.format(get_github_api_host(args), args.user))
|
||||||
log_info('Writing {0} watched repositories'.format(len(watched)))
|
log_info('Writing {0} watched repositories'.format(len(watched)))
|
||||||
with open('{0}/watched.json'.format(account_cwd), 'w') as watched_file:
|
with codecs.open('{0}/watched.json'.format(account_cwd), 'w', encoding='utf-8') as watched_file:
|
||||||
json.dump(watched, watched_file, sort_keys=True, indent=4, separators=(',', ': '))
|
json.dump(watched, watched_file, ensure_ascii=False, sort_keys=True, indent=4, separators=(',', ': '))
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
|
|||||||
Reference in New Issue
Block a user