mirror of
https://github.com/Ombi-app/Ombi.git
synced 2025-08-19 04:49:33 -07:00
!wip
This commit is contained in:
parent
1101abf92c
commit
0a97724731
7 changed files with 101 additions and 7 deletions
|
@ -38,7 +38,7 @@
|
||||||
<ul class="nav navbar-nav">
|
<ul class="nav navbar-nav">
|
||||||
<li id="Requests" [routerLinkActive]="['active']">
|
<li id="Requests" [routerLinkActive]="['active']">
|
||||||
<a [routerLink]="['/recentlyadded']">
|
<a [routerLink]="['/recentlyadded']">
|
||||||
<i class="fa fa-th-list"></i> {{ 'NavigationBar.RecentlyAdded' | translate }}</a>
|
<i class="fa fa-check"></i> {{ 'NavigationBar.RecentlyAdded' | translate }}</a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<ul *ngIf="issuesEnabled" class="nav navbar-nav">
|
<ul *ngIf="issuesEnabled" class="nav navbar-nav">
|
||||||
|
|
|
@ -7,6 +7,9 @@ export interface IRecentlyAddedMovies {
|
||||||
releaseYear: string;
|
releaseYear: string;
|
||||||
addedAt: Date;
|
addedAt: Date;
|
||||||
quality: string;
|
quality: string;
|
||||||
|
|
||||||
|
// For UI only
|
||||||
|
posterPath: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface IRecentlyAddedRangeModel {
|
export interface IRecentlyAddedRangeModel {
|
||||||
|
|
|
@ -3,4 +3,15 @@
|
||||||
<hr />
|
<hr />
|
||||||
<p-calendar [(ngModel)]="range" showButtonBar="true" selectionMode="range" (onClose)="close()"></p-calendar>
|
<p-calendar [(ngModel)]="range" showButtonBar="true" selectionMode="range" (onClose)="close()"></p-calendar>
|
||||||
<hr />
|
<hr />
|
||||||
|
|
||||||
|
<p-carousel [value]="movies" [headerText]="'Movies'" (onPage)="page($event)">
|
||||||
|
<ng-template let-movie pTemplate="movie">
|
||||||
|
<img class="img-responsive poster" src="{{movie.posterPath}}" style="width: 30px" alt="poster">
|
||||||
|
|
||||||
|
{{movie.title}}
|
||||||
|
</ng-template>
|
||||||
|
</p-carousel>
|
||||||
|
|
||||||
|
|
||||||
|
<hr/>
|
||||||
{{movies | json}}
|
{{movies | json}}
|
|
@ -1,6 +1,6 @@
|
||||||
import { Component, OnInit } from "@angular/core";
|
import { Component, OnInit } from "@angular/core";
|
||||||
|
|
||||||
import { RecentlyAddedService } from "../services/index";
|
import { ImageService, RecentlyAddedService } from "../services";
|
||||||
import { IRecentlyAddedMovies, IRecentlyAddedRangeModel } from "./../interfaces";
|
import { IRecentlyAddedMovies, IRecentlyAddedRangeModel } from "./../interfaces";
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
|
@ -11,7 +11,8 @@ export class RecentlyAddedComponent implements OnInit {
|
||||||
public movies: IRecentlyAddedMovies[];
|
public movies: IRecentlyAddedMovies[];
|
||||||
public range: Date[];
|
public range: Date[];
|
||||||
|
|
||||||
constructor(private recentlyAddedService: RecentlyAddedService) {}
|
constructor(private recentlyAddedService: RecentlyAddedService,
|
||||||
|
private imageService: ImageService) {}
|
||||||
|
|
||||||
public ngOnInit() {
|
public ngOnInit() {
|
||||||
const weekAgo = new Date();
|
const weekAgo = new Date();
|
||||||
|
@ -19,7 +20,19 @@ export class RecentlyAddedComponent implements OnInit {
|
||||||
|
|
||||||
const today =new Date();
|
const today =new Date();
|
||||||
const initModel = <IRecentlyAddedRangeModel>{from: weekAgo, to: today};
|
const initModel = <IRecentlyAddedRangeModel>{from: weekAgo, to: today};
|
||||||
this.recentlyAddedService.getRecentlyAddedMovies(initModel).subscribe(x => this.movies = x);
|
this.recentlyAddedService.getRecentlyAddedMovies(initModel).subscribe(x => {
|
||||||
|
this.movies = x;
|
||||||
|
|
||||||
|
this.movies.forEach((movie) => {
|
||||||
|
if(movie.theMovieDbId) {
|
||||||
|
this.imageService.getMoviePoster(movie.theMovieDbId).subscribe(p => {
|
||||||
|
movie.posterPath = p;
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
movie.posterPath = "";
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public close() {
|
public close() {
|
||||||
|
@ -33,4 +46,9 @@ export class RecentlyAddedComponent implements OnInit {
|
||||||
const initModel = <IRecentlyAddedRangeModel>{from: this.range[0], to: this.range[1]};
|
const initModel = <IRecentlyAddedRangeModel>{from: this.range[0], to: this.range[1]};
|
||||||
this.recentlyAddedService.getRecentlyAddedMovies(initModel).subscribe(x => this.movies = x);
|
this.recentlyAddedService.getRecentlyAddedMovies(initModel).subscribe(x => this.movies = x);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public page(event: any) {
|
||||||
|
debugger;
|
||||||
|
console.log(event);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,9 +3,9 @@ import { RouterModule, Routes } from "@angular/router";
|
||||||
|
|
||||||
import { NgbModule } from "@ng-bootstrap/ng-bootstrap";
|
import { NgbModule } from "@ng-bootstrap/ng-bootstrap";
|
||||||
import { OrderModule } from "ngx-order-pipe";
|
import { OrderModule } from "ngx-order-pipe";
|
||||||
import { CalendarModule, PaginatorModule, SharedModule, TabViewModule } from "primeng/primeng";
|
import { CalendarModule, CarouselModule, PaginatorModule, SharedModule, TabViewModule } from "primeng/primeng";
|
||||||
|
|
||||||
import { IdentityService, RecentlyAddedService } from "../services";
|
import { IdentityService, ImageService, RecentlyAddedService } from "../services";
|
||||||
|
|
||||||
import { AuthGuard } from "../auth/auth.guard";
|
import { AuthGuard } from "../auth/auth.guard";
|
||||||
|
|
||||||
|
@ -27,6 +27,7 @@ const routes: Routes = [
|
||||||
PaginatorModule,
|
PaginatorModule,
|
||||||
TabViewModule,
|
TabViewModule,
|
||||||
CalendarModule,
|
CalendarModule,
|
||||||
|
CarouselModule,
|
||||||
],
|
],
|
||||||
declarations: [
|
declarations: [
|
||||||
RecentlyAddedComponent,
|
RecentlyAddedComponent,
|
||||||
|
@ -37,6 +38,7 @@ const routes: Routes = [
|
||||||
providers: [
|
providers: [
|
||||||
IdentityService,
|
IdentityService,
|
||||||
RecentlyAddedService,
|
RecentlyAddedService,
|
||||||
|
ImageService,
|
||||||
],
|
],
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|
|
@ -19,5 +19,11 @@ export class ImageService extends ServiceHelpers {
|
||||||
|
|
||||||
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});
|
||||||
|
}
|
||||||
|
public getMoviePoster(themoviedbid: string): Observable<string> {
|
||||||
|
return this.http.get<string>(`${this.url}poster/movie/${themoviedbid}`, {headers: this.headers});
|
||||||
|
}
|
||||||
|
public getTvPoster(tvdbid: number): Observable<string> {
|
||||||
|
return this.http.get<string>(`${this.url}poster/tv/${tvdbid}`, {headers: this.headers});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,6 +37,10 @@ namespace Ombi.Controllers
|
||||||
var key = await _cache.GetOrAdd(CacheKeys.FanartTv, async () => await Config.Get(Store.Entities.ConfigurationTypes.FanartTv), DateTime.Now.AddDays(1));
|
var key = await _cache.GetOrAdd(CacheKeys.FanartTv, async () => await Config.Get(Store.Entities.ConfigurationTypes.FanartTv), DateTime.Now.AddDays(1));
|
||||||
|
|
||||||
var images = await Api.GetTvImages(tvdbid, key.Value);
|
var images = await Api.GetTvImages(tvdbid, key.Value);
|
||||||
|
if (images == null)
|
||||||
|
{
|
||||||
|
return string.Empty;
|
||||||
|
}
|
||||||
if (images.tvbanner != null)
|
if (images.tvbanner != null)
|
||||||
{
|
{
|
||||||
return images.tvbanner.FirstOrDefault()?.url ?? string.Empty;
|
return images.tvbanner.FirstOrDefault()?.url ?? string.Empty;
|
||||||
|
@ -48,6 +52,56 @@ namespace Ombi.Controllers
|
||||||
return string.Empty;
|
return string.Empty;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[HttpGet("poster/movie/{movieDbId}")]
|
||||||
|
public async Task<string> GetMoviePoster(int movieDbId)
|
||||||
|
{
|
||||||
|
var key = await _cache.GetOrAdd(CacheKeys.FanartTv, async () => await Config.Get(Store.Entities.ConfigurationTypes.FanartTv), DateTime.Now.AddDays(1));
|
||||||
|
|
||||||
|
var images = await Api.GetMovieImages(movieDbId, key.Value);
|
||||||
|
|
||||||
|
if (images == null)
|
||||||
|
{
|
||||||
|
return string.Empty;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (images.movieposter?.Any() ?? false)
|
||||||
|
{
|
||||||
|
return images.movieposter.OrderBy(x => x.likes).Select(x => x.url).FirstOrDefault();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (images.hdmovieclearart?.Any() ?? false)
|
||||||
|
{
|
||||||
|
return images.hdmovieclearart.OrderBy(x => x.likes).Select(x => x.url).FirstOrDefault();
|
||||||
|
}
|
||||||
|
|
||||||
|
return string.Empty;
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpGet("poster/tv/{tvdbid}")]
|
||||||
|
public async Task<string> GetTvPoster(int tvdbid)
|
||||||
|
{
|
||||||
|
var key = await _cache.GetOrAdd(CacheKeys.FanartTv, async () => await Config.Get(Store.Entities.ConfigurationTypes.FanartTv), DateTime.Now.AddDays(1));
|
||||||
|
|
||||||
|
var images = await Api.GetTvImages(tvdbid, key.Value);
|
||||||
|
|
||||||
|
if (images == null)
|
||||||
|
{
|
||||||
|
return string.Empty;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (images.tvposter?.Any() ?? false)
|
||||||
|
{
|
||||||
|
return images.tvposter.OrderBy(x => x.likes).Select(x => x.url).FirstOrDefault();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (images.tvthumb?.Any() ?? false)
|
||||||
|
{
|
||||||
|
return images.tvthumb.OrderBy(x => x.likes).Select(x => x.url).FirstOrDefault();
|
||||||
|
}
|
||||||
|
|
||||||
|
return string.Empty;
|
||||||
|
}
|
||||||
|
|
||||||
[HttpGet("background")]
|
[HttpGet("background")]
|
||||||
public async Task<object> GetBackgroundImage()
|
public async Task<object> GetBackgroundImage()
|
||||||
{
|
{
|
||||||
|
@ -64,7 +118,7 @@ namespace Ombi.Controllers
|
||||||
{
|
{
|
||||||
var item = rand.Next(moviesArray.Length);
|
var item = rand.Next(moviesArray.Length);
|
||||||
var result = await Api.GetMovieImages(moviesArray[item], key.Value);
|
var result = await Api.GetMovieImages(moviesArray[item], key.Value);
|
||||||
|
|
||||||
while (!result.moviebackground.Any())
|
while (!result.moviebackground.Any())
|
||||||
{
|
{
|
||||||
result = await Api.GetMovieImages(moviesArray[item], key.Value);
|
result = await Api.GetMovieImages(moviesArray[item], key.Value);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue