mirror of
https://github.com/simon-ding/polaris.git
synced 2026-06-09 11:39:46 +08:00
fix: movie suggested naming
This commit is contained in:
@@ -93,7 +93,8 @@ func (s *Server) Serve() error {
|
|||||||
tv.GET("/record/:id", HttpHandler(s.GetMediaDetails))
|
tv.GET("/record/:id", HttpHandler(s.GetMediaDetails))
|
||||||
tv.DELETE("/record/:id", HttpHandler(s.DeleteFromWatchlist))
|
tv.DELETE("/record/:id", HttpHandler(s.DeleteFromWatchlist))
|
||||||
tv.GET("/resolutions", HttpHandler(s.GetAvailableResolutions))
|
tv.GET("/resolutions", HttpHandler(s.GetAvailableResolutions))
|
||||||
tv.GET("/suggest/:tmdb_id", HttpHandler(s.SuggestedSeriesFolderName))
|
tv.GET("/suggest/tv/:tmdb_id", HttpHandler(s.SuggestedSeriesFolderName))
|
||||||
|
tv.GET("/suggest/movie/:tmdb_id", HttpHandler(s.SuggestedMovieFolderName))
|
||||||
}
|
}
|
||||||
indexer := api.Group("/indexer")
|
indexer := api.Group("/indexer")
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -60,22 +60,40 @@ func (s *Server) SuggestedSeriesFolderName(c *gin.Context) (interface{}, error)
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("id is not int: %v", ids)
|
return nil, fmt.Errorf("id is not int: %v", ids)
|
||||||
}
|
}
|
||||||
var name, originalName, year string
|
|
||||||
d, err := s.MustTMDB().GetTvDetails(id, s.language)
|
d, err := s.MustTMDB().GetTvDetails(id, s.language)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
d1, err := s.MustTMDB().GetMovieDetails(id, s.language)
|
return nil, errors.Wrap(err, "get tv details")
|
||||||
if err != nil {
|
|
||||||
return nil, errors.Wrap(err, "get movie details")
|
|
||||||
}
|
}
|
||||||
name = d1.Title
|
name := d.Name
|
||||||
originalName = d1.OriginalTitle
|
originalName := d.OriginalName
|
||||||
year = strings.Split(d1.ReleaseDate, "-")[0]
|
year := strings.Split(d.FirstAirDate, "-")[0]
|
||||||
|
|
||||||
|
name = fmt.Sprintf("%s %s", name, originalName)
|
||||||
|
|
||||||
|
if !utils.ContainsChineseChar(name) {
|
||||||
|
name = originalName
|
||||||
|
}
|
||||||
|
if year != "" {
|
||||||
|
name = fmt.Sprintf("%s (%s)", name, year)
|
||||||
|
}
|
||||||
|
log.Infof("tv series of tmdb id %v suggestting name is %v", id, name)
|
||||||
|
return gin.H{"name": name}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *Server) SuggestedMovieFolderName(c *gin.Context) (interface{}, error) {
|
||||||
|
ids := c.Param("tmdb_id")
|
||||||
|
id, err := strconv.Atoi(ids)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("id is not int: %v", ids)
|
||||||
|
}
|
||||||
|
d1, err := s.MustTMDB().GetMovieDetails(id, s.language)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Wrap(err, "get movie details")
|
||||||
|
}
|
||||||
|
name := d1.Title
|
||||||
|
originalName := d1.OriginalTitle
|
||||||
|
year := strings.Split(d1.ReleaseDate, "-")[0]
|
||||||
|
|
||||||
} else {
|
|
||||||
name = d.Name
|
|
||||||
originalName = d.OriginalName
|
|
||||||
year = strings.Split(d.FirstAirDate, "-")[0]
|
|
||||||
}
|
|
||||||
name = fmt.Sprintf("%s %s", name, originalName)
|
name = fmt.Sprintf("%s %s", name, originalName)
|
||||||
|
|
||||||
if !utils.ContainsChineseChar(name) {
|
if !utils.ContainsChineseChar(name) {
|
||||||
|
|||||||
@@ -14,7 +14,8 @@ class APIs {
|
|||||||
static final availableTorrentsUrl = "$_baseUrl/api/v1/media/torrents/";
|
static final availableTorrentsUrl = "$_baseUrl/api/v1/media/torrents/";
|
||||||
static final downloadTorrentUrl = "$_baseUrl/api/v1/media/torrents/download";
|
static final downloadTorrentUrl = "$_baseUrl/api/v1/media/torrents/download";
|
||||||
static final seriesDetailUrl = "$_baseUrl/api/v1/media/record/";
|
static final seriesDetailUrl = "$_baseUrl/api/v1/media/record/";
|
||||||
static final suggestedTvName = "$_baseUrl/api/v1/media/suggest/";
|
static final suggestedTvName = "$_baseUrl/api/v1/media/suggest/tv/";
|
||||||
|
static final suggestedMovieName = "$_baseUrl/api/v1/media/suggest/movie/";
|
||||||
static final searchAndDownloadUrl = "$_baseUrl/api/v1/indexer/download";
|
static final searchAndDownloadUrl = "$_baseUrl/api/v1/indexer/download";
|
||||||
static final allIndexersUrl = "$_baseUrl/api/v1/indexer/";
|
static final allIndexersUrl = "$_baseUrl/api/v1/indexer/";
|
||||||
static final addIndexerUrl = "$_baseUrl/api/v1/indexer/add";
|
static final addIndexerUrl = "$_baseUrl/api/v1/indexer/add";
|
||||||
|
|||||||
@@ -1,12 +1,13 @@
|
|||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
|
|
||||||
|
import 'package:dio/dio.dart';
|
||||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||||
import 'package:quiver/strings.dart';
|
import 'package:quiver/strings.dart';
|
||||||
import 'package:ui/providers/APIs.dart';
|
import 'package:ui/providers/APIs.dart';
|
||||||
import 'package:ui/providers/server_response.dart';
|
import 'package:ui/providers/server_response.dart';
|
||||||
|
|
||||||
final tvWatchlistDataProvider = FutureProvider.autoDispose((ref) async {
|
final tvWatchlistDataProvider = FutureProvider.autoDispose((ref) async {
|
||||||
final dio = await APIs.getDio();
|
final dio = APIs.getDio();
|
||||||
var resp = await dio.get(APIs.watchlistTvUrl);
|
var resp = await dio.get(APIs.watchlistTvUrl);
|
||||||
var sp = ServerResponse.fromJson(resp.data);
|
var sp = ServerResponse.fromJson(resp.data);
|
||||||
List<MediaDetail> favList = List.empty(growable: true);
|
List<MediaDetail> favList = List.empty(growable: true);
|
||||||
@@ -17,10 +18,17 @@ final tvWatchlistDataProvider = FutureProvider.autoDispose((ref) async {
|
|||||||
return favList;
|
return favList;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
typedef NamingType = ({int id, String mediaType});
|
||||||
|
|
||||||
final suggestNameDataProvider = FutureProvider.autoDispose.family(
|
final suggestNameDataProvider = FutureProvider.autoDispose.family(
|
||||||
(ref, int arg) async {
|
(ref, NamingType arg) async {
|
||||||
final dio = await APIs.getDio();
|
final dio = APIs.getDio();
|
||||||
var resp = await dio.get(APIs.suggestedTvName + arg.toString());
|
Response<dynamic> resp;
|
||||||
|
if (arg.mediaType == "tv") {
|
||||||
|
resp = await dio.get(APIs.suggestedTvName + arg.id.toString());
|
||||||
|
} else {
|
||||||
|
resp = await dio.get(APIs.suggestedMovieName + arg.id.toString());
|
||||||
|
}
|
||||||
var sp = ServerResponse.fromJson(resp.data);
|
var sp = ServerResponse.fromJson(resp.data);
|
||||||
if (sp.code != 0) {
|
if (sp.code != 0) {
|
||||||
throw sp.message;
|
throw sp.message;
|
||||||
@@ -92,7 +100,7 @@ class SearchPageData
|
|||||||
"storage_id": storageId,
|
"storage_id": storageId,
|
||||||
"resolution": resolution,
|
"resolution": resolution,
|
||||||
"folder": folder,
|
"folder": folder,
|
||||||
"download_history_episodes":downloadHistoryEpisodes
|
"download_history_episodes": downloadHistoryEpisodes
|
||||||
});
|
});
|
||||||
var sp = ServerResponse.fromJson(resp.data);
|
var sp = ServerResponse.fromJson(resp.data);
|
||||||
if (sp.code != 0) {
|
if (sp.code != 0) {
|
||||||
@@ -241,4 +249,3 @@ class SearchResult {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -155,7 +155,7 @@ class _SearchPageState extends ConsumerState<SearchPage> {
|
|||||||
String resSelected = "1080p";
|
String resSelected = "1080p";
|
||||||
int storageSelected = 0;
|
int storageSelected = 0;
|
||||||
var storage = ref.watch(storageSettingProvider);
|
var storage = ref.watch(storageSettingProvider);
|
||||||
var name = ref.watch(suggestNameDataProvider(item.id!));
|
var name = ref.watch(suggestNameDataProvider((id: item.id!, mediaType: item.mediaType!)));
|
||||||
bool downloadHistoryEpisodes = false;
|
bool downloadHistoryEpisodes = false;
|
||||||
bool buttonTapped = false;
|
bool buttonTapped = false;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user