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] ))

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值