Python下载Unraid的community.applications apps应用商店插件并上传到国内网站服务器

本文涉及的产品
文件存储 NAS,50GB 3个月
简介: Python下载Unraid的community.applications apps应用商店插件并上传到国内网站服务器

Python下载Unraid的community.applications apps应用商店插件并上传到国内网站服务器

需要在IIS中MIME 为.plg .txz 添加类型 application/octet-stream 这样打开下面文件时才会变成下载而非提示此文件不可打开

https://www.52help.net/ad/nas/Squidly271/community.applications/master/archive/community.applications-2020.06.13a-x86_64-1.txz

from urllib import request
from ftplib import FTP

blnver = False
blnname = False
blngithub = False
str_ver=""

替换文本函数

def alter(file,old_str,new_str):
file_data = ""
with open(file, "r", encoding="utf-8") as f:
for line in f:
print(line)
if old_str in line:
line = line.replace(old_str,new_str)
file_data += line
with open(file,"w",encoding="utf-8") as f:
f.write(file_data)

使用代理上网 才能连到unraid官网

proxies = {
'https': 'https://127.0.0.1:1080',
'http': 'http://127.0.0.1:1080'
}

需要加上headers, 否则报错: UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa0 in position 8974: invalid start byte

headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36'
}

community_url = 'https://raw.githubusercontent.com/Squidly271/community.applications/master/plugins/community.applications.plg'
opener = request.build_opener(request.ProxyHandler(proxies))
request.install_opener(opener)

req = request.Request(community_url, headers=headers)

f = request.urlopen(req)
data = f.read()
with open("community.applications.plg", "wb") as code:
code.write(data)

file_data = ""

获取文件中的软件名 版本号 路径

with open("community.applications.plg", "r", encoding="utf-8") as f:
    for line in f:
      if not blnver:
         char_1='<!ENTITY version'
         if char_1 in line: 
            print("charfind")
            str_ver = line.replace(char_1,"")
            str_ver= str_ver.replace(" ","")
            str_ver= str_ver.replace(">","")
            str_ver= str_ver.replace('"','')
            str_ver= str_ver.replace('\n', '').replace('\r', '')
            print(str_ver)
            blnver = True 
      if not blnname:
         char_1='<!ENTITY name'
         if char_1 in line: 
            str_name = line.replace(char_1,"")
            str_name= str_name.replace(" ","")
            str_name= str_name.replace(">","")
            str_name= str_name.replace('"','')
            str_name= str_name.replace('\n', '').replace('\r', '')
            print(str_name)
            blnname = True  
      if not blngithub:
         char_1='<!ENTITY github'
         if char_1 in line: 
            str_github = line.replace(char_1,"")
            str_github= str_github.replace(" ","")
            str_github= str_github.replace(">","")
            str_github= str_github.replace('"','')
            str_github= str_github.replace('\n', '').replace('\r', '')
            print(str_github)
            blngithub = True  
      if "https://raw.githubusercontent.com/" in line:
        line = line.replace("https://raw.githubusercontent.com/","https://www.52help.net/ad/nas/")
      file_data += line
with open("community.applications.plg","w",encoding="utf-8") as f:
      f.write(file_data)

str_url=''
str_filename='&name;-&version;-x86_64-1.txz'
;/master/archive/'  #&name;-&version;-x86_64-1.txz
str_url = str_1.replace("&github;",str_github)
str_filename = str_filename.replace("&name;",str_name)
str_filename = str_filename.replace("&version;",str_ver)
str_url =str_url + str_filename 
print(str_url)

req = request.Request(str_url, headers=headers)
f = request.urlopen(req) 
data = f.read() 
with open(str_filename, "wb") as code: 
 code.write(data)

alter("community.applications.plg", "https://raw.githubusercontent.com/", "https://www.52help.net/ad/nas/")

将下载的文件修改后再上传到网站服务器

ftp = FTP()

打开调试级别2, 显示详细信息

ftp.set_debuglevel(2)

服务器IP和端口

ftp.connect("www.52help.net", 21)

匿名登陆, 如果需要登陆, 就把两个空字符串写上用户名和密码就行了("username", "password")

ftp.login("52help", "FTP登录密码")

切换目录, 相对于ftp目录, 比如设置的ftp根目录为/vat/ftp, 那么pub就是/var/ftp下面的目录

ftp.cwd("/52help/web/ad/nas/Squidly271/community.applications/master/plugins/")

查看目录下有哪些文件, 如果文件名已经存在, 那么再次上传同一个文件就会报错, 返回列表

