beta fixes

This commit is contained in:
Luke Pulverenti 2015-03-21 12:10:02 -04:00
parent e068e84ab6
commit c0aec48a31
23 changed files with 137 additions and 101 deletions

View file

@ -294,7 +294,7 @@ namespace MediaBrowser.Common.Implementations
public static void LogEnvironmentInfo(ILogger logger, IApplicationPaths appPaths, bool isStartup) public static void LogEnvironmentInfo(ILogger logger, IApplicationPaths appPaths, bool isStartup)
{ {
logger.LogMultiline("Media Browser", LogSeverity.Info, GetBaseExceptionMessage(appPaths)); logger.LogMultiline("Emby", LogSeverity.Info, GetBaseExceptionMessage(appPaths));
} }
protected static StringBuilder GetBaseExceptionMessage(IApplicationPaths appPaths) protected static StringBuilder GetBaseExceptionMessage(IApplicationPaths appPaths)

View file

@ -107,7 +107,7 @@ namespace MediaBrowser.Controller.Persistence
/// </summary> /// </summary>
/// <param name="type">The type.</param> /// <param name="type">The type.</param>
/// <returns>IEnumerable{Guid}.</returns> /// <returns>IEnumerable{Guid}.</returns>
IEnumerable<BaseItem> GetItemsOfType(Type type); IEnumerable<string> GetItemsOfType(Type type);
/// <summary> /// <summary>
/// Saves the children. /// Saves the children.

View file

@ -115,5 +115,10 @@ namespace MediaBrowser.Controller.Session
/// <param name="cancellationToken">The cancellation token.</param> /// <param name="cancellationToken">The cancellation token.</param>
/// <returns>Task.</returns> /// <returns>Task.</returns>
Task SendMessage<T>(string name, T data, CancellationToken cancellationToken); Task SendMessage<T>(string name, T data, CancellationToken cancellationToken);
/// <summary>
/// Called when [activity].
/// </summary>
void OnActivity();
} }
} }

View file

