- UID
- 38571
- 在线时间
- 0 小时
- 最后登录
- 2015-7-21
- 注册时间
- 2011-12-9
- 宅魂
- 42 点
- 贡献
- 12 点
- 宅币
- 629 枚
- 宅の石(入宅度)
- 0 块
- 元气(技能点)
- 0 点
- 活跃
- 0 ℃
- 听众
- 2
- 收听
- 0
该用户从未签到
技术宅认证职人
- 积分
- 791
|
本帖最后由 NBY 于 2013-4-3 09:21 编辑
源地址:http://my.nby.me/?p=34
基于Python3.3
首先请安装Python3.3...(想打包但是不知为何cxfreeze安装错误)
然后下载http://www.crummy.com/software/B ... lsoup4-4.1.3.tar.gz
解压后放某个地方...
cmd运行(cmd到文件夹里面)X:\XXX\BeautifulSoup>python setup.py build
cmd运行X:\XXX\BeautifulSoup>python setup.py install
然后cmd切到v1.0.pyw所在目录 执行命令python v1.0.pyw
例如:
斯坦福大学公开课:量子力学
http://v.163.com/special/opencourse/mechanics.html
使用迅雷在页面选择使用下载全部链接,选择保存视频文件,
如图下载后的文件为杂乱的字母数字组合,不能识别是哪一集
批量下载完成后,把刚才的页面地址填写到第一个输入框,将视频的存放的目的地址填写在第二个输入框如:F:\斯坦福大学公开课\量子力学
点击开即可重名为网页上的名字
嘛...有问题的话可以通过邮件问我 [email protected]
v1.0.pyw内容:
import tkinter as tk
from tkinter import filedialog
from tkinter import messagebox
from bs4 import BeautifulSoup
import re
import os
import urllib.request
from urllib.error import URLError,HTTPError
root = tk.Tk()
root.resizable(False, False)
root.title("网易公开课文件改名")
def start():
URL = URL_TXT.get()
dir = DIR_TXT.get()
if os.path.exists(dir) :
os.chdir(dir)
else:
tk.messagebox.showerror("错误","请检查输入的视频路径是否正确!!!")
return;
try:
data = urllib.request.urlopen(URL)
except (HTTPError, URLError, ValueError):
tk.messagebox.showerror("错误","请检查输入的网站路径是否正确,或网站是否可用!!!")
return
html = data.read()
soup = BeautifulSoup(html)
kcjj = soup.find('div',class_="m-cdes")
jsjs = soup.find('div',class_="m-cteacher")
xyjs = soup.find('div',class_="m-ccollege")
title = soup.find('title')
str = URL+'\n'+kcjj.text + jsjs.text + xyjs.text#要保留的课程介绍内容
fileStr = re.sub(r"\n+", "\n", str)
f = open(title.text+'.txt','w')
f.truncate()
f.write(fileStr)
f.close()
table = soup.find(id = "list2")
for fileList in table.find_all('tr'):
if fileList.has_key('class'):
newName = re.sub(r"[\n\r\s]",'', fileList.td.text)
trsib = fileList.td.find_next_sibling().a
if trsib!=None:
downPath = trsib.get('href')
else:
continue
baseName = os.path.basename(downPath)
extName = os.path.splitext(baseName)[1]
if os.path.isfile(baseName):
os.rename(baseName, newName+extName)
log_Lable["text"] = baseName + " 改名为 " + newName+extName
else:
log_Lable['bg'] = '#00FF00'
log_Lable['fg'] = '#FF0000'
log_Lable["text"] = baseName + "文件不存在,请确认是否下载完成、目录是否正确"
tk.messagebox.showinfo("改名","修改已完成!!!")
def about():
tk.messagebox.showinfo("关于...","这是一个把从网站上下载的网易公开课视屏从不可读的杂乱文件名改为网页上显示的文件名的小工具")
def selcet():
src = tk.filedialog.askdirectory(title="请选择视频文件存放目录")
DIR_TXT.delete(0, tk.END)
DIR_TXT.insert(0, src)
tk.Label(root,text="输入源地址:").grid(row = 0,column = 0)
URL_TXT = tk.Entry(root,width="50")
URL_TXT.grid(row = 0,column = 1)
URL_TXT.insert(0, "输入公开的下载源网页地址")
AboutBtn = tk.Button(root,text="关于",command = about,width="10").grid(row = 0,column = 2)
tk.Label(root,text="选择文件目录:").grid(row = 1,column = 0)
DIR_TXT = tk.Entry(root,width="50")
DIR_TXT.grid(row = 1,column = 1)
DIR_TXT.insert(0, "选择下载后视频文件存放的目录")
DIRBtn = tk.Button(root,text="选择",command = selcet,width="10").grid(row = 1,column = 2)
tk.Label(root,text="正在修改:").grid(row = 2,column = 0)
log_Lable = tk.Label(root,text="请确保目录和网址正确",width="50")
log_Lable.grid(row = 2,column = 1)
renameBtn = tk.Button(root,text="开始",command = start,width="10").grid(row = 2,column = 2) |
|