ftp.nlst("/pub")

使用二进制的方式打开文件

f = open("community.applications.plg", 'rb')

上传文件, bufsize缓冲区大小

ftp.storbinary("STOR {}".format("community.applications.plg"), f [, bufsize])

ftp.storbinary('STOR %s' % "community.applications.plg", f)
f.close()

ftp.cwd("/52help/web/ad/nas/Squidly271/community.applications/master/archive/")
f = open(str_filename, 'rb')
ftp.storbinary('STOR %s' % str_filename, f)
f.close()

关闭调试模式

ftp.set_debuglevel(0)

退出FTP连接

ftp.quit()

相关实践学习
基于ECS和NAS搭建个人网盘
本场景主要介绍如何基于ECS和NAS快速搭建个人网盘。
阿里云文件存储 NAS 使用教程
阿里云文件存储(Network Attached Storage,简称NAS)是面向阿里云ECS实例、HPC和Docker的文件存储服务,提供标准的文件访问协议,用户无需对现有应用做任何修改,即可使用具备无限容量及性能扩展、单一命名空间、多共享、高可靠和高可用等特性的分布式文件系统。 产品详情:https://www.aliyun.com/product/nas
相关文章
|
1月前
|
安全 Linux 应用服务中间件
从零开始启动、配置、保护你的云服务器并搭建一个简单的网站
本文详细介绍了如何准备原料、搭建基础环境、进行安全防护、建设网站、管理证书以及开启BBR优化网络性能。主要内容包括获取健康云服务器、配置SSH登录、创建非root用户、启用密钥认证、安装Nginx、申请TLS证书、配置HTTPS自动跳转及优化网络性能等步骤。通过本文,读者可以掌握从零开始搭建个人网站的全过程。
46 1
从零开始启动、配置、保护你的云服务器并搭建一个简单的网站
|
15天前
|
弹性计算 安全 开发工具
灵码评测-阿里云提供的ECS python3 sdk做安全组管理
批量变更阿里云ECS安全组策略(批量变更)
|
24天前
|
开发框架 .NET PHP
网站应用项目如何选择阿里云服务器实例规格+内存+CPU+带宽+操作系统等配置
对于使用阿里云服务器的搭建网站的用户来说,面对众多可选的实例规格和配置选项,我们应该如何做出最佳选择,以最大化业务效益并控制成本,成为大家比较关注的问题,如果实例、内存、CPU、带宽等配置选择不合适,可能会影响到自己业务在云服务器上的计算性能及后期运营状况,本文将详细解析企业在搭建网站应用项目时选购阿里云服务器应考虑的一些因素,以供参考。
|
1月前
|
缓存 监控 Linux
Python 实时获取Linux服务器信息
Python 实时获取Linux服务器信息
|
1月前
|
安全 数据挖掘 网络安全
网站建站如何选择合适的服务器配置
建站初期应进行长期数据分析与预测,合理选择服务器配置。主要依据同时在线人数、CPU性能、内存大小及带宽类型,同时考虑安全防护,如选择带防火墙的高防服务器,确保网站稳定运行与良好用户体验。
49 0
|
2月前
|
域名解析 缓存 网络协议
Windows系统云服务器自定义域名解析导致网站无法访问怎么解决?
Windows系统云服务器自定义域名解析导致网站无法访问怎么解决?
|
2月前
|
弹性计算 关系型数据库 MySQL
CentOS 7.x操作系统的ECS云服务器上搭建WordPress网站
CentOS 7.x操作系统的ECS云服务器上搭建WordPress网站
|
23天前
|
人工智能 数据可视化 数据挖掘
探索Python编程:从基础到高级
在这篇文章中,我们将一起深入探索Python编程的世界。无论你是初学者还是有经验的程序员,都可以从中获得新的知识和技能。我们将从Python的基础语法开始,然后逐步过渡到更复杂的主题,如面向对象编程、异常处理和模块使用。最后,我们将通过一些实际的代码示例,来展示如何应用这些知识解决实际问题。让我们一起开启Python编程的旅程吧!
|
22天前
|
存储 数据采集 人工智能
Python编程入门:从零基础到实战应用
本文是一篇面向初学者的Python编程教程,旨在帮助读者从零开始学习Python编程语言。文章首先介绍了Python的基本概念和特点,然后通过一个简单的例子展示了如何编写Python代码。接下来,文章详细介绍了Python的数据类型、变量、运算符、控制结构、函数等基本语法知识。最后,文章通过一个实战项目——制作一个简单的计算器程序,帮助读者巩固所学知识并提高编程技能。