@ -33,7 +33,7 @@ namespace MediaBrowser.Dlna.ContentDirectory
var options = new HttpRequestOptions var options = new HttpRequestOptions
{ {
CancellationToken = cancellationToken, CancellationToken = cancellationToken,
UserAgent = "Media Browser", UserAgent = "Emby",
RequestContentType = "text/xml; charset=\"utf-8\"", RequestContentType = "text/xml; charset=\"utf-8\"",
LogErrorResponseBody = true, LogErrorResponseBody = true,
Url = request.ContentDirectoryUrl Url = request.ContentDirectoryUrl

View file

@ -47,6 +47,10 @@ namespace MediaBrowser.Dlna.PlayTo
} }
} }
public void OnActivity()
{
}
public bool SupportsMediaControl public bool SupportsMediaControl
{ {
get { return IsSessionActive; } get { return IsSessionActive; }

View file

@ -42,6 +42,9 @@ namespace MediaBrowser.MediaEncoding.Subtitles
subEvent.StartPositionTicks = GetTicks(sections[headers["Start"]]); subEvent.StartPositionTicks = GetTicks(sections[headers["Start"]]);
subEvent.EndPositionTicks = GetTicks(sections[headers["End"]]); subEvent.EndPositionTicks = GetTicks(sections[headers["End"]]);
//RemoteNativeFormatting(subEvent);
subEvent.Text = string.Join(",", sections.Skip(headers["Text"])); subEvent.Text = string.Join(",", sections.Skip(headers["Text"]));
subEvent.Text = subEvent.Text.Replace(@"\N", ParserValues.NewLine, StringComparison.OrdinalIgnoreCase); subEvent.Text = subEvent.Text.Replace(@"\N", ParserValues.NewLine, StringComparison.OrdinalIgnoreCase);
subEvent.Text = Regex.Replace(subEvent.Text, @"\{(\\[\w]+\(?([\w\d]+,?)+\)?)+\}", string.Empty, RegexOptions.IgnoreCase); subEvent.Text = Regex.Replace(subEvent.Text, @"\{(\\[\w]+\(?([\w\d]+,?)+\)?)+\}", string.Empty, RegexOptions.IgnoreCase);
@ -49,7 +52,6 @@ namespace MediaBrowser.MediaEncoding.Subtitles
trackInfo.TrackEvents.Add(subEvent); trackInfo.TrackEvents.Add(subEvent);
} }
} }
RemoteNativeFormatting(trackInfo);
return trackInfo; return trackInfo;
} }
@ -74,46 +76,43 @@ namespace MediaBrowser.MediaEncoding.Subtitles
/// <summary> /// <summary>
/// Credit: https://github.com/SubtitleEdit/subtitleedit/blob/master/src/Logic/SubtitleFormats/AdvancedSubStationAlpha.cs /// Credit: https://github.com/SubtitleEdit/subtitleedit/blob/master/src/Logic/SubtitleFormats/AdvancedSubStationAlpha.cs
/// </summary> /// </summary>
private void RemoteNativeFormatting(SubtitleTrackInfo subtitle) private void RemoteNativeFormatting(SubtitleTrackEvent p)
{ {
foreach (var p in subtitle.TrackEvents) int indexOfBegin = p.Text.IndexOf('{');
string pre = string.Empty;
while (indexOfBegin >= 0 && p.Text.IndexOf('}') > indexOfBegin)
{ {
int indexOfBegin = p.Text.IndexOf('{'); string s = p.Text.Substring(indexOfBegin);
string pre = string.Empty; if (s.StartsWith("{\\an1}", StringComparison.Ordinal) ||
while (indexOfBegin >= 0 && p.Text.IndexOf('}') > indexOfBegin) s.StartsWith("{\\an2}", StringComparison.Ordinal) ||
s.StartsWith("{\\an3}", StringComparison.Ordinal) ||
s.StartsWith("{\\an4}", StringComparison.Ordinal) ||
s.StartsWith("{\\an5}", StringComparison.Ordinal) ||
s.StartsWith("{\\an6}", StringComparison.Ordinal) ||
s.StartsWith("{\\an7}", StringComparison.Ordinal) ||
s.StartsWith("{\\an8}", StringComparison.Ordinal) ||
s.StartsWith("{\\an9}", StringComparison.Ordinal))
{ {
string s = p.Text.Substring(indexOfBegin); pre = s.Substring(0, 6);
if (s.StartsWith("{\\an1}", StringComparison.Ordinal) ||
s.StartsWith("{\\an2}", StringComparison.Ordinal) ||
s.StartsWith("{\\an3}", StringComparison.Ordinal) ||
s.StartsWith("{\\an4}", StringComparison.Ordinal) ||
s.StartsWith("{\\an5}", StringComparison.Ordinal) ||
s.StartsWith("{\\an6}", StringComparison.Ordinal) ||
s.StartsWith("{\\an7}", StringComparison.Ordinal) ||
s.StartsWith("{\\an8}", StringComparison.Ordinal) ||
s.StartsWith("{\\an9}", StringComparison.Ordinal))
{
pre = s.Substring(0, 6);
}
else if (s.StartsWith("{\\an1\\", StringComparison.Ordinal) ||
s.StartsWith("{\\an2\\", StringComparison.Ordinal) ||
s.StartsWith("{\\an3\\", StringComparison.Ordinal) ||
s.StartsWith("{\\an4\\", StringComparison.Ordinal) ||
s.StartsWith("{\\an5\\", StringComparison.Ordinal) ||
s.StartsWith("{\\an6\\", StringComparison.Ordinal) ||
s.StartsWith("{\\an7\\", StringComparison.Ordinal) ||
s.StartsWith("{\\an8\\", StringComparison.Ordinal) ||
s.StartsWith("{\\an9\\", StringComparison.Ordinal))
{
pre = s.Substring(0, 5) + "}";
}
int indexOfEnd = p.Text.IndexOf('}');
p.Text = p.Text.Remove(indexOfBegin, (indexOfEnd - indexOfBegin) + 1);
indexOfBegin = p.Text.IndexOf('{');
} }
p.Text = pre + p.Text; else if (s.StartsWith("{\\an1\\", StringComparison.Ordinal) ||
s.StartsWith("{\\an2\\", StringComparison.Ordinal) ||
s.StartsWith("{\\an3\\", StringComparison.Ordinal) ||
s.StartsWith("{\\an4\\", StringComparison.Ordinal) ||
s.StartsWith("{\\an5\\", StringComparison.Ordinal) ||
s.StartsWith("{\\an6\\", StringComparison.Ordinal) ||
s.StartsWith("{\\an7\\", StringComparison.Ordinal) ||
s.StartsWith("{\\an8\\", StringComparison.Ordinal) ||
s.StartsWith("{\\an9\\", StringComparison.Ordinal))
{
pre = s.Substring(0, 5) + "}";
}
int indexOfEnd = p.Text.IndexOf('}');
p.Text = p.Text.Remove(indexOfBegin, (indexOfEnd - indexOfBegin) + 1);
indexOfBegin = p.Text.IndexOf('{');
} }
p.Text = pre + p.Text;
} }
} }
} }

