задний план
Некоторое время назад я закинул хексоблог и развернул егоGithub Pages, настроил переадресацию своего доменного имени, добавил https, вроде все готово, только пиши в блог. Однако найти изображения для блога по-прежнему проблема, потому что при добавлении изображений в уценке я хочу использовать cdn вместо локальных изображений.
Поэтому я исследовал некоторых поставщиков облачных услуг, которые можно использовать в качестве лож для изображений, таких каксемь коров,sm.ms,Тенсент Облако. После сравнения выясняется, что Qiniu не поддерживает https, sm.ms полностью бесплатна, но функций вроде относительно немного, Tencent Cloud имеет десятки гигабайт свободного места (забыл сколько) и тоже предоставляет https. Что ж, воспользуемся Tencent Cloud.
Как насчет инструмента для загрузки изображения? Говорят, что iPic — это артефакт с изображением кровати, в последнее время он также поддерживает Tencent Cloud, но за это нужно платить. Что мне нужно, так это бесплатная версия, и я не нашел инструмент для создания карт, который поддерживает Tencent Cloud, после долгого поиска. Как кодер, как это можно терпеть? Я смутно помню своих друзейблогЕсть история про загрузку картинок в sm.ms с помощью автомата, вот я ее скопировала и эта статья у меня есть. Разница в том, что здесь я использую Tencent Cloud.python sdkзагружать.
идеи
Идея загрузки картинок с помощью автомата:
- Нажмите на локальное изображение, щелкните правой кнопкой мыши и выберите службу, созданную автоматом.
- Вызов предварительно написанного сценария для загрузки
- Записать ссылку в буфер обмена после загрузки
- Вставьте прямо в редактор уценки, чтобы наслаждаться
Этапы реализации
Откройте автомат и выберите «Новый сервис»:
Затем в «Утилитах» найдите «Копировать в буфер обмена» и перетащите его в нужный рабочий процесс, чтобы при выборе изображения локальный путь изображения был установлен в буфер обмена:
Нам нужно на самом деле протестировать этот процесс создания службы, поэтому мы можем добавить утилиту «Получить указанные элементы Finder» в рабочий процесс справа, поместить ее вверху и добавить несколько изображений в качестве теста. Использование (которое необходимо быть удалены позже), как показано ниже:
Затем нажмите кнопку запуска в правом верхнем углу.После завершения операции проверьте содержимое вашего буфера обмена, и вы обнаружите, что содержимое буфера обмена является путем к картинке.
Теперь, когда путь к изображению доступен, добавьте рабочий процесс сценария оболочки, получите путь к изображению в буфере обмена в сценарии, загрузите его, а затем установите адрес загруженного изображения Tencent Cloud в буфер обмена.
Добавьте рабочий процесс «Выполнить сценарий оболочки» справа в качестве третьего рабочего процесса и выберите python в качестве оболочки по умолчанию, как показано ниже:
Что делает код Python на картинке выше, так это загружает изображение и устанавливает содержимое буфера обмена.Код выглядит следующим образом:
# -*- coding=utf-8
from qcloud_cos import CosConfig
from qcloud_cos import CosS3Client
import os
import subprocess
# 上传腾讯云需要的相关配置,可在这里查看:https://console.cloud.tencent.com/cam/capi
secret_id = 'your_cos_secret_id' # 此处填入腾讯云的secret_id,
secret_key = 'your_cos_secret_key' # 此处填入腾讯云的secret_key
app_id = 'your_app_id' # 此处填入app_id
region = 'your_region' # 此处填入对象存储的地区
token = '' # 使用临时秘钥需要传入 Token,默认为空,可不填
bucket_name = 'your_bucket_name'
bucket = bucket_name + '-' + app_id # Bucket由bucketname-appid组成
legal_extensions = ['.jpg', '.jpeg', '.png', 'gif']
# 获取剪贴板内容
def getClipboardData():
p = subprocess.Popen(['pbpaste'], stdout=subprocess.PIPE)
retcode = p.wait()
data = p.stdout.read()
return data
# 设置剪贴板内容
def setClipboardData(data):
p = subprocess.Popen(['pbcopy'], stdin=subprocess.PIPE)
p.stdin.write(data)
p.stdin.close()
retcode = p.wait()
# 判断扩展名是否合法
def validate_image(path):
extension = os.path.splitext(path)[1]
if extension in legal_extensions:
return True
else:
return False
# 上传至腾讯云
def upload(file_name, filepath):
config = CosConfig(Appid=app_id, Secret_id=secret_id, Secret_key=secret_key, Region=region, Token=token)
# 获取客户端对象
client = CosS3Client(config)
with open(filepath, 'rb') as fp:
response = client.put_object(
Bucket=bucket,
Body=fp,
Key=file_name,
StorageClass='STANDARD',
ContentType='text/html; charset=utf-8'
)
# print response
def main():
contents = getClipboardData().split("\n")
uploaded_url = ""
for path in contents:
if validate_image(path):
file_name = os.path.basename(path)
upload(file_name, path)
# 拼接成markdown的image链接格式
uploaded_url += '![](' + 'https://' + bucket + '.cos.' + region + '.myqcloud.com/' + file_name + ")\n"
# 将url设置到剪贴板中
setClipboardData(uploaded_url)
main()
Кода не много, среди которых функция выгрузкиupload
Реализация используетофициальный SDK.Как установить sdk и больше об использовании, пожалуйста, обратитесь к официальной документации.
подсказки: В процессе запуска здесь можно не только пройти отладку, но и просмотреть вывод программы для тестирования:
Здесь реализована функция загрузки, будет лучше, если вы добавите еще одно напоминание после завершения загрузки.
Добавьте рабочий процесс «Показать уведомление» в нужное рабочее пространство, установите содержимое уведомления и выполните его, вы увидите приглашение уведомления.
Пока функция реализована, а теперь удаляем первый рабочий процесс «Получить указанный элемент поиска». Сохраните эту службу и дайте ей имя:
Затем найдите картинку наугад, щелкните правой кнопкой мыши, чтобы вызвать меню, и вы увидите сервис, который мы только что создали.Не случайно, вы можете использовать его как обычно:
Если я захочу отредактировать эту услугу в следующий раз, куда мне обратиться? По сути, эти заказные сервисы размещены в~/Library/Services
по пути:
> ls ~/Library/Services
上传至腾讯云.workflow
На этом автомат для загрузки изображений завершен. Недостатком является то, что он может работать только с файлами изображений на диске. Скриншоты не могут быть изменены. Фактически, теоретически, если содержимое буфера обмена может быть получено, загрузка скриншота также может быть достигнута.
Ссылаться на: