Typora自定义命令图片上传
侧边栏壁纸
  • 累计撰写 60 篇文章
  • 累计收到 108 条评论

Typora自定义命令图片上传

Skycyan
2023-10-31 / 2 评论 / 100 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2023年10月31日,已超过752天没有更新,若内容或图片失效,请留言反馈。

需求来源

  1. 喜欢绿化版软件
  2. picgo命令行是也是要NPM环境

Python实现

请自行替换代码中的返回链接部分

# -*- coding: utf-8 -*-
import argparse
import paramiko
import os

def sftp_upload(hostname, port, username, password, *args):
    transport = paramiko.Transport((hostname, port))
    transport.connect(username=username, password=password)
    sftp = paramiko.SFTPClient.from_transport(transport)
    if sftp:
        print("STFP Connect Success")
        print("Upload Success:")
        current_dir = sftp.getcwd() or sftp.normalize('.')
        for local_file_path in args:
            if local_file_path:
                if os.path.isfile(local_file_path):
                    remote_path = os.path.join(current_dir,"web/"+os.path.basename(str(local_file_path)))
                    sftp.put(local_file_path, remote_path)
                    print(f"https://pic.skycyan.cn/{os.path.basename(local_file_path)}")
                else:
                    print(f"File {local_file_path} does not exist.")

    sftp.close()
    transport.close()

if __name__ == '__main__':
    parser = argparse.ArgumentParser(description='SFTP 文件上传')
    parser.add_argument('hostname', type=str, help='SFTP服务器主机名或IP地址')
    parser.add_argument('port', type=int, help='SFTP服务器端口号')
    parser.add_argument('username', type=str, help='SFTP服务器用户名')
    parser.add_argument('password', type=str, help='SFTP服务器密码')
    parser.add_argument('file_paths', nargs='*', type=str, help='要上传的文件路径')
    args = parser.parse_args()

    sftp_upload(args.hostname, args.port, args.username, args.password, *args.file_paths)

C#实现

C #增了参数传递远程路径的功能

using System;
using Renci.SshNet;

if (args.Length < 4)
{
    Console.WriteLine("Usage: SftpUpload <host>主机地址 <port>端口 <username>用户名 <password>密码 <remoteRootPath>远程路径 <localFilePath>本地文件路径 ");
    return;
}

string host = args[0];
int port = int.Parse(args[1]);
string username = args[2];
string password = args[3];
string remoteRootPath = args[4];
string[] filePathArgs = new ArraySegment<string>(args, 5, args.Length - 5).ToArray();
Console.WriteLine("Upload Success:");
foreach (string filePathArg in filePathArgs)
{
    try
    {
        using (var client = new SftpClient(host, port, username, password))
        {
            client.Connect();
            using (var fileStream = System.IO.File.OpenRead(filePathArg))
            {
                string remoteFilePath = System.IO.Path.GetFileName(filePathArg);
                client.UploadFile(fileStream, $"{remoteRootPath}/{remoteFilePath}");

                
                Console.WriteLine($"https://pic.skycyan.cn/{remoteFilePath}");
            }

            client.Disconnect();
        }
    }
    catch (Exception ex)
    {
        Console.WriteLine("Error: " + ex.Message);
    }
}

成品下载

0

评论 (2)

取消
  1. 头像

    华纳公司合作开户所需材料?电话号码15587291507 微信STS5099
    华纳公司合作开户所需材料?电话号码15587291507 微信STS5099
    华纳公司合作开户所需材料?电话号码15587291507 微信STS5099
    华纳公司合作开户所需材料?电话号码15587291507 微信STS5099
    华纳公司合作开户所需材料?电话号码15587291507 微信STS5099
    华纳公司合作开户所需材料?电话号码15587291507 微信STS5099
    华纳公司合作开户所需材料?电话号码15587291507 微信STS5099
    华纳公司合作开户所需材料?电话号码15587291507 微信STS5099

    回复
  2. 头像

    华纳公司合作开户所需材料?电话号码15587291507 微信STS5099
    华纳公司合作开户所需材料?电话号码15587291507 微信STS5099
    华纳公司合作开户所需材料?电话号码15587291507 微信STS5099
    华纳公司合作开户所需材料?电话号码15587291507 微信STS5099
    华纳公司合作开户所需材料?电话号码15587291507 微信STS5099
    华纳公司合作开户所需材料?电话号码15587291507 微信STS5099
    华纳公司合作开户所需材料?电话号码15587291507 微信STS5099
    华纳公司合作开户所需材料?电话号码15587291507 微信STS5099

    回复