View file

@ -13,13 +13,13 @@ namespace MediaBrowser.Model.Dlna.Profiles
XDlnaDoc = "DMS-1.50"; XDlnaDoc = "DMS-1.50";
FriendlyName = "Media Browser"; FriendlyName = "Emby";
Manufacturer = "Media Browser"; Manufacturer = "Emby";
ModelDescription = "Media Browser"; ModelDescription = "Emby";
ModelName = "Media Browser"; ModelName = "Emby";
ModelNumber = "Media Browser"; ModelNumber = "Emby";
ModelUrl = "http://mediabrowser.tv/"; ModelUrl = "http://emby.media/";
ManufacturerUrl = "http://mediabrowser.tv/"; ManufacturerUrl = "http://emby.media/";
AlbumArtPn = "JPEG_SM"; AlbumArtPn = "JPEG_SM";

View file

@ -150,7 +150,7 @@ namespace MediaBrowser.Server.Implementations.Connect
if (string.IsNullOrWhiteSpace(wanApiAddress)) if (string.IsNullOrWhiteSpace(wanApiAddress))
{ {
_logger.Warn("Cannot update Media Browser Connect information without a WanApiAddress"); _logger.Warn("Cannot update Emby Connect information without a WanApiAddress");
return; return;
} }
@ -411,7 +411,7 @@ namespace MediaBrowser.Server.Implementations.Connect
if (!connectUser.IsActive) if (!connectUser.IsActive)
{ {
throw new ArgumentException("The Media Browser account has been disabled."); throw new ArgumentException("The Emby account has been disabled.");
} }
var user = GetUser(userId); var user = GetUser(userId);
@ -517,7 +517,7 @@ namespace MediaBrowser.Server.Implementations.Connect
if (!connectUser.IsActive) if (!connectUser.IsActive)
{ {
throw new ArgumentException("The Media Browser account has been disabled."); throw new ArgumentException("The Emby account has been disabled.");
} }
connectUserId = connectUser.Id; connectUserId = connectUser.Id;

View file

@ -389,7 +389,7 @@ namespace MediaBrowser.Server.Implementations.EntryPoints.Notifications
var notification = new NotificationRequest var notification = new NotificationRequest
{ {
UserIds = new List<string> { e.Argument.Id.ToString("N") }, UserIds = new List<string> { e.Argument.Id.ToString("N") },
Name = "Welcome to Media Browser!", Name = "Welcome to Emby!",
Description = "Check back here for more notifications." Description = "Check back here for more notifications."
}; };

View file

@ -28,7 +28,10 @@ namespace MediaBrowser.Server.Implementations.HttpServer.Security
if (!string.IsNullOrWhiteSpace(authorization.Token)) if (!string.IsNullOrWhiteSpace(authorization.Token))
{ {
var auth = GetTokenInfo(requestContext); var auth = GetTokenInfo(requestContext);
return _sessionManager.GetSessionByAuthenticationToken(auth, authorization.DeviceId, requestContext.RemoteIp, authorization.Version); if (auth != null)
{
return _sessionManager.GetSessionByAuthenticationToken(auth, authorization.DeviceId, requestContext.RemoteIp, authorization.Version);
}
} }
var session = _sessionManager.GetSession(authorization.DeviceId, authorization.Client, authorization.Version); var session = _sessionManager.GetSession(authorization.DeviceId, authorization.Client, authorization.Version);

View file

@ -1111,13 +1111,18 @@ namespace MediaBrowser.Server.Implementations.LiveTv
var numComplete = 0; var numComplete = 0;
foreach (var program in list) foreach (var programId in list)
{ {
cancellationToken.ThrowIfCancellationRequested(); cancellationToken.ThrowIfCancellationRequested();
if (!currentIdList.Contains(program.Id)) if (!currentIdList.Contains(new Guid(programId)))
{ {
await _libraryManager.DeleteItem(program).ConfigureAwait(false); var program = _libraryManager.GetItemById(programId);
if (program != null)
{
await _libraryManager.DeleteItem(program).ConfigureAwait(false);
}
} }
numComplete++; numComplete++;

View file

@ -16,7 +16,7 @@
"LabelNext": "Next", "LabelNext": "Next",
"LabelYoureDone": "You're Done!", "LabelYoureDone": "You're Done!",
"WelcomeToMediaBrowser": "Welcome to Media Browser!", "WelcomeToMediaBrowser": "Welcome to Media Browser!",
"TitleMediaBrowser": "Media Browser", "TitleMediaBrowser": "Emby",
"ThisWizardWillGuideYou": "This wizard will help guide you through the setup process. To begin, please select your preferred language.", "ThisWizardWillGuideYou": "This wizard will help guide you through the setup process. To begin, please select your preferred language.",
"TellUsAboutYourself": "Tell us about yourself", "TellUsAboutYourself": "Tell us about yourself",
"ButtonQuickStartGuide": "Quick start guide", "ButtonQuickStartGuide": "Quick start guide",

View file

@ -27,7 +27,7 @@ namespace MediaBrowser.Server.Implementations.Notifications
{ {
Type = NotificationType.ApplicationUpdateInstalled.ToString(), Type = NotificationType.ApplicationUpdateInstalled.ToString(),
DefaultDescription = "{ReleaseNotes}", DefaultDescription = "{ReleaseNotes}",
DefaultTitle = "A new version of Media Browser Server has been installed.", DefaultTitle = "A new version of Emby Server has been installed.",
Variables = new List<string>{"Version"} Variables = new List<string>{"Version"}
}, },
@ -71,7 +71,7 @@ namespace MediaBrowser.Server.Implementations.Notifications
new NotificationTypeInfo new NotificationTypeInfo
{ {
Type = NotificationType.ServerRestartRequired.ToString(), Type = NotificationType.ServerRestartRequired.ToString(),
DefaultTitle = "Please restart Media Browser Server to finish updating." DefaultTitle = "Please restart Emby Server to finish updating."
}, },
new NotificationTypeInfo new NotificationTypeInfo
@ -158,7 +158,7 @@ namespace MediaBrowser.Server.Implementations.Notifications
knownTypes.Add(new NotificationTypeInfo knownTypes.Add(new NotificationTypeInfo
{ {
Type = NotificationType.ApplicationUpdateAvailable.ToString(), Type = NotificationType.ApplicationUpdateAvailable.ToString(),
DefaultTitle = "A new version of Media Browser Server is available for download." DefaultTitle = "A new version of Emby Server is available for download."
}); });
} }

View file

