Skip to content

Instantly share code, notes, and snippets.

@ThexXTURBOXx
Created March 5, 2019 18:13
Show Gist options
  • Save ThexXTURBOXx/9589bc6f650f8bec21120269a21532f7 to your computer and use it in GitHub Desktop.
Save ThexXTURBOXx/9589bc6f650f8bec21120269a21532f7 to your computer and use it in GitHub Desktop.
package me.vinceh121.socialbladeapi.youtube;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import lombok.Getter;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
@Getter
public class YTStats {
private long views;
private String channelId, username, cusername, mod, countryCode, country, channelType, avatar, banner, grade,
networkName, networkDisplayName, googleplus, facebook, twitter, instagram;
private boolean isVerfied;
private int sbRank, rank, viewsRank, countryRank, channelTypeRank, subsGrowth, viewsGrowth, averageDailyViews,
averageDailySubs, uploads, subs, partner;
private HashMap<Integer, Long> subsChart, viewsChart;
private HashMap<Integer, YTDataPoint> dataDaily;
private Date createdAt;
public static YTStats fromJson(JSONObject o) throws JSONException, ParseException {
final DateFormat df = new SimpleDateFormat("y-M-d");
YTStats s = new YTStats();
JSONObject id = o.getJSONObject("id");
s.channelId = id.getString("channelid");
s.username = id.getString("username");
s.cusername = id.getString("cusername");
s.mod = id.getString("mod");
JSONObject data = o.getJSONObject("data");
s.createdAt = df.parse(data.getString("created_at"));
s.uploads = data.getInt("uploads");
s.subs = data.getInt("subs");
s.views = data.getLong("views");
s.countryCode = data.getString("country_code");
s.country = data.getString("country");
s.channelType = data.getString("channeltype");
s.avatar = data.getString("avatar");
s.banner = data.getString("banner");
s.averageDailySubs = data.getInt("avgdailysubs");
s.averageDailyViews = data.getInt("avgdailyviews");
s.partner = data.getInt("partner");
s.isVerfied = 1 == data.getInt("isVerified");
JSONObject rankRaw = o.getJSONObject("rank").getJSONObject("raw");
s.sbRank = rankRaw.getInt("sbrank");
s.rank = rankRaw.getInt("rank");
s.viewsRank = rankRaw.getInt("viewsrank");
s.countryRank = rankRaw.getInt("countryrank");
s.channelTypeRank = rankRaw.getInt("channeltyperank");
s.grade = o.getJSONObject("rank").getString("grade_raw");
JSONObject network = o.getJSONObject("network");
try {
s.networkName = network.getString("networkname"); // Sometimes networkname = null
} catch (JSONException e) {
}
try {
s.networkDisplayName = network.getString("networkname_display"); // Sometime networkname_display = null
} catch (JSONException e) {
}
JSONObject social = o.getJSONObject("social");
s.googleplus = social.getString("googleplus");
s.facebook = social.getString("facebook");
s.twitter = social.getString("twitter");
s.instagram = social.getString("instagram");
JSONObject chartsSubs = o.getJSONObject("charts").getJSONObject("subs");
s.subsChart = new HashMap<Integer, Long>();
int n;
for (String k : chartsSubs.keySet()) {
n = Integer.parseInt(k.replaceAll("subs", ""));
s.subsChart.put(n, chartsSubs.getLong(k));
}
JSONObject chartsViews = o.getJSONObject("charts").getJSONObject("views");
s.viewsChart = new HashMap<Integer, Long>();
for (String k : chartsViews.keySet()) {
n = Integer.parseInt(k.replaceAll("views", ""));
s.subsChart.put(n, chartsViews.getLong(k));
}
final JSONArray daily = o.getJSONArray("data_daily");
s.dataDaily = new HashMap<Integer, YTDataPoint>();
for (int i = 0; i < daily.length(); i++) {
final JSONObject tmp = daily.getJSONObject(i);
s.dataDaily.put(i,
new YTDataPoint(df.parse(tmp.getString("date")), tmp.getInt("subs"), tmp.getInt("views")));
}
return s;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment