commit 35d262868a97be54031cb3f06cd129ba037360a4 Author: Keiran Date: Thu Aug 7 23:59:01 2025 +0100 Initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a6c57f5 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +*.json diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..b02e8ec --- /dev/null +++ b/go.mod @@ -0,0 +1,33 @@ +module md2yt + +go 1.24.6 + +require ( + golang.org/x/oauth2 v0.30.0 + google.golang.org/api v0.246.0 +) + +require ( + cloud.google.com/go/auth v0.16.3 // indirect + cloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect + cloud.google.com/go/compute/metadata v0.7.0 // indirect + github.com/felixge/httpsnoop v1.0.4 // indirect + github.com/go-logr/logr v1.4.3 // indirect + github.com/go-logr/stdr v1.2.2 // indirect + github.com/google/s2a-go v0.1.9 // indirect + github.com/google/uuid v1.6.0 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.3.6 // indirect + github.com/googleapis/gax-go/v2 v2.15.0 // indirect + go.opentelemetry.io/auto/sdk v1.1.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 // indirect + go.opentelemetry.io/otel v1.36.0 // indirect + go.opentelemetry.io/otel/metric v1.36.0 // indirect + go.opentelemetry.io/otel/trace v1.36.0 // indirect + golang.org/x/crypto v0.40.0 // indirect + golang.org/x/net v0.42.0 // indirect + golang.org/x/sys v0.34.0 // indirect + golang.org/x/text v0.27.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 // indirect + google.golang.org/grpc v1.74.2 // indirect + google.golang.org/protobuf v1.36.6 // indirect +) diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..96422ff --- /dev/null +++ b/go.sum @@ -0,0 +1,71 @@ +cloud.google.com/go/auth v0.16.3 h1:kabzoQ9/bobUmnseYnBO6qQG7q4a/CffFRlJSxv2wCc= +cloud.google.com/go/auth v0.16.3/go.mod h1:NucRGjaXfzP1ltpcQ7On/VTZ0H4kWB5Jy+Y9Dnm76fA= +cloud.google.com/go/auth/oauth2adapt v0.2.8 h1:keo8NaayQZ6wimpNSmW5OPc283g65QNIiLpZnkHRbnc= +cloud.google.com/go/auth/oauth2adapt v0.2.8/go.mod h1:XQ9y31RkqZCcwJWNSx2Xvric3RrU88hAYYbjDWYDL+c= +cloud.google.com/go/compute/metadata v0.7.0 h1:PBWF+iiAerVNe8UCHxdOt6eHLVc3ydFeOCw78U8ytSU= +cloud.google.com/go/compute/metadata v0.7.0/go.mod h1:j5MvL9PprKL39t166CoB1uVHfQMs4tFQZZcKwksXUjo= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= +github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= +github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= +github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= +github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= +github.com/google/s2a-go v0.1.9 h1:LGD7gtMgezd8a/Xak7mEWL0PjoTQFvpRudN895yqKW0= +github.com/google/s2a-go v0.1.9/go.mod h1:YA0Ei2ZQL3acow2O62kdp9UlnvMmU7kA6Eutn0dXayM= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/enterprise-certificate-proxy v0.3.6 h1:GW/XbdyBFQ8Qe+YAmFU9uHLo7OnF5tL52HFAgMmyrf4= +github.com/googleapis/enterprise-certificate-proxy v0.3.6/go.mod h1:MkHOF77EYAE7qfSuSS9PU6g4Nt4e11cnsDUowfwewLA= +github.com/googleapis/gax-go/v2 v2.15.0 h1:SyjDc1mGgZU5LncH8gimWo9lW1DtIfPibOG81vgd/bo= +github.com/googleapis/gax-go/v2 v2.15.0/go.mod h1:zVVkkxAQHa1RQpg9z2AUCMnKhi0Qld9rcmyfL1OZhoc= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= +go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 h1:F7Jx+6hwnZ41NSFTO5q4LYDtJRXBf2PD0rNBkeB/lus= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0/go.mod h1:UHB22Z8QsdRDrnAtX4PntOl36ajSxcdUMt1sF7Y6E7Q= +go.opentelemetry.io/otel v1.36.0 h1:UumtzIklRBY6cI/lllNZlALOF5nNIzJVb16APdvgTXg= +go.opentelemetry.io/otel v1.36.0/go.mod h1:/TcFMXYjyRNh8khOAO9ybYkqaDBb/70aVwkNML4pP8E= +go.opentelemetry.io/otel/metric v1.36.0 h1:MoWPKVhQvJ+eeXWHFBOPoBOi20jh6Iq2CcCREuTYufE= +go.opentelemetry.io/otel/metric v1.36.0/go.mod h1:zC7Ks+yeyJt4xig9DEw9kuUFe5C3zLbVjV2PzT6qzbs= +go.opentelemetry.io/otel/sdk v1.36.0 h1:b6SYIuLRs88ztox4EyrvRti80uXIFy+Sqzoh9kFULbs= +go.opentelemetry.io/otel/sdk v1.36.0/go.mod h1:+lC+mTgD+MUWfjJubi2vvXWcVxyr9rmlshZni72pXeY= +go.opentelemetry.io/otel/sdk/metric v1.36.0 h1:r0ntwwGosWGaa0CrSt8cuNuTcccMXERFwHX4dThiPis= +go.opentelemetry.io/otel/sdk/metric v1.36.0/go.mod h1:qTNOhFDfKRwX0yXOqJYegL5WRaW376QbB7P4Pb0qva4= +go.opentelemetry.io/otel/trace v1.36.0 h1:ahxWNuqZjpdiFAyrIoQ4GIiAIhxAunQR6MUoKrsNd4w= +go.opentelemetry.io/otel/trace v1.36.0/go.mod h1:gQ+OnDZzrybY4k4seLzPAWNwVBBVlF2szhehOBB/tGA= +golang.org/x/crypto v0.40.0 h1:r4x+VvoG5Fm+eJcxMaY8CQM7Lb0l1lsmjGBQ6s8BfKM= +golang.org/x/crypto v0.40.0/go.mod h1:Qr1vMER5WyS2dfPHAlsOj01wgLbsyWtFn/aY+5+ZdxY= +golang.org/x/net v0.42.0 h1:jzkYrhi3YQWD6MLBJcsklgQsoAcw89EcZbJw8Z614hs= +golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8= +golang.org/x/oauth2 v0.30.0 h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI= +golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU= +golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw= +golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA= +golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/text v0.27.0 h1:4fGWRpyh641NLlecmyl4LOe6yDdfaYNrGb2zdfo4JV4= +golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU= +google.golang.org/api v0.246.0 h1:H0ODDs5PnMZVZAEtdLMn2Ul2eQi7QNjqM2DIFp8TlTM= +google.golang.org/api v0.246.0/go.mod h1:dMVhVcylamkirHdzEBAIQWUCgqY885ivNeZYd7VAVr8= +google.golang.org/genproto v0.0.0-20250603155806-513f23925822 h1:rHWScKit0gvAPuOnu87KpaYtjK5zBMLcULh7gxkCXu4= +google.golang.org/genproto v0.0.0-20250603155806-513f23925822/go.mod h1:HubltRL7rMh0LfnQPkMH4NPDFEWp0jw3vixw7jEM53s= +google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 h1:oWVWY3NzT7KJppx2UKhKmzPq4SRe0LdCijVRwvGeikY= +google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822/go.mod h1:h3c4v36UTKzUiuaOKQ6gr3S+0hovBtUrXzTG/i3+XEc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0 h1:MAKi5q709QWfnkkpNQ0M12hYJ1+e8qYVDyowc4U1XZM= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250728155136-f173205681a0/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/grpc v1.74.2 h1:WoosgB65DlWVC9FqI82dGsZhWFNBSLjQ84bjROOpMu4= +google.golang.org/grpc v1.74.2/go.mod h1:CtQ+BGjaAIXHs/5YS3i473GqwBBa1zGQNevxdeBEXrM= +google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= +google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/main.go b/main.go new file mode 100644 index 0000000..37db95b --- /dev/null +++ b/main.go @@ -0,0 +1,129 @@ +package main + +import ( + "bufio" + "context" + "fmt" + "log" + "os" + "regexp" + "strings" + + "golang.org/x/oauth2" + "golang.org/x/oauth2/google" + "google.golang.org/api/option" + "google.golang.org/api/youtube/v3" +) + +func getClient(config *oauth2.Config) *oauth2.Token { + tokFile := "token.json" + f, err := os.Open(tokFile) + if err == nil { + defer f.Close() + var tok oauth2.Token + fmt.Fscan(f, &tok.AccessToken, &tok.TokenType, &tok.RefreshToken, &tok.Expiry) + return &tok + } + + authURL := config.AuthCodeURL("state-token", oauth2.AccessTypeOffline) + fmt.Printf("Go to the following link in your browser then type the authorization code: \n%v\n", authURL) + + var authCode string + fmt.Scan(&authCode) + + tok, err := config.Exchange(context.Background(), authCode) + if err != nil { + log.Fatalf("Unable to retrieve token from web: %v", err) + } + + f, _ = os.Create(tokFile) + defer f.Close() + fmt.Fprint(f, tok.AccessToken, " ", tok.TokenType, " ", tok.RefreshToken, " ", tok.Expiry) + return tok +} + +func main() { + b, err := os.ReadFile("credentials.json") + if err != nil { + log.Fatalf("Unable to read client secret file: %v", err) + } + + config, err := google.ConfigFromJSON(b, youtube.YoutubeScope) + if err != nil { + log.Fatalf("Unable to parse client secret file to config: %v", err) + } + + tok := getClient(config) + client := config.Client(context.Background(), tok) + + service, err := youtube.NewService(context.Background(), option.WithHTTPClient(client)) + if err != nil { + log.Fatalf("Unable to create YouTube client: %v", err) + } + + file, err := os.Open("playlist.md") + if err != nil { + log.Fatalf("Unable to open playlist file: %v", err) + } + defer file.Close() + + scanner := bufio.NewScanner(file) + linkRegex := regexp.MustCompile(`https:\/\/music\.youtube\.com\/watch\?v=([a-zA-Z0-9_-]+)`) + + playlists := make(map[string][]string) + var currentPlaylist string + + for scanner.Scan() { + line := scanner.Text() + if strings.HasPrefix(line, "## ") { + currentPlaylist = strings.TrimPrefix(line, "## ") + playlists[currentPlaylist] = []string{} + } + if matches := linkRegex.FindStringSubmatch(line); matches != nil && currentPlaylist != "" { + playlists[currentPlaylist] = append(playlists[currentPlaylist], matches[1]) + } + } + + if len(playlists) == 0 { + log.Fatal("No playlists found in file") + } + + for title, videoIDs := range playlists { + if len(videoIDs) == 0 { + continue + } + + playlist := &youtube.Playlist{ + Snippet: &youtube.PlaylistSnippet{ + Title: title, + Description: "Created automatically from Markdown", + }, + Status: &youtube.PlaylistStatus{ + PrivacyStatus: "private", + }, + } + + newPlaylist, err := service.Playlists.Insert([]string{"snippet", "status"}, playlist).Do() + if err != nil { + log.Printf("Unable to create playlist '%s': %v", title, err) + continue + } + + for _, id := range videoIDs { + _, err := service.PlaylistItems.Insert([]string{"snippet"}, &youtube.PlaylistItem{ + Snippet: &youtube.PlaylistItemSnippet{ + PlaylistId: newPlaylist.Id, + ResourceId: &youtube.ResourceId{ + Kind: "youtube#video", + VideoId: id, + }, + }, + }).Do() + if err != nil { + log.Printf("Unable to add video %s to playlist '%s': %v", id, title, err) + } + } + + fmt.Printf("Playlist '%s' created with %d videos\n", title, len(videoIDs)) + } +} diff --git a/playlist.md b/playlist.md new file mode 100644 index 0000000..3d83a80 --- /dev/null +++ b/playlist.md @@ -0,0 +1,53 @@ +# Playlists + +## Weeb + +- [Seven Deadly Sins - MAN WITH A MISSION](https://music.youtube.com/watch?v=mAENQIa-MtM&si=hPIHTm5q99Gz0EEg) +- [ANIMA - ReoNa](https://music.youtube.com/watch?v=5OxPxamlP00&si=6nLLou5G7NtuMqHS) +- [This Game - Konomi Suzuki](https://music.youtube.com/watch?v=kJ04dMmimn8&si=_wYHmY7kNMPtAzQi) +- [JUSTadICE - Seiko Oomori](https://music.youtube.com/watch?v=IMupuIZmsGo&si=PzrhjD8_iZWyb3uC) +- [Stay Alive - Takahashi Rie](https://music.youtube.com/watch?v=84YBqfpCGW8&si=7HU1LRNuUE5hU9g0) +- [Idol - YOASOBI](https://music.youtube.com/watch?v=m9SMT5ipbxk&si=4NCoQo4zmVV9keth) +- [Yuusha - YOASOBI](https://music.youtube.com/watch?v=OIBODIPC_8Y&si=QhH_BDytpavGU3nl) +- [Shukufuku - YOASOBI](https://music.youtube.com/watch?v=2eNEQ0cQtkI&si=Tg-vktV-E4YbO1Fi) +- [UNDEAD - YOASOBI](https://music.youtube.com/watch?v=BryspbM6s3E&si=JToHD8ISwhMkTY1a) +- [Kaibutsu - YOASOBI](https://music.youtube.com/watch?v=k0g04t7ZeSw&si=IQUQrKAmqAPEaO93) +- [Idol - YOASOBI](https://music.youtube.com/watch?v=m9SMT5ipbxk&si=baGzo9F5ybkQff94) +- [Centimeter - the peggies](https://music.youtube.com/watch?v=I1hLZ2OchZ8&si=QA9knpt83nUcHSge) +- [Kiminosei - the peggies](https://music.youtube.com/watch?v=KbT3JsJmd14&si=Eg1xXi-FzrTUdGUG) +- [Hacking to the Gate - Kanako Itou](https://music.youtube.com/watch?v=ZGM90Bo3zH0&si=oIVJqNkql2uJZ6JC) +- [Gurenge - LiSA](https://music.youtube.com/watch?v=TqyfmFaZlqw&si=0hFlFFdJBaOHgTKi) +- [crossing field - LiSA](https://music.youtube.com/watch?v=F9GXgPHeKfA&si=U74xwcgz960fCrjb) +- [ADAMAS - LiSA](https://music.youtube.com/watch?v=UljR2IQAVfw&si=nUFotjdHrA7nl4wp) +- [Zenzenzense - RADWIMPS](https://music.youtube.com/watch?v=qp0AktOIAag&si=rTdEfk4xuiO7L347) +- [Dream Lantern - RADWIMPS](https://music.youtube.com/watch?v=MtLHwqbE1eI&si=IUpgw1gSP1Lfpxi6) +- [BROKEN GAMES - FZMZ](https://music.youtube.com/watch?v=k6FdQMCiPME&si=HcyX6U7W0CvWxqRQ) +- [DANGER DANGER - FZMZ](https://music.youtube.com/watch?v=rvFfHgNlj-I&si=HGC7uLET4KGs7NgE) +- [Hotaru no Hikari - Ikimonogakari](https://music.youtube.com/watch?v=7GMPeHFy2Dk&si=5FtwYLXG5hwss-hs) +- [Netsujo no Spectrum - Ikimonogakari](https://music.youtube.com/watch?v=cU22947XIYo&si=UFQGweYU4--CAK_d) +- [Blue Bird - Ikimonogakari](https://music.youtube.com/watch?v=udNgJUiBCRg&si=-Eqc4aIdjkN7cWV3) +- [Unravel - TK](https://music.youtube.com/watch?v=C0ppulkmXPw&si=h9kATVyi8zeFu5Io) +- [KICK BACK - Kenshi Yonezu](https://music.youtube.com/watch?v=NMA_isZYsYQ&si=DKbq3H2fee_AZf6J) +- [Goyanomachiawase - Hello Sleepwalkers](https://music.youtube.com/watch?v=B57B7kjYOuA&si=nJdwYtZCA9Jyvvmv) +- [Deal woith the Devil - Tia](https://music.youtube.com/watch?v=pJ-MywdW98o&si=TTHCWKY5BqgKwiRe) +- [I am... - Atarayo](https://music.youtube.com/watch?v=ipiQ0lpayoo&si=N1X4ZGslKCTkAhP_) +- [Shoukei to Shikabane no Michi - Linked Horizon](https://music.youtube.com/watch?v=czJHHta2vz8&si=BJ0kPmTAE4wU0wVt) +- [Jiyuu no Tsubasa - Linked Horizon](https://music.youtube.com/watch?v=W8UNLOOogU4&si=WXzHrn8QBdDQaTeZ) +- [Guren no Yumiya - Linked Horizon](https://music.youtube.com/watch?v=2B6nj38AdD0&si=G9p1u0odAs1t_Szk) +- [Brave Shine - Aimer](https://music.youtube.com/watch?v=hvVN2i6o4A4&si=8syk11qq83lsg8dV) +- [Daddy! Daddy! Do! - Masayuki Suzuki](https://music.youtube.com/watch?v=1zwaZkOXXqw&si=7MnTMwbjsrt3V13Y) +- [Red Swan - Yoshiki](https://music.youtube.com/watch?v=oYQmw6axrdQ&si=2AajNNJuoe1hyx07) +- [the WORLD - Nightmare](https://music.youtube.com/watch?v=b4vc629T4b8&si=4Xhst-NhKZfAwhcO) +- [Renai Circulation - Hanazawa Kana](https://music.youtube.com/watch?v=auQxNYJ07Lc&si=yK-eEsc5ZaCsyRuu) +- [CORE PRIDE - UVERworld](https://music.youtube.com/watch?v=Avs-yTQ53cI&si=YXHi60cGMdgxmRmx) +- [Hikarunara - Goose house](https://music.youtube.com/watch?v=c6rCRy6SrtU&si=gn12LXLdE0-3y7Bp) +- [Crying for Rain - Minami](https://music.youtube.com/watch?v=gxp3R7l1iSk&si=4Xtv_eouR-LuEtX2) +- [A Cruel Angel's Thesis](https://music.youtube.com/watch?v=xyVatKhd4s4&si=hzB_0zWheEhi6o32) +- [Black Rover - Vickeblanka](https://music.youtube.com/watch?v=yIlBb1Jvjbk&si=XXtG17EhrewfyG6M) +- [Black Catcher - Vickeblanka](https://music.youtube.com/watch?v=Mu8zGKcY_Ck&si=x807bNSty0KDywyH) +- [The Rumbling - SiM](https://music.youtube.com/watch?v=qpHvj5pvvhg&si=nVjvY8uP98_iDO0V) +- [Kaikai Kitan - Eve](https://music.youtube.com/watch?v=isY3rtuSsK8&si=ezXtzPGg3UwhmWUM) +- [Distortion!! - kessoku band](https://music.youtube.com/watch?v=5RSHNMkKGLs&si=_71OJ-ZJ4dteJ2Tq) +- [Karakara - kessoku band](https://music.youtube.com/watch?v=3RWMMNsULsA&si=z4NjP2H6NtdCremc) +- [Guitar, Loneliness and Blue Planet - kessoku band](https://music.youtube.com/watch?v=fYBQJfPBmRg&si=ZuhXjX0bIcuUIkTu) +- [seisyun complex - kessoku band](https://music.youtube.com/watch?v=RWFW1OSlMkM&si=sGcRWOFTEZm_UI5T)