@ -522,7 +522,7 @@ namespace MediaBrowser.Server.Implementations.Persistence
} }
} }
public IEnumerable<BaseItem> GetItemsOfType(Type type) public IEnumerable<string> GetItemsOfType(Type type)
{ {
if (type == null) if (type == null)
{ {
@ -533,7 +533,7 @@ namespace MediaBrowser.Server.Implementations.Persistence
using (var cmd = _connection.CreateCommand()) using (var cmd = _connection.CreateCommand())
{ {
cmd.CommandText = "select type,data from TypedBaseItems where type = @type"; cmd.CommandText = "select guid from TypedBaseItems where type = @type";
cmd.Parameters.Add(cmd, "@type", DbType.String).Value = type.FullName; cmd.Parameters.Add(cmd, "@type", DbType.String).Value = type.FullName;
@ -541,12 +541,7 @@ namespace MediaBrowser.Server.Implementations.Persistence
{ {
while (reader.Read()) while (reader.Read())
{ {
var item = GetItem(reader); yield return reader.GetString(0);
if (item != null)
{
yield return item;
}
} }
} }
} }

View file

@ -108,7 +108,7 @@ namespace MediaBrowser.Server.Implementations.ScheduledTasks
} }
else else
{ {
Logger.Info("A new version of Media Browser is available."); Logger.Info("A new version of " + _appHost.Name + " is available.");
} }
progress.Report(100); progress.Report(100);

View file

@ -43,6 +43,10 @@ namespace MediaBrowser.Server.Implementations.Session
ResetPingTimer(); ResetPingTimer();
} }
public void OnActivity()
{
}
private string PostUrl private string PostUrl
{ {
get get

View file

@ -236,34 +236,44 @@ namespace MediaBrowser.Server.Implementations.Session
} }
var activityDate = DateTime.UtcNow; var activityDate = DateTime.UtcNow;
var session = await GetSessionInfo(appName, appVersion, deviceId, deviceName, remoteEndPoint, user).ConfigureAwait(false); var session = await GetSessionInfo(appName, appVersion, deviceId, deviceName, remoteEndPoint, user).ConfigureAwait(false);
var lastActivityDate = session.LastActivityDate;
session.LastActivityDate = activityDate; session.LastActivityDate = activityDate;
if (user == null) if (user != null)
{ {
return session; var userLastActivityDate = user.LastActivityDate ?? DateTime.MinValue;
user.LastActivityDate = activityDate;
// Don't log in the db anymore frequently than 10 seconds
if ((activityDate - userLastActivityDate).TotalSeconds > 10)
{
try
{
// Save this directly. No need to fire off all the events for this.
await _userRepository.SaveUser(user, CancellationToken.None).ConfigureAwait(false);
}
catch (Exception ex)
{
_logger.ErrorException("Error updating user", ex);
}
}
} }
var lastActivityDate = user.LastActivityDate; if ((activityDate - lastActivityDate).TotalSeconds > 10)
user.LastActivityDate = activityDate;
// Don't log in the db anymore frequently than 10 seconds
if (lastActivityDate.HasValue && (activityDate - lastActivityDate.Value).TotalSeconds < 10)
{ {
return session; EventHelper.FireEventIfNotNull(SessionActivity, this, new SessionEventArgs
{
SessionInfo = session
}, _logger);
} }
// Save this directly. No need to fire off all the events for this. var controller = session.SessionController;
await _userRepository.SaveUser(user, CancellationToken.None).ConfigureAwait(false); if (controller != null)
EventHelper.FireEventIfNotNull(SessionActivity, this, new SessionEventArgs
{ {
SessionInfo = session controller.OnActivity();
}
}, _logger);
return session; return session;
} }
@ -1680,7 +1690,7 @@ namespace MediaBrowser.Server.Implementations.Session
deviceId = info.DeviceId; deviceId = info.DeviceId;
} }
return GetSessionInfo(appName, appVersion, deviceId, deviceName, remoteEndpoint, user); return LogSessionActivity(appName, appVersion, deviceId, deviceName, remoteEndpoint, user);
} }
public Task<SessionInfo> GetSessionByAuthenticationToken(string token, string deviceId, string remoteEndpoint) public Task<SessionInfo> GetSessionByAuthenticationToken(string token, string deviceId, string remoteEndpoint)

View file

