mirror of
https://github.com/aunefyren/wrapperr
synced 2024-12-13 21:02:28 +00:00
Better logging, working API pull
This commit is contained in:
parent
c702e44502
commit
a70d12ca2d
2 changed files with 291 additions and 302 deletions
|
@ -47,13 +47,8 @@ if (!$id) {
|
|||
exit(0);
|
||||
}
|
||||
|
||||
// Log API request if enabled
|
||||
if($config->use_logs) {
|
||||
if(!log_activity($id, "")) {
|
||||
echo json_encode(array("message" => "Failed to log event.", "error" => true));
|
||||
exit(0);
|
||||
}
|
||||
}
|
||||
// Log user found
|
||||
log_activity($id, "User found");
|
||||
|
||||
// Get user name
|
||||
$name = tautulli_get_name($id);
|
||||
|
@ -62,6 +57,9 @@ if(!$name) {
|
|||
exit(0);
|
||||
}
|
||||
|
||||
// Log checking cache
|
||||
log_activity($id, "Checking data-cache");
|
||||
|
||||
// GET WRAPPED DATES CACHE
|
||||
if($config->use_cache) {
|
||||
if($cache = check_cache()) {
|
||||
|
@ -73,16 +71,25 @@ if($config->use_cache) {
|
|||
$tautulli_data = array();
|
||||
}
|
||||
|
||||
// UPDATE THE CACHE
|
||||
// Log refresh cache
|
||||
log_activity($id, "Refreshing data-cache");
|
||||
|
||||
// REFRESH THE CACHE
|
||||
$tautulli_data = tautulli_get_wrapped_dates($id, $tautulli_data);
|
||||
|
||||
// Log updating cache
|
||||
log_activity($id, "Saving data-cache");
|
||||
|
||||
// SAVE WRAPPED DATES CACHE
|
||||
if($config->use_cache) {
|
||||
update_cache($tautulli_data);
|
||||
}
|
||||
|
||||
// Log wrapped create
|
||||
log_activity($id, "Creating wrapped data");
|
||||
|
||||
// NEW LOOP USER-STATS
|
||||
if($config->get_user_movie_stats || $config->get_user_show_stats || $config->get_user_music_stats) {
|
||||
if($config->get_user_movie_stats || $config->get_user_show_stats || $config->get_user_music_stats || $config->get_year_stats_movies) {
|
||||
$user_stats = data_get_user_stats_loop($id, $tautulli_data);
|
||||
|
||||
if($config->get_user_movie_stats) {
|
||||
|
@ -102,28 +109,48 @@ if($config->get_user_movie_stats || $config->get_user_show_stats || $config->get
|
|||
} else {
|
||||
$user_music = array("error" => True, "message" => "Disabled in config.");
|
||||
}
|
||||
|
||||
if($config->get_year_stats_movies) {
|
||||
$year_movies = array("data" => $user_stats["year_movies"], "message" => "Success. User movie-year-stats are loaded.", "error" => False);
|
||||
} else {
|
||||
$year_movies = array("error" => True, "message" => "Disabled in config.");
|
||||
}
|
||||
|
||||
if($config->get_year_stats_shows) {
|
||||
$year_shows = array("data" => $user_stats["year_shows"], "message" => "Success. User show-year-stats are loaded.", "error" => False);
|
||||
} else {
|
||||
$year_shows = array("error" => True, "message" => "Disabled in config.");
|
||||
}
|
||||
|
||||
if($config->get_year_stats_music) {
|
||||
$year_music = array("data" => $user_stats["year_music"], "message" => "Success. User music-year-stats are loaded.", "error" => False);
|
||||
} else {
|
||||
$year_music = array("error" => True, "message" => "Disabled in config.");
|
||||
}
|
||||
|
||||
if(($config->get_year_stats_movies || $config->get_year_stats_shows || $config->get_year_stats_music) && $config->get_year_stats_leaderboard ) {
|
||||
$year_users = array("data" => $user_stats["year_users"], "message" => "Success. User year-stats are loaded.", "error" => False);
|
||||
} else {
|
||||
$year_users = array("error" => True, "message" => "Disabled in config.");
|
||||
}
|
||||
|
||||
} else {
|
||||
$user_movies = array("error" => True, "message" => "Disabled in config.");
|
||||
$user_shows = array("error" => True, "message" => "Disabled in config.");
|
||||
$user_music = array("error" => True, "message" => "Disabled in config.");
|
||||
$year_movies = array("error" => True, "message" => "Disabled in config.");
|
||||
$year_shows = array("error" => True, "message" => "Disabled in config.");
|
||||
$year_music = array("error" => True, "message" => "Disabled in config.");
|
||||
$year_users = array("error" => True, "message" => "Disabled in config.");
|
||||
}
|
||||
|
||||
$user_shows["data"] = $user_shows["data"] + array("show_buddy" => array("message" => "Disabled in config.", "error" => True));
|
||||
/*
|
||||
if($config->get_year_stats_movies || $config->get_year_stats_shows || $config->get_year_stats_music) {
|
||||
if($config->use_cache) {
|
||||
$year_stats = array("data" => tautulli_get_year_stats_cache($id), "error" => False, "message" => "Year stats are loaded.");
|
||||
} else {
|
||||
$year_stats = array("data" => tautulli_get_year_stats($id), "error" => False, "message" => "Year stats are loaded.");
|
||||
}
|
||||
} else {
|
||||
$year_stats = array("data" => array(), "message" => "Disabled in config.", "error" => True);
|
||||
}
|
||||
*/
|
||||
$year_stats = array("data" => array(), "message" => "Disabled in config.", "error" => True);
|
||||
|
||||
$now = new DateTime('NOW');
|
||||
|
||||
// Log wrapped create
|
||||
log_activity($id, "Printing wrapped data");
|
||||
|
||||
// Print results
|
||||
$result = json_encode(array("error" => False,
|
||||
"date" => $now->format('Y-m-d'),
|
||||
|
@ -134,7 +161,12 @@ $result = json_encode(array("error" => False,
|
|||
"user_shows" => $user_shows,
|
||||
"user_music" => $user_music
|
||||
),
|
||||
"year_stats" => $year_stats,
|
||||
"year_stats" => array(
|
||||
"year_movies" => $year_movies,
|
||||
"year_shows" => $year_shows,
|
||||
"year_music" => $year_music,
|
||||
"year_users" => $year_users,
|
||||
),
|
||||
));
|
||||
|
||||
|
||||
|
@ -248,23 +280,29 @@ function update_cache($result) {
|
|||
}
|
||||
|
||||
function log_activity($id, $message) {
|
||||
$date = date('Y-m-d H:i:s');
|
||||
|
||||
$path = "../config/wrapped.log";
|
||||
if(!file_exists($path)) {
|
||||
$temp = fopen($path, "w");
|
||||
fwrite($temp, 'Plex Wrapped');
|
||||
fclose($temp);
|
||||
}
|
||||
|
||||
$log_file = fopen($path, 'a');
|
||||
fwrite($log_file, PHP_EOL . $date . ' - get_stats.php - ID: ' . $id . ' - ' . $message);
|
||||
|
||||
if(fclose($log_file)) {
|
||||
return True;
|
||||
global $config;
|
||||
|
||||
if($config->use_logs) {
|
||||
$date = date('Y-m-d H:i:s');
|
||||
|
||||
$path = "../config/wrapped.log";
|
||||
if(!file_exists($path)) {
|
||||
$temp = fopen($path, "w");
|
||||
fwrite($temp, 'Plex Wrapped');
|
||||
fclose($temp);
|
||||
}
|
||||
|
||||
$log_file = fopen($path, 'a');
|
||||
fwrite($log_file, PHP_EOL . $date . ' - get_stats.php - ID: ' . $id . ' - ' . $message);
|
||||
|
||||
if(fclose($log_file)) {
|
||||
return True;
|
||||
} else {
|
||||
echo json_encode(array("error" => True, "message" => "Failed to log event"));
|
||||
}
|
||||
}
|
||||
|
||||
return False;
|
||||
|
||||
return True;
|
||||
}
|
||||
|
||||
function tautulli_get_wrapped_dates($id, $array) {
|
||||
|
@ -275,10 +313,9 @@ function tautulli_get_wrapped_dates($id, $array) {
|
|||
global $config;
|
||||
global $arrContextOptions;
|
||||
|
||||
$loop_time = $config->wrapped_start;
|
||||
$end_loop_date = $config->wrapped_end;
|
||||
|
||||
for ($i = 0; $loop_time <= $end_loop_date; $i++) {
|
||||
for ($loop_time = $config->wrapped_start; $loop_time <= $end_loop_date; $loop_time += 86400) {
|
||||
|
||||
$current_loop_date = date('Y-m-d', $loop_time);
|
||||
$now = new DateTime('NOW');
|
||||
|
@ -299,6 +336,8 @@ function tautulli_get_wrapped_dates($id, $array) {
|
|||
continue;
|
||||
}
|
||||
|
||||
log_activity($id, "Downloading day: " . $current_loop_date);
|
||||
|
||||
$url = $connection . "/api/v2?apikey=" . $config->tautulli_apikey . "&cmd=get_history&order_column=date&order_dir=desc&include_activity=0&length=" . $config->tautulli_length . "&start_date=" . $current_loop_date;
|
||||
|
||||
if($config->ssl) {
|
||||
|
@ -316,8 +355,6 @@ function tautulli_get_wrapped_dates($id, $array) {
|
|||
}
|
||||
|
||||
array_push($array, array("date" => $current_loop_date, "data" => $temp_clean));
|
||||
|
||||
$loop_time += 86400;
|
||||
}
|
||||
|
||||
// Sort data by date
|
||||
|
@ -325,13 +362,8 @@ function tautulli_get_wrapped_dates($id, $array) {
|
|||
array_multisort($date, SORT_ASC, $array);
|
||||
|
||||
$time_end = microtime(true);
|
||||
|
||||
//dividing with 60 will give the execution time in minutes otherwise seconds
|
||||
$execution_time = ($time_end - $time_start)/60;
|
||||
|
||||
//execution time of the script
|
||||
echo '<b>Data Downloading Execution Time:</b> '.$execution_time.' Mins';
|
||||
// if you get weird results, use number_format((float) $execution_time, 10)
|
||||
$execution_time = ($time_end - $time_start);
|
||||
log_activity($id, 'Refresh execution: '.$execution_time.' Seconds');
|
||||
|
||||
return $array;
|
||||
}
|
||||
|
@ -349,10 +381,16 @@ function data_get_user_stats_loop($id, $array) {
|
|||
$shows = array();
|
||||
$tracks = array();
|
||||
|
||||
$year_movies = array();
|
||||
$year_shows = array();
|
||||
$year_music = array();
|
||||
$year_users = array();
|
||||
|
||||
for ($i = 0; $i < count($array); $i++) {
|
||||
|
||||
for($d = 0; $d < count($array[$i]["data"]); $d++) {
|
||||
|
||||
// CHECK IF ENTRY IS MOVIE AND USER SPECIFIC
|
||||
if($config->get_user_movie_stats && $array[$i]["data"][$d]["media_type"] == "movie" && $array[$i]["data"][$d]["user_id"] == $id) {
|
||||
|
||||
if($array[$i]["data"][$d]["date"] > $config->wrapped_end) {
|
||||
|
@ -390,6 +428,7 @@ function data_get_user_stats_loop($id, $array) {
|
|||
}
|
||||
}
|
||||
|
||||
// CHECK IF ENTRY IS SHOW AND USER SPECIFIC
|
||||
if($config->get_user_show_stats && $array[$i]["data"][$d]["media_type"] == "episode" && $array[$i]["data"][$d]["user_id"] == $id) {
|
||||
if($array[$i]["data"][$d]["date"] > $config->wrapped_end) {
|
||||
continue;
|
||||
|
@ -416,6 +455,7 @@ function data_get_user_stats_loop($id, $array) {
|
|||
}
|
||||
}
|
||||
|
||||
// CHECK IF ENTRY IS MUSIC AND USER SPECIFIC
|
||||
if($config->get_user_music_stats && $array[$i]["data"][$d]["media_type"] == "track" && $array[$i]["data"][$d]["user_id"] == $id) {
|
||||
if($array[$i]["data"][$d]["date"] > $config->wrapped_end) {
|
||||
continue;
|
||||
|
@ -450,6 +490,151 @@ function data_get_user_stats_loop($id, $array) {
|
|||
array_push($tracks, array("title" => $title, "parent_title" => $parent_title, "grandparent_title" => $grandparent_title, "plays" => 1, "duration" => $duration, "year" => $year, "rating_key" => $rating_key, "parent_rating_key" => $parent_rating_key, "grandparent_rating_key" => $grandparent_rating_key));
|
||||
}
|
||||
}
|
||||
|
||||
// CHECK IF ENTRY IS MOVIE
|
||||
if($config->get_year_stats_movies && $array[$i]["data"][$d]["media_type"] == "movie") {
|
||||
if(intval($array[$i]["data"][$d]["date"]) > $config->wrapped_end) {
|
||||
continue;
|
||||
} else if(intval($array[$i]["data"][$d]["date"]) < $config->wrapped_start) {
|
||||
break;
|
||||
}
|
||||
|
||||
$title = $array[$i]["data"][$d]["full_title"];
|
||||
$duration = $array[$i]["data"][$d]["duration"];
|
||||
$user = $array[$i]["data"][$d]["friendly_name"];
|
||||
$user_id = $array[$i]["data"][$d]["user_id"];
|
||||
$year = $array[$i]["data"][$d]["year"];
|
||||
|
||||
$user_found = False;
|
||||
$movie_found = False;
|
||||
|
||||
for ($j = 0; $j < count($year_users); $j++) {
|
||||
if($year_users[$j]["id"] == $user_id) {
|
||||
$year_users[$j]["duration"] = intval($year_users[$j]["duration"]) + intval($duration);
|
||||
$year_users[$j]["duration_movies"] = intval($year_users[$j]["duration_movies"]) + intval($duration);
|
||||
$year_users[$j]["plays"] = intval($year_users[$j]["plays"]) + 1;
|
||||
$user_found = True;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(!$user_found) {
|
||||
array_push($year_users, array("user" => $user, "id" => $user_id, "duration" => $duration, "duration_movies" => $duration, "duration_shows" => 0, "duration_artists" => 0, "plays" => 1));
|
||||
}
|
||||
|
||||
for ($j = 0; $j < count($year_movies); $j++) {
|
||||
if($year_movies[$j]["title"] == $title && $year_movies[$j]["year"] == $year) {
|
||||
$year_movies[$j]["duration"] = intval($year_movies[$j]["duration"]) + intval($duration);
|
||||
$year_movies[$j]["plays"] = intval($year_movies[$j]["plays"]) + 1;
|
||||
$movie_found = True;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(!$movie_found) {
|
||||
array_push($year_movies, array("title" => $title, "year" => $year, "duration" => $duration, "plays" => 1));
|
||||
}
|
||||
}
|
||||
|
||||
// CHECK IF ENTRY IS SHOW
|
||||
if($config->get_year_stats_shows && $array[$i]["data"][$d]["media_type"] == "episode") {
|
||||
if(intval($array[$i]["data"][$d]["date"]) > $config->wrapped_end) {
|
||||
continue;
|
||||
} else if(intval($array[$i]["data"][$d]["date"]) < $config->wrapped_start) {
|
||||
break;
|
||||
}
|
||||
|
||||
$title = $array[$i]["data"][$d]["grandparent_title"];
|
||||
$duration = $array[$i]["data"][$d]["duration"];
|
||||
$user = $array[$i]["data"][$d]["friendly_name"];
|
||||
$user_id = $array[$i]["data"][$d]["user_id"];
|
||||
$year = $array[$i]["data"][$d]["year"];
|
||||
|
||||
$user_found = False;
|
||||
$show_found = False;
|
||||
|
||||
for ($j = 0; $j < count($year_users); $j++) {
|
||||
if($year_users[$j]["id"] == $user_id) {
|
||||
$year_users[$j]["duration"] = intval($year_users[$j]["duration"]) + intval($duration);
|
||||
$year_users[$j]["duration_shows"] = intval($year_users[$j]["duration_shows"]) + intval($duration);
|
||||
$year_users[$j]["plays"] = intval($year_users[$j]["plays"]) + 1;
|
||||
$user_found = True;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(!$user_found) {
|
||||
array_push($year_users, array("user" => $user, "id" => $user_id, "duration" => $duration, "duration_movies" => 0, "duration_shows" => $duration, "duration_artists" => 0, "plays" => 1));
|
||||
}
|
||||
|
||||
for ($j = 0; $j < count($year_shows); $j++) {
|
||||
if($year_shows[$j]["title"] == $title) {
|
||||
$year_shows[$j]["duration"] = intval($year_shows[$j]["duration"]) + intval($duration);
|
||||
$year_shows[$j]["plays"] = intval($year_shows[$j]["plays"]) + 1;
|
||||
$show_found = True;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(!$show_found) {
|
||||
array_push($year_shows, array("title" => $title, "year" => $year, "duration" => $duration, "plays" => 1));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// CHECK IF ENTRY IS MUSIC
|
||||
if($config->get_year_stats_music && $array[$i]["data"][$d]["media_type"] == "track") {
|
||||
if($array[$i]["data"][$d]["date"] > $config->wrapped_end) {
|
||||
continue;
|
||||
} else if ($array[$i]["data"][$d]["date"] < $config->wrapped_start) {
|
||||
break;
|
||||
}
|
||||
|
||||
$duration = $array[$i]["data"][$d]["duration"];
|
||||
$title = $array[$i]["data"][$d]["title"];
|
||||
$parent_title = $array[$i]["data"][$d]["parent_title"];
|
||||
$grandparent_title = $array[$i]["data"][$d]["grandparent_title"];
|
||||
$user_id = $array[$i]["data"][$d]["user_id"];
|
||||
$friendly_name = $array[$i]["data"][$d]["friendly_name"];
|
||||
$year = $array[$i]["data"][$d]["year"];
|
||||
$rating_key = $array[$i]["data"][$d]["rating_key"];
|
||||
$parent_rating_key = $array[$i]["data"][$d]["parent_rating_key"];
|
||||
$grandparent_rating_key = $array[$i]["data"][$d]["grandparent_rating_key"];
|
||||
|
||||
if($title == "" || $grandparent_title == "" || $parent_title == "") {
|
||||
continue;
|
||||
}
|
||||
|
||||
$user_found = False;
|
||||
$artist_found = False;
|
||||
|
||||
for ($j = 0; $j < count($year_users); $j++) {
|
||||
if($year_users[$j]["id"] == $user_id) {
|
||||
$year_users[$j]["duration"] = intval($year_users[$j]["duration"]) + $duration;
|
||||
$year_users[$j]["duration_artists"] = intval($year_users[$j]["duration_artists"]) + $duration;
|
||||
$year_users[$j]["plays"] = intval($year_users[$j]["plays"]) + 1;
|
||||
$user_found = True;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(!$user_found) {
|
||||
array_push($year_users, array("user" => $friendly_name, "id" => $user_id, "duration" => $duration, "duration_movies" => 0, "duration_shows" => 0, "duration_artists" => $duration, "plays" => 1));
|
||||
}
|
||||
|
||||
for ($j = 0; $j < count($year_music); $j++) {
|
||||
if($title == $year_music[$j]["title"] && $parent_title == $year_music[$j]["parent_title"] && $grandparent_title == $year_music[$j]["grandparent_title"]) {
|
||||
$year_music[$j]["plays"] = intval($year_music[$j]["plays"]) + 1;
|
||||
$year_music[$j]["duration"] = intval($year_music[$j]["duration"]) + $duration;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(!$artist_found) {
|
||||
array_push($year_music, array("title" => $title, "parent_title" => $parent_title, "grandparent_title" => $grandparent_title, "plays" => 1, "duration" => $duration, "year" => $year, "rating_key" => $rating_key, "parent_rating_key" => $parent_rating_key, "grandparent_rating_key" => $grandparent_rating_key));
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -483,6 +668,22 @@ function data_get_user_stats_loop($id, $array) {
|
|||
$duration = array_column($tracks, 'duration');
|
||||
array_multisort($duration, SORT_DESC, $tracks);
|
||||
|
||||
// Sort year_movies by duration
|
||||
$duration = array_column($year_movies, 'duration');
|
||||
array_multisort($duration, SORT_DESC, $year_movies);
|
||||
|
||||
// Sort year_shows by duration
|
||||
$duration = array_column($year_shows, 'duration');
|
||||
array_multisort($duration, SORT_DESC, $year_shows);
|
||||
|
||||
// Sort tracks by duration
|
||||
$duration = array_column($year_music, 'duration');
|
||||
array_multisort($duration, SORT_DESC, $year_music);
|
||||
|
||||
// Sort users by combined duration
|
||||
$duration = array_column($year_users, 'duration');
|
||||
array_multisort($duration, SORT_DESC, $year_users);
|
||||
|
||||
// Calculate average movie finishing percentage
|
||||
$sum = 0;
|
||||
for($i = 0; $i < count($movies_percent_complete); $i++) {
|
||||
|
@ -494,7 +695,6 @@ function data_get_user_stats_loop($id, $array) {
|
|||
$movie_percent_average = 0;
|
||||
}
|
||||
|
||||
|
||||
if($config->get_user_movie_stats) {
|
||||
$return_movies = array("movies" => $movies, "user_movie_most_paused" => $movie_most_paused, "user_movie_finishing_percent" => $movie_percent_average, "user_movie_oldest" => $movie_oldest);
|
||||
} else {
|
||||
|
@ -513,16 +713,35 @@ function data_get_user_stats_loop($id, $array) {
|
|||
$return_music = array();
|
||||
}
|
||||
|
||||
if($config->get_year_stats_movies) {
|
||||
$return_year_movies = $year_movies;
|
||||
}else {
|
||||
$return_year_movies = array();
|
||||
}
|
||||
|
||||
if($config->get_year_stats_shows) {
|
||||
$return_year_shows = $year_shows;
|
||||
}else {
|
||||
$return_year_shows = array();
|
||||
}
|
||||
|
||||
if($config->get_year_stats_shows) {
|
||||
$return_year_music = $year_music;
|
||||
}else {
|
||||
$return_year_music = array();
|
||||
}
|
||||
|
||||
if(($config->get_year_stats_shows || $config->get_year_stats_shows || $config->get_year_stats_shows) && $config->get_year_stats_leaderboard) {
|
||||
$return_year_users = $year_users;
|
||||
} else {
|
||||
$return_year_users = array();
|
||||
}
|
||||
|
||||
$time_end = microtime(true);
|
||||
$execution_time = ($time_end - $time_start);
|
||||
log_activity($id, 'Wrapping execution: '.$execution_time.' seconds');
|
||||
|
||||
//dividing with 60 will give the execution time in minutes otherwise seconds
|
||||
$execution_time = ($time_end - $time_start)/60;
|
||||
|
||||
//execution time of the script
|
||||
echo '<b>Data Processing Execution Time:</b> '.$execution_time.' Mins';
|
||||
// if you get weird results, use number_format((float) $execution_time, 10)
|
||||
|
||||
return array("movies" => $return_movies, "shows" => $return_shows, "music" => $return_music);
|
||||
return array("movies" => $return_movies, "shows" => $return_shows, "music" => $return_music, "year_movies" => $return_year_movies, "year_shows" => $return_year_shows, "year_music" => $return_year_music, "year_users" => $return_year_users);
|
||||
}
|
||||
|
||||
function tautulli_get_user_show_buddy($id, $shows) {
|
||||
|
@ -615,234 +834,4 @@ function tautulli_get_year_stats_cache($id) {
|
|||
|
||||
return tautulli_get_year_stats($id);
|
||||
}
|
||||
|
||||
function tautulli_get_year_stats($id) {
|
||||
global $connection;
|
||||
global $config;
|
||||
global $library_id_movies;
|
||||
global $library_id_shows;
|
||||
global $library_id_music;
|
||||
global $name;
|
||||
global $arrContextOptions;
|
||||
|
||||
$users = array();
|
||||
$movies = array();
|
||||
$shows = array();
|
||||
$tracks = array();
|
||||
|
||||
$earliest_date_movies = 999999999999;
|
||||
$earliest_date_shows = 999999999999;
|
||||
$earliest_date_tracks = 999999999999;
|
||||
|
||||
if($config->get_year_stats_movies) {
|
||||
//GET MOVIES
|
||||
$url = $connection . "/api/v2?apikey=" . $config->tautulli_apikey . "&cmd=get_history§ion_id=" . $library_id_movies . "&media_type=movie&include_activity=0&order_column=date&order_dir=desc&length=" . $config->tautulli_length;
|
||||
|
||||
if($config->ssl) {
|
||||
$response = json_decode(file_get_contents($url, false, stream_context_create($arrContextOptions)));
|
||||
} else {
|
||||
$response = json_decode(file_get_contents($url));
|
||||
}
|
||||
|
||||
$array = $response->response->data->data;
|
||||
|
||||
for ($i = 0; $i < count($array); $i++) {
|
||||
if(intval($array[$i]->date) > $config->wrapped_end) {
|
||||
continue;
|
||||
} else if(intval($array[$i]->date) < $config->wrapped_start) {
|
||||
break;
|
||||
}
|
||||
|
||||
$title = $array[$i]->full_title;
|
||||
$duration = $array[$i]->duration;
|
||||
$user = $array[$i]->friendly_name;
|
||||
$user_id = $array[$i]->user_id;
|
||||
$year = $array[$i]->year;
|
||||
|
||||
$user_found = False;
|
||||
$movie_found = False;
|
||||
|
||||
if($array[$i]->date < $earliest_date_movies) {
|
||||
$earliest_date_movies = $array[$i]->date;
|
||||
}
|
||||
|
||||
for ($j = 0; $j < count($users); $j++) {
|
||||
if($users[$j]["id"] == $user_id) {
|
||||
$users[$j]["duration"] = intval($users[$j]["duration"]) + intval($duration);
|
||||
$users[$j]["duration_movies"] = intval($users[$j]["duration_movies"]) + intval($duration);
|
||||
$users[$j]["plays"] = intval($users[$j]["plays"]) + 1;
|
||||
$user_found = True;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(!$user_found) {
|
||||
array_push($users, array("user" => $user, "id" => $user_id, "duration" => $duration, "duration_movies" => $duration, "duration_shows" => 0, "duration_artists" => 0, "plays" => 1));
|
||||
}
|
||||
|
||||
for ($j = 0; $j < count($movies); $j++) {
|
||||
if($movies[$j]["title"] == $title && $movies[$j]["year"] == $year) {
|
||||
$movies[$j]["duration"] = intval($movies[$j]["duration"]) + intval($duration);
|
||||
$movies[$j]["plays"] = intval($movies[$j]["plays"]) + 1;
|
||||
$movie_found = True;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(!$movie_found) {
|
||||
array_push($movies, array("title" => $title, "year" => $year, "duration" => $duration, "plays" => 1));
|
||||
}
|
||||
}
|
||||
|
||||
// Sort movies by duration
|
||||
$duration = array_column($movies, 'duration');
|
||||
array_multisort($duration, SORT_DESC, $movies);
|
||||
|
||||
} else {
|
||||
$movies = array("message" => "Disabled in config.", "error" => True);
|
||||
}
|
||||
|
||||
if($config->get_year_stats_shows) {
|
||||
//GET EPISODES
|
||||
$url = $connection . "/api/v2?apikey=" . $config->tautulli_apikey . "&cmd=get_history§ion_id=" . $library_id_shows . "&media_type=episode&include_activity=0&order_column=date&order_dir=desc&length=" . $config->tautulli_length;
|
||||
|
||||
if($config->ssl) {
|
||||
$response = json_decode(file_get_contents($url, false, stream_context_create($arrContextOptions)));
|
||||
} else {
|
||||
$response = json_decode(file_get_contents($url));
|
||||
}
|
||||
|
||||
$array = $response->response->data->data;
|
||||
|
||||
for ($i = 0; $i < count($array); $i++) {
|
||||
if(intval($array[$i]->date) > $config->wrapped_end) {
|
||||
continue;
|
||||
} else if(intval($array[$i]->date) < $config->wrapped_start) {
|
||||
break;
|
||||
}
|
||||
|
||||
$title = $array[$i]->grandparent_title;
|
||||
$duration = $array[$i]->duration;
|
||||
$user = $array[$i]->friendly_name;
|
||||
$user_id = $array[$i]->user_id;
|
||||
$year = $array[$i]->year;
|
||||
|
||||
$user_found = False;
|
||||
$show_found = False;
|
||||
|
||||
if($array[$i]->date < $earliest_date_shows) {
|
||||
$earliest_date_shows = $array[$i]->date;
|
||||
}
|
||||
|
||||
for ($j = 0; $j < count($users); $j++) {
|
||||
if($users[$j]["id"] == $user_id) {
|
||||
$users[$j]["duration"] = intval($users[$j]["duration"]) + intval($duration);
|
||||
$users[$j]["duration_shows"] = intval($users[$j]["duration_shows"]) + intval($duration);
|
||||
$users[$j]["plays"] = intval($users[$j]["plays"]) + 1;
|
||||
$user_found = True;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(!$user_found) {
|
||||
array_push($users, array("user" => $user, "id" => $user_id, "duration" => $duration, "duration_movies" => 0, "duration_shows" => $duration, "duration_artists" => 0, "plays" => 1));
|
||||
}
|
||||
|
||||
for ($j = 0; $j < count($shows); $j++) {
|
||||
if($shows[$j]["title"] == $title) {
|
||||
$shows[$j]["duration"] = intval($shows[$j]["duration"]) + intval($duration);
|
||||
$shows[$j]["plays"] = intval($shows[$j]["plays"]) + 1;
|
||||
$show_found = True;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(!$show_found) {
|
||||
array_push($shows, array("title" => $title, "year" => $year, "duration" => $duration, "plays" => 1));
|
||||
}
|
||||
}
|
||||
|
||||
// Sort shows by duration
|
||||
$duration = array_column($shows, 'duration');
|
||||
array_multisort($duration, SORT_DESC, $shows);
|
||||
|
||||
} else {
|
||||
$shows = array("message" => "Disabled in config.", "error" => True);
|
||||
}
|
||||
|
||||
if($config->get_year_stats_shows) {
|
||||
//GET TRACKS
|
||||
$url = $connection . "/api/v2?apikey=" . $config->tautulli_apikey . "&cmd=get_history§ion_id=" . $library_id_music . "&media_type=track&include_activity=0&order_column=date&order_dir=desc&length=" . $config->tautulli_length;
|
||||
|
||||
if($config->ssl) {
|
||||
$response = json_decode(file_get_contents($url, false, stream_context_create($arrContextOptions)));
|
||||
} else {
|
||||
$response = json_decode(file_get_contents($url));
|
||||
}
|
||||
|
||||
$array = $response->response->data->data;
|
||||
|
||||
for ($i = 0; $i < count($array); $i++) {
|
||||
if($array[$i]->date > $config->wrapped_end) {
|
||||
continue;
|
||||
} else if ($array[$i]->date < $config->wrapped_start) {
|
||||
break;
|
||||
}
|
||||
|
||||
if($array[$i]->title == "" || $array[$i]->grandparent_title == "" || $array[$i]->parent_title == "") {
|
||||
continue;
|
||||
}
|
||||
|
||||
$user_found = False;
|
||||
$artist_found = False;
|
||||
|
||||
|
||||
if($array[$i]->date < $earliest_date_tracks) {
|
||||
$earliest_date_tracks = $array[$i]->date;
|
||||
}
|
||||
|
||||
for ($j = 0; $j < count($users); $j++) {
|
||||
if($users[$j]["id"] == $array[$i]->user_id) {
|
||||
$users[$j]["duration"] = intval($users[$j]["duration"]) + $array[$i]->duration;
|
||||
$users[$j]["duration_artists"] = intval($users[$j]["duration_artists"]) + $array[$i]->duration;
|
||||
$users[$j]["plays"] = intval($users[$j]["plays"]) + 1;
|
||||
$user_found = True;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(!$user_found) {
|
||||
array_push($users, array("user" => $$array[$i]->friendly_name, "id" => $array[$i]->user_id, "duration" => $array[$i]->duration, "duration_movies" => 0, "duration_shows" => 0, "duration_artists" => $array[$i]->duration, "plays" => 1));
|
||||
}
|
||||
|
||||
for ($j = 0; $j < count($tracks); $j++) {
|
||||
if($array[$i]->title == $tracks[$j]["title"] && $array[$i]->parent_title == $tracks[$j]["parent_title"] && $array[$i]->grandparent_title == $tracks[$j]["grandparent_title"]) {
|
||||
$tracks[$j]["plays"] = intval($tracks[$j]["plays"]) + 1;
|
||||
$tracks[$j]["duration"] = intval($tracks[$j]["duration"]) + $array[$i]->duration;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(!$artist_found) {
|
||||
array_push($tracks, array("title" => $array[$i]->title, "parent_title" => $array[$i]->parent_title, "grandparent_title" => $array[$i]->grandparent_title, "plays" => 1, "duration" => $array[$i]->duration, "year" => $array[$i]->year, "rating_key" => $array[$i]->rating_key, "parent_rating_key" => $array[$i]->parent_rating_key, "grandparent_rating_key" => $array[$i]->grandparent_rating_key));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Sort tracks by duration
|
||||
$duration = array_column($tracks, 'duration');
|
||||
array_multisort($duration, SORT_DESC, $tracks);
|
||||
|
||||
} else {
|
||||
$tracks = array("message" => "Disabled in config.", "error" => True);
|
||||
}
|
||||
|
||||
// Sort users by combined duration
|
||||
$duration = array_column($users, 'duration');
|
||||
array_multisort($duration, SORT_DESC, $users);
|
||||
|
||||
$now = new DateTime('NOW');
|
||||
|
||||
return array("origin_date" => $now->format('Y-m-d'), "top_movies" => $movies, "top_movies_earliest" => $earliest_date_movies, "users" => $users, "top_shows" => $shows, "top_show_earliest" => $earliest_date_shows, "top_artists" => $tracks, "top_artists_earliest" => $earliest_date_tracks);
|
||||
}
|
||||
?>
|
28
get_stats.js
28
get_stats.js
|
@ -565,7 +565,7 @@ function load_users() {
|
|||
if(functions.get_year_stats_leaderboard) {
|
||||
|
||||
text += "<div class='boks2'>";
|
||||
text += top_list_names(results.year_stats.data.users, 'Top users');
|
||||
text += top_list_names(results.year_stats.year_users.data, 'Top users');
|
||||
text += "</div>";
|
||||
|
||||
var sum_movies = 0;
|
||||
|
@ -573,20 +573,20 @@ function load_users() {
|
|||
var sum_artists = 0;
|
||||
|
||||
if(functions.get_year_stats_movies) {
|
||||
for(i = 0; (i < results.year_stats.data.top_movies.length); i++) {
|
||||
sum_movies += results.year_stats.data.top_movies[i].duration;
|
||||
for(i = 0; (i < results.year_stats.year_movies.data.length); i++) {
|
||||
sum_movies += results.year_stats.year_movies.data[i].duration;
|
||||
}
|
||||
}
|
||||
|
||||
if(functions.get_year_stats_shows) {
|
||||
for(i = 0; (i < results.year_stats.data.top_shows.length); i++) {
|
||||
sum_shows += results.year_stats.data.top_shows[i].duration;
|
||||
for(i = 0; (i < results.year_stats.year_shows.data.length); i++) {
|
||||
sum_shows += results.year_stats.year_shows.data[i].duration;
|
||||
}
|
||||
}
|
||||
|
||||
if(functions.get_year_stats_music) {
|
||||
for(i = 0; (i < results.year_stats.data.top_artists.length); i++) {
|
||||
sum_artists += results.year_stats.data.top_artists[i].duration;
|
||||
for(i = 0; (i < results.year_stats.year_music.data.length); i++) {
|
||||
sum_artists += results.year_stats.year_music.data[i].duration;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -634,33 +634,33 @@ function load_users() {
|
|||
|
||||
if(functions.get_year_stats_movies) {
|
||||
text += "<div class='boks2'>";
|
||||
text += top_list(results.year_stats.data.top_movies, "Top movies", false, true);
|
||||
text += top_list(results.year_stats.year_movies.data, "Top movies", false, true);
|
||||
text += "</div>";
|
||||
}
|
||||
|
||||
if(functions.get_year_stats_shows) {
|
||||
text += "<div class='boks2'>";
|
||||
text += top_list(results.year_stats.data.top_shows, "Top shows", false, true);
|
||||
text += top_list(results.year_stats.year_shows.data, "Top shows", false, false);
|
||||
text += "</div>";
|
||||
}
|
||||
|
||||
if(functions.get_year_stats_music) {
|
||||
var artists = [];
|
||||
|
||||
for(var i = 0; i < results.year_stats.data.top_artists.length; i++) {
|
||||
for(var i = 0; i < results.year_stats.year_music.data.length; i++) {
|
||||
var found = false;
|
||||
|
||||
for(var j = 0; j < artists.length; j++) {
|
||||
if(artists[j].title == results.year_stats.data.top_artists[i].grandparent_title) {
|
||||
if(artists[j].title == results.year_stats.year_music.data[i].grandparent_title) {
|
||||
artists[j]["plays"] = artists[j].plays + 1;
|
||||
artists[j]["duration"] = results.year_stats.data.top_artists[i].duration + artists[j].duration;
|
||||
artists[j]["duration"] = results.year_stats.year_music.data[i].duration + artists[j].duration;
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(!found && results.year_stats.data.top_artists[i].grandparent_title != "") {
|
||||
artists.push({"title" : results.year_stats.data.top_artists[i].grandparent_title, "grandparent_rating_key" : results.year_stats.data.top_artists[i].grandparent_rating_key, "plays" : 1, "duration" : results.year_stats.data.top_artists[i].duration});
|
||||
if(!found && results.year_stats.year_music.data[i].grandparent_title != "") {
|
||||
artists.push({"title" : results.year_stats.year_music.data[i].grandparent_title, "grandparent_rating_key" : results.year_stats.year_music.data[i].grandparent_rating_key, "plays" : 1, "duration" : results.year_stats.year_music.data[i].duration});
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue