Feature works. Have to add comments

This commit is contained in:
Mannith Narayan 2023-10-29 06:57:12 +11:00
parent eef2567886
commit 33f7d49639
3 changed files with 29 additions and 35 deletions

View File

@ -127,11 +127,9 @@ public final class BookmarkFragment extends BaseLocalListFragment<List<PlaylistL
final String mimeType = getActivity().getContentResolver().getType(uri); final String mimeType = getActivity().getContentResolver().getType(uri);
// Check if the selected file is a text file // Check if the selected file is a text file
if (mimeType != null && mimeType.equals("text/plain")) { if (mimeType != null && mimeType.equals("text/plain")) {
final BookmarkImportService parser = new BookmarkImportService(uri, final BookmarkImportService parser = new BookmarkImportService(uri,
remotePlaylistManager, localPlaylistManager, disposables); localPlaylistManager);
parser.importBookmarks(activity); parser.readTextFile(activity);
System.out.println(parser);
} else { } else {
Toast.makeText(getActivity(), "Please select a .txt file!", Toast.makeText(getActivity(), "Please select a .txt file!",
Toast.LENGTH_SHORT).show(); Toast.LENGTH_SHORT).show();

View File

@ -14,7 +14,6 @@ import org.schabi.newpipe.extractor.exceptions.ParsingException;
import org.schabi.newpipe.extractor.linkhandler.LinkHandlerFactory; import org.schabi.newpipe.extractor.linkhandler.LinkHandlerFactory;
import org.schabi.newpipe.extractor.stream.StreamInfo; import org.schabi.newpipe.extractor.stream.StreamInfo;
import org.schabi.newpipe.local.playlist.LocalPlaylistManager; import org.schabi.newpipe.local.playlist.LocalPlaylistManager;
import org.schabi.newpipe.local.playlist.RemotePlaylistManager;
import org.schabi.newpipe.util.ExtractorHelper; import org.schabi.newpipe.util.ExtractorHelper;
import java.io.BufferedReader; import java.io.BufferedReader;
@ -27,33 +26,27 @@ import java.util.concurrent.Executor;
import java.util.concurrent.ExecutorService; import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors; import java.util.concurrent.Executors;
import io.reactivex.rxjava3.core.Maybe;
import io.reactivex.rxjava3.core.Single; import io.reactivex.rxjava3.core.Single;
import io.reactivex.rxjava3.disposables.CompositeDisposable;
public class BookmarkImportService { public class BookmarkImportService {
private Uri textFileUri; private Uri textFileUri;
private RemotePlaylistManager remotePlaylistManager;
private LocalPlaylistManager localPlaylistManager; private LocalPlaylistManager localPlaylistManager;
private int readerLineCount = 0;
private int addedByBackgroundThreadCount = 0;
private CompositeDisposable disposable; List<StreamEntity> streams;
List<StreamEntity> streams = new ArrayList<>();
public BookmarkImportService(final Uri textFileUri, public BookmarkImportService(final Uri textFileUri,
final RemotePlaylistManager remotePlaylistManager, final LocalPlaylistManager localPlaylistManager) {
final LocalPlaylistManager localPlaylistManager,
final CompositeDisposable compositeDisposable) {
this.textFileUri = textFileUri; this.textFileUri = textFileUri;
this.remotePlaylistManager = remotePlaylistManager;
this.localPlaylistManager = localPlaylistManager; this.localPlaylistManager = localPlaylistManager;
this.disposable = compositeDisposable;
} }
public void importBookmarks(final Activity activity) { public void importBookmarks(final Activity activity) {
readTextFile(activity); readTextFile(activity);
} }
public void readTextFile(final Activity activity) { public void readTextFile(final Activity activity) {
int count = 0;
if (textFileUri != null) { if (textFileUri != null) {
try { try {
final InputStream inputStream = final InputStream inputStream =
@ -62,19 +55,14 @@ public class BookmarkImportService {
final BufferedReader reader = final BufferedReader reader =
new BufferedReader(new InputStreamReader(inputStream)); new BufferedReader(new InputStreamReader(inputStream));
String line; String line;
streams = new ArrayList<>();
while ((line = reader.readLine()) != null) { while ((line = reader.readLine()) != null) {
readerLineCount++;
handleUrl(activity, line); handleUrl(activity, line);
if (count == 0) {
//cannot create an empty playlist
createNewPlayListWithOneEntry();
count++;
} else {
addEntries();
}
} }
reader.close(); reader.close();
inputStream.close(); inputStream.close();
} else { } else {
Toast.makeText(activity, "File is empty", LENGTH_SHORT).show(); Toast.makeText(activity, "File is empty", LENGTH_SHORT).show();
} }
@ -83,13 +71,7 @@ public class BookmarkImportService {
} }
} }
} }
public void createNewPlayListWithOneEntry() { public boolean handleUrl(final Activity activity, final String url) {
System.out.println("LOL");
}
public void addEntries() {
System.out.println("LOL");
}
public String handleUrl(final Activity activity, final String url) {
final StreamingService service; final StreamingService service;
final StreamingService.LinkType linkType; final StreamingService.LinkType linkType;
try { try {
@ -101,7 +83,7 @@ public class BookmarkImportService {
try { try {
cleanUrl = factory.getUrl(factory.getId(url)); cleanUrl = factory.getUrl(factory.getId(url));
} catch (final ParsingException e) { } catch (final ParsingException e) {
return "parsingException"; return false;
} }
final Single<StreamInfo> single = final Single<StreamInfo> single =
ExtractorHelper.getStreamInfo(service.getServiceId(), cleanUrl, false); ExtractorHelper.getStreamInfo(service.getServiceId(), cleanUrl, false);
@ -112,17 +94,30 @@ public class BookmarkImportService {
// Blocking network call // Blocking network call
final StreamInfo streamInfo = single.blockingGet(); final StreamInfo streamInfo = single.blockingGet();
final StreamEntity streamEntity = new StreamEntity(streamInfo); final StreamEntity streamEntity = new StreamEntity(streamInfo);
// Update UI addedByBackgroundThreadCount++;
// Update the streams list.
activity.runOnUiThread(() -> { activity.runOnUiThread(() -> {
streams.add(streamEntity); streams.add(streamEntity);
if (addedByBackgroundThreadCount == readerLineCount) {
//All background threads done.
//Add playlist
final Maybe<List<Long>> playlistIds =
localPlaylistManager.createPlaylist("Sample", streams);
playlistIds.subscribe(list -> {
//this is to make the fragment fetch data from the database
//I could not find another way to do this.
});
Toast.makeText(activity, "Playlist added", LENGTH_SHORT).show();
}
}); });
}); });
((ExecutorService) executor).shutdown(); ((ExecutorService) executor).shutdown();
} }
} }
} catch (final ExtractionException e) { } catch (final ExtractionException e) {
return "false1"; return false;
} }
return "false2"; return false;
} }
} }

View File

@ -30,6 +30,7 @@ public class LocalPlaylistManager {
private final PlaylistDAO playlistTable; private final PlaylistDAO playlistTable;
private final PlaylistStreamDAO playlistStreamTable; private final PlaylistStreamDAO playlistStreamTable;
public LocalPlaylistManager(final AppDatabase db) { public LocalPlaylistManager(final AppDatabase db) {
database = db; database = db;
streamTable = db.streamDAO(); streamTable = db.streamDAO();