@ -30,17 +30,28 @@ namespace MediaBrowser.Server.Implementations.Session
Sockets = new List<IWebSocketConnection>(); Sockets = new List<IWebSocketConnection>();
} }
public bool IsSessionActive private bool HasOpenSockets
{ {
get get { return GetActiveSockets().Any(); }
{
return Sockets.Any(i => i.State == WebSocketState.Open);
}
} }
public bool SupportsMediaControl public bool SupportsMediaControl
{ {
get { return GetActiveSockets().Any(); } get { return HasOpenSockets; }
}
private bool _isActive;
public bool IsSessionActive
{
get
{
return _isActive;
}
}
public void OnActivity()
{
_isActive = true;
} }
private IEnumerable<IWebSocketConnection> GetActiveSockets() private IEnumerable<IWebSocketConnection> GetActiveSockets()
@ -64,6 +75,8 @@ namespace MediaBrowser.Server.Implementations.Session
{ {
if (!GetActiveSockets().Any()) if (!GetActiveSockets().Any())
{ {
_isActive = false;
try try
{ {
_sessionManager.ReportSessionEnded(Session.Id); _sessionManager.ReportSessionEnded(Session.Id);

View file

@ -432,7 +432,7 @@ namespace MediaBrowser.Server.Startup.Common
RegisterSingleInstance<ISearchEngine>(() => new SearchEngine(LogManager, LibraryManager, UserManager)); RegisterSingleInstance<ISearchEngine>(() => new SearchEngine(LogManager, LibraryManager, UserManager));
HttpServer = ServerFactory.CreateServer(this, LogManager, "Media Browser", "web/index.html"); HttpServer = ServerFactory.CreateServer(this, LogManager, "Emby", "web/index.html");
RegisterSingleInstance(HttpServer, false); RegisterSingleInstance(HttpServer, false);
progress.Report(10); progress.Report(10);

View file

@ -75,7 +75,7 @@ namespace MediaBrowser.ServerApplication
// //
notifyIcon1.ContextMenuStrip = contextMenuStrip1; notifyIcon1.ContextMenuStrip = contextMenuStrip1;
notifyIcon1.Icon = ((System.Drawing.Icon)(resources.GetObject("notifyIcon1.Icon"))); notifyIcon1.Icon = ((System.Drawing.Icon)(resources.GetObject("notifyIcon1.Icon")));
notifyIcon1.Text = "Media Browser"; notifyIcon1.Text = "Emby";
notifyIcon1.Visible = true; notifyIcon1.Visible = true;
// //
// contextMenuStrip1 // contextMenuStrip1
@ -162,7 +162,7 @@ namespace MediaBrowser.ServerApplication
if (_appHost.IsFirstRun) if (_appHost.IsFirstRun)
{ {
Action action = () => notifyIcon1.ShowBalloonTip(5000, "Media Browser", "Welcome to Media Browser Server!", ToolTipIcon.Info); Action action = () => notifyIcon1.ShowBalloonTip(5000, "Emby", "Welcome to Emby Server!", ToolTipIcon.Info);
contextMenuStrip1.Invoke(action); contextMenuStrip1.Invoke(action);
} }

View file

@ -123,7 +123,7 @@
this.lblStatus.Name = "lblStatus"; this.lblStatus.Name = "lblStatus";
this.lblStatus.Size = new System.Drawing.Size(469, 59); this.lblStatus.Size = new System.Drawing.Size(469, 59);
this.lblStatus.TabIndex = 0; this.lblStatus.TabIndex = 0;
this.lblStatus.Text = "Loading Media Browser"; this.lblStatus.Text = "Loading Emby Server";
this.lblStatus.UseWaitCursor = true; this.lblStatus.UseWaitCursor = true;
// //
// panel1 // panel1
@ -162,7 +162,7 @@
this.Name = "SplashForm"; this.Name = "SplashForm";
this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide; this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "Media Browser"; this.Text = "Emby";
this.UseWaitCursor = true; this.UseWaitCursor = true;
this.panelMainContainer.ResumeLayout(false); this.panelMainContainer.ResumeLayout(false);
this.panel2.ResumeLayout(false); this.panel2.ResumeLayout(false);

View file

@ -180,11 +180,9 @@ namespace MediaBrowser.WebDashboard.Api
sb.Append("<meta name=\"viewport\" content=\"width=device-width, initial-scale=1, user-scalable=no\">"); sb.Append("<meta name=\"viewport\" content=\"width=device-width, initial-scale=1, user-scalable=no\">");
//sb.Append("<meta name=\"apple-mobile-web-app-capable\" content=\"yes\">"); //sb.Append("<meta name=\"apple-mobile-web-app-capable\" content=\"yes\">");
sb.Append("<meta name=\"mobile-web-app-capable\" content=\"yes\">"); sb.Append("<meta name=\"mobile-web-app-capable\" content=\"yes\">");
sb.Append("<meta name=\"application-name\" content=\"Media Browser\">"); sb.Append("<meta name=\"application-name\" content=\"Emby\">");
//sb.Append("<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\">"); //sb.Append("<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\">");
sb.Append("<meta name=\"application-name\" content=\"Media Browser\">");
sb.Append("<meta name=\"robots\" content=\"noindex, nofollow, noarchive\" />"); sb.Append("<meta name=\"robots\" content=\"noindex, nofollow, noarchive\" />");
// http://developer.apple.com/library/ios/#DOCUMENTATION/AppleApplications/Reference/SafariWebContent/ConfiguringWebApplications/ConfiguringWebApplications.html // http://developer.apple.com/library/ios/#DOCUMENTATION/AppleApplications/Reference/SafariWebContent/ConfiguringWebApplications/ConfiguringWebApplications.html

View file

@ -266,7 +266,7 @@ namespace MediaBrowser.XbmcMetadata.Images
public string Name public string Name
{ {
get { return "Media Browser/Plex/Xbmc Images"; } get { return "Emby/Plex/Xbmc Images"; }
} }
} }
} }