Created
March 5, 2019 18:13
-
-
Save ThexXTURBOXx/9589bc6f650f8bec21120269a21532f7 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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