Initial commit — AllMusicGuide scraper and music metadata tagger

This commit is contained in:
2026-05-10 02:49:16 +00:00
commit 4a541ca04b
194 changed files with 46364 additions and 0 deletions
@@ -0,0 +1,44 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.18033
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace MusicMetaTagger.Client.AllMusicGuide.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
internal sealed partial class AlbumResultPageScraper : global::System.Configuration.ApplicationSettingsBase {
private static AlbumResultPageScraper defaultInstance = ((AlbumResultPageScraper)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new AlbumResultPageScraper())));
public static AlbumResultPageScraper Default {
get {
return defaultInstance;
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("//*[contains(@class,\'right-of-image\')]")]
public string AlbumXpath {
get {
return ((string)(this["AlbumXpath"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("http://www.allmusic.com/search/ajax_results/albums/{0}")]
public string AlbumResultUrl {
get {
return ((string)(this["AlbumResultUrl"]));
}
}
}
}
@@ -0,0 +1,12 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="MusicMetaTagger.Client.AllMusicGuide.Properties" GeneratedClassName="AlbumResultPageScraper">
<Profiles />
<Settings>
<Setting Name="AlbumXpath" Type="System.String" Scope="Application">
<Value Profile="(Default)">//*[contains(@class,'right-of-image')]</Value>
</Setting>
<Setting Name="AlbumResultUrl" Type="System.String" Scope="Application">
<Value Profile="(Default)">http://www.allmusic.com/search/ajax_results/albums/{0}</Value>
</Setting>
</Settings>
</SettingsFile>
@@ -0,0 +1,116 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.269
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace MusicMetaTagger.Client.AllMusicGuide.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")]
internal sealed partial class AlbumResultScraper : global::System.Configuration.ApplicationSettingsBase {
private static AlbumResultScraper defaultInstance = ((AlbumResultScraper)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new AlbumResultScraper())));
public static AlbumResultScraper Default {
get {
return defaultInstance;
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("//*[contains(@class,\'title\')]/a/@href")]
public string AlbumUrlXpath {
get {
return ((string)(this["AlbumUrlXpath"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("[a-zA-Z]{2}[0-9]+(?=$)")]
public string AlbumUrlIdRegex {
get {
return ((string)(this["AlbumUrlIdRegex"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("//*[contains(@class,\'artist\')]/a")]
public string ArtistXpath {
get {
return ((string)(this["ArtistXpath"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("//*[contains(@class,\'title\')]/a")]
public string TitleXpath {
get {
return ((string)(this["TitleXpath"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("(19|20)\\d{2}")]
public string YearRegex {
get {
return ((string)(this["YearRegex"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("//*[contains(@class,\'artist\')]/a/@href")]
public string ArtistUrlXpath {
get {
return ((string)(this["ArtistUrlXpath"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("[a-zA-Z]{2}[0-9]+(?=$)")]
public string ArtistUrIdRegex {
get {
return ((string)(this["ArtistUrIdRegex"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("//*[contains(@class,\'artist\')]")]
public string ArtistNoUrlXpath {
get {
return ((string)(this["ArtistNoUrlXpath"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("//*[@class=\'info\']")]
public string InfoXpath {
get {
return ((string)(this["InfoXpath"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("(?<=\\n).*")]
public string GenreRegex {
get {
return ((string)(this["GenreRegex"]));
}
}
}
}
@@ -0,0 +1,36 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="AllMusicGuide.Client.Properties" GeneratedClassName="AlbumResultScraper">
<Profiles />
<Settings>
<Setting Name="AlbumUrlXpath" Type="System.String" Scope="Application">
<Value Profile="(Default)">//*[contains(@class,'title')]/a/@href</Value>
</Setting>
<Setting Name="AlbumUrlIdRegex" Type="System.String" Scope="Application">
<Value Profile="(Default)">[a-zA-Z]{2}[0-9]+(?=$)</Value>
</Setting>
<Setting Name="ArtistXpath" Type="System.String" Scope="Application">
<Value Profile="(Default)">//*[contains(@class,'artist')]/a</Value>
</Setting>
<Setting Name="TitleXpath" Type="System.String" Scope="Application">
<Value Profile="(Default)">//*[contains(@class,'title')]/a</Value>
</Setting>
<Setting Name="YearRegex" Type="System.String" Scope="Application">
<Value Profile="(Default)">(19|20)\d{2}</Value>
</Setting>
<Setting Name="ArtistUrlXpath" Type="System.String" Scope="Application">
<Value Profile="(Default)">//*[contains(@class,'artist')]/a/@href</Value>
</Setting>
<Setting Name="ArtistUrIdRegex" Type="System.String" Scope="Application">
<Value Profile="(Default)">[a-zA-Z]{2}[0-9]+(?=$)</Value>
</Setting>
<Setting Name="ArtistNoUrlXpath" Type="System.String" Scope="Application">
<Value Profile="(Default)">//*[contains(@class,'artist')]</Value>
</Setting>
<Setting Name="InfoXpath" Type="System.String" Scope="Application">
<Value Profile="(Default)">//*[@class='info']</Value>
</Setting>
<Setting Name="GenreRegex" Type="System.String" Scope="Application">
<Value Profile="(Default)">(?&lt;=\n).*</Value>
</Setting>
</Settings>
</SettingsFile>
+207
View File
@@ -0,0 +1,207 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.269
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace MusicMetaTagger.Client.AllMusicGuide.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")]
internal sealed partial class AlbumScraper : global::System.Configuration.ApplicationSettingsBase {
private static AlbumScraper defaultInstance = ((AlbumScraper)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new AlbumScraper())));
public static AlbumScraper Default {
get {
return defaultInstance;
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("//*[@class=\'album-title\']/text()")]
public string TitleXpath {
get {
return ((string)(this["TitleXpath"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("http://www.allmusic.com/album/{0}")]
public string AlbumUrl {
get {
return ((string)(this["AlbumUrl"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("//*[@id=\'tracks\']//tbody/tr[td[@class=\'tracknum\']]")]
public string TrackXpath {
get {
return ((string)(this["TrackXpath"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("//*[@class=\'image-container\']/img/@src")]
public string CoverUrlXpath {
get {
return ((string)(this["CoverUrlXpath"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("//*[@class=\'editorial-rating\']//span[@itemprop=\'rating\']")]
public string RatingXpath {
get {
return ((string)(this["RatingXpath"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("//*[@class=\'release-date\']")]
public string ReleaseDateXpath {
get {
return ((string)(this["ReleaseDateXpath"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("//*[@class=\'album-artist\']/a")]
public string ArtistXpath {
get {
return ((string)(this["ArtistXpath"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("//*[@class=\'album-artist\']/a/@href")]
public string ArtistUrlXpath {
get {
return ((string)(this["ArtistUrlXpath"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("//*[contains(@class,\'themes\')]//a")]
public string ThemesXpath {
get {
return ((string)(this["ThemesXpath"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("//*[contains(@class,\'moods\')]//a")]
public string MoodsXpath {
get {
return ((string)(this["MoodsXpath"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("//*[@class=\'review-body\']/div")]
public string ReviewXpath {
get {
return ((string)(this["ReviewXpath"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("//*[@id=\'review\']//*[@class=\'author\']")]
public string ReviewerXpath {
get {
return ((string)(this["ReviewerXpath"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("(?<=by\\s*).*")]
public string ReviewerRegex {
get {
return ((string)(this["ReviewerRegex"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("//*[@class=\'id-details\']//*[contains(.,\'Rovi Music ID\')]/following-sibling::*[1]/" +
"span")]
public string AlbumIdXpath {
get {
return ((string)(this["AlbumIdXpath"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("//*[contains(@class,\'styles\')]//a[contains(.,\'Soundtrack\')]")]
public string SoundtrackXpath {
get {
return ((string)(this["SoundtrackXpath"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("\\d{4}")]
public string ReleaseYearRegex {
get {
return ((string)(this["ReleaseYearRegex"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("//*[contains(@class,\'styles\')]//a")]
public string StylesXpath {
get {
return ((string)(this["StylesXpath"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("[a-zA-Z]{2}[0-9]+(?=$)")]
public string ArtistUrlIdRegex {
get {
return ((string)(this["ArtistUrlIdRegex"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute(".*(?=\\?.*)")]
public string CoverUrlRegex {
get {
return ((string)(this["CoverUrlRegex"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("//*[contains(@class,\'album-pick\')]")]
public string PickXpath {
get {
return ((string)(this["PickXpath"]));
}
}
}
}
@@ -0,0 +1,66 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="AllMusicGuide.Client.Properties" GeneratedClassName="AlbumScraper">
<Profiles />
<Settings>
<Setting Name="TitleXpath" Type="System.String" Scope="Application">
<Value Profile="(Default)">//*[@class='album-title']/text()</Value>
</Setting>
<Setting Name="AlbumUrl" Type="System.String" Scope="Application">
<Value Profile="(Default)">http://www.allmusic.com/album/{0}</Value>
</Setting>
<Setting Name="TrackXpath" Type="System.String" Scope="Application">
<Value Profile="(Default)">//*[@id='tracks']//tbody/tr[td[@class='tracknum']]</Value>
</Setting>
<Setting Name="CoverUrlXpath" Type="System.String" Scope="Application">
<Value Profile="(Default)">//*[@class='image-container']/img/@src</Value>
</Setting>
<Setting Name="RatingXpath" Type="System.String" Scope="Application">
<Value Profile="(Default)">//*[@class='editorial-rating']//span[@itemprop='rating']</Value>
</Setting>
<Setting Name="ReleaseDateXpath" Type="System.String" Scope="Application">
<Value Profile="(Default)">//*[@class='release-date']</Value>
</Setting>
<Setting Name="ArtistXpath" Type="System.String" Scope="Application">
<Value Profile="(Default)">//*[@class='album-artist']/a</Value>
</Setting>
<Setting Name="ArtistUrlXpath" Type="System.String" Scope="Application">
<Value Profile="(Default)">//*[@class='album-artist']/a/@href</Value>
</Setting>
<Setting Name="ThemesXpath" Type="System.String" Scope="Application">
<Value Profile="(Default)">//*[contains(@class,'themes')]//a</Value>
</Setting>
<Setting Name="MoodsXpath" Type="System.String" Scope="Application">
<Value Profile="(Default)">//*[contains(@class,'moods')]//a</Value>
</Setting>
<Setting Name="ReviewXpath" Type="System.String" Scope="Application">
<Value Profile="(Default)">//*[@class='review-body']/div</Value>
</Setting>
<Setting Name="ReviewerXpath" Type="System.String" Scope="Application">
<Value Profile="(Default)">//*[@id='review']//*[@class='author']</Value>
</Setting>
<Setting Name="ReviewerRegex" Type="System.String" Scope="Application">
<Value Profile="(Default)">(?&lt;=by\s*).*</Value>
</Setting>
<Setting Name="AlbumIdXpath" Type="System.String" Scope="Application">
<Value Profile="(Default)">//*[@class='id-details']//*[contains(.,'Rovi Music ID')]/following-sibling::*[1]/span</Value>
</Setting>
<Setting Name="SoundtrackXpath" Type="System.String" Scope="Application">
<Value Profile="(Default)">//*[contains(@class,'styles')]//a[contains(.,'Soundtrack')]</Value>
</Setting>
<Setting Name="ReleaseYearRegex" Type="System.String" Scope="Application">
<Value Profile="(Default)">\d{4}</Value>
</Setting>
<Setting Name="StylesXpath" Type="System.String" Scope="Application">
<Value Profile="(Default)">//*[contains(@class,'styles')]//a</Value>
</Setting>
<Setting Name="ArtistUrlIdRegex" Type="System.String" Scope="Application">
<Value Profile="(Default)">[a-zA-Z]{2}[0-9]+(?=$)</Value>
</Setting>
<Setting Name="CoverUrlRegex" Type="System.String" Scope="Application">
<Value Profile="(Default)">.*(?=\?.*)</Value>
</Setting>
<Setting Name="PickXpath" Type="System.String" Scope="Application">
<Value Profile="(Default)">//*[contains(@class,'album-pick')]</Value>
</Setting>
</Settings>
</SettingsFile>
@@ -0,0 +1,50 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.269
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace MusicMetaTagger.Client.AllMusicGuide.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")]
internal sealed partial class AllMusicGuideSettings : global::System.Configuration.ApplicationSettingsBase {
private static AllMusicGuideSettings defaultInstance = ((AllMusicGuideSettings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new AllMusicGuideSettings())));
public static AllMusicGuideSettings Default {
get {
return defaultInstance;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("0.6")]
public double AlbumResultsRelevanceThreshold {
get {
return ((double)(this["AlbumResultsRelevanceThreshold"]));
}
set {
this["AlbumResultsRelevanceThreshold"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("0.6")]
public double ArtistResultsRelevanceThreshold {
get {
return ((double)(this["ArtistResultsRelevanceThreshold"]));
}
set {
this["ArtistResultsRelevanceThreshold"] = value;
}
}
}
}
@@ -0,0 +1,12 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="ItunesAMG.AllMusicGuide" GeneratedClassName="AllMusicGuideSettings">
<Profiles />
<Settings>
<Setting Name="AlbumResultsRelevanceThreshold" Type="System.Double" Scope="User">
<Value Profile="(Default)">0.6</Value>
</Setting>
<Setting Name="ArtistResultsRelevanceThreshold" Type="System.Double" Scope="User">
<Value Profile="(Default)">0.6</Value>
</Setting>
</Settings>
</SettingsFile>
@@ -0,0 +1,99 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.18033
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace MusicMetaTagger.Client.AllMusicGuide.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
internal sealed partial class ArtistDiscographyPageScraper : global::System.Configuration.ApplicationSettingsBase {
private static ArtistDiscographyPageScraper defaultInstance = ((ArtistDiscographyPageScraper)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new ArtistDiscographyPageScraper())));
public static ArtistDiscographyPageScraper Default {
get {
return defaultInstance;
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("//table[contains(@class,\'album-table\')]/tbody/tr")]
public string DiscographyXpath {
get {
return ((string)(this["DiscographyXpath"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("http://www.allmusic.com/artist/{0}/overview/main")]
public string DiscographyAlbumUrl {
get {
return ((string)(this["DiscographyAlbumUrl"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("http://www.allmusic.com/artist/{0}/overview/singles")]
public string DiscographyEpSinglesUrl {
get {
return ((string)(this["DiscographyEpSinglesUrl"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("http://www.allmusic.com/artist/{0}/overview/compilations")]
public string DiscographyCompilationUrl {
get {
return ((string)(this["DiscographyCompilationUrl"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("//*[@id=\"discography\"]//ul[@class=\'sub-tabs\']/li[contains(@class,\'active\')]/@clas" +
"s")]
public string ReleaseTypeXpath {
get {
return ((string)(this["ReleaseTypeXpath"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute(".*(?=\\sactive)")]
public string ReleaseTypeRegex {
get {
return ((string)(this["ReleaseTypeRegex"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("//*[@class=\'artist-name\']/text()")]
public string ArtistXpath {
get {
return ((string)(this["ArtistXpath"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("//*[@class=\'id-details\']//*[contains(.,\'Rovi Music ID\')]/following-sibling::*[1]")]
public string ArtistIdXpath {
get {
return ((string)(this["ArtistIdXpath"]));
}
}
}
}
@@ -0,0 +1,30 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="MusicMetaTagger.Client.AllMusicGuide.Properties" GeneratedClassName="ArtistDiscographyPageScraper">
<Profiles />
<Settings>
<Setting Name="DiscographyXpath" Type="System.String" Scope="Application">
<Value Profile="(Default)">//table[contains(@class,'album-table')]/tbody/tr</Value>
</Setting>
<Setting Name="DiscographyAlbumUrl" Type="System.String" Scope="Application">
<Value Profile="(Default)">http://www.allmusic.com/artist/{0}/overview/main</Value>
</Setting>
<Setting Name="DiscographyEpSinglesUrl" Type="System.String" Scope="Application">
<Value Profile="(Default)">http://www.allmusic.com/artist/{0}/overview/singles</Value>
</Setting>
<Setting Name="DiscographyCompilationUrl" Type="System.String" Scope="Application">
<Value Profile="(Default)">http://www.allmusic.com/artist/{0}/overview/compilations</Value>
</Setting>
<Setting Name="ReleaseTypeXpath" Type="System.String" Scope="Application">
<Value Profile="(Default)">//*[@id="discography"]//ul[@class='sub-tabs']/li[contains(@class,'active')]/@class</Value>
</Setting>
<Setting Name="ReleaseTypeRegex" Type="System.String" Scope="Application">
<Value Profile="(Default)">.*(?=\sactive)</Value>
</Setting>
<Setting Name="ArtistXpath" Type="System.String" Scope="Application">
<Value Profile="(Default)">//*[@class='artist-name']/text()</Value>
</Setting>
<Setting Name="ArtistIdXpath" Type="System.String" Scope="Application">
<Value Profile="(Default)">//*[@class='id-details']//*[contains(.,'Rovi Music ID')]/following-sibling::*[1]</Value>
</Setting>
</Settings>
</SettingsFile>
@@ -0,0 +1,107 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.269
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace MusicMetaTagger.Client.AllMusicGuide.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")]
internal sealed partial class ArtistDiscographyScraper : global::System.Configuration.ApplicationSettingsBase {
private static ArtistDiscographyScraper defaultInstance = ((ArtistDiscographyScraper)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new ArtistDiscographyScraper())));
public static ArtistDiscographyScraper Default {
get {
return defaultInstance;
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("//td[contains(@class,\'title\')]/a[contains(@class,\'full-title\')]/@href")]
public string AlbumUrlXpath {
get {
return ((string)(this["AlbumUrlXpath"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("[a-zA-Z]{2}[0-9]+(?=$)")]
public string AlbumUrlIdRegex {
get {
return ((string)(this["AlbumUrlIdRegex"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("//td[@class=\'ed-rating\']/@data-sort-value")]
public string RatingXpath {
get {
return ((string)(this["RatingXpath"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("//td[contains(@class,\'year\')][contains(@class,\'pick\')]")]
public string PickXpath {
get {
return ((string)(this["PickXpath"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("//td[contains(@class,\'year\')]")]
public string YearXpath {
get {
return ((string)(this["YearXpath"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("//td[contains(@class,\'title\')]/a[contains(@class,\'full-title\')]")]
public string TitleXpath {
get {
return ((string)(this["TitleXpath"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("//td[@class=\'label\']/*[@class=\'full-title\']")]
public string LabelXpath {
get {
return ((string)(this["LabelXpath"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("(?<=\\s*\\[).*(?=\\]$)")]
public string ReleaseTypeRegex {
get {
return ((string)(this["ReleaseTypeRegex"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("\\d{1,2}")]
public string RatingRegex {
get {
return ((string)(this["RatingRegex"]));
}
}
}
}
@@ -0,0 +1,33 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="AllMusicGuide.Client.Properties" GeneratedClassName="ArtistDiscographyScraper">
<Profiles />
<Settings>
<Setting Name="AlbumUrlXpath" Type="System.String" Scope="Application">
<Value Profile="(Default)">//td[contains(@class,'title')]/a[contains(@class,'full-title')]/@href</Value>
</Setting>
<Setting Name="AlbumUrlIdRegex" Type="System.String" Scope="Application">
<Value Profile="(Default)">[a-zA-Z]{2}[0-9]+(?=$)</Value>
</Setting>
<Setting Name="RatingXpath" Type="System.String" Scope="Application">
<Value Profile="(Default)">//td[@class='ed-rating']/@data-sort-value</Value>
</Setting>
<Setting Name="PickXpath" Type="System.String" Scope="Application">
<Value Profile="(Default)">//td[contains(@class,'year')][contains(@class,'pick')]</Value>
</Setting>
<Setting Name="YearXpath" Type="System.String" Scope="Application">
<Value Profile="(Default)">//td[contains(@class,'year')]</Value>
</Setting>
<Setting Name="TitleXpath" Type="System.String" Scope="Application">
<Value Profile="(Default)">//td[contains(@class,'title')]/a[contains(@class,'full-title')]</Value>
</Setting>
<Setting Name="LabelXpath" Type="System.String" Scope="Application">
<Value Profile="(Default)">//td[@class='label']/*[@class='full-title']</Value>
</Setting>
<Setting Name="ReleaseTypeRegex" Type="System.String" Scope="Application">
<Value Profile="(Default)">(?&lt;=\s*\[).*(?=\]$)</Value>
</Setting>
<Setting Name="RatingRegex" Type="System.String" Scope="Application">
<Value Profile="(Default)">\d{1,2}</Value>
</Setting>
</Settings>
</SettingsFile>
@@ -0,0 +1,44 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.18033
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace MusicMetaTagger.Client.AllMusicGuide.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
internal sealed partial class ArtistResultPageScraper : global::System.Configuration.ApplicationSettingsBase {
private static ArtistResultPageScraper defaultInstance = ((ArtistResultPageScraper)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new ArtistResultPageScraper())));
public static ArtistResultPageScraper Default {
get {
return defaultInstance;
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("http://www.allmusic.com/search/ajax_results/artists/{0}")]
public string ArtistResultUrl {
get {
return ((string)(this["ArtistResultUrl"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("//*[contains(@class,\'right-of-image\')]")]
public string ArtistXpath {
get {
return ((string)(this["ArtistXpath"]));
}
}
}
}
@@ -0,0 +1,12 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="MusicMetaTagger.Client.AllMusicGuide.Properties" GeneratedClassName="ArtistResultPageScraper">
<Profiles />
<Settings>
<Setting Name="ArtistResultUrl" Type="System.String" Scope="Application">
<Value Profile="(Default)">http://www.allmusic.com/search/ajax_results/artists/{0}</Value>
</Setting>
<Setting Name="ArtistXpath" Type="System.String" Scope="Application">
<Value Profile="(Default)">//*[contains(@class,'right-of-image')]</Value>
</Setting>
</Settings>
</SettingsFile>
@@ -0,0 +1,80 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.269
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace MusicMetaTagger.Client.AllMusicGuide.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")]
internal sealed partial class ArtistResultScraper : global::System.Configuration.ApplicationSettingsBase {
private static ArtistResultScraper defaultInstance = ((ArtistResultScraper)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new ArtistResultScraper())));
public static ArtistResultScraper Default {
get {
return defaultInstance;
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("//*[contains(@class,\'name\')]/a/@href")]
public string ArtistUrlXpath {
get {
return ((string)(this["ArtistUrlXpath"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("[a-zA-Z]{2}[0-9]+(?=$)")]
public string ArtistUrIdRegex {
get {
return ((string)(this["ArtistUrIdRegex"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("//*[contains(@class,\'name\')]/a")]
public string ArtistXpath {
get {
return ((string)(this["ArtistXpath"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("//*[@class=\'info\']")]
public string InfoXpath {
get {
return ((string)(this["InfoXpath"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute(".*(?=\\n)*")]
public string GenreRegex {
get {
return ((string)(this["GenreRegex"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("(?<=\\n).*(19|20)\\d{2}.*")]
public string YearsActiveRegex {
get {
return ((string)(this["YearsActiveRegex"]));
}
}
}
}
@@ -0,0 +1,24 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="AllMusicGuide.Client.Properties" GeneratedClassName="ArtistResultScraper">
<Profiles />
<Settings>
<Setting Name="ArtistUrlXpath" Type="System.String" Scope="Application">
<Value Profile="(Default)">//*[contains(@class,'name')]/a/@href</Value>
</Setting>
<Setting Name="ArtistUrIdRegex" Type="System.String" Scope="Application">
<Value Profile="(Default)">[a-zA-Z]{2}[0-9]+(?=$)</Value>
</Setting>
<Setting Name="ArtistXpath" Type="System.String" Scope="Application">
<Value Profile="(Default)">//*[contains(@class,'name')]/a</Value>
</Setting>
<Setting Name="InfoXpath" Type="System.String" Scope="Application">
<Value Profile="(Default)">//*[@class='info']</Value>
</Setting>
<Setting Name="GenreRegex" Type="System.String" Scope="Application">
<Value Profile="(Default)">.*(?=\n)*</Value>
</Setting>
<Setting Name="YearsActiveRegex" Type="System.String" Scope="Application">
<Value Profile="(Default)">(?&lt;=\n).*(19|20)\d{2}.*</Value>
</Setting>
</Settings>
</SettingsFile>
+80
View File
@@ -0,0 +1,80 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.18033
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace MusicMetaTagger.Client.AllMusicGuide.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
internal sealed partial class ArtistScaper : global::System.Configuration.ApplicationSettingsBase {
private static ArtistScaper defaultInstance = ((ArtistScaper)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new ArtistScaper())));
public static ArtistScaper Default {
get {
return defaultInstance;
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("http://www.allmusic.com/artist/{0}")]
public string ArtistUrl {
get {
return ((string)(this["ArtistUrl"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("http://www.allmusic.com/artist/{0}/overview/main")]
public string DiscographyAlbumUrl {
get {
return ((string)(this["DiscographyAlbumUrl"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("//*[@class=\'id-details\']//*[contains(.,\'Rovi Music ID\')]/following-sibling::*[1]")]
public string ArtistIdXpath {
get {
return ((string)(this["ArtistIdXpath"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("//*[@class=\'genres\']//a")]
public string GenreXpath {
get {
return ((string)(this["GenreXpath"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("//*[@class=\'styles\']//a")]
public string StylesXpath {
get {
return ((string)(this["StylesXpath"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("//*[@class=\'artist-name\']/text()")]
public string ArtistXpath {
get {
return ((string)(this["ArtistXpath"]));
}
}
}
}
@@ -0,0 +1,24 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="MusicMetaTagger.Client.AllMusicGuide.Properties" GeneratedClassName="ArtistScaper">
<Profiles />
<Settings>
<Setting Name="ArtistUrl" Type="System.String" Scope="Application">
<Value Profile="(Default)">http://www.allmusic.com/artist/{0}</Value>
</Setting>
<Setting Name="DiscographyAlbumUrl" Type="System.String" Scope="Application">
<Value Profile="(Default)">http://www.allmusic.com/artist/{0}/overview/main</Value>
</Setting>
<Setting Name="ArtistIdXpath" Type="System.String" Scope="Application">
<Value Profile="(Default)">//*[@class='id-details']//*[contains(.,'Rovi Music ID')]/following-sibling::*[1]</Value>
</Setting>
<Setting Name="GenreXpath" Type="System.String" Scope="Application">
<Value Profile="(Default)">//*[@class='genres']//a</Value>
</Setting>
<Setting Name="StylesXpath" Type="System.String" Scope="Application">
<Value Profile="(Default)">//*[@class='styles']//a</Value>
</Setting>
<Setting Name="ArtistXpath" Type="System.String" Scope="Application">
<Value Profile="(Default)">//*[@class='artist-name']/text()</Value>
</Setting>
</Settings>
</SettingsFile>
@@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("MusicMetaTagger.Client.AllMusicGuide")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("MusicMetaTagger.Client.AllMusicGuide")]
[assembly: AssemblyCopyright("Copyright © 2012")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("26de737f-4e88-484b-95ab-f4edec53c9ee")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
@@ -0,0 +1,107 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.269
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace MusicMetaTagger.Client.AllMusicGuide.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")]
internal sealed partial class SongAppearsOnAlbumScraper : global::System.Configuration.ApplicationSettingsBase {
private static SongAppearsOnAlbumScraper defaultInstance = ((SongAppearsOnAlbumScraper)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new SongAppearsOnAlbumScraper())));
public static SongAppearsOnAlbumScraper Default {
get {
return defaultInstance;
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("//*[contains(@class,\'title\')]/a/@href")]
public string AlbumUrlXpath {
get {
return ((string)(this["AlbumUrlXpath"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("[a-zA-Z]{2}[0-9]+(?=$)")]
public string AlbumUrlIdRegex {
get {
return ((string)(this["AlbumUrlIdRegex"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("//*[contains(@class,\'artist\')]/a")]
public string ArtistXpath {
get {
return ((string)(this["ArtistXpath"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("//*[contains(@class,\'title\')]/a")]
public string TitleXpath {
get {
return ((string)(this["TitleXpath"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("(19|20)\\d{2}")]
public string YearRegex {
get {
return ((string)(this["YearRegex"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("//*[contains(@class,\'artist\')]/a/@href")]
public string ArtistUrlXpath {
get {
return ((string)(this["ArtistUrlXpath"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("[a-zA-Z]{2}[0-9]+(?=$)")]
public string ArtistUrIdRegex {
get {
return ((string)(this["ArtistUrIdRegex"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("//*[contains(@class,\'artist\')]")]
public string ArtistNoUrlXpath {
get {
return ((string)(this["ArtistNoUrlXpath"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("//*[@class=\'year\']")]
public string YearXpath {
get {
return ((string)(this["YearXpath"]));
}
}
}
}
@@ -0,0 +1,33 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="AllMusicGuide.Client.Properties" GeneratedClassName="SongAppearsOnAlbumScraper">
<Profiles />
<Settings>
<Setting Name="AlbumUrlXpath" Type="System.String" Scope="Application">
<Value Profile="(Default)">//*[contains(@class,'title')]/a/@href</Value>
</Setting>
<Setting Name="AlbumUrlIdRegex" Type="System.String" Scope="Application">
<Value Profile="(Default)">[a-zA-Z]{2}[0-9]+(?=$)</Value>
</Setting>
<Setting Name="ArtistXpath" Type="System.String" Scope="Application">
<Value Profile="(Default)">//*[contains(@class,'artist')]/a</Value>
</Setting>
<Setting Name="TitleXpath" Type="System.String" Scope="Application">
<Value Profile="(Default)">//*[contains(@class,'title')]/a</Value>
</Setting>
<Setting Name="YearRegex" Type="System.String" Scope="Application">
<Value Profile="(Default)">(19|20)\d{2}</Value>
</Setting>
<Setting Name="ArtistUrlXpath" Type="System.String" Scope="Application">
<Value Profile="(Default)">//*[contains(@class,'artist')]/a/@href</Value>
</Setting>
<Setting Name="ArtistUrIdRegex" Type="System.String" Scope="Application">
<Value Profile="(Default)">[a-zA-Z]{2}[0-9]+(?=$)</Value>
</Setting>
<Setting Name="ArtistNoUrlXpath" Type="System.String" Scope="Application">
<Value Profile="(Default)">//*[contains(@class,'artist')]</Value>
</Setting>
<Setting Name="YearXpath" Type="System.String" Scope="Application">
<Value Profile="(Default)">//*[@class='year']</Value>
</Setting>
</Settings>
</SettingsFile>
@@ -0,0 +1,47 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.18033
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace MusicMetaTagger.Client.AllMusicGuide.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
internal sealed partial class SongResultPageScraper : global::System.Configuration.ApplicationSettingsBase {
private static SongResultPageScraper defaultInstance = ((SongResultPageScraper)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new SongResultPageScraper())));
public static SongResultPageScraper Default {
get {
return defaultInstance;
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("http://www.allmusic.com/search/ajax_results/songs/{0}")]
public string SongResultUrl {
get {
return ((string)(this["SongResultUrl"]));
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("//*[contains(@class,\'right-of-image\')]")]
public string SongXpath {
get {
return ((string)(this["SongXpath"]));
}
set {
this["SongXpath"] = value;
}
}
}
}
@@ -0,0 +1,12 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="MusicMetaTagger.Client.AllMusicGuide.Properties" GeneratedClassName="SongResultPageScraper">
<Profiles />
<Settings>
<Setting Name="SongResultUrl" Type="System.String" Scope="Application">
<Value Profile="(Default)">http://www.allmusic.com/search/ajax_results/songs/{0}</Value>
</Setting>
<Setting Name="SongXpath" Type="System.String" Scope="User">
<Value Profile="(Default)">//*[contains(@class,'right-of-image')]</Value>
</Setting>
</Settings>
</SettingsFile>
@@ -0,0 +1,89 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.269
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace MusicMetaTagger.Client.AllMusicGuide.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")]
internal sealed partial class SongResultScraper : global::System.Configuration.ApplicationSettingsBase {
private static SongResultScraper defaultInstance = ((SongResultScraper)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new SongResultScraper())));
public static SongResultScraper Default {
get {
return defaultInstance;
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("//*[contains(@class,\'title\')]/a")]
public string SongTitleXpath {
get {
return ((string)(this["SongTitleXpath"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("[a-zA-Z]{2}[0-9]+(?=$)")]
public string SongUrlIdRegex {
get {
return ((string)(this["SongUrlIdRegex"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("//*[contains(@class,\'performer\')]/a/@href")]
public string ArtistUrlXpath {
get {
return ((string)(this["ArtistUrlXpath"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("[a-zA-Z]{2}[0-9]+(?=$)")]
public string ArtistUrIdRegex {
get {
return ((string)(this["ArtistUrIdRegex"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("//*[contains(@class,\'title\')]/a/@href")]
public string SongUrlIdXpath {
get {
return ((string)(this["SongUrlIdXpath"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("//*[contains(@class,\'performer\')]/a")]
public string ArtistXpath {
get {
return ((string)(this["ArtistXpath"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("(?<=^\").*(?=\"$)")]
public string SongTitleRegex {
get {
return ((string)(this["SongTitleRegex"]));
}
}
}
}
@@ -0,0 +1,27 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="AllMusicGuide.Client.Properties" GeneratedClassName="SongResultScraper">
<Profiles />
<Settings>
<Setting Name="SongTitleXpath" Type="System.String" Scope="Application">
<Value Profile="(Default)">//*[contains(@class,'title')]/a</Value>
</Setting>
<Setting Name="SongUrlIdRegex" Type="System.String" Scope="Application">
<Value Profile="(Default)">[a-zA-Z]{2}[0-9]+(?=$)</Value>
</Setting>
<Setting Name="ArtistUrlXpath" Type="System.String" Scope="Application">
<Value Profile="(Default)">//*[contains(@class,'performer')]/a/@href</Value>
</Setting>
<Setting Name="ArtistUrIdRegex" Type="System.String" Scope="Application">
<Value Profile="(Default)">[a-zA-Z]{2}[0-9]+(?=$)</Value>
</Setting>
<Setting Name="SongUrlIdXpath" Type="System.String" Scope="Application">
<Value Profile="(Default)">//*[contains(@class,'title')]/a/@href</Value>
</Setting>
<Setting Name="ArtistXpath" Type="System.String" Scope="Application">
<Value Profile="(Default)">//*[contains(@class,'performer')]/a</Value>
</Setting>
<Setting Name="SongTitleRegex" Type="System.String" Scope="Application">
<Value Profile="(Default)">(?&lt;=^").*(?="$)</Value>
</Setting>
</Settings>
</SettingsFile>
+98
View File
@@ -0,0 +1,98 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.18033
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace MusicMetaTagger.Client.AllMusicGuide.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
internal sealed partial class SongScraper : global::System.Configuration.ApplicationSettingsBase {
private static SongScraper defaultInstance = ((SongScraper)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new SongScraper())));
public static SongScraper Default {
get {
return defaultInstance;
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("//*[@class=\'song-title\']")]
public string SongTitleXpath {
get {
return ((string)(this["SongTitleXpath"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("[a-zA-Z]{2}[0-9]+(?=$)")]
public string SongUrlIdRegex {
get {
return ((string)(this["SongUrlIdRegex"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("//*[@class=\'song-artist\']/a/@href")]
public string ArtistUrlXpath {
get {
return ((string)(this["ArtistUrlXpath"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("[a-zA-Z]{2}[0-9]+(?=$)")]
public string ArtistUrIdRegex {
get {
return ((string)(this["ArtistUrIdRegex"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("//link[@rel=\'canonical\']/@href")]
public string SongUrlIdXpath {
get {
return ((string)(this["SongUrlIdXpath"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("//*[@class=\'song-artist\']/a")]
public string ArtistXpath {
get {
return ((string)(this["ArtistXpath"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("http://www.allmusic.com/song/{0}")]
public string SongUrl {
get {
return ((string)(this["SongUrl"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("//*[@id=\'appearances\']//tbody/tr")]
public string AlbumXpath {
get {
return ((string)(this["AlbumXpath"]));
}
}
}
}
@@ -0,0 +1,30 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="MusicMetaTagger.Client.AllMusicGuide.Properties" GeneratedClassName="SongScraper">
<Profiles />
<Settings>
<Setting Name="SongTitleXpath" Type="System.String" Scope="Application">
<Value Profile="(Default)">//*[@class='song-title']</Value>
</Setting>
<Setting Name="SongUrlIdRegex" Type="System.String" Scope="Application">
<Value Profile="(Default)">[a-zA-Z]{2}[0-9]+(?=$)</Value>
</Setting>
<Setting Name="ArtistUrlXpath" Type="System.String" Scope="Application">
<Value Profile="(Default)">//*[@class='song-artist']/a/@href</Value>
</Setting>
<Setting Name="ArtistUrIdRegex" Type="System.String" Scope="Application">
<Value Profile="(Default)">[a-zA-Z]{2}[0-9]+(?=$)</Value>
</Setting>
<Setting Name="SongUrlIdXpath" Type="System.String" Scope="Application">
<Value Profile="(Default)">//link[@rel='canonical']/@href</Value>
</Setting>
<Setting Name="ArtistXpath" Type="System.String" Scope="Application">
<Value Profile="(Default)">//*[@class='song-artist']/a</Value>
</Setting>
<Setting Name="SongUrl" Type="System.String" Scope="Application">
<Value Profile="(Default)">http://www.allmusic.com/song/{0}</Value>
</Setting>
<Setting Name="AlbumXpath" Type="System.String" Scope="Application">
<Value Profile="(Default)">//*[@id='appearances']//tbody/tr</Value>
</Setting>
</Settings>
</SettingsFile>
+122
View File
@@ -0,0 +1,122 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.269
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace MusicMetaTagger.Client.AllMusicGuide.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")]
internal sealed partial class TrackScraper : global::System.Configuration.ApplicationSettingsBase {
private static TrackScraper defaultInstance = ((TrackScraper)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new TrackScraper())));
public static TrackScraper Default {
get {
return defaultInstance;
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("//*[contains(@class,\'pick\')]")]
public string PickXpath {
get {
return ((string)(this["PickXpath"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("//*[@class=\'tracknum\']")]
public string TrackNumberXpath {
get {
return ((string)(this["TrackNumberXpath"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("//*[@class=\'title\']//a/@href")]
public string TrackUrlXpath {
get {
return ((string)(this["TrackUrlXpath"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("[a-zA-Z]{2}[0-9]+(?=$)")]
public string TrackUrlIdRegex {
get {
return ((string)(this["TrackUrlIdRegex"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("//*[@class=\'title\']//a")]
public string TitleXpath {
get {
return ((string)(this["TitleXpath"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("//*[contains(@class,\'artist\')]//a")]
public string ComposerXpath {
get {
return ((string)(this["ComposerXpath"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("//*[@class=\'time\']")]
public string TimeXpath {
get {
return ((string)(this["TimeXpath"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("//*[contains(@class,\'performer\')]/*[@class=\'primary\']/a/@href")]
public string PerformerIdXpath {
get {
return ((string)(this["PerformerIdXpath"]));
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("[a-zA-Z]{2}[0-9]+(?=$)")]
public string PerformerIdRegex {
get {
return ((string)(this["PerformerIdRegex"]));
}
set {
this["PerformerIdRegex"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("//*[contains(@class,\'performer\')]//a/@href")]
public string PerformerIdAlternateXpath {
get {
return ((string)(this["PerformerIdAlternateXpath"]));
}
set {
this["PerformerIdAlternateXpath"] = value;
}
}
}
}
@@ -0,0 +1,36 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="AllMusicGuide.Client.Properties" GeneratedClassName="TrackScraper">
<Profiles />
<Settings>
<Setting Name="PickXpath" Type="System.String" Scope="Application">
<Value Profile="(Default)">//*[contains(@class,'pick')]</Value>
</Setting>
<Setting Name="TrackNumberXpath" Type="System.String" Scope="Application">
<Value Profile="(Default)">//*[@class='tracknum']</Value>
</Setting>
<Setting Name="TrackUrlXpath" Type="System.String" Scope="Application">
<Value Profile="(Default)">//*[@class='title']//a/@href</Value>
</Setting>
<Setting Name="TrackUrlIdRegex" Type="System.String" Scope="Application">
<Value Profile="(Default)">[a-zA-Z]{2}[0-9]+(?=$)</Value>
</Setting>
<Setting Name="TitleXpath" Type="System.String" Scope="Application">
<Value Profile="(Default)">//*[@class='title']//a</Value>
</Setting>
<Setting Name="ComposerXpath" Type="System.String" Scope="Application">
<Value Profile="(Default)">//*[contains(@class,'artist')]//a</Value>
</Setting>
<Setting Name="TimeXpath" Type="System.String" Scope="Application">
<Value Profile="(Default)">//*[@class='time']</Value>
</Setting>
<Setting Name="PerformerIdXpath" Type="System.String" Scope="Application">
<Value Profile="(Default)">//*[contains(@class,'performer')]/*[@class='primary']/a/@href</Value>
</Setting>
<Setting Name="PerformerIdRegex" Type="System.String" Scope="User">
<Value Profile="(Default)">[a-zA-Z]{2}[0-9]+(?=$)</Value>
</Setting>
<Setting Name="PerformerIdAlternateXpath" Type="System.String" Scope="User">
<Value Profile="(Default)">//*[contains(@class,'performer')]//a/@href</Value>
</Setting>
</Settings>
</SettingsFile>