Stuff stuff stuff #44

Merged
PouuleT merged 24 commits from update-node into master 2021-08-30 12:59:08 +00:00
5 changed files with 78 additions and 74 deletions
Showing only changes of commit 13e5775c34 - Show all commits

View File

@ -59,13 +59,13 @@ func (m *Movie) MarshalJSON() ([]byte, error) {
// Append the Subtitles
for _, s := range m.pMovie.Subtitles {
sub := subtitles.Subtitle{Subtitle: s.Subtitle}
if !sub.Embedded {
subtitleURL, _ := m.client.DownloadURLWithToken(s)
movieToMarshal.Subtitles = append(movieToMarshal.Subtitles,
subtitles.Subtitle{
Subtitle: s.Subtitle,
URL: subtitleURL,
VVTFile: fmt.Sprintf("/movies/%s/subtitles/%s", m.ImdbID, s.Lang),
})
sub.URL = subtitleURL
sub.VVTFile = fmt.Sprintf("/movies/%s/subtitles/%s", m.ImdbID, s.Lang)
}
movieToMarshal.Subtitles = append(movieToMarshal.Subtitles, sub)
}
}

View File

@ -46,15 +46,15 @@ func (e *Episode) MarshalJSON() ([]byte, error) {
// Append the Subtitles
for _, s := range pEpisode.Subtitles {
sub := subtitles.Subtitle{Subtitle: s.Subtitle}
if !sub.Embedded {
subtitleURL, _ := e.show.client.DownloadURLWithToken(s)
subs = append(subs, subtitles.Subtitle{
Subtitle: &polochon.Subtitle{
File: polochon.File{Size: s.Size},
Lang: s.Lang,
},
URL: subtitleURL,
VVTFile: fmt.Sprintf("/shows/%s/seasons/%d/episodes/%d/subtitles/%s", e.ShowImdbID, e.Season, e.Episode, s.Lang),
})
sub.URL = subtitleURL
sub.VVTFile = fmt.Sprintf(
"/shows/%s/seasons/%d/episodes/%d/subtitles/%s",
e.ShowImdbID, e.Season, e.Episode, s.Lang)
}
subs = append(subs, sub)
}
}
}

View File

