private JsonRoot UpdateJson(JsonRoot root, string directory, string filename, IFormCollection form, Source source, string SASToken)
        {
            // Variables prepare
            string baseRoute = $"https://soundbuttons.blob.core.windows.net/sound-buttons/{directory}/";

            string group = form.GetFirstValue("group") ?? "未分類";

            // Get ButtonGrop if exists, or new one
            ButtonGroup buttonGroup = null;

            foreach (var btg in root.buttonGroups)
            {
                try
                {
                    var name = btg.name.ZhTw;

                    if (group == name)
                    {
                        buttonGroup = btg;

                        break;
                    }
                }
                catch (InvalidCastException) { }
            }
            if (null == buttonGroup)
            {
                buttonGroup = new ButtonGroup
                {
                    name      = new Text(group, group),
                    baseRoute = baseRoute,
                    buttons   = new List <Button>()
                };
                root.buttonGroups.Add(buttonGroup);
            }

            // Prevent script injection
            source.videoId = System.Web.HttpUtility.UrlEncode(source.videoId);

            // Add button

            if (!float.TryParse(form.GetFirstValue("volume"), out float volume))
            {
                volume = 1;
            }

            buttonGroup.buttons.Add(new Button(
                                        filename,
                                        new Text(
                                            form.GetFirstValue("nameZH") ?? "",
                                            form.GetFirstValue("nameJP") ?? ""
                                            ),
                                        volume,
                                        source,
                                        SASToken
                                        ));

            return(root);
        }