forked from vdr-projects/vdr-plugin-tvscraper
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathsearchResultTvMovie.h
64 lines (61 loc) · 2.93 KB
/
searchResultTvMovie.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include <string>
#include <vector>
struct sMatchWeight {
float match;
float weight;
};
class searchResultTvMovie {
public:
searchResultTvMovie(int id, bool movie, const char *year);
~searchResultTvMovie();
searchResultTvMovie(const searchResultTvMovie&) = delete;
searchResultTvMovie &operator= (const searchResultTvMovie &) = delete;
searchResultTvMovie(searchResultTvMovie &&) = default;
searchResultTvMovie &operator= (searchResultTvMovie &&) = default;
void log(cSv title) const;
static float normMatch(float x);
float getMatch() const;
bool operator< (const searchResultTvMovie &srm) const;
void setMatchText(int distance) { m_matches[0].match = (1000 - distance) / 1000.; }
void setMatchTextMin(int distance) {
m_matches[0].match = std::max(m_matches[0].match, (float)((1000 - distance) / 1000.)); }
void setMatchTextMin(int distance, const cNormedString &normedName) {
float match = (1000 - distance) / 1000.;
if (match > m_matches[0].match) {
m_matches[0].match = match;
m_normedName = normedName;
}
}
void updateMatchText(int distance);
void setPopularity(float popularity, float vote_average, int vote_count);
void setPopularity(float vote_average, int vote_count);
void setScore(int score);
void setDuration(int durationDeviation) { m_matches[3].match = durationDeviation<0?0:1 - normMatch(durationDeviation / 15.); }
void setDurationMatch(float matchDuration) { m_matches[3].match = matchDuration; }
void setActors(int numMatches) { m_matches[4].match = normMatch(numMatches/16.); }
void setDirectorWriter(int numMatches) { m_matches[5].match = normMatch(numMatches/2.); }
void setMatchYear(const cYears &years, int durationInSec);
float simulateMatchEpisode(int distance) { int o_dist = m_episode_distance; float old = m_matches[6].match; setMatchEpisode(distance); float r = getMatch(); m_matches[6].match = old; m_episode_distance = o_dist; return r; }
void setMatchEpisode(int distance);
int getMatchEpisode() const { return m_episode_distance; }
float getMatchText() const { return m_matches[0].match; }
void setBaseNameEquShortText() { m_matches[7].match = 1.0; }
void setPositionInExternalResult(int positionInExternalResult) { m_matches[8].match = 1.0 - normMatch(positionInExternalResult); }
void setTranslationAvailable(bool translationAvailable) { m_matches[9].match = translationAvailable?1.0:0.0; }
void setNetworkMatch(bool networkMatch) { m_matches[10].match = networkMatch?1.0:-2.; }
void setDelim(char delim) { m_delim = delim; }
int delim(void) const { return m_delim; }
int id() const { return m_id; }
bool movie() const { return m_movie; }
int year() const { return m_year; }
int m_yearMatch = 0;
cNormedString m_normedName;
int m_other_id = 0; // if m_id is theTVDB -> m_other_id is in TMDb; and vice verse
private:
int m_id;
bool m_movie;
int m_year;
int m_episode_distance = 1000;
sMatchWeight m_matches[11];
char m_delim = 0;
};