[mb-commits] branch, data-nes, updated. Re-add Controller::Role::Wikipedia to works
MusicBrainz Git Server <[email protected]> Fri, 01 Feb 2013 13:12:21 +0000
| Newsgroups | gmane.comp.audio.musicbrainz.cvs |
|---|---|
| Message-ID | <E1U1GPl-0005dB-1c@wiley> |
The branch, data-nes has been updated
via http://git.musicbrainz.org/gitweb/?p=musicbrainz-server/core.git;a=commit;h=2bf3edede949aed341e01d51e9bee6361c993da4 (commit)
from http://git.musicbrainz.org/gitweb/?p=musicbrainz-server/core.git;a=commit;h=d2762d22a43038128404459b15b8f108a0133da0 (commit)
Summary of changes:
lib/MusicBrainz/Server/Controller/Work.pm | 2 +-
lib/MusicBrainz/Server/Data/NES/URL.pm | 66 ++++++++++++++++++++++++++++-
2 files changed, 65 insertions(+), 3 deletions(-)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 2bf3edede949aed341e01d51e9bee6361c993da4
Author: Oliver Charles <[email protected]>
Date: Fri Feb 1 14:44:46 2013 +0000
Re-add Controller::Role::Wikipedia to works
diff --git a/lib/MusicBrainz/Server/Controller/Work.pm b/lib/MusicBrainz/Server/Controller/Work.pm
index b2430bd..9defd63 100644
--- a/lib/MusicBrainz/Server/Controller/Work.pm
+++ b/lib/MusicBrainz/Server/Controller/Work.pm
@@ -29,7 +29,7 @@ with 'MusicBrainz::Server::Controller::Role::EditListing';
with 'MusicBrainz::Server::Controller::Role::Rating';
with 'MusicBrainz::Server::Controller::Role::Relationship';
with 'MusicBrainz::Server::Controller::Role::Tag';
-# with 'MusicBrainz::Server::Controller::Role::WikipediaExtract';
+with 'MusicBrainz::Server::Controller::Role::WikipediaExtract';
use aliased 'MusicBrainz::Server::Entity::ArtistCredit';
diff --git a/lib/MusicBrainz/Server/Data/NES/URL.pm b/lib/MusicBrainz/Server/Data/NES/URL.pm
index e8a8fad..edebca6 100644
--- a/lib/MusicBrainz/Server/Data/NES/URL.pm
+++ b/lib/MusicBrainz/Server/Data/NES/URL.pm
@@ -2,6 +2,7 @@ package MusicBrainz::Server::Data::NES::URL;
use Moose;
use namespace::autoclean;
+use Class::Load;
use MusicBrainz::Server::Entity::Tree::URL;
use MusicBrainz::Server::Entity::URL;
@@ -10,12 +11,73 @@ with 'MusicBrainz::Server::Data::NES::CoreEntity' => {
root => '/url'
};
+my %URL_SPECIALIZATIONS = (
+ '45cat' => qr{^https?://(?:www.)?45cat.com/}i,
+ 'Allmusic' => qr{^https?://(?:www.)?allmusic.com/}i,
+ 'ASIN' => qr{^https?://(?:www.)?amazon(.*?)(?:\:[0-9]+)?/.*/([0-9B][0-9A-Z]{9})(?:[^0-9A-Z]|$)}i,
+ 'BBCMusic' => qr{^https?://(?:www.)?bbc.co.uk/music/}i,
+ 'Canzone' => qr{^https?://(?:www.)?discografia.dds.it/}i,
+ 'CDBaby' => qr{^https?://(?:www.)?cdbaby.com/}i,
+ 'DHHU' => qr{^https?://(?:www.)?dhhu.dk/}i,
+ 'Discogs' => qr{^https?://(?:www.)?discogs.com/}i,
+ 'DiscosDoBrasil' => qr{^https?://(?:www.)?discosdobrasil.com.br/}i,
+ 'Encyclopedisque' => qr{^https?://(?:www.)?encyclopedisque.fr/}i,
+ 'ESTERTallinn' => qr{^https?://tallinn.ester.ee/}i,
+ 'ESTERTartu' => qr{^https?://tartu.ester.ee/}i,
+ 'Facebook' => qr{^https?://(?:www.)?facebook.com/}i,
+ 'IBDb' => qr{^https?://(?:www.)?ibdb.com/}i,
+ 'IMDb' => qr{^https?://(?:www.)?imdb.com/}i,
+ 'IMSLP' => qr{^https?://(?:www.)?imslp.org/wiki/}i,
+ 'IOBDb' => qr{^https?://(?:www.)?lortel.org/}i,
+ 'InternetArchive' => qr{^https?://(?:www.)?archive.org/details/}i,
+ 'ISRCTW' => qr{^https?://(?:www.)?isrc.ncl.edu.tw/}i,
+ 'Jamendo' => qr{^https?://(?:www.)?jamendo.com/}i,
+ 'LastFM' => qr{^https?://(?:www.)?last.fm/}i,
+ 'Lieder' => qr{^https?://(?:www.)?recmusic.org/lieder/}i,
+ 'LyricWiki' => qr{^https?://lyrics.wikia.com/}i,
+ 'MetalArchives' => qr{^https?://(?:www.)?metal-archives.com/}i,
+ 'MusicMoz' => qr{^https?://(?:www.)?musicmoz.org/}i,
+ 'MusikSammler' => qr{^https?://(?:www.)?musik-sammler.de/}i,
+ 'MySpace' => qr{^https?://(?:www.)?myspace.com/}i,
+ 'OCReMix' => qr{^https?://(?:www.)?ocremix.org/}i,
+ 'Ozon' => qr{^https?://(?:www.)?ozon.ru/}i,
+ 'PsyDB' => qr{^https?://(?:www.)?psydb.net/}i,
+ 'PureVolume' => qr{^https?://(?:www.)?purevolume.com/}i,
+ 'Rateyourmusic' => qr{^https?://(?:www.)?rateyourmusic.com/}i,
+ 'RockInChina' => qr{^https?://(?:www.)?rockinchina.com/}i,
+ 'Rolldabeats' => qr{^https?://(?:www.)?rolldabeats.com/}i,
+ 'SecondHandSongs' => qr{^https?://(?:www.)?secondhandsongs.com/}i,
+ 'Songfacts' => qr{^https?://(?:www.)?songfacts.com/}i,
+ 'SoundCloud' => qr{^https?://(?:www.)?soundcloud.com/}i,
+ 'SpiritOfMetal' => qr{^https?://(?:www.)?spirit-of-metal.com/}i,
+ 'Theatricalia' => qr{^https?://(?:www.)?theatricalia.com/}i,
+ 'Trove' => qr{^https?://(?:www.)?trove.nla.gov.au/}i,
+ 'Twitter' => qr{^https?://(?:www.)?twitter.com/}i,
+ 'VGMdb' => qr{^https?://(?:www.)?vgmdb.net/}i,
+ 'Wikipedia' => qr{^https?://([\w-]{2,})\.wikipedia.org/wiki/}i,
+ 'Worldcat' => qr{^https?://(?:www.)?worldcat.org/}i,
+ 'YouTube' => qr{^https?://(?:www.)?youtube.com/}i,
+);
+
+sub determine_url_class {
+ my $url = shift;
+ for my $class (keys %URL_SPECIALIZATIONS) {
+ my $regex = $URL_SPECIALIZATIONS{$class};
+ next unless $url =~ $regex;
+
+ $class = "MusicBrainz::Server::Entity::URL::$class";
+ Class::Load::load_class($class);
+ return $class if ($url =~ $regex);
+ }
+ return 'MusicBrainz::Server::Entity::URL';
+};
+
sub find_or_insert {
my ($self, $edit, $editor, $url) = @_;
$self->create(
$edit, $editor,
MusicBrainz::Server::Entity::Tree::URL->new(
- url => MusicBrainz::Server::Entity::URL->new(
+ url => determine_url_class($url)->new(
url => $url
)
)
@@ -33,7 +95,7 @@ sub tree_to_json {
sub map_core_entity {
my ($self, $response) = @_;
my %data = %{ $response->{data} };
- return MusicBrainz::Server::Entity::URL->new(
+ return determine_url_class($data{url})->new(
url => $data{url},
gid => $response->{mbid},
-----------------------------------------------------------------------
hooks/post-receive
--
mb_server