#python#django#exif#hacktoberfest#machine_learning#photo#python#selfhosted
LibrePhotos is a free, open-source photo management tool you can host yourself, keeping all your photos and data private on your own device instead of the cloud. It supports all photo types, including raw files and videos, and offers features like face recognition, event-based albums, timeline views, and smart search by objects or metadata. You can organize photos easily, edit them slightly, and access everything through a web interface. This means you get powerful photo organization and privacy without relying on commercial services that use your data for ads. It’s great for anyone wanting control and security over their photo collection[1][2][4].
https://github.com/LibrePhotos/librephotos
🚀 Вышел стабильный JavaScript движок от Google для Android
Новая стабильная библиотека Jetpack JavaScript Engine позволит разработчикам выполнять JS код в изолированной и ограниченной среде.
class MainActivity : ComponentActivity() {
// Теперь nullable, без lateinit
private var jsSandbox: JavaScriptSandbox? = null
private var jsIsolate: JavaScriptIsolate? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
if (!JavaScriptSandbox.isSupported()) {
Log.e("JS", "JavaScriptSandbox не поддерживается")
return
}
lifecycleScope.launch {
// Создаём и сохраняем в nullable-поле
jsSandbox = JavaScriptSandbox
.createConnectedInstanceAsync(applicationContext)
.await()
jsIsolate = jsSandbox?.createIsolate()
// При выполнении гарантируем, что jsIsolate != null
val result: String = jsIsolate
?.evaluateJavaScriptAsync(JS_SCRIPT_SCRING)
?.await()
?: "Ошибка: isolate не инициализирован"
Log.d("JS", "Результат выполнения: $result")
}
}
override fun onDestroy() {
super.onDestroy()
// Закрываем только если не null
jsIsolate?.close()
jsSandbox?.close()
}
}
#jetpack#js