summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/VNDB/DB/Releases.pm6
-rw-r--r--lib/VNDB/Handler/Releases.pm8
-rw-r--r--lib/VNDB/Util/Misc.pm1
-rw-r--r--util/sql/schema.sql6
-rw-r--r--util/updates/update_20190816.sql16
5 files changed, 30 insertions, 7 deletions
diff --git a/lib/VNDB/DB/Releases.pm b/lib/VNDB/DB/Releases.pm
index b2cdde8b..cc2f9208 100644
--- a/lib/VNDB/DB/Releases.pm
+++ b/lib/VNDB/DB/Releases.pm
@@ -88,7 +88,7 @@ sub dbReleaseGet {
qw|r.id r.title r.original r.website r.released r.minage r.type r.patch|,
$o{what} =~ /extended/ ? qw|
r.notes r.catalog r.gtin r.resolution r.voiced r.freeware r.doujin r.uncensored r.ani_story r.ani_ero r.engine r.hidden r.locked
- r.l_steam r.l_dlsite r.l_dlsiteen r.l_gog r.l_denpa r.l_jlist r.l_gyutto r.l_digiket r.l_melon
+ r.l_steam r.l_dlsite r.l_dlsiteen r.l_gog r.l_denpa r.l_jlist r.l_gyutto r.l_digiket r.l_melon r.l_mg
| : (),
$o{pid} ? ('rp.developer', 'rp.publisher') : (),
);
@@ -128,7 +128,7 @@ sub dbReleaseGetRev {
my $select = 'c.itemid AS id, r.title, r.original, r.website, r.released, r.minage, r.type, r.patch';
$select .= ', r.notes, r.catalog, r.gtin, r.resolution, r.voiced, r.freeware, r.doujin, r.uncensored, r.ani_story, r.ani_ero, r.engine, ro.hidden, ro.locked' if $o{what} =~ /extended/;
- $select .= ', r.l_steam, r.l_dlsite, r.l_dlsiteen, r.l_gog, r.l_denpa, r.l_jlist, r.l_gyutto, r.l_digiket, r.l_melon' if $o{what} =~ /extended/;
+ $select .= ', r.l_steam, r.l_dlsite, r.l_dlsiteen, r.l_gog, r.l_denpa, r.l_jlist, r.l_gyutto, r.l_digiket, r.l_melon, r.l_mg' if $o{what} =~ /extended/;
$select .= ', extract(\'epoch\' from c.added) as added, c.requester, c.comments, u.username, c.rev, c.ihid, c.ilock';
$select .= ', c.id AS cid, NOT EXISTS(SELECT 1 FROM changes c2 WHERE c2.type = c.type AND c2.itemid = c.itemid AND c2.rev = c.rev+1) AS lastrev';
@@ -219,7 +219,7 @@ sub dbReleaseRevisionInsert {
my %set = map exists($o->{$_}) ? ("$_ = ?", $o->{$_}) : (),
qw|title original gtin catalog website released notes minage type
- l_steam l_dlsite l_dlsiteen l_gog l_denpa l_jlist l_gyutto l_digiket l_melon
+ l_steam l_dlsite l_dlsiteen l_gog l_denpa l_jlist l_gyutto l_digiket l_melon l_mg
patch resolution voiced freeware doujin uncensored ani_story ani_ero engine|;
$self->dbExec('UPDATE edit_releases !H', \%set) if keys %set;
diff --git a/lib/VNDB/Handler/Releases.pm b/lib/VNDB/Handler/Releases.pm
index 0e2b4e5e..387db3ca 100644
--- a/lib/VNDB/Handler/Releases.pm
+++ b/lib/VNDB/Handler/Releases.pm
@@ -67,6 +67,8 @@ sub page {
[ l_jlist => 'J-List', htmlize => sub { $_[0] ? sprintf '<a href="https://www.jlist.com/%s">%1$s</a>', $_[0] : '[empty]' } ],
[ l_gyutto => 'Gyutto', htmlize => sub { $_[0] ? sprintf '<a href="https://gyutto.com/i/item%d">%1$d</a>', $_[0] : '[empty]' } ],
[ l_digiket => 'Digiket', htmlize => sub { $_[0] ? sprintf '<a href="https://www.digiket.com/work/show/_data/ID=ITM%07d/">%1$d</a>', $_[0] : '[empty]' } ],
+ [ l_melon => 'Melonbooks', htmlize => sub { $_[0] ? sprintf '<a href="https://www.melonbooks.com/index.php?main_page=product_info&products_id=IT%010d">%1$d</a>', $_[0] : '[empty]' } ],
+ [ l_mg => 'MangaGamer', htmlize => sub { $_[0] ? sprintf '<a href="https://www.mangagamer.com/r18/detail.php?product_code=%d">%1$d</a>', $_[0] : '[empty]' } ],
[ released => 'Release date', htmlize => \&fmtdatestr ],
[ minage => 'Age rating', serialize => \&minage ],
[ notes => 'Notes', diff => qr/[ ,\n\.]/ ],
@@ -316,7 +318,7 @@ sub edit {
my $vn = $rid ? $r->{vn} : [{ vid => $vid, title => $v->{title} }];
my %b4 = !$rid ? () : (
(map { $_ => $r->{$_} } qw|type title original gtin catalog languages website released minage
- l_steam l_dlsite l_dlsiteen l_gog l_denpa l_jlist l_gyutto l_digiket l_melon
+ l_steam l_dlsite l_dlsiteen l_gog l_denpa l_jlist l_gyutto l_digiket l_melon l_mg
notes platforms patch resolution voiced freeware doujin uncensored ani_story ani_ero engine ihid ilock|),
media => join(',', sort map "$_->{medium} $_->{qty}", @{$r->{media}}),
producers => join('|||', map
@@ -351,6 +353,7 @@ sub edit {
{ post => 'l_gyutto', required => 0, default => 0, template => 'uint' },
{ post => 'l_digiket', required => 0, default => 0, func => [ sub { $_[0] =~ s/^(?:ITM)?0+//; $_[0] =~ /^[0-9]+$/ }, 'Invalid Digiket ID' ] },
{ post => 'l_melon', required => 0, default => 0, func => [ sub { $_[0] =~ s/^(?:IT)?0+//; $_[0] =~ /^[0-9]+$/ }, 'Invalid Melonbooks.com ID' ] },
+ { post => 'l_mg', required => 0, default => 0, template => 'uint' },
{ post => 'released', required => 0, default => 0, template => 'rdate' },
{ post => 'minage' , required => 0, default => -1, enum => $self->{age_ratings} },
{ post => 'notes', required => 0, default => '', maxlength => 10240 },
@@ -404,7 +407,7 @@ sub edit {
if(!$frm->{_err}) {
my $nrev = $self->dbItemEdit(r => !$copy && $rid ? ($r->{id}, $r->{rev}) : (undef, undef),
(map { $_ => $frm->{$_} } qw| type title original gtin catalog languages website released minage
- l_steam l_dlsite l_dlsiteen l_gog l_denpa l_jlist l_gyutto l_digiket l_melon
+ l_steam l_dlsite l_dlsiteen l_gog l_denpa l_jlist l_gyutto l_digiket l_melon l_mg
notes platforms resolution editsum patch voiced freeware doujin uncensored ani_story ani_ero engine ihid ilock|),
vn => $new_vn,
producers => $producers,
@@ -460,6 +463,7 @@ sub _form {
[ static => nolabel => 1, content => '<br><b>Webshop links</b>' ],
[ input => short => 'l_steam', name => 'Steam AppID', pre => 'store.steampowered.com/app/', width => 100 ],
[ input => short => 'l_jlist', name => 'J-List', pre => 'www.jlist.com/', post => ' (the last part of the URL, e.g. "np004")', width => 100 ],
+ [ input => short => 'l_mg', name => 'MangaGamer', pre => 'mangagamer.com/..&product_code=', width => 100 ],
[ input => short => 'l_denpa', name => 'Denpasoft', pre => 'denpasoft.com/products/' ],
[ input => short => 'l_gog', name => 'GOG.com', pre => 'www.gog.com/game/' ],
[ input => short => 'l_dlsiteen',name => 'DLsite (eng)', pre => 'www.dlsite.com/../product_id/', post => ' e.g. "RE083922"', width => 100 ],
diff --git a/lib/VNDB/Util/Misc.pm b/lib/VNDB/Util/Misc.pm
index 0a980ebf..49e36459 100644
--- a/lib/VNDB/Util/Misc.pm
+++ b/lib/VNDB/Util/Misc.pm
@@ -205,6 +205,7 @@ sub entryLinks {
$lnk->($obj->{l_gyutto}, 'Gyutto', 'https://gyutto.com/i/item%d');
$lnk->($obj->{l_digiket}, 'Digiket', 'https://www.digiket.com/work/show/_data/ID=ITM%07d/');
$lnk->($obj->{l_melon}, 'Melonbooks', 'https://www.melonbooks.com/index.php?main_page=product_info&products_id=IT%010d');
+ $lnk->($obj->{l_mg}, 'MangaGamer', 'https://www.mangagamer.com/r18/detail.php?product_code=%d');
}
# Staff links
diff --git a/util/sql/schema.sql b/util/sql/schema.sql
index 9835db46..f6312639 100644
--- a/util/sql/schema.sql
+++ b/util/sql/schema.sql
@@ -312,7 +312,8 @@ CREATE TABLE releases ( -- dbentry_type=r
l_jlist text NOT NULL DEFAULT '', -- [pub]
l_gyutto integer NOT NULL DEFAULT 0, -- [pub]
l_digiket integer NOT NULL DEFAULT 0, -- [pub]
- l_melon integer NOT NULL DEFAULT 0 -- [pub]
+ l_melon integer NOT NULL DEFAULT 0, -- [pub]
+ l_mg integer NOT NULL DEFAULT 0 -- [pub]
);
-- releases_hist
@@ -344,7 +345,8 @@ CREATE TABLE releases_hist (
l_jlist text NOT NULL DEFAULT '',
l_gyutto integer NOT NULL DEFAULT 0,
l_digiket integer NOT NULL DEFAULT 0,
- l_melon integer NOT NULL DEFAULT 0
+ l_melon integer NOT NULL DEFAULT 0,
+ l_mg integer NOT NULL DEFAULT 0
);
-- releases_lang
diff --git a/util/updates/update_20190816.sql b/util/updates/update_20190816.sql
index a23f7c4d..4b5301e9 100644
--- a/util/updates/update_20190816.sql
+++ b/util/updates/update_20190816.sql
@@ -9,6 +9,7 @@ ALTER TABLE releases ADD COLUMN l_jlist text NOT NULL DEFAULT '';
ALTER TABLE releases ADD COLUMN l_gyutto integer NOT NULL DEFAULT 0;
ALTER TABLE releases ADD COLUMN l_digiket integer NOT NULL DEFAULT 0;
ALTER TABLE releases ADD COLUMN l_melon integer NOT NULL DEFAULT 0;
+ALTER TABLE releases ADD COLUMN l_mg integer NOT NULL DEFAULT 0;
ALTER TABLE releases_hist ADD COLUMN l_steam integer NOT NULL DEFAULT 0;
ALTER TABLE releases_hist ADD COLUMN l_dlsite text NOT NULL DEFAULT '';
ALTER TABLE releases_hist ADD COLUMN l_dlsiteen text NOT NULL DEFAULT '';
@@ -18,6 +19,7 @@ ALTER TABLE releases_hist ADD COLUMN l_jlist text NOT NULL DEFAULT '';
ALTER TABLE releases_hist ADD COLUMN l_gyutto integer NOT NULL DEFAULT 0;
ALTER TABLE releases_hist ADD COLUMN l_digiket integer NOT NULL DEFAULT 0;
ALTER TABLE releases_hist ADD COLUMN l_melon integer NOT NULL DEFAULT 0;
+ALTER TABLE releases_hist ADD COLUMN l_mg integer NOT NULL DEFAULT 0;
\i util/sql/editfunc.sql
@@ -104,3 +106,17 @@ $$ LANGUAGE plpgsql;
SELECT migrate_affiliates_to_denpa(rid, url) FROM affiliate_links a WHERE affiliate = 6 AND NOT hidden
AND NOT EXISTS(SELECT 1 FROM affiliate_links b WHERE b.id <> a.id AND a.rid = b.rid);
DROP FUNCTION migrate_affiliates_to_denpa(integer, text);
+
+
+
+CREATE OR REPLACE FUNCTION migrate_affiliates_to_mg(rid integer, url text) RETURNS void AS $$
+BEGIN
+ PERFORM edit_r_init(rid, (SELECT MAX(rev) FROM changes WHERE itemid = rid AND type = 'r'));
+ UPDATE edit_releases SET l_mg = regexp_replace(url, '^.+product_code=([0-9]+).*$', '\1')::integer;
+ UPDATE edit_revision SET requester = 1, ip = '0.0.0.0', comments = 'Automatic conversion of affiliate link to MangaGamer link.';
+ PERFORM edit_r_commit();
+END;
+$$ LANGUAGE plpgsql;
+SELECT migrate_affiliates_to_mg(rid, url) FROM affiliate_links a WHERE affiliate = 5 AND NOT hidden
+ AND NOT EXISTS(SELECT 1 FROM affiliate_links b WHERE b.id <> a.id AND a.rid = b.rid);
+DROP FUNCTION migrate_affiliates_to_mg(integer, text);