Code Monkey home page Code Monkey logo

savedtf-compose's Introduction

Caution

Archived due to API access removal and other often breaking changes on the DTF/VC/TJ site

Software is no longer supported and will no longer receive updates

SaveDTF

DTF_logo_low_res

SaveDTF is a desktop app, powered by Jetpack Compose for Desktop. It can save pages from DTF, VC and TJournal

Инструкция на русском языке

Features ✨

  • Ability to download multiple articles at once
  • Saving media along with the article
  • Media caching

Work in progress 🚧

Installation ⚙️

Windows:

Download last version of SaveDTF here and install it

Linux

  • Install JDK 17
  • Clone this repo
  • Run this command in cloned folder: ./gradlew package
  • Install compilied package

MacOS

Apple requires all 3rd party apps to be signed and notarized (checked by Apple) for running on recent versions of macOS, so you would need to build and sign app by yourself. Guide how to do it

License 📃

MIT

F-r-e-e, that spells free!

savedtf-compose's People

Contributors

darefox avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

lihachev9

savedtf-compose's Issues

[BUG] Скачивание постов с галерей

Версия программы

pre3--2.0.0

Описание ошибки

Не удается скачать некоторые посты с галереей, связано с [#2](https://github.com/DareFox/SaveDTF-Compose/issues/2)

Как получить ошибку

1. Добавить пост с галереей, например: https://tjournal.ru/internet/569225-pablik-horoshie-novosti
2. Добавить в очередь
3. Попробовать скачать
4. Получить ошибку.

Скриншоты

image

Логи

https://pastebin.com/3KpWWWQm

Дополнительный контекст

Сайт (tj) уже отключен, но api eщё работает. Превью страницы можно посмотреть здесь или web.archive

[BUG] Crash when clicking on scrollbar

Program version

pre1--2.0.0

Error description

Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: Index should be non-negative (-1)

How to reproduce error

Click on scrollbar

Expected behavior

Scroll to specified position

Screenshots

image

Information about the device

OS: Linux Mint 20.3 x86_64
Kernel: 5.4.0-121-generic

Additional context

00:26:39.328 [AWT-EventQueue-0] INFO  ui.composables.CheckVersion - Checking updates
00:26:40.103 [AWT-EventQueue-0] INFO  ui.composables.CheckVersion - GitHub version: 1.0.4
00:26:40.104 [AWT-EventQueue-0] INFO  ui.composables.CheckVersion - Current version: 2.0.0
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: Index should be non-negative (-1)
	at androidx.compose.foundation.lazy.list.LazyListScrollPosition.update-NTjDD6g(LazyListScrollPosition.kt:100)
	at androidx.compose.foundation.lazy.list.LazyListScrollPosition.requestPosition-NTjDD6g(LazyListScrollPosition.kt:83)
	at androidx.compose.foundation.lazy.LazyListState.snapToItemIndexInternal$foundation(LazyListState.kt:199)
	at androidx.compose.foundation.lazy.LazyListState$scrollToItem$2.invokeSuspend(LazyListState.kt:194)
	at androidx.compose.foundation.lazy.LazyListState$scrollToItem$2.invoke(LazyListState.kt)
	at androidx.compose.foundation.lazy.LazyListState$scrollToItem$2.invoke(LazyListState.kt)
	at androidx.compose.foundation.gestures.DefaultScrollableState$scroll$2$1.invokeSuspend(ScrollableState.kt:148)
	at androidx.compose.foundation.gestures.DefaultScrollableState$scroll$2$1.invoke(ScrollableState.kt)
	at androidx.compose.foundation.gestures.DefaultScrollableState$scroll$2$1.invoke(ScrollableState.kt)
	at androidx.compose.foundation.MutatorMutex$mutateWith$2.invokeSuspend(MutatorMutex.kt:160)
	at androidx.compose.foundation.MutatorMutex$mutateWith$2.invoke(MutatorMutex.kt)
	at androidx.compose.foundation.MutatorMutex$mutateWith$2.invoke(MutatorMutex.kt)
	at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:89)
	at kotlinx.coroutines.CoroutineScopeKt.coroutineScope(CoroutineScope.kt:264)
	at androidx.compose.foundation.MutatorMutex.mutateWith(MutatorMutex.kt:153)
	at androidx.compose.foundation.gestures.DefaultScrollableState$scroll$2.invokeSuspend(ScrollableState.kt:145)
	at androidx.compose.foundation.gestures.DefaultScrollableState$scroll$2.invoke(ScrollableState.kt)
	at androidx.compose.foundation.gestures.DefaultScrollableState$scroll$2.invoke(ScrollableState.kt)
	at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:89)
	at kotlinx.coroutines.CoroutineScopeKt.coroutineScope(CoroutineScope.kt:264)
	at androidx.compose.foundation.gestures.DefaultScrollableState.scroll(ScrollableState.kt:144)
	at androidx.compose.foundation.gestures.ScrollableState$DefaultImpls.scroll$default(ScrollableState.kt:51)
	at androidx.compose.foundation.lazy.LazyListState.scrollToItem(LazyListState.kt:193)
	at androidx.compose.foundation.LazyScrollbarAdapter.snapTo(Scrollbar.desktop.kt:479)
	at androidx.compose.foundation.LazyScrollbarAdapter.scrollTo(Scrollbar.desktop.kt:453)
	at androidx.compose.foundation.Scrollbar_desktopKt$scrollOnPressOutsideSlider$1$1.invokeSuspend(Scrollbar.desktop.kt:321)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
	at androidx.compose.ui.platform.FlushCoroutineDispatcher$dispatch$2$1.invoke(CoroutineDispatchers.skiko.kt:51)
	at androidx.compose.ui.platform.FlushCoroutineDispatcher$dispatch$2$1.invoke(CoroutineDispatchers.skiko.kt:46)
	at androidx.compose.ui.platform.FlushCoroutineDispatcher.performRun(CoroutineDispatchers.skiko.kt:78)
	at androidx.compose.ui.platform.FlushCoroutineDispatcher.access$performRun(CoroutineDispatchers.skiko.kt:29)
	at androidx.compose.ui.platform.FlushCoroutineDispatcher$dispatch$2.invokeSuspend(CoroutineDispatchers.skiko.kt:46)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
	at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:771)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:722)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:716)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:741)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

Process finished with exit code 0

Create l10n support (i18n)

In present, program is inconsistent in terms of language. Somewhere it's russian, somewhere english.

IMO, most straightfoward way to fix this is to create support for localization via files with translated string key-value pairs.

[FEATURE] Make CSS in saved pages prettier than now

Is your feature request related to a problem?

Current CSS is ugly and doesn't support embed elements and interactive gallery

Describe the solution you'd like to see

Make page look almost like page on DTF/VC/Tjournal

Describe alternatives you've considered

No response

Additional context

@sir-coffee-or-tea created repo with CSS/JS solution to this issue.

It should be easy to adapt it to the current system

Current progress:

Element type Is supported? Since
Title 🟩 1.0.0
Text 🟩 1.0.0
Image Gallery 🟩 #19
Video Gallery 🟨 -
Image 🟩 1.0.0
Video 🟩 1.0.0
Embed 🟩 #19
Squared text 🟩 #19
Quote 🟨 -
Bullet List 🟩 1.0.0
Code 🟨 -
Separator 🟨 -
Audio 🟩 1.0.0
Vote 🟨 -
Number 🟨 -
Person 🟨 -
  • 🟥 - Not supported
  • 🟩 - Supported
  • 🟨 - Waiting merge

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.