mirror of
https://github.com/KokaKiwi/BarInsta
synced 2024-11-15 19:27:31 +00:00
cleanup
This commit is contained in:
parent
a0084df46e
commit
a08167381f
@ -1,140 +0,0 @@
|
|||||||
package awais.instagrabber.asyncs.i;
|
|
||||||
|
|
||||||
import android.os.AsyncTask;
|
|
||||||
import android.os.Environment;
|
|
||||||
import android.util.Log;
|
|
||||||
|
|
||||||
import org.json.JSONArray;
|
|
||||||
import org.json.JSONObject;
|
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.net.HttpURLConnection;
|
|
||||||
import java.net.URL;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import awais.instagrabber.BuildConfig;
|
|
||||||
import awais.instagrabber.interfaces.FetchListener;
|
|
||||||
import awais.instagrabber.models.PostModel;
|
|
||||||
import awais.instagrabber.models.enums.MediaItemType;
|
|
||||||
import awais.instagrabber.utils.Constants;
|
|
||||||
import awais.instagrabber.utils.DownloadUtils;
|
|
||||||
import awais.instagrabber.utils.NetworkUtils;
|
|
||||||
import awais.instagrabber.utils.ResponseBodyUtils;
|
|
||||||
import awais.instagrabber.utils.TextUtils;
|
|
||||||
import awais.instagrabber.utils.Utils;
|
|
||||||
import awaisomereport.LogCollector;
|
|
||||||
|
|
||||||
import static awais.instagrabber.utils.Constants.DOWNLOAD_USER_FOLDER;
|
|
||||||
import static awais.instagrabber.utils.Constants.FOLDER_PATH;
|
|
||||||
import static awais.instagrabber.utils.Constants.FOLDER_SAVE_TO;
|
|
||||||
import static awais.instagrabber.utils.Utils.logCollector;
|
|
||||||
|
|
||||||
public final class iLikedFetcher extends AsyncTask<Void, Void, List<PostModel>> {
|
|
||||||
private static final String TAG = "iLikedFetcher";
|
|
||||||
|
|
||||||
private final String endCursor;
|
|
||||||
private final FetchListener<List<PostModel>> fetchListener;
|
|
||||||
|
|
||||||
public iLikedFetcher(final FetchListener<List<PostModel>> fetchListener) {
|
|
||||||
this.endCursor = "";
|
|
||||||
this.fetchListener = fetchListener;
|
|
||||||
}
|
|
||||||
|
|
||||||
public iLikedFetcher(final String endCursor, final FetchListener<List<PostModel>> fetchListener) {
|
|
||||||
this.endCursor = endCursor == null ? "" : endCursor;
|
|
||||||
this.fetchListener = fetchListener;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected List<PostModel> doInBackground(final Void... voids) {
|
|
||||||
final String url = "https://i.instagram.com/api/v1/feed/liked/?max_id=" + endCursor;
|
|
||||||
|
|
||||||
List<PostModel> result = new ArrayList<>();
|
|
||||||
try {
|
|
||||||
final HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection();
|
|
||||||
conn.setUseCaches(false);
|
|
||||||
conn.setRequestProperty("User-Agent", Constants.I_USER_AGENT);
|
|
||||||
conn.connect();
|
|
||||||
|
|
||||||
if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
|
|
||||||
final JSONObject body = new JSONObject(NetworkUtils.readFromConnection(conn));
|
|
||||||
|
|
||||||
final String endCursor;
|
|
||||||
final boolean hasNextPage;
|
|
||||||
|
|
||||||
if (body.has("more_available")) {
|
|
||||||
hasNextPage = body.optBoolean("more_available");
|
|
||||||
endCursor = hasNextPage ? body.optString("next_max_id") : null;
|
|
||||||
} else {
|
|
||||||
hasNextPage = false;
|
|
||||||
endCursor = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
final JSONArray edges = body.getJSONArray("items");
|
|
||||||
for (int i = 0; i < edges.length(); ++i) {
|
|
||||||
final JSONObject mediaNode = edges.getJSONObject(i);
|
|
||||||
|
|
||||||
final boolean isSlider = mediaNode.has("carousel_media_count");
|
|
||||||
final boolean isVideo = mediaNode.has("video_duration");
|
|
||||||
|
|
||||||
final MediaItemType itemType;
|
|
||||||
if (isSlider) itemType = MediaItemType.MEDIA_TYPE_SLIDER;
|
|
||||||
else if (isVideo) itemType = MediaItemType.MEDIA_TYPE_VIDEO;
|
|
||||||
else itemType = MediaItemType.MEDIA_TYPE_IMAGE;
|
|
||||||
|
|
||||||
final PostModel model = new PostModel(
|
|
||||||
itemType,
|
|
||||||
mediaNode.getString(Constants.EXTRAS_ID),
|
|
||||||
isSlider ? ResponseBodyUtils.getHighQualityImage(mediaNode.getJSONArray("carousel_media")
|
|
||||||
.getJSONObject(0))
|
|
||||||
: ResponseBodyUtils.getHighQualityImage(mediaNode),
|
|
||||||
isSlider ? ResponseBodyUtils.getLowQualityImage(mediaNode.getJSONArray("carousel_media")
|
|
||||||
.getJSONObject(0))
|
|
||||||
: ResponseBodyUtils.getLowQualityImage(mediaNode),
|
|
||||||
mediaNode.getString("code"),
|
|
||||||
mediaNode.isNull("caption") ? null : mediaNode.getJSONObject("caption").optString("text"),
|
|
||||||
mediaNode.getLong("taken_at"),
|
|
||||||
true,
|
|
||||||
mediaNode.optBoolean("has_viewer_saved")
|
|
||||||
// , mediaNode.getLong("like_count")
|
|
||||||
);
|
|
||||||
result.add(model);
|
|
||||||
String username = mediaNode.getJSONObject("user").getString("username");
|
|
||||||
final File downloadDir = new File(Environment.getExternalStorageDirectory(), "Download" +
|
|
||||||
(Utils.settingsHelper.getBoolean(DOWNLOAD_USER_FOLDER) ? ("/" + username) : ""));
|
|
||||||
File customDir = null;
|
|
||||||
if (Utils.settingsHelper.getBoolean(FOLDER_SAVE_TO)) {
|
|
||||||
final String customPath = Utils.settingsHelper.getString(FOLDER_PATH +
|
|
||||||
(Utils.settingsHelper.getBoolean(DOWNLOAD_USER_FOLDER)
|
|
||||||
? ("/" + username)
|
|
||||||
: ""));
|
|
||||||
if (!TextUtils.isEmpty(customPath)) customDir = new File(customPath);
|
|
||||||
}
|
|
||||||
DownloadUtils.checkExistence(downloadDir, customDir, isSlider, model);
|
|
||||||
}
|
|
||||||
|
|
||||||
final int length = result.size();
|
|
||||||
if (length >= 1 && result.get(length - 1) != null) {
|
|
||||||
result.get(length - 1).setPageCursor(hasNextPage, endCursor);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
conn.disconnect();
|
|
||||||
} catch (Exception e) {
|
|
||||||
if (logCollector != null) {
|
|
||||||
logCollector.appendException(e, LogCollector.LogFile.ASYNC_MAIN_POSTS_FETCHER, "doInBackground");
|
|
||||||
}
|
|
||||||
if (BuildConfig.DEBUG) {
|
|
||||||
Log.e(TAG, "", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void onPostExecute(final List<PostModel> postModels) {
|
|
||||||
if (fetchListener != null) fetchListener.onResult(postModels);
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,205 +0,0 @@
|
|||||||
package awais.instagrabber.asyncs.i;
|
|
||||||
|
|
||||||
import android.os.AsyncTask;
|
|
||||||
import android.os.Environment;
|
|
||||||
import android.util.Log;
|
|
||||||
|
|
||||||
import org.json.JSONArray;
|
|
||||||
import org.json.JSONObject;
|
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.net.HttpURLConnection;
|
|
||||||
import java.net.URL;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import awais.instagrabber.BuildConfig;
|
|
||||||
import awais.instagrabber.interfaces.FetchListener;
|
|
||||||
import awais.instagrabber.models.FeedModel;
|
|
||||||
import awais.instagrabber.models.PostChild;
|
|
||||||
import awais.instagrabber.models.ProfileModel;
|
|
||||||
import awais.instagrabber.models.enums.MediaItemType;
|
|
||||||
import awais.instagrabber.utils.Constants;
|
|
||||||
import awais.instagrabber.utils.NetworkUtils;
|
|
||||||
import awais.instagrabber.utils.ResponseBodyUtils;
|
|
||||||
import awais.instagrabber.utils.TextUtils;
|
|
||||||
import awais.instagrabber.utils.Utils;
|
|
||||||
import awaisomereport.LogCollector;
|
|
||||||
|
|
||||||
import static awais.instagrabber.utils.Constants.DOWNLOAD_USER_FOLDER;
|
|
||||||
import static awais.instagrabber.utils.Constants.FOLDER_PATH;
|
|
||||||
import static awais.instagrabber.utils.Constants.FOLDER_SAVE_TO;
|
|
||||||
import static awais.instagrabber.utils.Utils.logCollector;
|
|
||||||
|
|
||||||
public final class iPostFetcher extends AsyncTask<Void, Void, FeedModel> {
|
|
||||||
private static final String TAG = "iPostFetcher";
|
|
||||||
|
|
||||||
private final String id;
|
|
||||||
private final FetchListener<FeedModel> fetchListener;
|
|
||||||
|
|
||||||
public iPostFetcher(final String id, final FetchListener<FeedModel> fetchListener) {
|
|
||||||
this.id = id;
|
|
||||||
this.fetchListener = fetchListener;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected FeedModel doInBackground(final Void... voids) {
|
|
||||||
HttpURLConnection conn = null;
|
|
||||||
try {
|
|
||||||
conn = (HttpURLConnection) new URL("https://i.instagram.com/api/v1/media/" + id + "/info").openConnection();
|
|
||||||
conn.setUseCaches(false);
|
|
||||||
conn.setRequestProperty("User-Agent", Constants.USER_AGENT);
|
|
||||||
conn.connect();
|
|
||||||
|
|
||||||
if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
|
|
||||||
final JSONObject media = new JSONObject(NetworkUtils.readFromConnection(conn))
|
|
||||||
.getJSONArray("items")
|
|
||||||
.getJSONObject(0);
|
|
||||||
ProfileModel profileModel = null;
|
|
||||||
if (media.has("user")) {
|
|
||||||
final JSONObject user = media.getJSONObject("user");
|
|
||||||
final JSONObject friendshipStatus = user.optJSONObject("friendship_status");
|
|
||||||
boolean following = false;
|
|
||||||
boolean isRestricted = false;
|
|
||||||
boolean outgoingRequest = false;
|
|
||||||
if (friendshipStatus != null) {
|
|
||||||
following = friendshipStatus.optBoolean("following");
|
|
||||||
isRestricted = friendshipStatus.optBoolean("is_restricted");
|
|
||||||
outgoingRequest = friendshipStatus.optBoolean("outgoing_request");
|
|
||||||
}
|
|
||||||
profileModel = new ProfileModel(
|
|
||||||
user.optBoolean("is_private"),
|
|
||||||
user.optBoolean("is_private"),
|
|
||||||
user.optBoolean("is_verified"),
|
|
||||||
user.optString("pk"),
|
|
||||||
user.getString(Constants.EXTRAS_USERNAME),
|
|
||||||
user.optString("fullname"),
|
|
||||||
null,
|
|
||||||
null,
|
|
||||||
user.getString("profile_pic_url"),
|
|
||||||
null,
|
|
||||||
-1,
|
|
||||||
-1,
|
|
||||||
-1,
|
|
||||||
following,
|
|
||||||
isRestricted,
|
|
||||||
false,
|
|
||||||
outgoingRequest
|
|
||||||
);
|
|
||||||
}
|
|
||||||
if (profileModel == null) {
|
|
||||||
return new FeedModel.Builder().build();
|
|
||||||
}
|
|
||||||
|
|
||||||
// to check if file exists
|
|
||||||
final boolean shouldDownloadToUserFolder = Utils.settingsHelper.getBoolean(DOWNLOAD_USER_FOLDER);
|
|
||||||
final File downloadDir = new File(
|
|
||||||
Environment.getExternalStorageDirectory(),
|
|
||||||
"Download" + (shouldDownloadToUserFolder ? "/" + profileModel.getUsername() : ""));
|
|
||||||
File customDir = null;
|
|
||||||
if (Utils.settingsHelper.getBoolean(FOLDER_SAVE_TO)) {
|
|
||||||
final String customPath = Utils.settingsHelper.getString(FOLDER_PATH)
|
|
||||||
+ (shouldDownloadToUserFolder ? "/" + profileModel.getUsername() : "");
|
|
||||||
if (!TextUtils.isEmpty(customPath)) customDir = new File(customPath);
|
|
||||||
}
|
|
||||||
|
|
||||||
final long timestamp = media.getLong("taken_at");
|
|
||||||
|
|
||||||
final boolean isVideo = media.has("has_audio") && media.optBoolean("has_audio");
|
|
||||||
final boolean isSlider = !media.isNull("carousel_media_count");
|
|
||||||
|
|
||||||
final MediaItemType mediaItemType;
|
|
||||||
if (isSlider) mediaItemType = MediaItemType.MEDIA_TYPE_SLIDER;
|
|
||||||
else if (isVideo) mediaItemType = MediaItemType.MEDIA_TYPE_VIDEO;
|
|
||||||
else mediaItemType = MediaItemType.MEDIA_TYPE_IMAGE;
|
|
||||||
|
|
||||||
final String postCaption;
|
|
||||||
final JSONObject mediaToCaption = media.optJSONObject("caption");
|
|
||||||
if (mediaToCaption == null) postCaption = null;
|
|
||||||
else postCaption = mediaToCaption.optString("text");
|
|
||||||
|
|
||||||
final long commentsCount = media.optLong("comment_count");
|
|
||||||
|
|
||||||
final JSONObject location = media.optJSONObject("location");
|
|
||||||
String locationId = null;
|
|
||||||
String locationName = null;
|
|
||||||
if (location != null) {
|
|
||||||
locationName = location.optString("name");
|
|
||||||
if (location.has("id")) {
|
|
||||||
locationId = location.getString("id");
|
|
||||||
} else if (location.has("pk")) {
|
|
||||||
locationId = location.getString("pk");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// final String locationString = location.optString("id") + "/" + location.optString("slug");
|
|
||||||
final FeedModel.Builder feedModelBuilder = new FeedModel.Builder()
|
|
||||||
.setItemType(mediaItemType)
|
|
||||||
.setPostId(media.getString(Constants.EXTRAS_ID))
|
|
||||||
.setDisplayUrl(isVideo ? ResponseBodyUtils.getHighQualityPost(media.optJSONArray("video_versions"), true, true, false)
|
|
||||||
: ResponseBodyUtils.getHighQualityImage(media))
|
|
||||||
.setShortCode(media.getString("code"))
|
|
||||||
.setPostCaption(TextUtils.isEmpty(postCaption) ? null : postCaption)
|
|
||||||
.setProfileModel(profileModel)
|
|
||||||
.setViewCount(isVideo && media.has("view_count")
|
|
||||||
? media.getLong("view_count")
|
|
||||||
: -1)
|
|
||||||
.setTimestamp(timestamp)
|
|
||||||
.setLiked(media.optBoolean("has_liked"))
|
|
||||||
.setBookmarked(media.optBoolean("has_viewer_saved"))
|
|
||||||
.setLikesCount(media.getLong("like_count"))
|
|
||||||
.setLocationName(locationName)
|
|
||||||
.setLocationId(locationId)
|
|
||||||
.setCommentsCount(commentsCount);
|
|
||||||
// DownloadUtils.checkExistence(downloadDir, customDir, false, postModel);
|
|
||||||
|
|
||||||
if (isSlider) {
|
|
||||||
final JSONArray children = media.getJSONArray("carousel_media");
|
|
||||||
final List<PostChild> postModels = new ArrayList<>();
|
|
||||||
for (int i = 0; i < children.length(); ++i) {
|
|
||||||
final JSONObject childNode = children.getJSONObject(i);
|
|
||||||
final boolean isChildVideo = childNode.has("video_duration");
|
|
||||||
postModels.add(new PostChild.Builder()
|
|
||||||
.setItemType(isChildVideo ? MediaItemType.MEDIA_TYPE_VIDEO
|
|
||||||
: MediaItemType.MEDIA_TYPE_IMAGE)
|
|
||||||
.setPostId(childNode.has(Constants.EXTRAS_ID)
|
|
||||||
? childNode.getString(Constants.EXTRAS_ID)
|
|
||||||
: media.getString(Constants.EXTRAS_ID))
|
|
||||||
// .setShortCode(childNode.optString(Constants.EXTRAS_SHORTCODE))
|
|
||||||
.setDisplayUrl(
|
|
||||||
isChildVideo ? ResponseBodyUtils.getHighQualityPost(
|
|
||||||
childNode.optJSONArray("video_versions"), true, true, false)
|
|
||||||
: ResponseBodyUtils.getHighQualityImage(childNode))
|
|
||||||
.setVideoViews(isChildVideo && childNode.has("video_view_count")
|
|
||||||
? childNode.getLong("video_view_count")
|
|
||||||
: -1)
|
|
||||||
.build());
|
|
||||||
// DownloadUtils.checkExistence(downloadDir, customDir, true, postModels[i]);
|
|
||||||
}
|
|
||||||
feedModelBuilder.setSliderItems(postModels);
|
|
||||||
}
|
|
||||||
return feedModelBuilder.build();
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
if (logCollector != null)
|
|
||||||
logCollector.appendException(e, LogCollector.LogFile.ASYNC_POST_FETCHER, "doInBackground (i)");
|
|
||||||
if (BuildConfig.DEBUG) {
|
|
||||||
Log.e(TAG, "", e);
|
|
||||||
}
|
|
||||||
} finally {
|
|
||||||
if (conn != null) {
|
|
||||||
conn.disconnect();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void onPreExecute() {
|
|
||||||
if (fetchListener != null) fetchListener.doBefore();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void onPostExecute(final FeedModel feedModel) {
|
|
||||||
if (fetchListener != null) fetchListener.onResult(feedModel);
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,69 +0,0 @@
|
|||||||
package awais.instagrabber.asyncs.i;
|
|
||||||
|
|
||||||
import android.os.AsyncTask;
|
|
||||||
import android.util.Log;
|
|
||||||
|
|
||||||
import org.json.JSONArray;
|
|
||||||
import org.json.JSONObject;
|
|
||||||
|
|
||||||
import java.net.HttpURLConnection;
|
|
||||||
import java.net.URL;
|
|
||||||
|
|
||||||
import awais.instagrabber.BuildConfig;
|
|
||||||
import awais.instagrabber.interfaces.FetchListener;
|
|
||||||
import awais.instagrabber.models.DiscoverTopicModel;
|
|
||||||
import awais.instagrabber.utils.Constants;
|
|
||||||
import awais.instagrabber.utils.LocaleUtils;
|
|
||||||
import awais.instagrabber.utils.NetworkUtils;
|
|
||||||
import awaisomereport.LogCollector;
|
|
||||||
|
|
||||||
import static awais.instagrabber.utils.Utils.logCollector;
|
|
||||||
|
|
||||||
public final class iTopicFetcher extends AsyncTask<Void, Void, DiscoverTopicModel> {
|
|
||||||
private final FetchListener<DiscoverTopicModel> fetchListener;
|
|
||||||
|
|
||||||
public iTopicFetcher(final FetchListener<DiscoverTopicModel> fetchListener) {
|
|
||||||
this.fetchListener = fetchListener;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected DiscoverTopicModel doInBackground(final Void... voids) {
|
|
||||||
final String url = "https://i.instagram.com/api/v1/discover/topical_explore/";
|
|
||||||
|
|
||||||
DiscoverTopicModel result = null;
|
|
||||||
try {
|
|
||||||
final HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection();
|
|
||||||
conn.setUseCaches(false);
|
|
||||||
conn.setRequestProperty("User-Agent", Constants.I_USER_AGENT);
|
|
||||||
conn.setRequestProperty("Accept-Language", LocaleUtils.getCurrentLocale().getLanguage() + ",en-US;q=0.8");
|
|
||||||
conn.connect();
|
|
||||||
|
|
||||||
if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
|
|
||||||
final JSONObject body = new JSONObject(NetworkUtils.readFromConnection(conn));
|
|
||||||
|
|
||||||
final JSONArray edges = body.getJSONArray("clusters");
|
|
||||||
String[] names = new String[edges.length()], ids = new String[edges.length()];
|
|
||||||
for (int i = 0; i < names.length; ++i) {
|
|
||||||
final JSONObject mediaNode = edges.getJSONObject(i);
|
|
||||||
ids[i] = mediaNode.getString("id");
|
|
||||||
names[i] = mediaNode.getString("title");
|
|
||||||
}
|
|
||||||
|
|
||||||
result = new DiscoverTopicModel(ids, names, body.getString("rank_token"));
|
|
||||||
}
|
|
||||||
|
|
||||||
conn.disconnect();
|
|
||||||
} catch (Exception e) {
|
|
||||||
if (logCollector != null)
|
|
||||||
logCollector.appendException(e, LogCollector.LogFile.ASYNC_DISCOVER_TOPICS_FETCHER, "doInBackground");
|
|
||||||
if (BuildConfig.DEBUG) Log.e("AWAISKING_APP", "", e);
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void onPostExecute(final DiscoverTopicModel discoverTopicModel) {
|
|
||||||
if (fetchListener != null) fetchListener.onResult(discoverTopicModel);
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user