Initial commit
This commit is contained in:
commit
35d262868a
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
*.json
|
||||||
33
go.mod
Normal file
33
go.mod
Normal file
@ -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
|
||||||
|
)
|
||||||
71
go.sum
Normal file
71
go.sum
Normal file
@ -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=
|
||||||
129
main.go
Normal file
129
main.go
Normal file
@ -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))
|
||||||
|
}
|
||||||
|
}
|
||||||
53
playlist.md
Normal file
53
playlist.md
Normal file
@ -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)
|
||||||
Loading…
x
Reference in New Issue
Block a user