├── .editorconfig ├── .gitignore ├── AUTHORS.rst ├── CONTRIBUTING.rst ├── HISTORY.rst ├── LICENSE ├── Makefile ├── README.rst ├── RESTool ├── RESTool_main.py ├── __init__.py ├── browsers │ ├── __init__.py │ ├── browser.py │ ├── canary.py │ ├── chrome.py │ ├── chromium.py │ ├── firefox.py │ └── safari.py ├── restool_cli.py ├── restoolgui.py └── ui │ ├── design.ui │ └── design_v2.ui ├── docs ├── 0.1.0dev_linux.png ├── 0.1.0windows.PNG ├── 0.2.0linux.jpg ├── 0.2.0osx.png ├── 0.2.0settings_windows.PNG ├── 0.2.0windows.PNG ├── Makefile ├── RESTool.rst ├── authors.rst ├── conf.py ├── contributing.rst ├── history.rst ├── index.rst ├── installation.rst ├── make.bat ├── modules.rst ├── readme.rst └── usage.rst ├── requirements.txt ├── setup.py └── tests ├── __init__.py └── test_RESTool.py /.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | 3 | root = true 4 | 5 | [*] 6 | indent_style = space 7 | indent_size = 4 8 | trim_trailing_whitespace = true 9 | insert_final_newline = true 10 | charset = utf-8 11 | end_of_line = lf 12 | 13 | [*.bat] 14 | indent_style = tab 15 | end_of_line = crlf 16 | 17 | [LICENSE] 18 | insert_final_newline = false 19 | 20 | [Makefile] 21 | indent_style = tab -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Created by http://www.gitignore.io 2 | 3 | ### PyCharm ### 4 | # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm 5 | 6 | ## Directory-based project format 7 | .idea/ 8 | /*.iml 9 | # if you remove the above rule, at least ignore user-specific stuff: 10 | # .idea/workspace.xml 11 | # .idea/tasks.xml 12 | # .idea/dictionaries 13 | # and these sensitive or high-churn files: 14 | # .idea/dataSources.ids 15 | # .idea/dataSources.xml 16 | # .idea/sqlDataSources.xml 17 | # .idea/dynamic.xml 18 | # and, if using gradle:: 19 | # .idea/gradle.xml 20 | # .idea/libraries 21 | 22 | ## File-based project format 23 | *.ipr 24 | *.iws 25 | 26 | ## Additional for IntelliJ 27 | out/ 28 | 29 | # generated by mpeltonen/sbt-idea plugin 30 | .idea_modules/ 31 | 32 | # generated by JIRA plugin 33 | atlassian-ide-plugin.xml 34 | 35 | # generated by Crashlytics plugin (for Android Studio and Intellij) 36 | com_crashlytics_export_strings.xml 37 | 38 | 39 | ### Python ### 40 | # Byte-compiled / optimized / DLL files 41 | __pycache__/ 42 | *.py[cod] 43 | 44 | # C extensions 45 | *.so 46 | 47 | # Distribution / packaging 48 | .Python 49 | env/ 50 | build/ 51 | develop-eggs/ 52 | dist/ 53 | eggs/ 54 | lib/ 55 | lib64/ 56 | parts/ 57 | sdist/ 58 | var/ 59 | *.egg-info/ 60 | .installed.cfg 61 | *.egg 62 | 63 | # PyInstaller 64 | # Usually these files are written by a python script from a template 65 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 66 | *.manifest 67 | *.spec 68 | 69 | # Installer logs 70 | pip-log.txt 71 | pip-delete-this-directory.txt 72 | 73 | # Unit test / coverage reports 74 | htmlcov/ 75 | .tox/ 76 | .coverage 77 | .cache 78 | nosetests.xml 79 | coverage.xml 80 | 81 | # Translations 82 | *.mo 83 | *.pot 84 | 85 | # Django stuff: 86 | *.log 87 | 88 | # Sphinx documentation 89 | docs/_build/ 90 | 91 | # PyBuilder 92 | target/ 93 | 94 | 95 | ### Linux ### 96 | *~ 97 | 98 | # KDE directory preferences 99 | .directory 100 | 101 | # RESTool releases directory 102 | releases/ 103 | 104 | # RESTool logs 105 | log.txt 106 | 107 | #backups while testing 108 | RESTool/res_backups 109 | *.exe 110 | res_backups/* 111 | 112 | # local settings file 113 | settings.json 114 | -------------------------------------------------------------------------------- /AUTHORS.rst: -------------------------------------------------------------------------------- 1 | ======= 2 | Credits 3 | ======= 4 | 5 | Development Lead 6 | ---------------- 7 | 8 | * Nikola Kovacevic 9 | 10 | Contributors 11 | ------------ 12 | 13 | None yet. Why not be the first? -------------------------------------------------------------------------------- /CONTRIBUTING.rst: -------------------------------------------------------------------------------- 1 | ============ 2 | Contributing 3 | ============ 4 | 5 | Contributions are welcome, and they are greatly appreciated! Every 6 | little bit helps, and credit will always be given. 7 | 8 | You can contribute in many ways: 9 | 10 | Types of Contributions 11 | ---------------------- 12 | 13 | Report Bugs 14 | ~~~~~~~~~~~ 15 | 16 | Report bugs at https://github.com/nikola-k/RESTool/issues. 17 | 18 | If you are reporting a bug, please include: 19 | 20 | * Your operating system name and version. 21 | * Any details about your local setup that might be helpful in troubleshooting. 22 | * Detailed steps to reproduce the bug. 23 | 24 | Fix Bugs 25 | ~~~~~~~~ 26 | 27 | Look through the GitHub issues for bugs. Anything tagged with "bug" 28 | is open to whoever wants to implement it. 29 | 30 | Implement Features 31 | ~~~~~~~~~~~~~~~~~~ 32 | 33 | Look through the GitHub issues for features. Anything tagged with "feature" 34 | is open to whoever wants to implement it. 35 | 36 | Write Documentation 37 | ~~~~~~~~~~~~~~~~~~~ 38 | 39 | RESTool could always use more documentation, whether as part of the 40 | official RESTool docs, in docstrings, or even on the web in blog posts, 41 | articles, and such. 42 | 43 | Submit Feedback 44 | ~~~~~~~~~~~~~~~ 45 | 46 | The best way to send feedback is to file an issue at https://github.com/nikola-k/RESTool/issues. 47 | 48 | If you are proposing a feature: 49 | 50 | * Explain in detail how it would work. 51 | * Keep the scope as narrow as possible, to make it easier to implement. 52 | * Remember that this is a volunteer-driven project, and that contributions 53 | are welcome :) 54 | 55 | Get Started! 56 | ------------ 57 | 58 | Ready to contribute? Here's how to set up `RESTool` for local development. 59 | 60 | 1. Fork the `RESTool` repo on GitHub. 61 | 2. Clone your fork locally:: 62 | 63 | $ git clone git@github.com:your_name_here/RESTool.git 64 | 65 | 3. Install your local copy into a virtualenv. Assuming you have virtualenvwrapper installed, this is how you set up your fork for local development:: 66 | 67 | $ mkvirtualenv RESTool 68 | $ cd RESTool/ 69 | $ python setup.py develop 70 | 71 | 4. Create a branch for local development:: 72 | 73 | $ git checkout -b name-of-your-bugfix-or-feature 74 | 75 | Now you can make your changes locally. 76 | 77 | 5. When you're done making changes, make sure you test them out. 78 | 79 | 6. Commit your changes and push your branch to GitHub:: 80 | 81 | $ git add . 82 | $ git commit -m "Your detailed description of your changes." 83 | $ git push origin name-of-your-bugfix-or-feature 84 | 85 | 7. Submit a pull request through the GitHub website. 86 | 87 | Pull Request Guidelines 88 | ----------------------- 89 | 90 | Before you submit a pull request, check that it meets these guidelines: 91 | 92 | 1. The pull request should be tested. 93 | 2. If the pull request adds functionality, the docs should be updated. Put 94 | your new functionality into a function with a docstring, and add the 95 | feature to the list in README.rst. 96 | 3. The pull request should work for Python 2.7. 97 | -------------------------------------------------------------------------------- /HISTORY.rst: -------------------------------------------------------------------------------- 1 | .. :changelog: 2 | 3 | History 4 | ------- 5 | 6 | 0.3.0 (2015-09-13) 7 | -------------- 8 | 9 | * Command line interface for automating tasks using cron or windows task scheduler 10 | 11 | * Fixed a bug where converting data to chrome would fail 12 | 13 | * Improved checks that verify that the data provided is valid 14 | 15 | * Added checks that notify the user if one of the selected browsers is running 16 | 17 | * Added profile support for Google Chrome and Google Canary 18 | 19 | * Code cleanup 20 | 21 | * Backups list is now sorted from latest to oldest 22 | 23 | 0.2.1 (2015-05-29) 24 | ------------------ 25 | 26 | * Fix error when converting data from firefox to sqlite database when value is a long int. 27 | 28 | * Reduce Windows executable startup time by up to 80%. 29 | 30 | * Fix Windows Runtime Error (R6034) 31 | 32 | * Update check enabled by default 33 | 34 | 0.2.0 (2015-05-17) 35 | ------------------ 36 | 37 | New features: 38 | 39 | * Completely rewritten and improved GUI 40 | 41 | * Full OS X Support (For all features) 42 | 43 | * Windows 10 Support 44 | 45 | * Chromium Support 46 | 47 | * Safari (OS X) Support 48 | 49 | * Chrome Canary Support (OS X, Windows) 50 | 51 | * Custom settings 52 | 53 | * Built in logging toggle and easier bug reporting 54 | 55 | * Automatic update checks (opt-in, default off) 56 | 57 | * Removed donation links 58 | 59 | Code changes: 60 | 61 | * Moved logic code out of GUI class 62 | 63 | * Improved migrating logic to make sure files exist 64 | 65 | * Made logging more descriptive 66 | 67 | * Code reorganization 68 | 69 | * Moved browsers to separate package 70 | 71 | * Support for additional browsers and operating systems 72 | 73 | * py2app support 74 | 75 | * Custom settings directories for different operating systems 76 | 77 | * Proper handling of data checks before doing any sqlite changes 78 | 79 | * Browser class with some commonly shared methods 80 | 81 | * Logbook integrated logging for everything 82 | 83 | Other changes: 84 | 85 | * Slightly improved docs 86 | 87 | * Custom landing page using github pages 88 | 89 | 0.1.0 (2014-10-28) 90 | ------------------ 91 | 92 | First public release. 93 | 94 | New features: 95 | 96 | * Backup RES settings from Chrome and Firefox 97 | 98 | * Restore RES settings 99 | 100 | * Migrate data between browsers 101 | 102 | * Restore settings into a different browser 103 | 104 | * Linux and Windows (Vista and above) supported 105 | 106 | 107 | 0.1.0dev (2014-10-25) 108 | --------------------- 109 | 110 | * Initial commit to github. 111 | 112 | 0.1.0dev (2014-10-24) 113 | --------------------- 114 | 115 | * Development started 116 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "{}" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright {yyyy} {name of copyright owner} 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | 203 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | .PHONY: clean-pyc docs clean 2 | 3 | help: 4 | @echo "clean - remove all build, test, coverage and Python artifacts" 5 | @echo "clean-pyc - remove Python file artifacts" 6 | @echo "lint - check style with flake8" 7 | @echo "docs - generate Sphinx HTML documentation, including API docs" 8 | @echo "build-ui - compile design.ui file to restoolgui.py using pyuic4" 9 | @echo "strip-osx - remove unecessary files bundeled by py2app" 10 | @echo "build-osx - build os x distributable using py2app" 11 | @echo "build-win - build windows binary using pyinstaller" 12 | 13 | clean: clean-pyc 14 | 15 | strip-osx: 16 | rm -rf dist/RESTool.app/Contents/Frameworks/QtDeclarative.framework 17 | rm -rf dist/RESTool.app/Contents/Frameworks/QtDesigner.framework 18 | rm -rf dist/RESTool.app/Contents/Frameworks/QtHelp.framework 19 | rm -rf dist/RESTool.app/Contents/Frameworks/QtMultimedia.framework 20 | rm -rf dist/RESTool.app/Contents/Frameworks/QtNetwork.framework 21 | rm -rf dist/RESTool.app/Contents/Frameworks/QtOpenGL.framework 22 | rm -rf dist/RESTool.app/Contents/Frameworks/QtScript.framework 23 | rm -rf dist/RESTool.app/Contents/Frameworks/QtScriptTools.framework 24 | rm -rf dist/RESTool.app/Contents/Frameworks/QtSql.framework 25 | rm -rf dist/RESTool.app/Contents/Frameworks/QtSvg.framework 26 | rm -rf dist/RESTool.app/Contents/Frameworks/QtTest.framework 27 | rm -rf dist/RESTool.app/Contents/Frameworks/QtWebKit.framework 28 | rm -rf dist/RESTool.app/Contents/Frameworks/QtXml.framework 29 | rm -rf dist/RESTool.app/Contents/Frameworks/QtXmlPatterns.framework 30 | rm -rf dist/RESTool.app/Contents/Frameworks/phonon.framework 31 | rm -f dist/RESTool.app/Contents/Resources/lib/python2.7/lib-dynload/PyQt4/phonon.so 32 | rm -f dist/RESTool.app/Contents/Resources/lib/python2.7/lib-dynload/PyQt4/QtDeclarative.so 33 | rm -f dist/RESTool.app/Contents/Resources/lib/python2.7/lib-dynload/PyQt4/QtDesigner.so 34 | rm -f dist/RESTool.app/Contents/Resources/lib/python2.7/lib-dynload/PyQt4/QtHelp.so 35 | rm -f dist/RESTool.app/Contents/Resources/lib/python2.7/lib-dynload/PyQt4/QtMultimedia.so 36 | rm -f dist/RESTool.app/Contents/Resources/lib/python2.7/lib-dynload/PyQt4/QtNetwork.so 37 | rm -f dist/RESTool.app/Contents/Resources/lib/python2.7/lib-dynload/PyQt4/QtOpenGL.so 38 | rm -f dist/RESTool.app/Contents/Resources/lib/python2.7/lib-dynload/PyQt4/QtScript.so 39 | rm -f dist/RESTool.app/Contents/Resources/lib/python2.7/lib-dynload/PyQt4/QtScriptTools.so 40 | rm -f dist/RESTool.app/Contents/Resources/lib/python2.7/lib-dynload/PyQt4/QtSql.so 41 | rm -f dist/RESTool.app/Contents/Resources/lib/python2.7/lib-dynload/PyQt4/QtSvg.so 42 | rm -f dist/RESTool.app/Contents/Resources/lib/python2.7/lib-dynload/PyQt4/QtTest.so 43 | rm -f dist/RESTool.app/Contents/Resources/lib/python2.7/lib-dynload/PyQt4/QtWebKit.so 44 | rm -f dist/RESTool.app/Contents/Resources/lib/python2.7/lib-dynload/PyQt4/QtXml.so 45 | rm -f dist/RESTool.app/Contents/Resources/lib/python2.7/lib-dynload/PyQt4/QtXmlPatterns.so 46 | 47 | build-osx: 48 | python setup.py py2app -O2 -S --qt-plugins QtCore,QtGui 49 | 50 | build-win: 51 | pyinstaller .\RESTool\RESTool_main.py -F -w --noupx 52 | 53 | clean-pyc: 54 | find . -name '*.pyc' -exec rm -f {} + 55 | find . -name '*.pyo' -exec rm -f {} + 56 | find . -name '*~' -exec rm -f {} + 57 | find . -name '__pycache__' -exec rm -fr {} + 58 | 59 | lint: 60 | flake8 RESTool tests 61 | 62 | docs: 63 | rm -f docs/RESTool.rst 64 | rm -f docs/modules.rst 65 | sphinx-apidoc -o docs/ RESTool 66 | $(MAKE) -C docs clean 67 | $(MAKE) -C docs html 68 | open docs/_build/html/index.html 69 | 70 | build-ui: 71 | pyuic4 RESTool/ui/design_v2.ui -o RESTool/restoolgui.py 72 | -------------------------------------------------------------------------------- /README.rst: -------------------------------------------------------------------------------- 1 | ======= 2 | RESTool 3 | ======= 4 | 5 | THIS PROJECT IS DISCONTINUED 6 | ============================ 7 | 8 | **AS OF RES 4.6 IMPORT/EXPORT IS SUPPORTED NATIVELY** 9 | 10 | Unless that changes there will be no updates to this project, however it should still work even with newer RES versions since it reads/writes raw data. 11 | And the RES Settings location should stay the same through the versions. 12 | 13 | Original text below: 14 | -------------------- 15 | 16 | **For stable release please see download link below, the current master branch is for development only and may be broken and lead to loss of data!** 17 | 18 | Unofficial cross platform tool for migrating between browsers, backing up, and restoring from backups, 19 | "Reddit Enhancement Suite" aka RES settings. 20 | 21 | **This application is in no way affiliated with RES** and all issues should be reported to RESTool author and not RES authors 22 | or subreddits that are used for RES troubleshooting/issue reporting. 23 | 24 | See Features_ for a list of software features, Screenshots_ to see how it looks like, or 25 | simply jump to Downloads_ to use it. 26 | 27 | For explanation of the options available see Usage_ section and for any issues Help_ section 28 | and for other common questions see FAQs_. 29 | 30 | If you have any questions you can contact me directly via email that's visible on 31 | my `GitHub Profile `_ 32 | 33 | Seeing how this is version 0.2 manual backup, just in case something goes wrong, of RES settings file is recommended. 34 | See `This page `_ for information on 35 | how to make manual backup 36 | 37 | * License: Apache license Version 2.0. See LICENSE file for more info. 38 | 39 | Features 40 | ======== 41 | 42 | * Works for all major browsers: Chrome, Chrome Canary, Chromium, Firefox, Safari 43 | 44 | * Backup RES settings for all browsers listed. 45 | 46 | * Restore RES settings from backups. 47 | 48 | * Migrate data between browsers (e.g. Firefox to Chrome). 49 | 50 | * Restore backed up settings into a different browser. 51 | 52 | * Cross platform Linux (All), Windows (Vista and up), OS X (Mavericks and up) 53 | 54 | * Simple to use GUI (see screenshot below) 55 | 56 | * Command line interface for easier automation. 57 | 58 | Screenshots 59 | =========== 60 | 61 | Linux xubuntu 15.04: 62 | -------------------- 63 | 64 | .. image :: docs/0.2.0linux.jpg 65 | 66 | Windows 10: 67 | ----------- 68 | 69 | .. image :: docs/0.2.0windows.PNG 70 | 71 | OS X Mavericks: 72 | --------------- 73 | 74 | .. image :: docs/0.2.0osx.png 75 | 76 | 77 | Downloads 78 | ========= 79 | 80 | Windows 81 | ------- 82 | 83 | **Note:** The only requirement is `Microsoft Visual C++ 2008 Redistributable `_ 84 | which you probably already have installed, but if you can not get the app to run 85 | try installing visual c++ 2008 redistributable from the link above. 86 | 87 | You can find the latest stable build here: http://nikola-k.github.io/RESTool/ or on the releases page https://github.com/Nikola-K/RESTool/releases 88 | 89 | Windows Vista and up are supported. Tested on Windows 7 32/64bit, and Windows 10 Technical Preview 64bit 90 | 91 | OS X 92 | ---- 93 | Apple OS X distribution is packed as a .app package and can be downloaded here: http://nikola-k.github.io/RESTool/ or the releases page https://github.com/Nikola-K/RESTool/releases 94 | 95 | Tested on OS X 10.9 Mavericks 96 | 97 | 98 | Linux 99 | ----- 100 | 101 | There is no binary provided for linux but the only requirements are Python 2.7 and pyqt, both of which 102 | are available in most distro repos. You can run the application, after installing pyqt, by simply downloading 103 | the source from releases and running `RESTool_main.py` from your command line. 104 | 105 | You can download the only necessary files to run the app on linux here: http://nikola-k.github.io/RESTool/ or the releases page https://github.com/Nikola-K/RESTool/releases 106 | 107 | Tested on xubuntu 15.04 64bit and Debian 8. 108 | 109 | Usage 110 | ===== 111 | 112 | This section gives short description of main features: 113 | 114 | Profile 115 | ------- 116 | 117 | Some browsers like Firefox support multiple profiles; you can pick (if you have more than one) which profile to use for 118 | the other features from the dropdown box. 119 | 120 | First Browser To The Second 121 | --------------------------- 122 | 123 | This will take all RES settings from browser and profile selected as "First Browser" in the upper part of the window, 124 | and move them to the "Second Browser" that you selected. 125 | 126 | **Note:** Migrating settings may fail, or make no changes to RES settings, if one or both browsers are running. 127 | 128 | Second Browser To The First 129 | --------------------------- 130 | 131 | Opposite of the above. 132 | 133 | Takes RES settings from the browser and profile picked under "Second Browser" section of the app and copies them 134 | to the "First Browser" that you picked. 135 | 136 | **Note:** Migrating settings may fail, or make no changes to RES settings, if one or both browsers are running. 137 | 138 | Backup First Browser 139 | -------------------- 140 | 141 | Takes RES Settings from the browser you selected as first in the app and copies the settings to the backup folder. 142 | Default is "res_backups" folder, but you can pick one yourself or use system specific directories for saving data. 143 | 144 | If the backup folder does not exist it will be created. Make sure you have the necessary permissions to do so. 145 | 146 | Backup Second Browser 147 | --------------------- 148 | 149 | Takes RES Settings from the browser you selected as first in the app and copies the settings to the backup folder. 150 | Default is "res_backups" folder, but you can pick one yourself or use system specific directories for saving data. 151 | 152 | If the backup folder does not exist it will be created. Make sure you have the necessary permissions to do so. 153 | 154 | 155 | Restore selected backup to the First Browser 156 | -------------------------------------------- 157 | 158 | Pretty self explanatory, takes RES settings from the backup you selected on the right and copies it to the first browser. 159 | 160 | Source browser of the backup is irrelevant. 161 | 162 | **Note:** Browser MUST be closed for changes to take effect. 163 | 164 | Restore selected backup to the Second Browser 165 | --------------------------------------------- 166 | 167 | Pretty self explanatory, takes RES settings from the backup you selected on the right and copies it to the second browser. 168 | 169 | Source browser of the backup is irrelevant. 170 | 171 | **Note:** Browser MUST be closed for changes to take effect. 172 | 173 | Delete selected backup file 174 | --------------------------- 175 | 176 | Remove the selected backup file in the list permanently from the disk. This can not be undone. 177 | 178 | 179 | Help 180 | ==== 181 | 182 | Can not start the application 183 | ----------------------------- 184 | 185 | Make sure you have `Microsoft Visual C++ 2008 Redistributable `_ installed 186 | 187 | How to report issues 188 | -------------------- 189 | 190 | Click on Settings tab then click on "Enable Logging" button, a file named "application.log" will be created. 191 | 192 | Close the app and restart it, recreate the issue you're having. Open Settings tab again and click on "Submit Bug Report" and follow instructions. 193 | 194 | Attach the created application.log file if possible. 195 | 196 | Once you're done to disable logging click on "Disable Logging" in the Settings menu, restart may be necessary to fully eliminate it. 197 | 198 | If you're running Windows XP or browsers other than Firefox, Chrome, Chromium, Chrome Canary, Safari (OS X) 199 | those operating systems and browsers are not supported so I can not guarantee that the issue you're having 200 | will be fixed. 201 | 202 | **Important:** As of version 0.2.0 the log file *may* (in very rare circumstances) contain some personal data, or even passwords (if they are saved using RES) you should remove any personal data you're not comfortable with sharing from the log file before submitting it. 203 | 204 | Settings 205 | ======== 206 | 207 | This section will briefly go over the existing options in the Settings tab. 208 | 209 | Backup Folder 210 | ------------- 211 | Backup folder means which folder will be used by default for saving RES backups 212 | 213 | If you check "use automatic system specific directory" checkbox the backups will be saved in following locations: 214 | 215 | OS X: 216 | 217 | `/Users//Library/Application Support/RESTool` 218 | 219 | Linux: 220 | 221 | `/home//.local/share/RESTool` 222 | 223 | Windows: 224 | 225 | `C:\Users\\AppData\Local\nikolak\RESTool` 226 | 227 | Backup Time Format 228 | ------------------ 229 | 230 | Backup filename looks like this: `.