添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

家里有个NAS,每日定时执行脚本。
脚本在其他电脑上编写,并用git进行版本管理,git托管为Codeup(阿里云效)上创建的私有代码库。

现在需求是,每次执行前,从Codeup上检查脚本是否更新,如有更新则下载。

解决方法想到两种:

  1. NAS上安装git,然后每次执行脚本前,先git同步到最新
  2. 检查这个脚本在Codeup上最后一次的更新时间,如果有更新则下载。

方法1由于脚本是和其他很多东西保存在一起,git没办法从私有库单抓一个文件更新。
所以开始研究方法2

一开始的思路的是直接selenium+requests的方法,selenium实现网页模拟登陆,提取cookies,然后requests回到我熟悉的网页操作上来,结果模拟到登录环节发现有滑动验证,也不是不能做,只是这个时候我突然发现了Codeup有API!

我汗(lll¬ω¬) ,有API还折腾啥,直接上API吧。

这里说一下,目前阿里云OpenAPI正在新旧版迭代更新期间,有些地方的链接是失效的或注释缺失,我也是找了一会儿才找对地方,并且把参数凑齐。

首先是Codeup的API页面
https://next.api.aliyun.com/api/codeup/2020-04-14/GetFileBlobs?sdkStyle=old&params={}

要实现上述功能涉及到两个API接口

  1. 查询代码库提交列表:检查文件更新
  2. 查询文件内容:下载文件内容

在这里插入图片描述
先安装SDK依赖
在这里插入图片描述
然后 点击获取AK https://usercenter.console.aliyun.com/#/manage/ak ,生成accessKeyId、accessSecret参数
在这里插入图片描述
然后开始找对应的API,首先是看官网文档,新版目前文档暂时还是缺失参数注释的。
在这里插入图片描述
没办法,回到Codeup页面,直接F12,看了几条GET,POST记录,大概弄懂了并找出了这些参数值,这里教你在一个页面内找出上述参数。
在这里插入图片描述
参数填好,点击发起调用,查看返回结果
在这里插入图片描述
确认成功,即可返回SDK示例页面,将自动生成的代码复制出来
在这里插入图片描述
通过前面提到这两个API接口,就可以实现通过API检查Codeup云端文件更新状态并下载的功能了。

最终代码:

#!/usr/bin/env python
#coding=utf-8
from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.request import CommonRequest
import json
import datetime,time
import os
accessKeyId = ""
accessSecret = ""
ProjectId = 
OrganizationId = ""
Ref = ""
FilePath = ""
LocalPath = "本地文件位置"
# 创建AcsClient实例
client = AcsClient(accessKeyId, accessSecret, 'cn-hangzhou')
# 获取文件提交更新记录(以下大段内容来自于API生成)
request = CommonRequest()
request.set_accept_format('json')
request.set_method('GET')
request.set_protocol_type('https') # https | http
request.set_domain('codeup.cn-hangzhou.aliyuncs.com')
request.set_version('2020-04-14')
request.set_content('''{}'''.encode('utf-8'))
request.add_header('Content-Type', 'application/json')
request.add_query_param('OrganizationId', OrganizationId)
request.add_query_param('RefName', Ref)
request.set_uri_pattern(f'/api/v4/projects/{ProjectId}/repository/commits')
request.add_query_param('Path', FilePath)
response = client.do_action_with_exception(request)
# 取出最后更新时间,和本地文件更新时间对比
j = json.loads(str(response, encoding = 'utf-8'))
committed_date = j['Result'][0]['CommittedDate']
fileDatetimeCodeup = datetime.datetime.strptime(committed_date,'%Y-%m-%dT%H:%M:%S%z').replace(tzinfo=None)
fileDatetimeLocal = datetime.datetime.fromtimestamp(os.path.getmtime(LocalPath))
if fileDatetimeCodeup > fileDatetimeLocal:
    # 需要从云端下载更新(以下大段内容来自于API生成)
    request = CommonRequest()
    request.set_accept_format('json')
    request.set_method('GET')
    request.set_protocol_type('https') # https | http
    request.set_domain('codeup.cn-hangzhou.aliyuncs.com')
    request.set_version('2020-04-14')
    request.set_content('''{}'''.encode('utf-8'))
    request.add_query_param('OrganizationId', OrganizationId)
    request.add_query_param('FilePath', FilePath)
    request.add_query_param('Ref', Ref)
    request.add_header('Content-Type', 'application/json')
    request.set_uri_pattern(f'/api/v4/projects/{ProjectId}/repository/blobs')
    response = client.do_action_with_exception(request)
    # 保存文件
    j = json.loads(str(response, encoding = 'utf-8'))
    with open(LocalPath,'w',encoding='utf-8') as f:
        f.write(j['Result']['Content'])

额外补充:

虽然用来下载脚本没问题。但是官网这个utf-8转码很奇怪,
所以我将FilePath换了一个图片的地址,再试果然出问题了,获取到的图片打不开了。

查看获取到的Content,发现返回内容是被utf-8格式文本形式读取过的。

