訓練家的快寫筆記

The legend of trainer's paper


搜尋:

     關閉     
標題:113screenshot
內容:

nuget 安裝 PuppeteerSharp
專案 4.7.2

using PuppeteerSharp;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using utility;



namespace _113screenshot
{
    internal class Program
    {
        static myinclude my = new myinclude();
        static async Task Main(string[] args)
        {
            string VERSION = "0.01";


            bool showHelp = false;
            string url = "";
            int delayms = 3000;
            int w = 1920;
            int h = 1080;

            string output = "output.png"; // 默認輸出文件名        
            // 解析命令行參數
            for (int i = 0; i < args.Length; i++)
            {
                switch (args[i])
                {
                    case "-?":
                    case "-help":
                        showHelp = true;
                        break;
                    case "-url":
                        url = args[++i];
                        break;
                    case "-d":
                    case "-delay":
                        delayms = Convert.ToInt32(args[++i]);
                        break;
                    case "-w":
                    case "-width":
                        w = Convert.ToInt32(args[++i]);
                        break;
                    case "-h":
                    case "-height":
                        w = Convert.ToInt32(args[++i]);
                        break;
                    case "-o":
                    case "-output":
                        output = args[++i];
                        break;
                }
            }

            if (showHelp || string.IsNullOrEmpty(url) || string.IsNullOrEmpty(output))
            {
                Console.WriteLine("My URL Screenshot");
                Console.WriteLine("Author: FeatherMountain (https://3wa.tw)");
                Console.WriteLine("Version: " + VERSION);
                Console.WriteLine("  Usage:");
                Console.WriteLine("   -help, -?   This helper.");
                Console.WriteLine("   -url        URL , or test.html");
                Console.WriteLine("   -width, -w  Screenshot width.");
                Console.WriteLine("   -height, -h Screenshot height.");
                Console.WriteLine("   -delay, -d  Delay N ms download. Default 3000.");
                Console.WriteLine("   -output, -o [Default: output.sqlite] The output SQLite file name.");
                Console.WriteLine("");
                Console.WriteLine(" Example:");
                Console.WriteLine("   113screenshot.exe -url test.html -w 1920 -h 1080 -d 3000 -o output.png");
                return;
            }



            // Download the Chromium browser if needed
            await new BrowserFetcher().DownloadAsync();

            // Launch the browser
            var browser = await Puppeteer.LaunchAsync(new LaunchOptions
            {
                Headless = true
            });

            // Create a new page
            var page = await browser.NewPageAsync();

            // Navigate to the URL
            //page.goto(`file:///C:/pup_scrapper/testpage/TM.html`);

            if (my.is_file(url))
            {
                url = "file://" + System.IO.Path.GetFullPath(url).Replace("\\", "/");
            }

            await page.GoToAsync(url);

            // Set the viewport size if needed (optional)
            await page.SetViewportAsync(new ViewPortOptions
            {
                Width = w,
                Height = h
            });
            Thread.Sleep(delayms);
            // Take the screenshot
            await page.ScreenshotAsync(output);

            // Close the browser
            await browser.CloseAsync();

            Console.WriteLine("Screenshot saved! " + System.IO.Path.GetFullPath(output));
        }
    }
}