logo

multimedia-dl

Unnamed repository; edit this file 'description' to name the repository.
commit: 4e1c933490df5278c14aec301173e61041f35aa6
parent 0154fe62819ac4ccf7f4466e5c9ed4751a2d4f73
Author: Haelwenn (lanodan) Monnier <contact@hacktivis.me>
Date:   Fri, 24 Nov 2023 15:01:54 +0100

kara-moe.pl: New, based on API

Diffstat:

Akara-moe.pl57+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 57 insertions(+), 0 deletions(-)

diff --git a/kara-moe.pl b/kara-moe.pl @@ -0,0 +1,57 @@ +#!/usr/bin/env perl +# Multimedia-DL: Youtube-DL inspired scraper +# Copyright © 2021-2023 Multimedia-DL Authors <https://hacktivis.me/git/multimedia-dl/> +# SPDX-License-Identifier: AGPL-3-only +use strict; +use utf8; +use URI; +use File::Basename; +use LWP::UserAgent; +use JSON; +require HTTP::Request; + +my $ua = LWP::UserAgent->new; + +# Picked this one for it's stability +my $webkit_ua = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0 Safari/605.1.15"; + +$ua->agent($webkit_ua . "Multimedia-DL/1.0"); + +if($#ARGV != 0) { + print "usage: multimedia-dl <url>\n"; + exit 1; +} + +# https://kara.moe/kara/shinkiro/0b880b76-c599-47b5-aa71-a7392a9c947f +my $url = URI->new($ARGV[0]); +my $id = basename($url->path); + +# https://kara.moe/api/karas/0b880b76-c599-47b5-aa71-a7392a9c947f +my $api_url = URI->new_abs("/api/karas/" . $id, $url)->canonical; +my $req = HTTP::Request->new(GET => $api_url); + +my $res = $ua->request($req); + +$res->is_success or die "Got ", $res->status_line, " instead of 2xx\n"; + +my $content_type = $res->header("Content-Type"); +my $content_match = qr{^application/([^+]*\+)?json(; .*)?}; + +($content_type =~ $content_match) or die "Got $content_type instead of $content_match\n"; + +my $kara = decode_json($res->content); + +my $title_lang = $kara->{'titles_default_language'}; +my $title = $kara->{'titles'}->{$title_lang}; + +print STDERR "Title: ", $title, "\n"; +print "--title='", $title, "' "; + +# https://kara.moe/downloads/lyrics/JPN%20-%20GuraMarine%20-%20MV%20-%20SHINKIRO.ass +my $subfile = URI->new_abs("/downloads/lyrics/" . $kara->{'subfile'}, $url)->canonical; +print "--sub-file='", $subfile, "' "; + +# https://kara.moe/downloads/medias/JPN%20-%20GuraMarine%20-%20MV%20-%20SHINKIRO.mp4 +print URI->new_abs("/downloads/medias/" . $kara->{'mediafile'}, $url)->canonical; + +print "\n";