@ -35,14 +35,7 @@ export const SubtitlesButton = ({
const count = subtitles && subtitles.size !== 0 ? subtitles.size : 0;
let searching = fetchingSubtitles;
if (count > 0) {
subtitles.forEach((subtitle) => {
if (subtitle.searching === true) {
searching = true;
}
});
}
const searching = fetchingSubtitles.length > 0;
return (
<span className="mr-1 mb-1">
@ -87,31 +80,35 @@ export const SubtitlesButton = ({
SubtitlesButton.propTypes = {
subtitles: PropTypes.object,
inLibrary: PropTypes.bool.isRequired,
fetchingSubtitles: PropTypes.bool.isRequired,
fetchingSubtitles: PropTypes.array.isRequired,
search: PropTypes.func.isRequired,
};
export const SubtitleEntry = ({ subtitle, search }) => {
const lang = upperCaseFirst(subtitle.lang.split("_")[0]);
const size = subtitle.size ? subtitle.size : 0;
const embedded = subtitle.embedded ? subtitle.embedded : false;
const handleRefresh = () => {
search(subtitle.lang);
};
return (
<Dropdown.Item as="span">
<Dropdown.Item as="span" disabled={embedded}>
<div className="d-flex justify-content-between align-items-center">
<a href={subtitle.url ? subtitle.url : ""} className="link-unstyled">
{lang}
{embedded && <small className="ml-2">(Inside the video)</small>}
{size !== 0 && <span> ({prettySize(size)})</span>}
</a>
{!embedded && (
<div
onClick={handleRefresh}
className={`clickable fa ${
subtitle.searching ? "fa-spin" : ""
} fa-refresh`}
/>
)}
</div>
</Dropdown.Item>
);

View File

@ -13,7 +13,7 @@ const defaultState = {
const formatMovie = (movie) => {
movie.fetchingDetails = false;
movie.fetchingSubtitles = false;
movie.fetchingSubtitles = [];
movie.torrents = formatTorrents(movie);
movie.subtitles = formatSubtitles(movie.subtitles);
return movie;
@ -89,28 +89,28 @@ export default (state = defaultState, action) =>
draft.lastFetchUrl = action.payload.url;
break;
case "MOVIE_SUBTITLES_UPDATE_PENDING":
draft.movies.get(action.payload.main.imdbId).fetchingSubtitles = true;
if (
draft.movies
.get(action.payload.main.imdbId)
.subtitles.get(action.payload.main.lang)
) {
draft.movies
.get(action.payload.main.imdbId)
.subtitles.get(action.payload.main.lang).searching = true;
case "MOVIE_SUBTITLES_UPDATE_PENDING": {
let imdbId = action.payload.main.imdbId;
let lang = action.payload.main.lang;
draft.movies.get(imdbId).fetchingSubtitles.push(lang);
if (draft.movies.get(imdbId).subtitles.get(lang)) {
draft.movies.get(imdbId).subtitles.get(lang).searching = true;
}
break;
}
case "MOVIE_SUBTITLES_UPDATE_FULFILLED":
draft.movies.get(action.payload.main.imdbId).fetchingSubtitles = false;
draft.movies
.get(action.payload.main.imdbId)
.subtitles.set(
action.payload.response.data.lang,
formatSubtitle(action.payload.response.data)
);
case "MOVIE_SUBTITLES_UPDATE_FULFILLED": {
let imdbId = action.payload.main.imdbId;
let lang = action.payload.main.lang;
let data = action.payload.response.data;
draft.movies.get(imdbId).fetchingSubtitles = draft.movies
.get(imdbId)
.fetchingSubtitles.filter((l) => l != lang);
if (data) {
draft.movies.get(imdbId).subtitles.set(lang, formatSubtitle(data));
}
break;
}
case "SELECT_MOVIE":
draft.selectedImdbId = action.payload.imdbId;

View File

@ -15,7 +15,8 @@ const formatEpisode = (episode) => {
// Set the default fetching data
episode.fetching = false;
episode.fetchingSubtitles = false;
// Holds the languages of the subtitles currently fetching
episode.fetchingSubtitles = [];
};
export default (state = defaultState, action) =>
@ -100,36 +101,42 @@ export default (state = defaultState, action) =>
break;
}
case "EPISODE_SUBTITLES_UPDATE_PENDING":
case "EPISODE_SUBTITLES_UPDATE_PENDING": {
let season = action.payload.main.season;
let episode = action.payload.main.episode;
let lang = action.payload.main.lang;
draft.show.seasons
.get(action.payload.main.season)
.get(action.payload.main.episode).fetchingSubtitles = true;
if (
.get(season)
.get(episode)
.fetchingSubtitles.push(lang);
if (draft.show.seasons.get(season).get(episode).subtitles.get(lang)) {
draft.show.seasons
.get(action.payload.main.season)
.get(action.payload.main.episode)
.subtitles.get(action.payload.main.lang)
) {
draft.show.seasons
.get(action.payload.main.season)
.get(action.payload.main.episode)
.subtitles.get(action.payload.main.lang).searching = true;
.get(season)
.get(episode)
.subtitles.get(lang).searching = true;
}
break;
}
case "EPISODE_SUBTITLES_UPDATE_FULFILLED": {
let season = action.payload.main.season;
let episode = action.payload.main.episode;
let lang = action.payload.main.lang;
let data = action.payload.response.data;
draft.show.seasons.get(season).get(episode).fetchingSubtitles =
draft.show.seasons
.get(action.payload.main.season)
.get(action.payload.main.episode).fetchingSubtitles = false;
.get(season)
.get(episode)
.fetchingSubtitles.filter((l) => l != lang);
if (data) {
draft.show.seasons
.get(action.payload.main.season)
.get(action.payload.main.episode)
.subtitles.set(
action.payload.main.lang,
formatSubtitle(action.payload.response.data)
);
.get(season)
.get(episode)
.subtitles.set(lang, formatSubtitle(data));
}
break;
}
default:
return draft;
}