mirror of
https://github.com/Ombi-app/Ombi.git
synced 2025-08-19 04:49:33 -07:00
feat: Added the image background title to the page
This commit is contained in:
parent
f6c1cd1236
commit
5edea28a80
6 changed files with 111 additions and 26 deletions
|
@ -1,4 +1,6 @@
|
||||||
<div @fadeInOut class="bg" [style.background-image]="background">
|
<div @fadeInOut class="bg" [style.background-image]="background">
|
||||||
<div class="login-gradient-bar">
|
<div class="login-gradient-bar">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="poster-desc">{{name}}</div>
|
||||||
</div>
|
</div>
|
|
@ -13,4 +13,14 @@
|
||||||
height: 100vh;
|
height: 100vh;
|
||||||
width: 100vw;
|
width: 100vw;
|
||||||
position: fixed;
|
position: fixed;
|
||||||
|
}
|
||||||
|
|
||||||
|
.poster-desc {
|
||||||
|
padding-left: 1%;
|
||||||
|
color: white;
|
||||||
|
height: 100vh;
|
||||||
|
width: 100vw;
|
||||||
|
display: flex;
|
||||||
|
justify-content: end;
|
||||||
|
flex-direction: column;
|
||||||
}
|
}
|
|
@ -1,6 +1,6 @@
|
||||||
import { OmbiCommonModules } from "../modules";
|
import { OmbiCommonModules } from "../modules";
|
||||||
import { Component, OnDestroy, OnInit } from "@angular/core";
|
import { Component, OnDestroy, OnInit } from "@angular/core";
|
||||||
import { DomSanitizer, SafeStyle } from "@angular/platform-browser";
|
import { DomSanitizer } from "@angular/platform-browser";
|
||||||
import { BrowserAnimationsModule } from "@angular/platform-browser/animations";
|
import { BrowserAnimationsModule } from "@angular/platform-browser/animations";
|
||||||
import { ImageService } from "../../services";
|
import { ImageService } from "../../services";
|
||||||
import { fadeInOutAnimation } from "app/animations/fadeinout";
|
import { fadeInOutAnimation } from "app/animations/fadeinout";
|
||||||
|
@ -17,6 +17,7 @@ import { fadeInOutAnimation } from "app/animations/fadeinout";
|
||||||
export class ImageBackgroundComponent implements OnInit, OnDestroy {
|
export class ImageBackgroundComponent implements OnInit, OnDestroy {
|
||||||
|
|
||||||
public background: any;
|
public background: any;
|
||||||
|
public name: string;
|
||||||
private timer: NodeJS.Timer;
|
private timer: NodeJS.Timer;
|
||||||
|
|
||||||
constructor(private images: ImageService, private sanitizer: DomSanitizer) { }
|
constructor(private images: ImageService, private sanitizer: DomSanitizer) { }
|
||||||
|
@ -34,8 +35,9 @@ import { fadeInOutAnimation } from "app/animations/fadeinout";
|
||||||
}
|
}
|
||||||
|
|
||||||
private cycleBackground() {
|
private cycleBackground() {
|
||||||
this.images.getRandomBackground().subscribe((x) => {
|
this.images.getRandomBackgroundWithInfo().subscribe((x) => {
|
||||||
this.background = this.sanitizer.bypassSecurityTrustStyle("url(" + x.url + ")");
|
this.background = this.sanitizer.bypassSecurityTrustStyle("url(" + x.url + ")");
|
||||||
|
this.name = x.name;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,3 +1,7 @@
|
||||||
export interface IImages {
|
export interface IImages {
|
||||||
url: string;
|
url: string;
|
||||||
}
|
}
|
||||||
|
export interface IImagesInfo {
|
||||||
|
url: string;
|
||||||
|
name: string;
|
||||||
|
}
|
||||||
|
|
|
@ -4,7 +4,7 @@ import { Observable } from "rxjs";
|
||||||
|
|
||||||
import { HttpClient } from "@angular/common/http";
|
import { HttpClient } from "@angular/common/http";
|
||||||
|
|
||||||
import { IImages } from "../interfaces";
|
import { IImages, IImagesInfo } from "../interfaces";
|
||||||
import { ServiceHelpers } from "./service.helpers";
|
import { ServiceHelpers } from "./service.helpers";
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
|
@ -17,6 +17,10 @@ export class ImageService extends ServiceHelpers {
|
||||||
return this.http.get<IImages>(`${this.url}background/`, {headers: this.headers});
|
return this.http.get<IImages>(`${this.url}background/`, {headers: this.headers});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public getRandomBackgroundWithInfo(): Observable<IImagesInfo> {
|
||||||
|
return this.http.get<IImagesInfo>(`${this.url}background/info`, {headers: this.headers});
|
||||||
|
}
|
||||||
|
|
||||||
public getTvBanner(tvdbid: number): Observable<string> {
|
public getTvBanner(tvdbid: number): Observable<string> {
|
||||||
return this.http.get<string>(`${this.url}tv/${tvdbid}`, {headers: this.headers});
|
return this.http.get<string>(`${this.url}tv/${tvdbid}`, {headers: this.headers});
|
||||||
}
|
}
|
||||||
|
@ -31,8 +35,9 @@ export class ImageService extends ServiceHelpers {
|
||||||
|
|
||||||
public getMovieBackground(movieDbId: string): Observable<string> {
|
public getMovieBackground(movieDbId: string): Observable<string> {
|
||||||
return this.http.get<string>(`${this.url}background/movie/${movieDbId}`, { headers: this.headers });
|
return this.http.get<string>(`${this.url}background/movie/${movieDbId}`, { headers: this.headers });
|
||||||
}
|
}
|
||||||
public getMovieBanner(movieDbId: string): Observable<string> {
|
|
||||||
|
public getMovieBanner(movieDbId: string): Observable<string> {
|
||||||
return this.http.get<string>(`${this.url}banner/movie/${movieDbId}`, { headers: this.headers });
|
return this.http.get<string>(`${this.url}banner/movie/${movieDbId}`, { headers: this.headers });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -45,9 +45,9 @@ namespace Ombi.Controllers.V1
|
||||||
{
|
{
|
||||||
return string.Empty;
|
return string.Empty;
|
||||||
}
|
}
|
||||||
var key = await _cache.GetOrAddAsync(CacheKeys.FanartTv, () => Config.GetAsync(Store.Entities.ConfigurationTypes.FanartTv), DateTimeOffset.Now.AddDays(1));
|
var key = await _cache.GetOrAddAsync(CacheKeys.FanartTv, () => Config.GetAsync(Store.Entities.ConfigurationTypes.FanartTv), DateTimeOffset.Now.AddDays(1));
|
||||||
|
|
||||||
var images = await _cache.GetOrAddAsync($"{CacheKeys.FanartTv}tv{tvdbid}", () => FanartTvApi.GetTvImages(tvdbid, key.Value), DateTimeOffset.Now.AddDays(1));
|
var images = await _cache.GetOrAddAsync($"{CacheKeys.FanartTv}tv{tvdbid}", () => FanartTvApi.GetTvImages(tvdbid, key.Value), DateTimeOffset.Now.AddDays(1));
|
||||||
if (images == null)
|
if (images == null)
|
||||||
{
|
{
|
||||||
return string.Empty;
|
return string.Empty;
|
||||||
|
@ -70,16 +70,16 @@ namespace Ombi.Controllers.V1
|
||||||
[HttpGet("poster")]
|
[HttpGet("poster")]
|
||||||
public async Task<string> GetRandomPoster()
|
public async Task<string> GetRandomPoster()
|
||||||
{
|
{
|
||||||
var key = await _cache.GetOrAddAsync(CacheKeys.FanartTv, () => Config.GetAsync(Store.Entities.ConfigurationTypes.FanartTv), DateTimeOffset.Now.AddDays(1));
|
var key = await _cache.GetOrAddAsync(CacheKeys.FanartTv, () => Config.GetAsync(Store.Entities.ConfigurationTypes.FanartTv), DateTimeOffset.Now.AddDays(1));
|
||||||
var rand = new Random();
|
var rand = new Random();
|
||||||
var val = rand.Next(1, 3);
|
var val = rand.Next(1, 3);
|
||||||
if (val == 1)
|
if (val == 1)
|
||||||
{
|
{
|
||||||
var movies = (await _movieEngineV2.PopularMovies(0, 10, HttpContext.RequestAborted ,"en")).ToArray();
|
var movies = (await _movieEngineV2.PopularMovies(0, 10, HttpContext.RequestAborted, "en")).ToArray();
|
||||||
var selectedMovieIndex = rand.Next(movies.Count());
|
var selectedMovieIndex = rand.Next(movies.Count());
|
||||||
var movie = movies[selectedMovieIndex];
|
var movie = movies[selectedMovieIndex];
|
||||||
|
|
||||||
var images = await _cache.GetOrAddAsync($"{CacheKeys.FanartTv}movie{movie.Id}", () => FanartTvApi.GetMovieImages(movie.Id.ToString(), key.Value), DateTimeOffset.Now.AddDays(1));
|
var images = await _cache.GetOrAddAsync($"{CacheKeys.FanartTv}movie{movie.Id}", () => FanartTvApi.GetMovieImages(movie.Id.ToString(), key.Value), DateTimeOffset.Now.AddDays(1));
|
||||||
if (images == null)
|
if (images == null)
|
||||||
{
|
{
|
||||||
return string.Empty;
|
return string.Empty;
|
||||||
|
@ -99,7 +99,7 @@ namespace Ombi.Controllers.V1
|
||||||
{
|
{
|
||||||
return images.moviethumb.OrderBy(x => x.likes).Select(x => x.url).FirstOrDefault();
|
return images.moviethumb.OrderBy(x => x.likes).Select(x => x.url).FirstOrDefault();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
var tv = (await _tvSearchEngineV2.Popular(0, 10, "en")).ToArray();
|
var tv = (await _tvSearchEngineV2.Popular(0, 10, "en")).ToArray();
|
||||||
|
@ -114,9 +114,9 @@ namespace Ombi.Controllers.V1
|
||||||
[HttpGet("poster/movie/{movieDbId}")]
|
[HttpGet("poster/movie/{movieDbId}")]
|
||||||
public async Task<string> GetMoviePoster(string movieDbId)
|
public async Task<string> GetMoviePoster(string movieDbId)
|
||||||
{
|
{
|
||||||
var key = await _cache.GetOrAddAsync(CacheKeys.FanartTv, () => Config.GetAsync(Store.Entities.ConfigurationTypes.FanartTv), DateTimeOffset.Now.AddDays(1));
|
var key = await _cache.GetOrAddAsync(CacheKeys.FanartTv, () => Config.GetAsync(Store.Entities.ConfigurationTypes.FanartTv), DateTimeOffset.Now.AddDays(1));
|
||||||
|
|
||||||
var images = await _cache.GetOrAddAsync($"{CacheKeys.FanartTv}movie{movieDbId}", () => FanartTvApi.GetMovieImages(movieDbId, key.Value), DateTimeOffset.Now.AddDays(1));
|
var images = await _cache.GetOrAddAsync($"{CacheKeys.FanartTv}movie{movieDbId}", () => FanartTvApi.GetMovieImages(movieDbId, key.Value), DateTimeOffset.Now.AddDays(1));
|
||||||
|
|
||||||
if (images == null)
|
if (images == null)
|
||||||
{
|
{
|
||||||
|
@ -148,9 +148,9 @@ namespace Ombi.Controllers.V1
|
||||||
{
|
{
|
||||||
return string.Empty;
|
return string.Empty;
|
||||||
}
|
}
|
||||||
var key = await _cache.GetOrAddAsync(CacheKeys.FanartTv, () => Config.GetAsync(Store.Entities.ConfigurationTypes.FanartTv), DateTimeOffset.Now.AddDays(1));
|
var key = await _cache.GetOrAddAsync(CacheKeys.FanartTv, () => Config.GetAsync(Store.Entities.ConfigurationTypes.FanartTv), DateTimeOffset.Now.AddDays(1));
|
||||||
|
|
||||||
var images = await _cache.GetOrAddAsync($"{CacheKeys.FanartTv}tv{tvdbid}", () => FanartTvApi.GetTvImages(tvdbid, key.Value), DateTimeOffset.Now.AddDays(1));
|
var images = await _cache.GetOrAddAsync($"{CacheKeys.FanartTv}tv{tvdbid}", () => FanartTvApi.GetTvImages(tvdbid, key.Value), DateTimeOffset.Now.AddDays(1));
|
||||||
|
|
||||||
if (images == null)
|
if (images == null)
|
||||||
{
|
{
|
||||||
|
@ -178,10 +178,10 @@ namespace Ombi.Controllers.V1
|
||||||
[HttpGet("background/movie/{movieDbId}")]
|
[HttpGet("background/movie/{movieDbId}")]
|
||||||
public async Task<string> GetMovieBackground(string movieDbId)
|
public async Task<string> GetMovieBackground(string movieDbId)
|
||||||
{
|
{
|
||||||
var key = await _cache.GetOrAddAsync(CacheKeys.FanartTv, () => Config.GetAsync(Store.Entities.ConfigurationTypes.FanartTv), DateTimeOffset.Now.AddDays(1));
|
var key = await _cache.GetOrAddAsync(CacheKeys.FanartTv, () => Config.GetAsync(Store.Entities.ConfigurationTypes.FanartTv), DateTimeOffset.Now.AddDays(1));
|
||||||
|
|
||||||
|
var images = await _cache.GetOrAddAsync($"{CacheKeys.FanartTv}movie{movieDbId}", () => FanartTvApi.GetMovieImages(movieDbId, key.Value), DateTimeOffset.Now.AddDays(1));
|
||||||
|
|
||||||
var images = await _cache.GetOrAddAsync($"{CacheKeys.FanartTv}movie{movieDbId}", () => FanartTvApi.GetMovieImages(movieDbId, key.Value), DateTimeOffset.Now.AddDays(1));
|
|
||||||
|
|
||||||
if (images == null)
|
if (images == null)
|
||||||
{
|
{
|
||||||
return string.Empty;
|
return string.Empty;
|
||||||
|
@ -203,9 +203,9 @@ namespace Ombi.Controllers.V1
|
||||||
[HttpGet("banner/movie/{movieDbId}")]
|
[HttpGet("banner/movie/{movieDbId}")]
|
||||||
public async Task<string> GetMovieBanner(string movieDbId)
|
public async Task<string> GetMovieBanner(string movieDbId)
|
||||||
{
|
{
|
||||||
var key = await _cache.GetOrAddAsync(CacheKeys.FanartTv, () => Config.GetAsync(Store.Entities.ConfigurationTypes.FanartTv), DateTimeOffset.Now.AddDays(1));
|
var key = await _cache.GetOrAddAsync(CacheKeys.FanartTv, () => Config.GetAsync(Store.Entities.ConfigurationTypes.FanartTv), DateTimeOffset.Now.AddDays(1));
|
||||||
|
|
||||||
var images = await _cache.GetOrAddAsync($"{CacheKeys.FanartTv}movie{movieDbId}", () => FanartTvApi.GetMovieImages(movieDbId, key.Value), DateTimeOffset.Now.AddDays(1));
|
var images = await _cache.GetOrAddAsync($"{CacheKeys.FanartTv}movie{movieDbId}", () => FanartTvApi.GetMovieImages(movieDbId, key.Value), DateTimeOffset.Now.AddDays(1));
|
||||||
|
|
||||||
if (images == null)
|
if (images == null)
|
||||||
{
|
{
|
||||||
|
@ -246,34 +246,34 @@ namespace Ombi.Controllers.V1
|
||||||
var movieUrl = string.Empty;
|
var movieUrl = string.Empty;
|
||||||
var tvUrl = string.Empty;
|
var tvUrl = string.Empty;
|
||||||
|
|
||||||
var key = await _cache.GetOrAddAsync(CacheKeys.FanartTv, () => Config.GetAsync(Store.Entities.ConfigurationTypes.FanartTv), DateTimeOffset.Now.AddDays(1));
|
var key = await _cache.GetOrAddAsync(CacheKeys.FanartTv, () => Config.GetAsync(Store.Entities.ConfigurationTypes.FanartTv), DateTimeOffset.Now.AddDays(1));
|
||||||
|
|
||||||
if (moviesArray.Length > 0)
|
if (moviesArray.Length > 0)
|
||||||
{
|
{
|
||||||
var item = rand.Next(moviesArray.Length);
|
var item = rand.Next(moviesArray.Length);
|
||||||
var result = await _cache.GetOrAddAsync($"{CacheKeys.FanartTv}movie{moviesArray[item]}", () => FanartTvApi.GetMovieImages(moviesArray[item].ToString(), key.Value), DateTimeOffset.Now.AddDays(1));
|
var result = await _cache.GetOrAddAsync($"{CacheKeys.FanartTv}movie{moviesArray[item]}", () => FanartTvApi.GetMovieImages(moviesArray[item].ToString(), key.Value), DateTimeOffset.Now.AddDays(1));
|
||||||
|
|
||||||
while (!result.moviebackground?.Any() ?? true)
|
while (!result.moviebackground?.Any() ?? true)
|
||||||
{
|
{
|
||||||
item = rand.Next(moviesArray.Length);
|
item = rand.Next(moviesArray.Length);
|
||||||
result = await _cache.GetOrAddAsync($"{CacheKeys.FanartTv}movie{moviesArray[item]}", () => FanartTvApi.GetMovieImages(moviesArray[item].ToString(), key.Value), DateTimeOffset.Now.AddDays(1));
|
result = await _cache.GetOrAddAsync($"{CacheKeys.FanartTv}movie{moviesArray[item]}", () => FanartTvApi.GetMovieImages(moviesArray[item].ToString(), key.Value), DateTimeOffset.Now.AddDays(1));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var otherRand = new Random();
|
var otherRand = new Random();
|
||||||
var res = otherRand.Next(result.moviebackground.Length);
|
var res = otherRand.Next(result.moviebackground.Length);
|
||||||
|
|
||||||
movieUrl = result.moviebackground[res].url;
|
movieUrl = result.moviebackground[res].url;
|
||||||
}
|
}
|
||||||
if (tvArray.Length > 0)
|
if (tvArray.Length > 0)
|
||||||
{
|
{
|
||||||
var item = rand.Next(tvArray.Length);
|
var item = rand.Next(tvArray.Length);
|
||||||
var result = await _cache.GetOrAddAsync($"{CacheKeys.FanartTv}tv{tvArray[item]}", () => FanartTvApi.GetTvImages(tvArray[item], key.Value), DateTimeOffset.Now.AddDays(1));
|
var result = await _cache.GetOrAddAsync($"{CacheKeys.FanartTv}tv{tvArray[item]}", () => FanartTvApi.GetTvImages(tvArray[item], key.Value), DateTimeOffset.Now.AddDays(1));
|
||||||
|
|
||||||
while (!result.showbackground?.Any() ?? true)
|
while (!result.showbackground?.Any() ?? true)
|
||||||
{
|
{
|
||||||
item = rand.Next(tvArray.Length);
|
item = rand.Next(tvArray.Length);
|
||||||
result = await _cache.GetOrAddAsync($"{CacheKeys.FanartTv}tv{tvArray[item]}", () => FanartTvApi.GetTvImages(tvArray[item], key.Value), DateTimeOffset.Now.AddDays(1));
|
result = await _cache.GetOrAddAsync($"{CacheKeys.FanartTv}tv{tvArray[item]}", () => FanartTvApi.GetTvImages(tvArray[item], key.Value), DateTimeOffset.Now.AddDays(1));
|
||||||
}
|
}
|
||||||
var otherRand = new Random();
|
var otherRand = new Random();
|
||||||
var res = otherRand.Next(result.showbackground.Length);
|
var res = otherRand.Next(result.showbackground.Length);
|
||||||
|
@ -294,5 +294,67 @@ namespace Ombi.Controllers.V1
|
||||||
}
|
}
|
||||||
return new { url = tvUrl };
|
return new { url = tvUrl };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[HttpGet("background/info")]
|
||||||
|
public async Task<object> GetBackgroundImageWithInfo()
|
||||||
|
{
|
||||||
|
var moviesArray = Options.Movies ?? Array.Empty<int>();
|
||||||
|
var tvArray = Options.TvShows ?? Array.Empty<int>();
|
||||||
|
|
||||||
|
var rand = new Random();
|
||||||
|
var movieUrl = string.Empty;
|
||||||
|
var movieName = string.Empty;
|
||||||
|
var tvName = string.Empty;
|
||||||
|
var tvUrl = string.Empty;
|
||||||
|
|
||||||
|
var key = await _cache.GetOrAddAsync(CacheKeys.FanartTv, () => Config.GetAsync(Store.Entities.ConfigurationTypes.FanartTv), DateTimeOffset.Now.AddDays(1));
|
||||||
|
|
||||||
|
if (moviesArray.Length > 0)
|
||||||
|
{
|
||||||
|
var item = rand.Next(moviesArray.Length);
|
||||||
|
var result = await _cache.GetOrAddAsync($"{CacheKeys.FanartTv}movie{moviesArray[item]}", () => FanartTvApi.GetMovieImages(moviesArray[item].ToString(), key.Value), DateTimeOffset.Now.AddDays(1));
|
||||||
|
|
||||||
|
while (!result.moviebackground?.Any() ?? true)
|
||||||
|
{
|
||||||
|
item = rand.Next(moviesArray.Length);
|
||||||
|
result = await _cache.GetOrAddAsync($"{CacheKeys.FanartTv}movie{moviesArray[item]}", () => FanartTvApi.GetMovieImages(moviesArray[item].ToString(), key.Value), DateTimeOffset.Now.AddDays(1));
|
||||||
|
}
|
||||||
|
|
||||||
|
var otherRand = new Random();
|
||||||
|
var res = otherRand.Next(result.moviebackground.Length);
|
||||||
|
|
||||||
|
movieUrl = result.moviebackground[res].url;
|
||||||
|
movieName = result.name;
|
||||||
|
}
|
||||||
|
if (tvArray.Length > 0)
|
||||||
|
{
|
||||||
|
var item = rand.Next(tvArray.Length);
|
||||||
|
var result = await _cache.GetOrAddAsync($"{CacheKeys.FanartTv}tv{tvArray[item]}", () => FanartTvApi.GetTvImages(tvArray[item], key.Value), DateTimeOffset.Now.AddDays(1));
|
||||||
|
|
||||||
|
while (!result.showbackground?.Any() ?? true)
|
||||||
|
{
|
||||||
|
item = rand.Next(tvArray.Length);
|
||||||
|
result = await _cache.GetOrAddAsync($"{CacheKeys.FanartTv}tv{tvArray[item]}", () => FanartTvApi.GetTvImages(tvArray[item], key.Value), DateTimeOffset.Now.AddDays(1));
|
||||||
|
}
|
||||||
|
var otherRand = new Random();
|
||||||
|
var res = otherRand.Next(result.showbackground.Length);
|
||||||
|
|
||||||
|
tvUrl = result.showbackground[res].url;
|
||||||
|
tvName = result.name;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!string.IsNullOrEmpty(movieUrl) && !string.IsNullOrEmpty(tvUrl))
|
||||||
|
{
|
||||||
|
var result = rand.Next(2);
|
||||||
|
if (result == 0) return new { url = movieUrl, name = movieName };
|
||||||
|
if (result == 1) return new { url = tvUrl, name = tvName };
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!string.IsNullOrEmpty(movieUrl))
|
||||||
|
{
|
||||||
|
return new { url = movieUrl, name = movieName };
|
||||||
|
}
|
||||||
|
return new { url = tvUrl, name = tvName };
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue