鱼C论坛

 找回密码
 立即注册
查看: 3857|回复: 14

关于python ffmpy3的一点小问题

[复制链接]
发表于 2020-12-15 19:48:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
小弟最近一直在研究 如何爬取 http://jisudhw.com/ 这个网站的电影
还是废话不多说 直接上代码
首先我定义了两个方法
def download(url):
    header = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.163 Safari/535.1',
              'Referer':'http://www.jisudhw.com',
              'Origin':'http://www.jisudhw.com',
              'Host':'www.jisudhw.com'
        }  
    r = req.get(url,headers = header)
    r.encoding = 'utf-8'
    html = BeautifulSoup(r.text,'lxml')

    for each in  html.find_all('input'):
        if 'm3u8' in each.get('value'):
            durl = each.get('value')
   
    return durl

def ffmpeg_path(inputs_path, outputs_path):
    a = FFmpeg(
                inputs={inputs_path: None},
                outputs={outputs_path: '-c copy',
                          }
    )
    print(a.cmd)
    a.run()
然后调用  但是调用之后 就不行了 显示

  File "*:\python\*.py", line 11, in <module>
    ffmpy3.FFmpeg(inputs = {url:None},outputs = {name:None}).run()

  File "*:\*\ffmpy3.py", line 130, in run
    raise FFRuntimeError(self.cmd, self.process.returncode, out[0], out[1])

  File "*:\*\ffmpy3.py", line 273, in __init__
    stdout.decode(),

AttributeError: 'NoneType' object has no attribute 'decode'
完全懵逼 不知道怎么回事 再网上找了半天 也没有解决办法 请各位大神帮忙
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-12-15 23:25:02 | 显示全部楼层
请上天赐给我一个编程大牛吧!!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-16 11:26:41 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-16 13:49:17 | 显示全部楼层
jtxs0000 发表于 2020-12-16 11:26
https://fishc.com.cn/thread-176937-1-1.html
看看这个

首先感谢大神帮我 不过看了你的代码之后 我只是更加疑惑 我是用bs4和re写的 你是用xpath写的 我知道你的代码可以用 我的代码也可以用 但是只针对电视剧可以用 到电影了就不行 也不知道为什么 晚点我把我的代码也发上来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-17 08:56:22 | 显示全部楼层
wcr0021 发表于 2020-12-16 13:49
首先感谢大神帮我 不过看了你的代码之后 我只是更加疑惑 我是用bs4和re写的 你是用xpath写的 我知道你的 ...

出现AttributeError也能继续运行?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-17 10:40:27 | 显示全部楼层
jtxs0000 发表于 2020-12-17 08:56
出现AttributeError也能继续运行?

不能呗 我昨天发的代码不知道为啥没通过审核 我再发一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-17 10:43:11 | 显示全部楼层
import requests as re
from bs4 import BeautifulSoup
import os
import ffmpy3
# 线程模块
from multiprocessing.dummy import Pool as ThreadPool
# import easygui as g

search_keyword = input('请输入你要搜索的电影或电视剧名称:')
search_url = 'http://jisudhw.com/index.php'
search_params = {'m':'vod-search'}
header = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.163 Safari/535.1',
          'Referer':'http://www.jisudhw.com',
          'Origin':'http://www.jisudhw.com',
          'Host':'www.jisudhw.com'
    }
search_dists = {'wd':search_keyword,'submit':'search'}
r = re.post(search_url,params=search_params,data=search_dists)
r.encoding = 'utf-8'
search_html = BeautifulSoup(r.text,'lxml')
search_span = search_html.find_all('span',class_='xing_vb4')
server = 'http://www.jisudhw.com'

# choice = (search_span.a.string)
# g.choicebox(msg='请选择要下载的电视剧',title='选择框',choices=choice)
for span in search_span:
    url = server+span.a.get('href')
    name = span.a.string
   
    os.chdir('C:\\迅雷下载')
    video_div = name
    if name not in os.listdir('./'):
        os.mkdir(name)
   
    detail_url = url
    resp = re.get(detail_url)
    resp.encoding = 'utf-8'
    detail_bf = BeautifulSoup(resp.text,'lxml')
   
    num = 1
    search_res = {}
   
    for each_url in detail_bf.find_all('input'):
        if 'm3u8' in each_url.get('value'):
            url = each_url.get('value')
            if url not in search_res.keys():
                search_res[url] = num
            num += 1
            print('第%03d集:'%num)
            print(url)
            print(type(url))
            
            
def download(url):
    num = search_res[url]
    name = os.path.join(video_div,'第%03d集.mp4'%num)
    print(type(name))
    ffmpy3.FFmpeg(inputs = {url:None},outputs = {name:None}).run()
   

download(url)
# 开启线程下载
pool = ThreadPool(8)
result = pool.map(download,search_res.keys())
pool.close()
pool.join()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-17 22:38:55 | 显示全部楼层
jtxs0000 发表于 2020-12-17 08:56
出现AttributeError也能继续运行?

请看下倒数第二楼
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-18 08:57:18 | 显示全部楼层
wcr0021 发表于 2020-12-17 22:38
请看下倒数第二楼

bs4 我没怎么用过,如果确定代码没问题的话可能就是你换过或者删过一次 ffmpeg.exe了

如果你换了exe 的话就把这个py文件删了,代码复制到另外一个文件去

我有一次是32位换成64位的出过一次问题,之后一直正常
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-18 10:55:47 | 显示全部楼层
jtxs0000 发表于 2020-12-18 08:57
bs4 我没怎么用过,如果确定代码没问题的话可能就是你换过或者删过一次 ffmpeg.exe了

如果你换了exe  ...

这个问题倒是好解决 只不过就是ctrl加c或是加v的事 现在的问题是 这个代码可以下载电视剧 但是不能下电影 这我就蒙圈了啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-18 16:30:37 | 显示全部楼层
wcr0021 发表于 2020-12-18 10:55
这个问题倒是好解决 只不过就是ctrl加c或是加v的事 现在的问题是 这个代码可以下载电视剧 但是不能下电影 ...

有什么提示吗?我刚用我自己的很正常,电影,电视剧都可以
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-18 16:39:57 | 显示全部楼层
wcr0021 发表于 2020-12-18 10:55
这个问题倒是好解决 只不过就是ctrl加c或是加v的事 现在的问题是 这个代码可以下载电视剧 但是不能下电影 ...

我刚复制你的代码试了下。一样正常下载啊


1608280732(1).jpg


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-18 22:29:44 | 显示全部楼层
jtxs0000 发表于 2020-12-18 16:39
我刚复制你的代码试了下。一样正常下载啊

我好像是因为没在name后面加.mp4 我今天试了半天 发现应该就是因为没加.mp4
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-19 20:03:00 | 显示全部楼层
请版主结贴 此问题已解决
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-16 12:09:17 | 显示全部楼层
函数内数据转换的问题
inputs_path = str(inputs_path)
outputs_path = str(outputs_path)
就可以了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-13 06:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表