[Сделано] Сохранение Local Storage
-
Приветствую! Можно ли сохранить Local Storage в BAS???
-
-
@support Можете сказать как сохранить? И как я понял потом уже загрузить не получится?
-
@ezotonal Можно будет и сохранять и загружать по аналогии с куки. Версия с этим функционалом будет завтра вечером.
-
@ezotonal Сделал. Нужно скачать эту версию:
https://bablosoft.com/distr/BrowserAutomationStudioDevelopment/15.2.0/BrowserAutomationStudioInstallAllInOne.exe
И просто использовать действия "Сохранить cookies" и "Загрузить cookies" как показано здесь:
http://wiki.bablosoft.com/doku.php?id=ru:how_to_work_with_cookies
-
Может стоит вернуть функционал, не хватает иногда очень сильно из коробки работа с Local Storage
-
@biohacker01 said in [Сделано] Сохранение Local Storage:
Может стоит вернуть функционал, не хватает иногда очень сильно из коробки работа с Local Storage
Чегось?
-
@Fox что бы было сохранить/загрузить Local Storage
или хотя бы как раньше через сохранить куки
-
@biohacker01 said in [Сделано] Сохранение Local Storage:
@Fox что бы было сохранить/загрузить Local Storage
или хотя бы как раньше через сохранить кукиА вы проверяли работу Local Storage в BAS перед тем как написать на форуме?
-
@Fox Думая речь не о том что локал сторадж не сохраняется сейчас в профиль - а в том что часто вообще целесообразно не использовать постоянный профиль. А для этого очень было бы удобно иметь готовые кнопки - сохранить локал сторадж/загрузить локал сторадж, так же как есть возможность работы с куками. Надеюсь понятно объяснил ?
-
GPT по быстрому накидал функций:
Сохранить:
javascript function saveLocalStorageToFile() { // Get all keys from local storage const keys = Object.keys(localStorage); // Create an object to store key-value pairs const data = {}; // Loop through each key and add its value to the object keys.forEach(key => { data[key] = localStorage.getItem(key); }); // Convert the object to JSON string const jsonString = JSON.stringify(data); // Create a new blob with the JSON string as its content const blob = new Blob([jsonString], {type: 'application/json'}); // Create a link element to download the file const url = URL.createObjectURL(blob); const link = document.createElement('a'); link.href = url; link.download = 'local-storage.json'; // Click the link to start the download document.body.appendChild(link); link.click(); // Clean up by removing the link and revoking the URL object document.body.removeChild(link); URL.revokeObjectURL(url); } // Call the function to save local storage to a file saveLocalStorageToFile();
Загрузить
function loadLocalStorageFromFile(file) { // Create a new FileReader object const reader = new FileReader(); // Set a callback function for when the file is loaded reader.onload = () => { try { // Parse the JSON string into an object const data = JSON.parse(reader.result); // Loop through each key-value pair and add it to local storage Object.keys(data).forEach(key => { localStorage.setItem(key, data[key]); }); // Display a success message console.log('Local storage has been updated.'); } catch (error) { console.error(error); } }; // Read the file as text reader.readAsText(file); } // Usage example: Load a file when the user selects it using an input element const inputElement = document.createElement('input'); inputElement.type = 'file'; inputElement.addEventListener('change', event => { const file = event.target.files[0]; loadLocalStorageFromFile(file); }); document.body.appendChild(inputElement);
Надо будет в модуль завернуть ...
-
@DuckDuck said in [Сделано] Сохранение Local Storage:
@Fox Думая речь не о том что локал сторадж не сохраняется сейчас в профиль - а в том что часто вообще целесообразно не использовать постоянный профиль. А для этого очень было бы удобно иметь готовые кнопки - сохранить локал сторадж/загрузить локал сторадж, так же как есть возможность работы с куками. Надеюсь понятно объяснил ?
Это же обычный объект, сохраните его любым удобным способом в переменную, а затем загрузите
-
@DuckDuck На сколько знаю, все эти костыли загрузят все данные для текущего домена на котором открыта вкладка, а не в базу браузера.
И тут или открывать сначала без данных сайт, и палиться.
Или костыль ввиде блокировки нужного сайта потом переход на него и загрузка данных, и разблокировка.
А если таких сайтов сотни, то беда.По этому нужно нормальное встроенное решение от BAS.
-
@DuckDuck said in [Сделано] Сохранение Local Storage:
GPT по быстрому накидал функций:
Надо будет в модуль завернуть ...Вы точно знаете, что делает этот код?
-
@biohacker01 said in [Сделано] Сохранение Local Storage:
@DuckDuck На сколько знаю, все эти костыли загрузят все данные для текущего домена на котором открыта вкладка, а не в базу браузера.
И тут или открывать сначала без данных сайт, и палиться.
Или костыль ввиде блокировки нужного сайта потом переход на него и загрузка данных, и разблокировка.
А если таких сайтов сотни, то беда.По этому нужно нормальное встроенное решение от BAS.
Вы всегда можете просто скопировать папку "Local Storage" из одного профиля в другой
-
@Fox said in [Сделано] Сохранение Local Storage:
Вы всегда можете просто скопировать папку "Local Storage" из одного профиля в другой
так раньше и делал, но это может не работать. надо проверять - у гугла бывают зашифрованные хранилища, щас не помню относится ли к ним локал сторадж. И тогда это не сработает. Так как ключ шифрования у каждого профиля будет свой. Нодо проверить.
К тому же такой способ не удобен для хранения в базе например.
По поводу кода выше - там каждая строка закомментирована - школьник разберется.
Критикуешь - предлагай - напиши изящнее :)
-
Вообщем если возможно реализуйте/верните этот функционал, многим он будет полезен.
И если возможно то и ответ, будет делаться или забраковано на всегда идея.
-
@Fox said in [Сделано] Сохранение Local Storage:
Это же обычный объект, сохраните его любым удобным способом в переменную, а затем загрузите
Ну да так проще:
Сохранить
[[LOCALSTORAGE]]=JSON.stringify(localStorage);
Загрузить:
localStorage.clear(); var data = JSON.parse([[LOCALSTORAGE]]); Object.keys(data).forEach(function (k) { localStorage.setItem(k, JSON.stringify(data[k])); });
Но только для одного сайта, и только с блокировкой сначала этого сайта, как справедливо заметил @biohacker01
-
@biohacker01 хотя Фокс прав проще папку сохранять и на нее ссылку делать
Default\Local Storage\leveldbПосмотрел данные в открытом виде лежат в файле с расширением log