python调用命令行下载视频

# -*- coding: utf-8 -*-
# @Time: 2020/4/4 19:36
# @Author: 素还真
# @File: bv2avDownload.py
# @SoftWare: PyCharm

import requests
from lxml import etree
import os
import sys
"""
B站视频BV转AV并下载
需要安装python环境
然后安装下面两个
pip install you-get
pip install youtube-dl
you-get下载失败的可以用youtube-dl
youtube-dl下载失败的可以用you-get
两个下载失败的自己想办法O(∩_∩)O
加密 解密算法代码来源于知乎
算法作者:mcfx
算法链接:https://www.zhihu.com/question/381784377/answer/1099438784
来源:知乎
"""
#av bv加密、解密算法
table='fZodR9XQDSUm21yCkr6zBqiveYah8bt4xsWpHnJE7jL5VG3guMTKNPAwcF'
tr={}
for i in range(58):
	tr[table[i]]=i
s=[11,10,3,8,4,6]
xor=177451812
add=8728348608
#bv解密
def dec(x):
	r=0
	for i in range(6):
		r+=tr[x[s[i]]]*58**i
	return (r-add)^xor
#av加密
def enc(x):
	x=(x^xor)+add
	r=list('BV1  4 1 7  ')
	for i in range(6):
		r[s[i]]=table[x//58**i%58]
	return ''.join(r)
#获取bv号
def get_bv():
    if len(sys.argv[:])<2:
        pass
    else:
        if len(sys.argv[1].split("/"))<5:
            pass
        else:
            return sys.argv[1].split("/")[4]
#bv号转av号
def bv2av():
    bv=get_bv()
    return dec(bv)
def get_link():
   if(len(sys.argv[1].split("BV"))<2):
       return "输入网址错误"
   else:
       av = bv2av()
       return sys.argv[1].split("BV")[0]+"av%s" %av
       # 拼接av号视频下载地址


def download_video():
    url=get_link()
    if url!=None:
        os.system("youtube-dl {}".format(url))
        #os调用系统执行命令行下载视频
    else:
        print("视频地址获取错误")

if __name__ == '__main__':
    try:
        download_video()
    except:
        print("程序运行错误\nUsage:python %s url\n如:python %s https://www.bilibili.com/video/BV1jE411f7bW" % (sys.argv[0],sys.argv[0] ))

在这里插入图片描述

### 回答1: Python可以使用内置的subprocess模块来调用命令行。使用subprocess模块,可以在Python程序中执行命令行命令,并获得输出结果。 下面是一个使用subprocess模块执行命令行的示例: ```python import subprocess # 执行ls命令,并将输出结果保存到output变量中 output = subprocess.check_output(["ls", "-l"]) # 将输出结果转换成字符串,并打印出来 print(output.decode("utf-8")) ``` 在这个示例中,`subprocess.check_output()`方法接受一个包含命令行命令及其参数的列表作为参数,并返回命令的输出结果。该示例中执行的命令是`ls -l`,它会列出当前目录下的所有文件和文件夹,并将结果保存在output变量中。`output.decode("utf-8")`将输出结果转换成字符串,并打印出来。 ### 回答2: Python可以通过调用命令行实现与操作系统交互和执行命令。 在Python中,可以使用内置的`os`模块来调用命令行。`os`模块提供了许多函数来执行与操作系统相关的操作,包括调用命令行。 以下是使用Python调用命令行的简单示例: ```python import os # 调用命令行执行一个简单的命令 os.system("dir") # 在Windows上列出当前目录的内容 os.system("ls") # 在Linux或Mac上列出当前目录的内容 # 调用命令行执行带参数的命令 os.system("python myscript.py arg1 arg2") # 执行名为"myscript.py"的Python脚本,并传递两个参数 # 使用subprocess模块更强大的调用命令行 import subprocess # 执行命令并获取输出 output = subprocess.check_output("echo Hello, World!", shell=True) print(output) # 使用管道连接多个命令 p1 = subprocess.Popen("echo Hello", shell=True, stdout=subprocess.PIPE) p2 = subprocess.Popen("wc -c", shell=True, stdin=p1.stdout, stdout=subprocess.PIPE) output = p2.communicate()[0] print(output) ``` 需要注意的是,使用`os.system`执行命令时,命令是在新的命令行窗口中执行的。如果要获取命令执行的结果,可以使用`subprocess`模块提供的函数,如`subprocess.check_output`。 此外,还有其他的第三方库,如`sh`、`pexpect`等,可以在Python中更方便地调用命令行。这些库提供了更多的功能和选项,可以满足更复杂的需求。 ### 回答3: Python调用命令行是通过subprocess模块实现的。 subprocess模块允许Python脚本在运行时创建并控制新的进程,包括调用命令行程序。你可以使用subprocess模块执行命令行命令,并获取其输出或错误信息。 要调用命令行,需要使用subprocess模块的Popen函数。你可以将命令行命令作为参数传递给Popen函数,并通过设置参数来控制进程的行为和输出。 通过subprocess模块,你可以执行各种命令行操作,如运行外部程序、执行Shell脚本、执行系统命令等。 以下是一个简单的例子,演示如何使用subprocess模块调用命令行: ```python import subprocess # 执行命令行命令并获取输出 result = subprocess.run(['ls', '-l'], capture_output=True, text=True) print(result.stdout) # 执行命令行命令并获取返回值 result = subprocess.run(['git', 'commit', '-m', 'Initial commit']) print(result.returncode) ``` 在这个例子中,我们使用subprocess的run函数来执行两个不同的命令行命令。第一个命令是'ls -l',它会列出当前目录下的文件和文件夹的详细信息。我们使用capture_output参数来捕获命令的输出,并使用text参数将输出转换为字符串。第二个命令是'git commit -m "Initial commit"',它会提交一个Git版本控制的新提交。 这只是subprocess模块的一小部分功能,它还有很多其他的用法和选项,可以根据具体需求进行调整。使用subprocess模块,Python可以方便地调用命令行,并与命令行程序进行交互。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值