Created
September 11, 2023 11:20
-
-
Save fireattack/9897195320db43e3f3509701789111b1 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import colorsys | |
import csv | |
from datetime import datetime | |
from pathlib import Path | |
import matplotlib.colors as mcolors | |
import matplotlib.pyplot as plt | |
import numpy as np | |
from matplotlib import markers | |
from matplotlib.path import Path as pPath | |
# https://stackoverflow.com/questions/26686722/align-matplotlib-scatter-marker-left-and-or-right | |
def align_marker(marker, halign='center', valign='middle'): | |
if isinstance(halign, (str)): | |
halign = {'right': -1., | |
'middle': 0., | |
'center': 0., | |
'left': 1., | |
}[halign] | |
if isinstance(valign, (str)): | |
valign = {'top': -1., | |
'middle': 0., | |
'center': 0., | |
'bottom': 1., | |
}[valign] | |
# Define the base marker | |
bm = markers.MarkerStyle(marker) | |
# Get the marker path and apply the marker transform to get the | |
# actual marker vertices (they should all be in a unit-square | |
# centered at (0, 0)) | |
m_arr = bm.get_path().transformed(bm.get_transform()).vertices | |
# Shift the marker vertices for the specified alignment. | |
m_arr[:, 0] += halign / 2 | |
m_arr[:, 1] += valign / 2 | |
return pPath(m_arr, bm.get_path().codes) | |
def tsv2dict(p): | |
p = Path(p) | |
with p.open(encoding='utf8') as f: | |
reader = csv.DictReader(f, delimiter='\t', quoting=csv.QUOTE_NONE) | |
# headers = reader.fieldnames | |
data = list(reader) | |
return data | |
def adjust_lightness(color, amount=0.5): | |
try: | |
c = mcolors.cnames[color] | |
except: | |
c = color | |
c = colorsys.rgb_to_hls(*mcolors.to_rgb(c)) | |
return colorsys.hls_to_rgb(c[0], max(0, min(1, amount * c[1])), c[2]) | |
def ordinal(n: int): | |
if 11 <= (n % 100) <= 13: | |
suffix = 'th' | |
else: | |
suffix = ['th', 'st', 'nd', 'rd', 'th'][min(n % 10, 4)] | |
return str(n) + suffix | |
def cleanup(): | |
''' | |
Clean up the data copied from https://music765plus.com/%E3%83%A9%E3%82%A4%E3%83%96%26%E6%AD%8C%E3%81%82%E3%82%8A%E3%82%A4%E3%83%99%E3%83%B3%E3%83%88%E3%81%AE%E4%B8%80%E8%A6%A7 | |
I still have to manually clean more later in the live_event_data_new.tsv and save the result to live_event_data_cleaned.tsv | |
''' | |
data = Path('live_event_data.tsv').read_text(encoding='utf-8').splitlines() | |
data_new = [] | |
for d in data: | |
cat, date, title = d.split('\t') | |
date = date.lstrip('D') | |
for no in range(1, 11): | |
if ordinal(no) in title.lower(): | |
print(d, 'has ordinal', ordinal(no)) | |
title += '\t' + ordinal(no) | |
data_new.append('\t'.join([cat, date, title])) | |
Path('live_event_data_new.tsv').write_text('\n'.join(data_new), encoding='utf-8') | |
def plot(by_days=False): | |
data = tsv2dict('live_event_data_cleaned.tsv') | |
# preprocess data | |
data_ = [] | |
for d in data: | |
date = d['date'] | |
if '~' in date: | |
date = date.split('~')[0] | |
date = datetime.strptime(date, '%Y-%m-%d') | |
prev_data = data_[-1] if data_ else None | |
if prev_data and prev_data['date'].day + 1 == date.day and d['number'] == prev_data['number']: | |
# combine two-day events datapoint into one | |
print('Second day of the same event! Ignore:') | |
print(' ', d['event_name']) | |
print(' ', prev_data['event_name']) | |
else: | |
d['date'] = date | |
data_.append(d) | |
data = data_ | |
CATS = ("[765]", "[CIN]", "[MIL]", "[SdM]", "[SnC]") | |
PROPER_NAMES = ("765AS", "CINDERELLA GIRLS", "MILLION LIVE!", "SideM", "SHINY COLORS") | |
COLORS = ('tab:red', 'tab:blue', 'tab:orange', 'tab:green', 'tab:cyan') | |
# get the largest interval for x-axis | |
all_dates = [d['date'] for d in data] | |
if by_days: | |
intervals = [] | |
for cat in CATS: | |
data_ = [d for d in data if d['cat'] == cat] | |
dates_ = [d['date'] for d in data_] | |
interval = (dates_[-1] - dates_[0]).days | |
intervals.append(interval) | |
largest_intervals = max(intervals) | |
x_base, y_base = 0, largest_intervals | |
else: | |
x_base, y_base = all_dates[0], all_dates[-1] | |
fig, axes = plt.subplots(5, 1, figsize=(10, 5), layout="constrained") | |
for idx, cat in enumerate(CATS): | |
ax = axes[idx] | |
ax.set(title=PROPER_NAMES[idx]) | |
data_ = [d for d in data if d['cat'] == cat] | |
dates_ = [d['date'] for d in data_] | |
if by_days: | |
day0_ = dates_[0] | |
for d in data_: | |
d['date'] = (d['date'] - day0_).days | |
# draw a baseline | |
ax.hlines(0, data_[0]['date'], data_[-1]['date'], color=COLORS[idx], zorder=1) | |
# split the data into two groups by alternating the event names | |
data_groups =[[], []] | |
prev = None | |
current_group = 1 | |
for d in data_: | |
number = d["number"] | |
if number == prev: | |
pass | |
else: | |
ax.annotate(number, xy=(d['date'], 0.5), xytext=(0, 0), textcoords="offset points", horizontalalignment="center", verticalalignment="bottom") | |
current_group = 1 - current_group | |
data_groups[current_group].append(d) | |
prev = number | |
for j, data__ in enumerate(data_groups): | |
if j == 0: | |
color = COLORS[idx] | |
else: | |
color = adjust_lightness(COLORS[idx], 1.5) | |
dates__ = [d['date'] for d in data__] | |
ax.scatter(dates__, np.zeros_like(dates__), marker=align_marker('v', valign='bottom'), s=600, color=color, edgecolors='black', zorder=3, clip_on=False) | |
prev = None | |
ax.set_xlim(x_base, y_base) | |
ax.set_ylim(-1, 1) | |
ax.yaxis.set_visible(False) | |
# hide all lines but the x-axis for the bottom subplot | |
if idx < 4: | |
ax.xaxis.set_visible(False) | |
ax.spines[["left", "top", "right", "bottom"]].set_visible(False) | |
else: | |
ax.spines[["left", "top", "right"]].set_visible(False) | |
# plt.show() | |
if by_days: | |
filename = 'live_event_timeline_by_days.png' | |
else: | |
filename = 'live_event_timeline_by_date.png' | |
plt.savefig(filename, dpi=150, bbox_inches='tight') | |
# cleanup() | |
plot(by_days=False) | |
plot(by_days=True) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
cat | date | event_name | number | |
---|---|---|---|---|
[765] | 2006-07-23 | 1st ANNIVERSARY LIVE | 1st | |
[765] | 2007-04-01 | ALL STAR LIVE 2007 | 2nd | |
[765] | 2008-07-27 | 3rd ANNIVERSARY LIVE | 3rd | |
[765] | 2009-05-17 | 4th SPECIAL DREAM TOUR'S!! IN NAGOYA | 4th | |
[765] | 2009-05-24 | 4th SPECIAL DREAM TOUR'S!! IN FUKUOKA | 4th | |
[765] | 2009-05-30 | 4th SPECIAL DREAM TOUR'S!! IN TOKYO | 4th | |
[765] | 2009-07-23 | 4th SPECIAL DREAM TOUR'S!! IN OSAKA | 4th | |
[765] | 2009-11-28 | 4th Blu-ray&DVD Release Party | 4th | |
[765] | 2010-07-03 | 5th Live The world is all one !! DAY1 | 5th | |
[765] | 2010-07-04 | 5th Live The world is all one !! DAY2 | 5th | |
[765] | 2011-06-25 | 6th SMILE SUMMER FESTIV@L!東京公演 | 6th | |
[765] | 2011-07-02 | 6th SMILE SUMMER FESTIV@L!札幌公演 | 6th | |
[765] | 2011-07-09 | 6th SMILE SUMMER FESTIV@L!名古屋公演 | 6th | |
[765] | 2011-07-16 | 6th SMILE SUMMER FESTIV@L!福岡公演 | 6th | |
[765] | 2011-07-23 | 6th SMILE SUMMER FESTIV@L!大阪公演 | 6th | |
[765] | 2012-06-23~24 | 7th ANNIVERSARY みんなといっしょに! | 7th | |
[765] | 2013-07-07 | 8th HOP!STEP!!FESTIV@L!!! @NAGOYA | 8th | |
[765] | 2013-07-20 | 8th HOP!STEP!!FESTIV@L!!! @OSAKA0720 | 8th | |
[765] | 2013-07-21 | 8th HOP!STEP!!FESTIV@L!!! @OSAKA0721 | 8th | |
[765] | 2013-08-04 | 8th HOP!STEP!!FESTIV@L!!! @YOKOHAMA | 8th | |
[765] | 2013-09-15 | 8th HOP!STEP!!FESTIV@L!!! @FUKUOKA | 8th | |
[765] | 2013-09-21~22 | 8th HOP!STEP!!FESTIV@L!!! @MAKUHARI | 8th | |
[CIN] | 2014-04-05 | CINDERELLA GIRLS 1stLIVE WONDERFUL M@GIC!! | 1st | |
[CIN] | 2014-04-06 | CINDERELLA GIRLS 1stLIVE WONDERFUL M@GIC!! | 1st | |
[MIL] | 2014-06-07 | MILLION LIVE! 1stLIVE HAPPY☆PERFORM@NCE!! | 1st | |
[MIL] | 2014-06-08 | MILLION LIVE! 1stLIVE HAPPY☆PERFORM@NCE!! | 1st | |
[765] | 2014-08-02 | 9th WE ARE M@STERPIECE!!大阪公演 | 9th | |
[765] | 2014-08-03 | 9th WE ARE M@STERPIECE!!大阪公演 | 9th | |
[765] | 2014-08-16 | 9th WE ARE M@STERPIECE!!名古屋公演 | 9th | |
[765] | 2014-08-17 | 9th WE ARE M@STERPIECE!!名古屋公演 | 9th | |
[765] | 2014-10-04 | 9th WE ARE M@STERPIECE!!東京公演 | 9th | |
[765] | 2014-10-05 | 9th WE ARE M@STERPIECE!!東京公演 | 9th | |
[CIN] | 2014-11-30 | CINDERELLA GIRLS 2ndLIVE PARTY M@GIC!! | 2nd | |
[MIL] | 2015-04-04 | MILLION LIVE! 2ndLIVE ENJOY H@RMONY!! | 2nd | |
[MIL] | 2015-04-05 | MILLION LIVE! 2ndLIVE ENJOY H@RMONY!! | 2nd | |
[765] | 2015-07-18 | M@STERS OF IDOL WORLD!!2015 | 10th | |
[765] | 2015-07-19 | M@STERS OF IDOL WORLD!!2015 | 10th | |
[CIN] | 2015-11-28 | CINDERELLA GIRLS 3rdLIVE シンデレラの舞踏会 | 3rd | |
[CIN] | 2015-11-29 | CINDERELLA GIRLS 3rdLIVE シンデレラの舞踏会 | 3rd | |
[SdM] | 2015-12-06 | SideM 1st STAGE〜ST@RTING!〜 | 1st | |
[MIL] | 2016-01-31 | MILLION LIVE! 3rdLIVE TOUR BELIEVE MY DRE@M!!@NAGOYA | 3rd | |
[MIL] | 2016-02-07 | MILLION LIVE! 3rdLIVE TOUR BELIEVE MY DRE@M!!@SENDAI | 3rd | |
[MIL] | 2016-03-12 | MILLION LIVE! 3rdLIVE TOUR BELIEVE MY DRE@M!!@OSAKA | 3rd | |
[MIL] | 2016-03-13 | MILLION LIVE! 3rdLIVE TOUR BELIEVE MY DRE@M!!@OSAKA | 3rd | |
[MIL] | 2016-04-03 | MILLION LIVE! 3rdLIVE TOUR BELIEVE MY DRE@M!!@FUKUOKA | 3rd | |
[MIL] | 2016-04-16 | MILLION LIVE! 3rdLIVE TOUR BELIEVE MY DRE@M!!@MAKUHARI | 3rd | |
[MIL] | 2016-04-17 | MILLION LIVE! 3rdLIVE TOUR BELIEVE MY DRE@M!!@MAKUHARI | 3rd | |
[CIN] | 2016-09-03 | CINDERELLA GIRLS 4thLIVE TriCastle Story Starlight Castle | 4th | |
[CIN] | 2016-09-04 | CINDERELLA GIRLS 4thLIVE TriCastle Story Starlight Castle | 4th | |
[CIN] | 2016-10-15 | CINDERELLA GIRLS 4thLIVE TriCastle Story Brand new Castle | 4th | |
[CIN] | 2016-10-16 | CINDERELLA GIRLS 4thLIVE TriCastle Story 346 Castle | 4th | |
[SdM] | 2017-02-11 | SideM 2nd ORIGIN@L STARS Shining Side | 2nd | |
[SdM] | 2017-02-12 | SideM 2nd ORIGIN@L STARS Brilliant Side | 2nd | |
[MIL] | 2017-03-10 | MILLION LIVE! 4thLIVE TH@NK YOU for SMILE!! Sunshine Theater | 4th | |
[MIL] | 2017-03-11 | MILLION LIVE! 4thLIVE TH@NK YOU for SMILE!! BlueMoon Theater | 4th | |
[MIL] | 2017-03-12 | MILLION LIVE! 4thLIVE TH@NK YOU for SMILE!! Starlight Theater | 4th | |
[CIN] | 2017-05-13~14 | CINDERELLA GIRLS 5thLIVE Serendipity Parade!!! 宮城公演 | 5th | |
[CIN] | 2017-05-27~28 | CINDERELLA GIRLS 5thLIVE Serendipity Parade!!! 石川公演 | 5th | |
[CIN] | 2017-06-09~10 | CINDERELLA GIRLS 5thLIVE Serendipity Parade!!! 大阪公演 | 5th | |
[CIN] | 2017-06-24~25 | CINDERELLA GIRLS 5thLIVE Serendipity Parade!!! 静岡公演 | 5th | |
[CIN] | 2017-07-08~09 | CINDERELLA GIRLS 5thLIVE Serendipity Parade!!! 幕張公演 | 5th | |
[SdM] | 2017-07-15 | SideM 3rd Anniversary ST@RTING SIGNAL!!! 2017 | 3rd | |
[CIN] | 2017-07-29~30 | CINDERELLA GIRLS 5thLIVE Serendipity Parade!!! 福岡公演 | 5th | |
[CIN] | 2017-08-12 | CINDERELLA GIRLS 5thLIVE Serendipity Parade!!! SSA公演 | 5th | |
[CIN] | 2017-08-13 | CINDERELLA GIRLS 5thLIVE Serendipity Parade!!! SSA公演 | 5th | |
[SdM] | 2018-02-03 | SideM 3rdLIVE GLORIOUS ST@GE! 幕張公演 DAY1 | 3rd | |
[SdM] | 2018-02-04 | SideM 3rdLIVE GLORIOUS ST@GE! 幕張公演 DAY2 | 3rd | |
[SdM] | 2018-02-24 | SideM 3rdLIVE GLORIOUS ST@GE! 仙台公演 DAY1 | 3rd | |
[SdM] | 2018-02-25 | SideM 3rdLIVE GLORIOUS ST@GE! 仙台公演 DAY2 | 3rd | |
[SdM] | 2018-03-25 | SideM 3rdLIVE GLORIOUS ST@GE! 福岡公演 | 3rd | |
[SdM] | 2018-04-28 | SideM 3rdLIVE GLORIOUS ST@GE! 静岡公演(1日目) | 3rd | |
[SdM] | 2018-04-29 | SideM 3rdLIVE GLORIOUS ST@GE! 静岡公演(2日目) | 3rd | |
[MIL] | 2018-06-02 | MILLION LIVE! 5thLIVE BRAND NEW PERFORM@NCE!!! DAY1 | 5th | |
[MIL] | 2018-06-03 | MILLION LIVE! 5thLIVE BRAND NEW PERFORM@NCE!!! DAY2 | 5th | |
[CIN] | 2018-11-10 | CINDERELLA GIRLS 6thLIVE MERRY-GO-ROUNDOME!!! メットライフドーム公演 DAY1 | 6th | |
[CIN] | 2018-11-11 | CINDERELLA GIRLS 6thLIVE MERRY-GO-ROUNDOME!!! メットライフドーム公演 DAY2 | 6th | |
[CIN] | 2018-12-01 | CINDERELLA GIRLS 6thLIVE MERRY-GO-ROUNDOME!!! ナゴヤドーム公演 DAY1 | 6th | |
[CIN] | 2018-12-02 | CINDERELLA GIRLS 6thLIVE MERRY-GO-ROUNDOME!!! ナゴヤドーム公演 DAY2 | 6th | |
[SnC] | 2019-03-09~10 | SHINY COLORS 1stLIVE FLY TO THE SHINY SKY | 1st | |
[MIL] | 2019-04-27 | MILLION LIVE! 6thLIVE TOUR UNI-ON@IR!!!! 仙台公演 Angel STATION 1日目 | 6th | |
[MIL] | 2019-04-28 | MILLION LIVE! 6thLIVE TOUR UNI-ON@IR!!!! 仙台公演 Angel STATION 2日目 | 6th | |
[SdM] | 2019-05-11 | SideM 4th STAGE 〜TRE@SURE GATE〜 DAY1:SMILE PASSPORT | 4th | |
[SdM] | 2019-05-12 | SideM 4th STAGE 〜TRE@SURE GATE〜 DAY2:DREAM PASSPORT | 4th | |
[MIL] | 2019-05-18 | MILLION LIVE! 6thLIVE TOUR UNI-ON@IR!!!! 神戸公演 Princess STATION 1日目 | 6th | |
[MIL] | 2019-05-19 | MILLION LIVE! 6thLIVE TOUR UNI-ON@IR!!!! 神戸公演 Princess STATION 2日目 | 6th | |
[MIL] | 2019-06-29 | MILLION LIVE! 6thLIVE TOUR UNI-ON@IR!!!! 福岡公演 Fairy STATION 1日目 | 6th | |
[MIL] | 2019-06-30 | MILLION LIVE! 6thLIVE TOUR UNI-ON@IR!!!! 福岡公演 Fairy STATION 2日目 | 6th | |
[CIN] | 2019-09-03 | CINDERELLA GIRLS 7thLIVE TOUR Special 3chord♪ Comical Pops! DAY1 | 7th | |
[CIN] | 2019-09-04 | CINDERELLA GIRLS 7thLIVE TOUR Special 3chord♪ Comical Pops! DAY2 | 7th | |
[MIL] | 2019-09-21 | MILLION LIVE! 6thLIVE UNI-ON@IR!!!! SPECIAL DAY1 | 6th | |
[MIL] | 2019-09-22 | MILLION LIVE! 6thLIVE UNI-ON@IR!!!! SPECIAL DAY2 | 6th | |
[CIN] | 2019-11-09 | CINDERELLA GIRLS 7thLIVE TOUR Special 3chord♪ Funky Dancing! DAY1 | 7th | |
[CIN] | 2019-11-10 | CINDERELLA GIRLS 7thLIVE TOUR Special 3chord♪ Funky Dancing! DAY2 | 7th | |
[CIN] | 2020-02-15 | CINDERELLA GIRLS 7thLIVE TOUR Special 3chord♪ Glowing Rock! DAY1 | 7th | |
[CIN] | 2020-02-16 | CINDERELLA GIRLS 7thLIVE TOUR Special 3chord♪ Glowing Rock! DAY2 | 7th | |
[SnC] | 2021-03-20 | SHINY COLORS 2ndLIVE STEP INTO THE SUNSET SKY DAY1 | 2nd | |
[SnC] | 2021-03-21 | SHINY COLORS 2ndLIVE STEP INTO THE SUNSET SKY DAY2 | 2nd | |
[SnC] | 2021-04-03 | SHINY COLORS 3rdLIVE TOUR PIECE ON PLANET / NAGOYA DAY1 | 3rd | |
[SnC] | 2021-04-04 | SHINY COLORS 3rdLIVE TOUR PIECE ON PLANET / NAGOYA DAY2 | 3rd | |
[SnC] | 2021-04-24 | SHINY COLORS 3rdLIVE TOUR PIECE ON PLANET / TOKYO DAY1 | 3rd | |
[SnC] | 2021-04-25 | SHINY COLORS 3rdLIVE TOUR PIECE ON PLANET / TOKYO DAY2 | 3rd | |
[MIL] | 2021-05-22 | MILLION LIVE! 7thLIVE Q@MP FLYER!!! Reburn DAY1 | 7th | |
[MIL] | 2021-05-23 | MILLION LIVE! 7thLIVE Q@MP FLYER!!! Reburn DAY2 | 7th | |
[SnC] | 2021-05-29 | SHINY COLORS 3rdLIVE TOUR PIECE ON PLANET / FUKUOKA DAY1 | 3rd | |
[SnC] | 2021-05-30 | SHINY COLORS 3rdLIVE TOUR PIECE ON PLANET / FUKUOKA DAY2 | 3rd | |
[CIN] | 2021-10-02 | CINDERELLA GIRLS 10th ANNIVERSARY M@GICAL WONDERLAND TOUR!!! MerryMaerchen Land DAY1 | 10th | |
[CIN] | 2021-10-03 | CINDERELLA GIRLS 10th ANNIVERSARY M@GICAL WONDERLAND TOUR!!! MerryMaerchen Land DAY2 | 10th | |
[SdM] | 2021-11-06 | SideM 6thLIVE TOUR ~NEXT DESTIN@TION!~ Side KOBE DAY1 | 6th | |
[SdM] | 2021-11-07 | SideM 6thLIVE TOUR ~NEXT DESTIN@TION!~ Side KOBE DAY2 | 6th | |
[CIN] | 2021-11-27 | CINDERELLA GIRLS 10th ANNIVERSARY M@GICAL WONDERLAND TOUR!!! Celebration Land DAY1 | 10th | |
[CIN] | 2021-11-28 | CINDERELLA GIRLS 10th ANNIVERSARY M@GICAL WONDERLAND TOUR!!! Celebration Land DAY2 | 10th | |
[CIN] | 2021-12-25 | CINDERELLA GIRLS 10th ANNIVERSARY M@GICAL WONDERLAND TOUR!!! CosmoStar Land DAY1 | 10th | |
[CIN] | 2021-12-26 | CINDERELLA GIRLS 10th ANNIVERSARY M@GICAL WONDERLAND TOUR!!! CosmoStar Land DAY2 | 10th | |
[SdM] | 2022-01-08 | SideM 6thLIVE TOUR ~NEXT DESTIN@TION!~ Side TOKYO DAY1 | 6th | |
[SdM] | 2022-01-09 | SideM 6thLIVE TOUR ~NEXT DESTIN@TION!~ Side TOKYO DAY2 | 6th | |
[CIN] | 2022-01-29 | CINDERELLA GIRLS 10th ANNIVERSARY M@GICAL WONDERLAND TOUR!!! Tropical Land DAY1 | 10th | |
[CIN] | 2022-01-30 | CINDERELLA GIRLS 10th ANNIVERSARY M@GICAL WONDERLAND TOUR!!! Tropical Land DAY2 | 10th | |
[MIL] | 2022-02-12 | MILLION LIVE! 8thLIVE Twelw@ve DAY1 | 8th | |
[MIL] | 2022-02-13 | MILLION LIVE! 8thLIVE Twelw@ve DAY2 | 8th | |
[CIN] | 2022-04-02 | CINDERELLA GIRLS 10th ANNIVERSARY M@GICAL WONDERLAND!!! DAY1 | 10th | |
[CIN] | 2022-04-03 | CINDERELLA GIRLS 10th ANNIVERSARY M@GICAL WONDERLAND!!! DAY2 | 10th | |
[SdM] | 2022-04-16 | SideM 6thLIVE TOUR ~NEXT DESTIN@TION!~ Side HOKKAIDO DAY1 | 6th | |
[SdM] | 2022-04-17 | SideM 6thLIVE TOUR ~NEXT DESTIN@TION!~ Side HOKKAIDO DAY2 | 6th | |
[SnC] | 2022-04-23 | SHINY COLORS 4thLIVE 空は澄み、今を越えて。DAY1 | 4th | |
[SnC] | 2022-04-24 | SHINY COLORS 4thLIVE 空は澄み、今を越えて。DAY2 | 4th | |
[SdM] | 2022-10-01 | SideM 7th STAGE 〜GROW & GLOW〜 STARLIGHT SIGN@L DAY1 | 7th | |
[SdM] | 2022-10-02 | SideM 7th STAGE 〜GROW & GLOW〜 STARLIGHT SIGN@L DAY2 | 7th | |
[SdM] | 2022-12-03 | SideM 7th STAGE 〜GROW & GLOW〜 SUNLIGHT SIGN@L DAY1 | 7th | |
[SdM] | 2022-12-04 | SideM 7th STAGE 〜GROW & GLOW〜 SUNLIGHT SIGN@L DAY2 | 7th | |
[MIL] | 2023-01-14 | THE IDOLM@STER MILLION LIVE! 9thLIVE ChoruSp@rkle!! Day1 | 9th | |
[MIL] | 2023-01-15 | THE IDOLM@STER MILLION LIVE! 9thLIVE ChoruSp@rkle!! Day2 | 9th | |
[SnC] | 2023-03-18 | THE IDOLM@STER SHINY COLORS 5thLIVE If I_wings. DAY1 | 5th | |
[SnC] | 2023-03-19 | THE IDOLM@STER SHINY COLORS 5thLIVE If I_wings. DAY2 | 5th | |
[MIL] | 2023-04-22 | THE IDOLM@STER MILLION LIVE! 10thLIVE TOUR Act-1 H@PPY 4 YOU! Day1 | 10th | |
[MIL] | 2023-04-23 | THE IDOLM@STER MILLION LIVE! 10thLIVE TOUR Act-1 H@PPY 4 YOU! Day2 | 10th | |
[MIL] | 2023-07-29 | THE IDOLM@STER MILLION LIVE! 10thLIVE TOUR Act-2 5 TO SP@RKLE!! Day1 | 10th | |
[MIL] | 2023-07-30 | THE IDOLM@STER MILLION LIVE! 10thLIVE TOUR Act-2 5 TO SP@RKLE!! Day2 | 10th | |
[MIL] | 2023-11-04 | THE IDOLM@STER MILLION LIVE! 10thLIVE TOUR Act-3 R@ISE THE DREAM!!! Day1 | 10th | |
[MIL] | 2023-11-05 | THE IDOLM@STER MILLION LIVE! 10thLIVE TOUR Act-3 R@ISE THE DREAM!!! Day2 | 10th | |
[MIL] | 2024-02-24 | THE IDOLM@STER MILLION LIVE! 10thLIVE TOUR Act-4 MILLION THE@TER!!!! Day1 | 10th | |
[MIL] | 2024-02-25 | THE IDOLM@STER MILLION LIVE! 10thLIVE TOUR Act-4 MILLION THE@TER!!!! Day2 | 10th |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment