NGMsoftware

NGMsoftware
로그인 회원가입
  • 매뉴얼
  • 팁 앤 테크
  • 매뉴얼

    팁과 테크니컬 노하우를 확인하세요.

    팁 앤 테크

    팁과 테크니컬 노하우를 확인하세요.

    본 사이트의 컨텐츠는 저작권법의 보호를 받으므로 무단 복사, 게재, 배포 등을 금합니다.

    커스텀 엔지엠 RPA 매크로 - 유튜브 검색 키워드로 조회수 늘리는 매크로 만들기. (Create a macro to increase…

    페이지 정보

    본문

    안녕하세요. 엔지엠소프트웨어입니다. 이전 시간에 알아봤던 [ 유튜브 댓글 수집기 ]를 조금 수정하면 키워드 검색으로 조회수를 늘릴 수 있습니다. 커스텀 모듈을 사용하면 엔지엠 RPA 매크로의 기능을 사용하면서 추가적인 확장 액션을 만들 수 있습니다. 커스텀 모듈은 엔지엠 RPA 매크로에서 기본 제공되는 액션의 기능을 확장하거나 고유한 업무를 처리하는데 특화된 모듈을 만들 수 있습니다. 기존 스크립트에 커스텀 액션을 추가하여 좀 더 효율적이고 구현하기 어려운 기능을 직접 만들어서 사용할 수 있습니다. 다만, 어느정도 C# 프로그래밍 언어에 대한 이해가 필요하고 엔지엠소프트웨어에서 제공해주는 커스텀 모듈 만들기 가이드를 이해하고 코드를 분석할 수 있어야 합니다.

     

    구글 API를 사용해야 하므로 [ 유튜브 댓글 수집기 ] 내용을 참고해서 구글 API 사용에 대한 권한을 획득하세요. 그리고, "CustomGoogleAPI" 프로젝트에 새로운 클래스를 하나 추가하세요. 클래스 이름은 "YoutubeSearchModel.cs"입니다. 커스텀 모듈을 만들려면 2가지 네이밍룰을 지켜야 합니다. 프로젝트명은 Custom으로 시작해야 하고, 클래스명은 Model로 끝나야 합니다. 전체 코드는 아래와 같습니다.

    using Google.Apis.Services;
    using Google.Apis.YouTube.v3;
    using PicoXLSX;
    using System;
    using System.ComponentModel;
    using System.Drawing.Design;
    using System.IO;
    
    namespace CustomGoogleAPI
    {
        [Serializable]
        public class YoutubeSearchModel : NGM.Models.Interface.BaseCustomToolModel
        {
            public override string DisplayCategory => "NGMsoftware";
    
            public override string DisplayName => "유튜브 검색";
    
            [Category("Action")]
            [DisplayName("검색어")]
            [Description("유튜브에서 검색할 키워드를 입력하세요.")]
            [Browsable(true)]
            [DefaultValue(null)]
            public string SearchText { get; set; }
    
            [Category("Action")]
            [DisplayName("결과 갯수")]
            [Description("결과 객수를 제한합니다.")]
            [Browsable(true)]
            [DefaultValue(10)]
            public int MaxResultLimit { get; set; } = 10;
    
            [Category("Action")]
            [DisplayName("파일 저장 위치")]
            [Description("결과를 저장할 파일의 위치를 선택하세요.")]
            [Browsable(true)]
            [DefaultValue(null)]
            [Editor(typeof(NGM.Models.TypeEditor.FolderSelectorEditor), typeof(UITypeEditor))]
            public string SaveFolderSelect { get; set; }
    
            public override void Execute()
            {
                var youtube = new YouTubeService(new BaseClientService.Initializer()
                {
                    // 자신의 API 키를 설정해줍니다. 
                    // 만약, 다른 사용자도 커스텀 모듈을 사용하게 하려면 속성으로 처리하세요.
                    ApiKey = "AIzaSyDorfWBc7-********************",
                    ApplicationName = "NGMsoftware"
                });
    
                var request = youtube.Search.List("snippet");
                request.Q = SearchText;
                request.MaxResults = MaxResultLimit;
    
                // 요청에 대해 수행 명령을 내립니다.
                var result = request.Execute();
    
                Workbook workbook = null;
    
                try
                {
                    workbook = new Workbook(Path.Combine(SaveFolderSelect, "NGMsoftware.xlsx"), "Sheet1");
    
                    workbook.CurrentWorksheet.AddNextCell("채널 제목", Style.BasicStyles.ColorizedBackground("F5CC84"));
                    workbook.CurrentWorksheet.AddNextCell("비디오 아이디", Style.BasicStyles.ColorizedBackground("F5CC84"));
                    workbook.CurrentWorksheet.AddNextCell("비디오 제목", Style.BasicStyles.ColorizedBackground("F5CC84"));
                    workbook.CurrentWorksheet.GoToNextRow();
    
                    foreach (var item in result.Items)
                    {
                        if (item.Id.Kind == "youtube#video")
                        {
                            workbook.CurrentWorksheet.AddNextCell(item.Snippet.ChannelTitle);
                            workbook.CurrentWorksheet.AddNextCell(item.Id.VideoId);
                            workbook.CurrentWorksheet.AddNextCell(item.Snippet.Title);
                            workbook.CurrentWorksheet.GoToNextRow();
    
                            // 조회수를 늘리기 위한 작업 영역입니다.
                            //Process.Start($"http://youtube.com/watch?v={item.Id.VideoId}");
                        }
                    }
    
                    // 파일로 저장해줍니다.
                    workbook.Save();
                }
                catch (Exception ex)
                {
                    MainView.WriteOutput(ex.Message);
                    return;
                }
            }
        }
    }

     

    CustomGoogleAPI 프로젝트를 컴파일하세요. 아래 그림과 같이 프로젝트에서 우클릭 후 "다시 빌드"를 클릭하시면 됩니다.

    srgZm7a.png

     

     

    컴파일이 정상적으로 완료 되었으면, CustomGoogleAPI 프로젝트에서 우클릭 후 "파일 탐색기에서 폴더 열기"를 선택하세요.

    l6uhRx7.png

     

     

    bin/Debug 폴더로 이동하세요. 만약, Release 모드로 컴파일했다면 bin/Release 폴더로 이동해야 합니다. 가급적이면 배포시에는 Release로 컴파일하세요. 아래 그림과 같이 CustomGoogleAPI.dll이 있을겁니다. 이 라이브러리를 복사한 후 바탕화면에 붙여넣기하세요.

    rIbiL87.png

     

     

    엔지엠 에디터를 실행한 후 "관리자" 메뉴의 "도구 모듈 설치" 버튼을 클릭하세요. (아래 그림은 함수 모듈 설치지만, 도구 모듈 설치로 해야 합니다.)

    ySJp52M.png

     

     

    모듈이 정상적이라면 아래와 같이 설치 작업이 성공했다는 메시지를 표시합니다.

    baqVyFP.png

     

     

    사용자 도구 상자에 보면 추가한 모듈의 액션이 추가된 것을 확인할 수 있습니다. 새로운 스크립트를 생성하고, 액션을 추가하세요. 속성은 알아서 넣어줍니다.

    WTVzK5A.png

     

     

    스크립트를 실행하고, 바탕화면에 만들어진 NGMsoftware.xlsx 파일을 열어보세요. 아래 그림과 같이 검색된 유튜브 채널의 정보를 확인할 수 있습니다. 소스를 보면 중간에 검색된 채널의 조회수를 늘려주는 부분은 주석으로 막아두었습니다. 주석을 풀면 검색된 동영상이 자동으로 실행되고 조회수가 올라갑니다. 추가적으로 아이피를 변경할 수 있는 VPN과 같이 사용해야 효과를 볼 수 있겠죠?

    n7NMAdU.png

     

     

    이 커스텀 모듈을 정상적으로 이용하려면 엑셀 라이브러리도 추가해야 합니다. 소스는 간단하게 구현되어 있는데요. 구글 API를 사용해서 추가적인 제어가 필요하면 베이스 코드에서 비즈니스 로직을 추가하시면 됩니다. 이외에도 구글 블로그나 지도와 같은 API도 접근할 수 있어서 여러가지로 테스트해보면 재미있는 결과물을 만들어 낼 수 있을겁니다.

     

    개발자에게 후원하기

    MGtdv7r.png

     

    추천, 구독, 홍보 꼭~ 부탁드립니다.

    여러분의 후원이 빠른 귀농을 가능하게 해줍니다~ 답답한 도시를 벗어나 귀농하고 싶은 개발자~

    감사합니다~

    • 네이버 공유하기
    • 페이스북 공유하기
    • 트위터 공유하기
    • 카카오스토리 공유하기
    추천0 비추천0

    댓글목록

    등록된 댓글이 없습니다.