结果就跟用文本编辑器打开图片再保存一样,直接乱码了。至于图片或非utf-8格式应该怎么读,官网文档没写,暂时我也不清楚应该如何调整参数。

需求家里有个NAS,每日定时执行脚本。脚本在其他电脑上编写,并用git进行版本管理,git托管为Codeup(阿里云效)上创建的私有代码库。现在需求是,每次执行前,从Codeup上检查脚本是否更新,如有更新则下载。解决方法想到两种:NAS上安装git,然后每次执行脚本前,先git同步到最新检查这个脚本在Codeup上最后一次的更新时间,如果有更新则下载。方法1由于脚本是和其他很多东西保存在一起,git没办法从私有库单抓一个文件更新。所以开始研究方法2一开始的思路的是直接selenium
欢迎选择云,你可以使用云开放 API 来管理和开发 一章节:快速入门 本章节以 CreateRepository 为例,为你演示如何通过 OpenAPI Explorer 和阿里云 SDK 等开发者工具调用Codeup API。 调用 API 时,你可以根据 API 文档了解使用说明,并查询必选的请求参数。发送请求后报错时,你可以在相应API 文档中获取错误码说明。 OpenAPI Explorer示例:适用于习惯交互式操作界面的场景,或者初次使用阿里云产品的开发者用户。你可以在Op
1- 本地新建一个文件夹,进入文件夹下面右击打开git 2- Git init初始化一个.git文件夹 3- Git clone git@code.aliyun.com:username/space-web.git(git地址)从阿里云上面克隆代码, git clone -b xxxx URL这样为克隆指定分支代码 4-cd进入到下载文件夹里面 4- 修改文件,或者把修改好的...
文章目录云软件测试和质量保证1. 云平台测试管理功能介绍2. 云测试用例3. 云测试计划4. 云测试用例执行与报告 云软件测试和质量保证 1. 云平台测试管理功能介绍 1. 测试管理简介: 云的「测试管理」功能包含对测试计划与执行用例的创建、编辑、规划与关联等功能,让测试人员可以直接在云的项目中进行测试工作的规划和执行进展反馈,并将「测试计划」与「需求」和「缺陷」一起进行管理。 – 测试用例用于管理和组织手工用例,支持方便快捷编辑和查看用例。 – 测试计划用于规划和执行手工用例。测试计划
阿里云新建云git代码命令行指引为了标识身份,建议先完成 Git 全局设置方式一:克隆仓方式二:已有文件夹或仓方式三:导入代码 为了标识身份,建议先完成 Git 全局设置 git config --global user.name "user.name" git config --global user.email "" 方式一:克隆仓 git clone git@codeup.aliyun.com:shundata/xxxxxx.git cd xxxxxx touch README.md 登录到首页,点击“代码管理”-》“添加”-》“新建代码” 2、创建完成后,即可使用git将本地代码上传到云: 首先,打开本地电脑项目代码所在的位置,将 .git 文件夹删掉(因为这个是原来旧地址的git,若你的项目未绑定过git地址,则忽略该步骤) 在该目录下打开git 命令面板: 输入相关命令
文章目录阿里云代码个人信息配置1. `首先,你需要有一个阿里云账号`2. 访问 `https://code.aliyun.com/`3. 点击 设置 —> 个人设置 完成个人代码信息的配置4. 点击 SSH 公钥,并配置个人电脑 GIT SSH 公钥 阿里云代码个人信息配置 1. 首先,你需要有一个阿里云账号 2. 访问 https://code.aliyun.com/ 3. 点击 ...
代码托管产品是软件研发过程中的必备工具,不少企业在进行代码托管工具选型的时候会选择开源工具自建,然而,开源版本的代码管理工具往往只是提供了基础的代码仓储能力,无法满足企业在安全性、代码质量、权限管控等方面的需求,企业仍需投入额外的成本去建设工具,而且还需要投入专人长期维护。 今天,我们要向大家介绍这款阿里云的代码管理工具——云Codeup,不仅免费、开箱即用,更是提供了强大、便捷的代码安全和质量保障能力。 下面,让我们一起来看看这款产品到底香在哪里! 1、0成本,开箱即用 企业如果选择自建,需要花费成本购
解决git报错[remote rejected] HEAD -> master (pre-receive hook declined) error: failed to push some... weitian152: 再执行git pull origin master时报错 Encountered 27 files that should have been pointers, but weren't: ...(文件名) Automatic merge failed; fix conflicts and then commit the result. Python requests模块POST提交请求,不同Content-type对应的参数示例记录 csdn_pc: 问题好了吗 什么问题 表情包 Python requests模块POST提交请求,不同Content-type对应的参数示例记录 博主,可以帮我请求一下嘛表情包,有一个老是请求失败 使用Python调用mdx字典文件进行查词 watfe: 如果是pip install python-lzo装不上的话,建议从网上看看centos具体报什么错,上面的方法是针对windows的 使用Python调用mdx字典文件进行查词 西本雪穗: 请问一下,centos也报这个python-lzo的错怎么办