여러 PC를 쓰다보면 Opera 설정을 동일하게 맞추기 위해서 설정 파일들을 수집해야 한다. 이 스크립트는 설치된 PC에서 Opera 설정파일을 수집하기 위해서 제작되었다.
사용법
fetchOperaSetting.py zip 파일명
변경 내역
- 2006-10-25 0.0.2 Yun-yong Choi
- 노트장, 쿠키, 주소록, 암호관리자 를 추가 수집
- 사용자 css 파일 수집
- 2006-10-24 0.0.1 Yun-yong Choi
- first release
todo
- OS/X 지원
- Widget 등 나머지 설정 수집
- 압축 파일을 원하는 계정으로 복원 해주는 기능
source
#!/usr/bin/python
# -*- coding: utf-8 -*-
# @brief Opera 설정을 백업하는 script
import os
import sys
import dircache
import zipfile
## @brief 사용방법을 출력한다.
def printUsing():
print sys.argv[0], ''
if len(sys.argv) < 2:
printUsing()
sys.exit(1)
zipname = sys.argv[1]
# 현재 사용자의 profile folder를 구한다.
homeenv = 'USERPROFILE' if sys.platform == 'win32' else 'HOME'
# opera 설정 파일이 저장된 폴더
operaprofile = '.opera' + os.path.sep if sys.platform == 'win32' else 'Application Data' + os.path.sep + 'Opera' + os.path.sep + 'Opera' + os.path.sep + 'Profile' + os.path.sep
homepath = os.getenv(homeenv)
# 실제 오페라 설정이 저장된 폴더
myopera = homepath + os.path.sep + operaprofile
# myopera 하부에서 수집할 폴더들
subfolders = [
'menu', # 메뉴
'mouse', # 마우스 제스쳐
'keyboard', # 키보드
'toolbar', # 도구 모음
'styles' + os.path.sep + 'user', # 사용자 CSS
]
subfolders = map(lambda x: myopera + x + os.path.sep, subfolders)
# myopera 하부에서 수집할 파일들
files = [
'opera6.ini', # opera 설정파일
'urlfilter.ini', # 컨텐트 차단 파일
'ua.ini',
'search.ini', # 검색 환경
'override_downloaded.ini',
'opera6.adr', # 북마크
'notes.adr', # 노트장
'contacts.adr', # 주소록
'cookies4.dat', # 쿠기
'wand.dat', # 암호관리자
'opcacrt6.dat', # 인증서
'opcert6.dat', # 인증서
'opssl6.dat', # 인증서
]
files = map(lambda x: myopera + x, files)
# User Script 설정이 있는지 확인하고 있으면 해당 폴더를 수집해야 한다.
# 오페라의 ini는 정상적인 ini 형식이 아니기 때문에 ConfigParser를 사용할 수 없다.
userjs = ''
with file(files[0], 'rt') as f:
for line in f:
idx = line.find('User JavaScript File=')
if idx == 0:
userjs = line[len('User JavaScript File='):].rstrip('\r\n')
break
f.close()
if userjs[-1] != os.path.sep:
userjs = userjs + os.path.sep
# 파일 수집
subfiles = []
for subfolder in subfolders:
a = dircache.listdir(subfolder)
if len(a) > 0:
a = a[:]
for file in a:
subfiles.append(subfolder + file)
# subfiles 와 subfolder를 수집하면 된다.
# zip 파일 생성
with zipfile.ZipFile(zipname, 'w', zipfile.ZIP_DEFLATED) as zipf:
# opera 파일들
for file in files:
if os.path.isfile(file):
compname = file.replace(myopera, '')
zipf.write(file, compname)
# sub folder에 있는 파일들
for file in subfiles:
if os.path.isfile(file):
compname = file.replace(myopera, '')
zipf.write(file, compname)
userjsfiles = []
# userjs 수집
if len(userjs) > 0:
a = dircache.listdir(userjs)
a = a[:]
if len(a) > 0:
a = a[:]
for file in a:
userjsfiles.append(userjs + file)
for file in userjsfiles:
# remove drive letter
if os.path.isfile(file):
compname = file
if sys.platform == 'win32' and file[1] == ':':
compname = file[3:]
zipf.write(file, compname)
## @mainpage fetch opera settings
# @version 0.0.2
# @section intro_sec 소개
# Opera의 설정파일을 수집한다.
# @section requ_sec 요구사항
# - Windows 2000 이상의 OS
# - python 2.4 또는 이상 버전
# @section install_sec 설치
# - 압축파일을 적당한 폴더에 푼다.
# @section using_sec 사용방법
# @verbatim
#fetchOperaSetting.py [저장할 파일이름]@endverbatim
# 예)
# @verbatim
#fetchOperaSetting.py MyOperaSetting.zip@endverbatim
#
# @todo
# - OS/X 지원
# - Widget 등 나머지 설정 수집
# - 압축 파일을 원하는 계정으로 복원 해주는 기능
#
# @since
# - 2006-10-25 0.0.2
# - 노트장, 쿠키, 주소록, 암호관리자 를 추가 수집
# - 사용자 css 파일 수집
# - 2006-10-24 0.0.1
# - first release
## @brief 프로그램 버전
VERSION = '0.0.2'