diff --git a/app/src/main/java/ru/vtosters/lite/downloaders/VideoDownloader.java b/app/src/main/java/ru/vtosters/lite/downloaders/VideoDownloader.java index 2d8ce80a4..d545ae48c 100644 --- a/app/src/main/java/ru/vtosters/lite/downloaders/VideoDownloader.java +++ b/app/src/main/java/ru/vtosters/lite/downloaders/VideoDownloader.java @@ -1,16 +1,24 @@ package ru.vtosters.lite.downloaders; +import static ru.vtosters.lite.net.Request.makeRequest; import static ru.vtosters.lite.utils.Globals.getString; +import static ru.vtosters.lite.utils.Globals.getUserToken; import android.app.AlertDialog; import android.app.DownloadManager; +import android.app.ProgressDialog; import android.content.Context; import android.net.Uri; import android.os.Environment; +import android.widget.Toast; import com.vk.core.util.ToastUtils; import com.vk.dto.common.VideoFile; +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; + import java.util.ArrayList; import java.util.List; import java.util.Objects; @@ -71,4 +79,30 @@ public class VideoDownloader{ })); builder.show(); } + + public static void parseVideoLink(String url, Context ctx){ + String videoId = url.split("video")[1]; + String ownerId = videoId.split("_")[0]; + + final ProgressDialog progressDialog = new ProgressDialog(ctx); + progressDialog.setMessage("Обработка видео"); + progressDialog.show(); + + makeRequest("https://" + "api.vk.com" + "/method/video.get?owner_id=" + ownerId + "&videos=" + videoId + "&v=5.99&access_token=" + getUserToken(), + response -> { + progressDialog.cancel(); + + try { + JSONObject mainJson = new JSONObject(response); + JSONObject responseJson = mainJson.getJSONObject("response"); + JSONArray itemsJson = responseJson.getJSONArray("items"); + + VideoFile videoFile = new VideoFile(itemsJson.getJSONObject(0)); + downloadVideo(videoFile, ctx); + } catch (JSONException e) { + e.printStackTrace(); + Toast.makeText(ctx, "Видео нельзя скачать. Ошибка: " + e.getLocalizedMessage(), Toast.LENGTH_SHORT).show(); + } + }); + } } diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/MediaFragment.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/MediaFragment.java index d985212cc..56823022e 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/MediaFragment.java +++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/MediaFragment.java @@ -2,14 +2,50 @@ package ru.vtosters.lite.ui.fragments; import static ru.vtosters.lite.utils.Globals.getIdentifier; +import android.content.Context; import android.os.Bundle; +import android.widget.EditText; +import android.widget.LinearLayout; + +import androidx.appcompat.app.AlertDialog; +import androidx.preference.Preference; import com.vtosters.lite.general.fragments.MaterialPreferenceToolbarFragment; +import ru.vtosters.lite.downloaders.VideoDownloader; + public class MediaFragment extends MaterialPreferenceToolbarFragment{ + public static void download(Context ctx){ + AlertDialog.Builder alertDialog = new AlertDialog.Builder(ctx); + alertDialog.setTitle("Введите ссылку на видео"); + + final EditText input = new EditText(ctx); + LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams( + LinearLayout.LayoutParams.MATCH_PARENT, + LinearLayout.LayoutParams.MATCH_PARENT); + input.setLayoutParams(lp); + alertDialog.setView(input); + + alertDialog.setPositiveButton("Скачать", (dialog, which) -> VideoDownloader.parseVideoLink(input.getText().toString(), ctx)); + alertDialog.show(); + } + @Override public void onCreate(Bundle bundle){ super.onCreate(bundle); addPreferencesFromResource(getIdentifier("preferences_media", "xml")); + prefs(); + } + + private void prefs(){ + findPreference("download_video").setOnPreferenceClickListener(new MediaFragment.download()); + } + + public class download implements Preference.OnPreferenceClickListener{ + @Override // android.support.v7.preference.Preference.c + public boolean onPreferenceClick(Preference preference){ + download(getActivity()); + return true; + } } } diff --git a/app/src/main/java/ru/vtosters/lite/utils/Preferences.java b/app/src/main/java/ru/vtosters/lite/utils/Preferences.java index 347ff2a59..cdc6d26d3 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/Preferences.java +++ b/app/src/main/java/ru/vtosters/lite/utils/Preferences.java @@ -211,10 +211,6 @@ public class Preferences{ return getBoolValue("postsredesign", true); } - public static boolean quic(){ - return getBoolValue("quic", true); - } - public static boolean returnnorifs(){ return getBoolValue("returnnorifs", false); } diff --git a/smali/res/xml/preferences_media.xml b/smali/res/xml/preferences_media.xml index 673d3431b..df9bbd336 100644 --- a/smali/res/xml/preferences_media.xml +++ b/smali/res/xml/preferences_media.xml @@ -49,6 +49,9 @@ android:title="Новый раздел музыки (beta)" /> + -