mirror of
				https://github.com/TeamNewPipe/NewPipe
				synced 2025-10-30 06:43:00 +00:00 
			
		
		
		
	add export newipe db function
This commit is contained in:
		| @@ -1,9 +1,12 @@ | ||||
| package org.schabi.newpipe.settings; | ||||
|  | ||||
| import android.app.Activity; | ||||
| import android.content.Intent; | ||||
| import android.os.Bundle; | ||||
| import android.support.v7.preference.ListPreference; | ||||
| import android.support.v7.preference.Preference; | ||||
| import android.util.Log; | ||||
| import android.widget.Toast; | ||||
|  | ||||
| import org.schabi.newpipe.R; | ||||
| import org.schabi.newpipe.extractor.NewPipe; | ||||
| @@ -12,19 +15,26 @@ import org.schabi.newpipe.extractor.exceptions.ExtractionException; | ||||
| import org.schabi.newpipe.report.ErrorActivity; | ||||
| import org.schabi.newpipe.report.UserAction; | ||||
| import org.schabi.newpipe.util.Constants; | ||||
| import org.schabi.newpipe.util.FilePickerActivityHelper; | ||||
| import org.schabi.newpipe.util.KioskTranslator; | ||||
| import org.schabi.newpipe.util.ZipHelper; | ||||
|  | ||||
| import java.io.BufferedOutputStream; | ||||
| import java.io.FileOutputStream; | ||||
| import java.util.zip.ZipOutputStream; | ||||
|  | ||||
| public class ContentSettingsFragment extends BasePreferenceFragment { | ||||
|  | ||||
|     private static final int REQUEST_IMPORT_PATH = 80945; | ||||
|     private static final int REQUEST_EXPORT_PATH = 30945; | ||||
|  | ||||
|     @Override | ||||
|     public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { | ||||
|  | ||||
|         addPreferencesFromResource(R.xml.content_settings); | ||||
|  | ||||
|         final ListPreference mainPageContentPref =  (ListPreference) findPreference(getString(R.string.main_page_content_key)); | ||||
|         mainPageContentPref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { | ||||
|                     @Override | ||||
|                     public boolean onPreferenceChange(Preference preference, Object newValueO) { | ||||
|         mainPageContentPref.setOnPreferenceChangeListener((Preference preference, Object newValueO) -> { | ||||
|                         final String newValue = newValueO.toString(); | ||||
|  | ||||
|                         final String mainPrefOldValue = | ||||
| @@ -95,8 +105,67 @@ public class ContentSettingsFragment extends BasePreferenceFragment { | ||||
|                         defaultPreferences.edit().putBoolean(Constants.KEY_MAIN_PAGE_CHANGE, true).apply(); | ||||
|  | ||||
|                         return true; | ||||
|                     } | ||||
|                     }); | ||||
|  | ||||
|         Preference importDataPreference = findPreference(getString(R.string.import_data)); | ||||
|         importDataPreference.setOnPreferenceClickListener((Preference p) -> { | ||||
|             Intent i = new Intent(getActivity(), FilePickerActivityHelper.class) | ||||
|                     .putExtra(FilePickerActivityHelper.EXTRA_ALLOW_MULTIPLE, false) | ||||
|                     .putExtra(FilePickerActivityHelper.EXTRA_ALLOW_CREATE_DIR, false) | ||||
|                     .putExtra(FilePickerActivityHelper.EXTRA_MODE, FilePickerActivityHelper.MODE_FILE); | ||||
|             startActivityForResult(i, REQUEST_EXPORT_PATH); | ||||
|             return true; | ||||
|         }); | ||||
|  | ||||
|         Preference exportDataPreference = findPreference(getString(R.string.export_data)); | ||||
|         exportDataPreference.setOnPreferenceClickListener((Preference p) -> { | ||||
|             Intent i = new Intent(getActivity(), FilePickerActivityHelper.class) | ||||
|                     .putExtra(FilePickerActivityHelper.EXTRA_ALLOW_MULTIPLE, false) | ||||
|                     .putExtra(FilePickerActivityHelper.EXTRA_ALLOW_CREATE_DIR, true) | ||||
|                     .putExtra(FilePickerActivityHelper.EXTRA_MODE, FilePickerActivityHelper.MODE_DIR); | ||||
|             startActivityForResult(i, REQUEST_EXPORT_PATH); | ||||
|             return true; | ||||
|         }); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void onActivityResult(int requestCode, int resultCode, Intent data) { | ||||
|         super.onActivityResult(requestCode, resultCode, data); | ||||
|         if (DEBUG) { | ||||
|             Log.d(TAG, "onActivityResult() called with: requestCode = [" + requestCode + "], resultCode = [" + resultCode + "], data = [" + data + "]"); | ||||
|         } | ||||
|  | ||||
|         if ((requestCode == REQUEST_IMPORT_PATH || requestCode == REQUEST_EXPORT_PATH) | ||||
|                 && resultCode == Activity.RESULT_OK) { | ||||
|             String path = data.getData().getPath(); | ||||
|             if(requestCode == REQUEST_EXPORT_PATH) { | ||||
|                 exportDatabase(path + "/NewPipeData.zip"); | ||||
|             } else { | ||||
|                 importDatabase(path); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private void exportDatabase(String path) { | ||||
|         try { | ||||
|             ZipOutputStream outZip = new ZipOutputStream( | ||||
|                     new BufferedOutputStream( | ||||
|                             new FileOutputStream(path))); | ||||
|             final String homeDir = getActivity().getApplicationInfo().dataDir; | ||||
|             ZipHelper.addFileToZip(outZip, homeDir + "/databases/newpipe.db", "newpipe.db"); | ||||
|             ZipHelper.addFileToZip(outZip, homeDir + "/databases/newpipe.db-journal", "newpipe.db-journal"); | ||||
|  | ||||
|             outZip.close(); | ||||
|  | ||||
|             Toast.makeText(getContext(), getString(R.string.export_complete_toast), Toast.LENGTH_SHORT) | ||||
|                     .show(); | ||||
|         } catch (Exception e) { | ||||
|             onError(e); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private void importDatabase(String path) { | ||||
|  | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|   | ||||
| @@ -46,7 +46,8 @@ public class DownloadSettingsFragment extends BasePreferenceFragment { | ||||
|              Log.d(TAG, "onPreferenceTreeClick() called with: preference = [" + preference + "]"); | ||||
|         } | ||||
|  | ||||
|         if (preference.getKey().equals(DOWNLOAD_PATH_PREFERENCE) || preference.getKey().equals(DOWNLOAD_PATH_AUDIO_PREFERENCE)) { | ||||
|         if (preference.getKey().equals(DOWNLOAD_PATH_PREFERENCE) | ||||
|                 || preference.getKey().equals(DOWNLOAD_PATH_AUDIO_PREFERENCE)) { | ||||
|             Intent i = new Intent(getActivity(), FilePickerActivityHelper.class) | ||||
|                     .putExtra(FilePickerActivityHelper.EXTRA_ALLOW_MULTIPLE, false) | ||||
|                     .putExtra(FilePickerActivityHelper.EXTRA_ALLOW_CREATE_DIR, true) | ||||
|   | ||||
							
								
								
									
										51
									
								
								app/src/main/java/org/schabi/newpipe/util/ZipHelper.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								app/src/main/java/org/schabi/newpipe/util/ZipHelper.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,51 @@ | ||||
| package org.schabi.newpipe.util; | ||||
|  | ||||
| import java.io.BufferedInputStream; | ||||
| import java.io.FileInputStream; | ||||
| import java.util.zip.ZipEntry; | ||||
| import java.util.zip.ZipOutputStream; | ||||
|  | ||||
| /** | ||||
|  * Created by Christian Schabesberger on 28.01.18. | ||||
|  * Copyright 2018 Christian Schabesberger <chris.schabesberger@mailbox.org> | ||||
|  * ZipHelper.java is part of NewPipe | ||||
|  * | ||||
|  * License: GPL-3.0+ | ||||
|  * This program is free software: you can redistribute it and/or modify | ||||
|  * it under the terms of the GNU General Public License as published by | ||||
|  * the Free Software Foundation, either version 3 of the License, or | ||||
|  * (at your option) any later version. | ||||
|  * | ||||
|  * This program is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  * GNU General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU General Public License | ||||
|  * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||||
|  */ | ||||
|  | ||||
| public class ZipHelper { | ||||
|  | ||||
|     private static final int BUFFER_SIZE = 2048; | ||||
|  | ||||
|     /** | ||||
|      * This function helps to create zip files | ||||
|      * @param outZip The ZipOutputStream where the data should be stored in | ||||
|      * @param file The path of the file that should be added to zip. | ||||
|      * @param name The path of the file inside the zip. | ||||
|      * @throws Exception | ||||
|      */ | ||||
|     public static void addFileToZip(ZipOutputStream outZip, String file, String name) throws Exception { | ||||
|         byte data[] = new byte[BUFFER_SIZE]; | ||||
|         FileInputStream fi = new FileInputStream(file); | ||||
|         BufferedInputStream inputStream = new BufferedInputStream(fi, BUFFER_SIZE); | ||||
|         ZipEntry entry = new ZipEntry(name); | ||||
|         outZip.putNextEntry(entry); | ||||
|         int count; | ||||
|         while((count = inputStream.read(data, 0, BUFFER_SIZE)) != -1) { | ||||
|             outZip.write(data, 0, count); | ||||
|         } | ||||
|         inputStream.close(); | ||||
|     } | ||||
| } | ||||
| @@ -131,6 +131,8 @@ | ||||
|     <string name="main_page_selected_channel_name" translatable="false">main_page_selected_channel_name</string> | ||||
|     <string name="main_page_selected_channel_url" translatable="false">main_page_selected_channel_url</string> | ||||
|     <string name="main_page_selectd_kiosk_id" translatable="false">main_page_selectd_kiosk_id</string> | ||||
|     <string name="import_data">import_data</string> | ||||
|     <string name="export_data">export_data</string> | ||||
|  | ||||
|     <!-- FileName Downloads  --> | ||||
|     <string name="settings_file_charset_key" translatable="false">file_rename</string> | ||||
|   | ||||
| @@ -134,6 +134,10 @@ | ||||
|     <string name="switch_to_popup">Switch to Popup</string> | ||||
|     <string name="switch_to_main">Switch to Main</string> | ||||
|  | ||||
|     <string name="import_data_title">Import database</string> | ||||
|     <string name="export_data_title">Export database</string> | ||||
|     <string name="import_data_summary">Will override your current history and subscriptions</string> | ||||
|     <string name="export_data_summary">Export history, subscriptions and playlists.</string> | ||||
|     <!-- error strings --> | ||||
|     <string name="general_error">Error</string> | ||||
|     <string name="network_error">Network error</string> | ||||
| @@ -317,6 +321,7 @@ | ||||
|     <string name="select_a_channel">Select a channel</string> | ||||
|     <string name="no_channel_subscribed_yet">No channel subscribed yet</string> | ||||
|     <string name="select_a_kiosk">Select a kiosk</string> | ||||
|     <string name="export_complete_toast">Export complete</string> | ||||
|  | ||||
|     <!-- Kiosk Names --> | ||||
|     <string name="kiosk">Kiosk</string> | ||||
|   | ||||
| @@ -37,4 +37,14 @@ | ||||
|         android:key="@string/main_page_content_key" | ||||
|         android:title="@string/main_page_content" | ||||
|         android:summary="%s"/> | ||||
|  | ||||
|     <Preference | ||||
|         android:summary="@string/import_data_summary" | ||||
|         android:key="@string/import_data" | ||||
|         android:title="@string/import_data_title"/> | ||||
|  | ||||
|     <Preference | ||||
|         android:title="@string/export_data_title" | ||||
|         android:key="@string/export_data" | ||||
|         android:summary="@string/export_data_summary"/> | ||||
| </PreferenceScreen> | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Christian Schabesberger
					Christian Schabesberger