Skip to content

Commit

Permalink
rework genre views
Browse files Browse the repository at this point in the history
  • Loading branch information
LukePulverenti committed Nov 15, 2016
1 parent 5537eb5 commit 6a76c2d
Show file tree
Hide file tree
Showing 25 changed files with 583 additions and 423 deletions.
2 changes: 1 addition & 1 deletion Emby.Dlna/Main/DlnaEntryPoint.cs
Original file line number Diff line number Diff line change
Expand Up @@ -285,7 +285,7 @@ private async Task RegisterServerEndpoints()
{
"urn:schemas-upnp-org:service:ContentDirectory:1",
"urn:schemas-upnp-org:service:ConnectionManager:1",
"urn:microsoft.com:service:X_MS_MediaReceiverRegistrar:1"
//"urn:microsoft.com:service:X_MS_MediaReceiverRegistrar:1"
};

foreach (var subDevice in embeddedDevices)
Expand Down
8 changes: 2 additions & 6 deletions Emby.Server.Implementations/TV/SeriesPostScanTask.cs
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ internal static IEnumerable<IGrouping<string, Series>> FindSeriesGroups(List<Ser
var group = new SeriesGroup();
FindAllLinked(series, visited, links, group);

group.Key = group.Select(s => s.GetProviderId(MetadataProviders.Tvdb)).FirstOrDefault(id => !string.IsNullOrEmpty(id));
group.Key = group.Select(s => s.PresentationUniqueKey).FirstOrDefault(id => !string.IsNullOrEmpty(id));

yield return group;
}
Expand All @@ -105,11 +105,7 @@ private static void FindAllLinked(Series series, HashSet<Series> visited, IDicti

private static bool ShareProviderId(Series a, Series b)
{
return a.ProviderIds.Any(id =>
{
string value;
return b.ProviderIds.TryGetValue(id.Key, out value) && id.Value == value;
});
return string.Equals(a.PresentationUniqueKey, b.PresentationUniqueKey, StringComparison.Ordinal);
}

public int Order
Expand Down
78 changes: 39 additions & 39 deletions MediaBrowser.Providers/Omdb/OmdbProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ public OmdbProvider(IJsonSerializer jsonSerializer, IHttpClient httpClient, IFil
}

public async Task Fetch<T>(MetadataResult<T> itemResult, string imdbId, string language, string country, CancellationToken cancellationToken)
where T :BaseItem
where T : BaseItem
{
if (string.IsNullOrWhiteSpace(imdbId))
{
Expand All @@ -48,25 +48,25 @@ public async Task Fetch<T>(MetadataResult<T> itemResult, string imdbId, string l

var result = await GetRootObject(imdbId, cancellationToken);

// Only take the name and rating if the user's language is set to english, since Omdb has no localization
if (string.Equals(language, "en", StringComparison.OrdinalIgnoreCase))
{
item.Name = result.Title;
// Only take the name and rating if the user's language is set to english, since Omdb has no localization
if (string.Equals(language, "en", StringComparison.OrdinalIgnoreCase))
{
item.Name = result.Title;

if (string.Equals(country, "us", StringComparison.OrdinalIgnoreCase))
{
item.OfficialRating = result.Rated;
}
if (string.Equals(country, "us", StringComparison.OrdinalIgnoreCase))
{
item.OfficialRating = result.Rated;
}
}

int year;
int year;

if (!string.IsNullOrEmpty(result.Year) && result.Year.Length >= 4
&& int.TryParse(result.Year.Substring(0, 4), NumberStyles.Number, _usCulture, out year)
&& year >= 0)
{
item.ProductionYear = year;
}
if (!string.IsNullOrEmpty(result.Year) && result.Year.Length >= 4
&& int.TryParse(result.Year.Substring(0, 4), NumberStyles.Number, _usCulture, out year)
&& year >= 0)
{
item.ProductionYear = year;
}

// Seeing some bogus RT data on omdb for series, so filter it out here
// RT doesn't even have tv series
Expand All @@ -87,33 +87,33 @@ public async Task Fetch<T>(MetadataResult<T> itemResult, string imdbId, string l

int voteCount;

if (!string.IsNullOrEmpty(result.imdbVotes)
&& int.TryParse(result.imdbVotes, NumberStyles.Number, _usCulture, out voteCount)
&& voteCount >= 0)
{
item.VoteCount = voteCount;
}
if (!string.IsNullOrEmpty(result.imdbVotes)
&& int.TryParse(result.imdbVotes, NumberStyles.Number, _usCulture, out voteCount)
&& voteCount >= 0)
{
item.VoteCount = voteCount;
}

float imdbRating;
float imdbRating;

if (!string.IsNullOrEmpty(result.imdbRating)
&& float.TryParse(result.imdbRating, NumberStyles.Any, _usCulture, out imdbRating)
&& imdbRating >= 0)
{
item.CommunityRating = imdbRating;
}
if (!string.IsNullOrEmpty(result.imdbRating)
&& float.TryParse(result.imdbRating, NumberStyles.Any, _usCulture, out imdbRating)
&& imdbRating >= 0)
{
item.CommunityRating = imdbRating;
}

if (!string.IsNullOrEmpty(result.Website))
{
item.HomePageUrl = result.Website;
}
if (!string.IsNullOrEmpty(result.Website))
{
item.HomePageUrl = result.Website;
}

if (!string.IsNullOrWhiteSpace(result.imdbID))
{
item.SetProviderId(MetadataProviders.Imdb, result.imdbID);
}
if (!string.IsNullOrWhiteSpace(result.imdbID))
{
item.SetProviderId(MetadataProviders.Imdb, result.imdbID);
}

ParseAdditionalMetadata(itemResult, result);
ParseAdditionalMetadata(itemResult, result);
}

public async Task<bool> FetchEpisodeData<T>(MetadataResult<T> itemResult, int episodeNumber, int seasonNumber, string imdbId, string language, string country, CancellationToken cancellationToken)
Expand All @@ -135,7 +135,7 @@ public async Task<bool> FetchEpisodeData<T>(MetadataResult<T> itemResult, int ep

RootObject result = null;

foreach (var episode in seasonResult.Episodes)
foreach (var episode in (seasonResult.Episodes ?? new RootObject[] { }))
{
if (episode.Episode == episodeNumber)
{
Expand Down
2 changes: 1 addition & 1 deletion MediaBrowser.Providers/TV/MissingEpisodeProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -368,7 +368,7 @@ from c in s.Children.OfType<Season>()
var seasonNumber = i.Season.IndexNumber.Value + i.SeasonOffset;

// If there's a physical season with the same number, delete it
if (physicalSeasons.Any(p => p.Season.IndexNumber.HasValue && (p.Season.IndexNumber.Value + p.SeasonOffset) == seasonNumber))
if (physicalSeasons.Any(p => p.Season.IndexNumber.HasValue && (p.Season.IndexNumber.Value + p.SeasonOffset) == seasonNumber && string.Equals(p.Season.Series.PresentationUniqueKey, i.Season.Series.PresentationUniqueKey, StringComparison.Ordinal)))
{
return true;
}
Expand Down
3 changes: 3 additions & 0 deletions MediaBrowser.ServerApplication/Native/RegisterServer.bat
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,9 @@ netsh advfirewall firewall delete rule name="Emby Server"
netsh advfirewall firewall add rule name="Emby Server" dir=in action=allow protocol=TCP program=%4 enable=yes
netsh advfirewall firewall add rule name="Emby Server" dir=in action=allow protocol=UDP program=%4 enable=yes

netsh advfirewall firewall add rule name="mediabrowser.serverapplication.exe" dir=in action=allow protocol=TCP program=%4 enable=yes
netsh advfirewall firewall add rule name="mediabrowser.serverapplication.exe" dir=in action=allow protocol=UDP program=%4 enable=yes


:DONE
Exit
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,12 @@
},
"devDependencies": {},
"ignore": [],
"version": "1.4.336",
"_release": "1.4.336",
"version": "1.4.337",
"_release": "1.4.337",
"_resolution": {
"type": "version",
"tag": "1.4.336",
"commit": "400863fdd7ccf3fe53c1abd8b4d4dae58bd9925d"
"tag": "1.4.337",
"commit": "1653cc935acba06056afae3a6fc8bce17fb46a7a"
},
"_source": "https://github.com/MediaBrowser/emby-webcomponents.git",
"_target": "^1.2.1",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,49 +1,12 @@
define(['visibleinviewport', 'imageFetcher', 'layoutManager', 'events', 'browser', 'dom', 'appSettings', 'require'], function (visibleinviewport, imageFetcher, layoutManager, events, browser, dom, appSettings, require) {
define(['lazyLoader', 'imageFetcher', 'layoutManager', 'browser', 'appSettings', 'require'], function (lazyLoader, imageFetcher, layoutManager, browser, appSettings, require) {
'use strict';

var thresholdX;
var thresholdY;

var requestIdleCallback = window.requestIdleCallback || function (fn) {
fn();
};

//var imagesWorker = new Worker(require.toUrl('.').split('?')[0] + '/imagesworker.js');

var supportsIntersectionObserver = function () {

if (window.IntersectionObserver) {

return true;
}

return false;
}();

function resetThresholds() {

var x = screen.availWidth;
var y = screen.availHeight;

if (browser.touch) {
x *= 1.5;
y *= 1.5;
}

thresholdX = x;
thresholdY = y;
}

if (!supportsIntersectionObserver) {
dom.addEventListener(window, "orientationchange", resetThresholds, { passive: true });
dom.addEventListener(window, 'resize', resetThresholds, { passive: true });
resetThresholds();
}

function isVisible(elem) {
return visibleinviewport(elem, true, thresholdX, thresholdY);
}

var wheelEvent = (document.implementation.hasFeature('Event.wheel', '3.0') ? 'wheel' : 'mousewheel');
var self = {};

Expand Down Expand Up @@ -236,135 +199,9 @@ define(['visibleinviewport', 'imageFetcher', 'layoutManager', 'events', 'browser
elem.animate(keyframes, timing);
}

function cancelAll(tokens) {
for (var i = 0, length = tokens.length; i < length; i++) {

tokens[i] = true;
}
}

function unveilWithIntersection(images, root) {

var filledCount = 0;

var options = {};

//options.rootMargin = "300%";

var observer = new IntersectionObserver(function (entries) {
for (var j = 0, length2 = entries.length; j < length2; j++) {
var entry = entries[j];
var target = entry.target;
observer.unobserve(target);
fillImage(target);
filledCount++;
}
},
options
);
// Start observing an element
for (var i = 0, length = images.length; i < length; i++) {
observer.observe(images[i]);
}
}

function unveilElements(images, root) {

if (!images.length) {
return;
}

if (supportsIntersectionObserver) {
unveilWithIntersection(images, root);
return;
}

var filledImages = [];
var cancellationTokens = [];

function unveilInternal(tokenIndex) {

var anyFound = false;
var out = false;

// TODO: This out construct assumes left to right, top to bottom

for (var i = 0, length = images.length; i < length; i++) {

if (cancellationTokens[tokenIndex]) {
return;
}
if (filledImages[i]) {
continue;
}
var img = images[i];
if (!out && isVisible(img)) {
anyFound = true;
filledImages[i] = true;
fillImage(img);
} else {

if (anyFound) {
out = true;
}
}
}

if (!images.length) {
dom.removeEventListener(document, 'focus', unveil, {
capture: true,
passive: true
});
dom.removeEventListener(document, 'scroll', unveil, {
capture: true,
passive: true
});
dom.removeEventListener(document, wheelEvent, unveil, {
capture: true,
passive: true
});
dom.removeEventListener(window, 'resize', unveil, {
capture: true,
passive: true
});
}
}

function unveil() {

cancelAll(cancellationTokens);

var index = cancellationTokens.length;
cancellationTokens.length++;

setTimeout(function () {
unveilInternal(index);
}, 1);
}

dom.addEventListener(document, 'focus', unveil, {
capture: true,
passive: true
});
dom.addEventListener(document, 'scroll', unveil, {
capture: true,
passive: true
});
dom.addEventListener(document, wheelEvent, unveil, {
capture: true,
passive: true
});
dom.addEventListener(window, 'resize', unveil, {
capture: true,
passive: true
});

unveil();
}

function lazyChildren(elem) {

unveilElements(elem.getElementsByClassName('lazy'), elem);
lazyLoader.lazyChildren(elem, fillImage);
}

function getPrimaryImageAspectRatio(items) {
Expand Down
Loading

0 comments on commit 6a76c2d

Please sign in to comment.