Explorar o código

version 0.1.0

Mort Yao %!s(int64=12) %!d(string=hai) anos
pai
achega
66698f71b8

+ 1 - 0
.gitignore

@@ -1,5 +1,6 @@
 /build/
 /dist/
+/*.egg-info/
 
 _*/
 *.py[cod]

+ 18 - 0
CHANGELOG.txt

@@ -1,2 +1,20 @@
 Changelog
 =========
+
+0.1
+---
+
+*Date: 2012-09-01*
+
+* First PyPI release.
+* Fix issue `#1 <https://github.com/soimort/you-get/issues/1>`_.
+
+0.0.1
+-----
+
+*Date: 2012-08-21*
+
+* Initial release, forked from `iambus/youku-lixian <https://github.com/iambus/youku-lixian>`_; add:
+    - YouTube support.
+    - Pausing and resuming of downloads.
+    - HTTP proxy settings.

+ 9 - 6
Makefile

@@ -1,18 +1,21 @@
-default: install sdist bdist
+default: sdist bdist bdist_egg install
 
 clean:
-	rm -fr build/ dist/
+	rm -fr build/ dist/ *.egg-info/
 
 build:
 	python3 setup.py build
 
-install: build
-	sudo python3 setup.py install
-
 sdist:
 	python3 setup.py sdist
 
 bdist:
 	python3 setup.py bdist
 
-.PHONY: default clean build install sdist bdist
+bdist_egg:
+	python3 setup.py bdist_egg
+
+install: bdist_egg
+	sudo python3 setup.py install
+
+.PHONY: default clean build sdist bdist bdist_egg install

+ 245 - 20
README.md

@@ -1,14 +1,176 @@
 # You-Get
 
-一个Python 3的YouTube/优酷视频下载脚本。
+[You-Get](https://github.com/soimort/you-get) is a video downloader runs on Python 3. It aims at easing the download of videos on [YouTube](http://www.youtube.com), [Youku](http://www.youku.com)/[Tudou](http://www.tudou.com) (biggest online video providers in China), etc., in one tool.
 
-### Python版本
+See the project homepage <http://www.soimort.org/you-get> for further documentation.
 
-Python 3.x
+Fork me on GitHub: <https://github.com/soimort/you-get>
+
+## Features
+
+### Supported Sites (UPDATING!)
+
+* YouTube <http://www.youtube.com>
+* Youku <http://www.youku.com>
+* Tudou <http://www.tudou.com>
+* YinYueTai <http://www.yinyuetai.com>
+
+### Supported Video Formats
+
+* WebM (*.webm)
+* MP4 (*.mp4)
+* FLV (*.flv)
+* 3GP (*.3gp)
+
+## Installation
+
+### 1. Install via [Pip](http://www.pip-installer.org/):
+
+    $ pip install you_get
+    
+   Check if the installation was successful:
+    
+    $ you-get -V
+
+### 2. Install via [EasyInstall](http://pypi.python.org/pypi/setuptools):
+
+    $ easy_install you_get
+    
+   Check if the installation was successful:
+    
+    $ you-get -V
+
+### 3. Direct download (from <https://github.com/soimort/you-get/zipball/master>):
+    
+    $ wget -O you-get.zip https://github.com/soimort/you-get/zipball/master
+    $ unzip you-get.zip
+    
+   Use the raw script without installation:
+    
+    $ cd soimort-you-get-*/
+    $ ./you-get -V
+    
+   To install the package into the system path, execute:
+    
+    $ make install
+    
+   Or:
+    
+    > setup.py install
+    
+   on Windows.
+    
+   Check if the installation was successful:
+    
+    $ you-get -V
+
+### 4. Clone the Git repository (RECOMMENDED!):
+
+    $ git clone git://github.com/soimort/you-get.git
+    
+   Use the raw script without installation:
+    
+    $ cd you-get/
+    $ ./you-get -V
+    
+   To install the package into the system path, execute:
+    
+    $ make install
+    
+   Or:
+    
+    > setup.py install
+    
+   on Windows.
+    
+   Check if the installation was successful:
+    
+    $ you-get -V
+
+## Examples (For End-Users)
+
+Display the information of the video without downloading:
+
+    $ you-get -i http://www.youtube.com/watch?v=sGwy8DsUJ4M
+
+Download the video:
+
+    $ you-get http://www.youtube.com/watch?v=sGwy8DsUJ4M
+
+Download multiple videos:
+
+    $ you-get http://www.youtube.com/watch?v=sGwy8DsUJ4M http://www.youtube.com/watch?v=8bQlxQJEzLk
+
+By default, program will skip any video that already exists in the local directory when downloading. If a temporary file (ends with a filename extension ".download") exists, program will resume this download.
+
+To enforce the re-downloading of videos, use '-f' option (this will overwrite any existing video or temporary file, rather than skipping or resuming them):
+
+    $ you-get -f http://www.youtube.com/watch?v=sGwy8DsUJ4M
+
+Set the output directory of downloaded files:
+
+    $ you-get -o ~/Downloads http://www.youtube.com/watch?v=sGwy8DsUJ4M
+
+Use a specific HTTP proxy for downloading:
+
+    $ you-get -x 127.0.0.1:8087 http://www.youtube.com/watch?v=sGwy8DsUJ4M
+
+By default, Python will apply the system proxy settings (i.e. environment variable $http_proxy). To cancel the use of proxy, use '--no-proxy' option:
+
+    $ you-get --no-proxy http://www.youtube.com/watch?v=sGwy8DsUJ4M
+
+## Command-Line Options
+
+For a complete list of all available options, see:
+
+    $ you-get --help
+
+## Examples (For Developers)
+
+In Python 3.2 (interactive):
+
+    >>> import you_get
+    
+    >>> you_get.__version__
+    '0.1'
+    
+    >>> you_get.youtube_download("http://www.youtube.com/watch?v=8bQlxQJEzLk", info_only = True)
+    Video Site: YouTube.com
+    Title:      If you're good at something, never do it for free!
+    Type:       WebM video (video/webm)
+    Size:       0.13 MB (133176 Bytes)
+    
+    >>> you_get.any_download("http://www.youtube.com/watch?v=sGwy8DsUJ4M") 
+    Video Site: YouTube.com
+    Title:      Mort from Madagascar LIKES
+    Type:       WebM video (video/webm)
+    Size:       1.78 MB (1867072 Bytes)
+    Downloading Mort from Madagascar LIKES.webm ...
+    100.0% (  1.8/1.8  MB) [========================================] 1/1
+
+## API Reference
+
+See source code.
+
+## License
+
+You-Get is licensed under the [MIT license](https://raw.github.com/soimort/you-get/master/LICENSE.txt).
+
+
+
+***
+
+
+
+# You-Get - 中文说明
+
+[You-Get](https://github.com/soimort/you-get)是一个基于Python 3的视频下载工具。之所以写它的主要原因是,我找不到一个现成的下载工具能够同时支持[YouTube](http://www.youtube.com/)和[优酷](http://www.youku.com/);而且,几乎所有以前的视频下载程序都是基于Python 2的。
+
+## 特点
 
 ### 说明
 
-基于优酷下载脚本[iambus/youku-lixian](https://github.com/iambus/youku-lixian)用Python 3改写而成,增加了以下功能:
+You-Get基于优酷下载脚本[iambus/youku-lixian](https://github.com/iambus/youku-lixian)用Python 3改写而成,增加了以下功能:
 
 * 支持YouTube
 * 支持断点续传
@@ -19,9 +181,9 @@ Python 3.x
 目前根据本人需求,仅实现了对有限几个视频站点的支持,以后会继续增加(・∀・)
 
 * YouTube <http://www.youtube.com>
-* 音悦台 <http://www.yinyuetai.com>
 * 优酷 <http://www.youku.com>
 * 土豆 <http://www.tudou.com>
+* 音悦台 <http://www.yinyuetai.com>
 
 ### 输出视频格式
 
@@ -32,38 +194,101 @@ Python 3.x
 
 对于YouTube,程序将下载画质最高的[编码格式](http://en.wikipedia.org/wiki/Youtube#Quality_and_codecs)。
 
-### 如何下载视频
+## 安装方法
+
+(以下命令均以Linux shell为例)
+
+### 1. 通过[Pip](http://www.pip-installer.org/)安装:
+
+    $ pip install you_get
+    
+   检查安装是否成功:
+    
+    $ you-get -V
+
+### 2. 通过[EasyInstall](http://pypi.python.org/pypi/setuptools)安装:
+
+    $ easy_install you_get
+    
+   检查安装是否成功:
+    
+    $ you-get -V
+
+### 3. 直接下载(从<https://github.com/soimort/you-get/zipball/master>):
+    
+    $ wget -O you-get.zip https://github.com/soimort/you-get/zipball/master
+    $ unzip you-get.zip
+    
+   在不安装的情况下直接使用脚本:
+    
+    $ cd soimort-you-get-*/
+    $ ./you-get -V
+    
+   若要将Python package安装到系统默认路径,执行:
+    
+    $ make install
+    
+   或:(适用于Windows)
+    
+    > setup.py install
+    
+   检查安装是否成功:
+    
+    $ you-get -V
+
+### 4. 从Git安装(推荐):
+
+    $ git clone git://github.com/soimort/you-get.git
+    
+   在不安装的情况下直接使用脚本:
+    
+    $ cd you-get/
+    $ ./you-get -V
+    
+   若要将Python package安装到系统默认路径,执行:
+    
+    $ make install
+    
+   或:(适用于Windows)
+    
+    > setup.py install
+    
+   检查安装是否成功:
+    
+    $ you-get -V
+
+## 使用方法示例
 
-(以下命令均以Linux shell为例……Windows用户请自行脑补正确的命令格式)
+### 如何下载视频
 
 显示视频信息,但不进行下载(`-i`或`--info`选项):
 
-    $ ./you-get -i http://www.yinyuetai.com/video/463772
+    $ you-get -i http://www.yinyuetai.com/video/463772
 
 下载视频:
 
-    $ ./you-get http://www.yinyuetai.com/video/463772
+    $ you-get http://www.yinyuetai.com/video/463772
 
 下载多个视频:
 
-    $ ./you-get http://www.yinyuetai.com/video/463772 http://www.yinyuetai.com/video/471500
+    $ you-get http://www.yinyuetai.com/video/463772 http://www.yinyuetai.com/video/471500
 
 若当前目录下已有与视频标题同名的文件,下载时会自动跳过。若有同名的`.download`临时文件,程序会从上次中断处开始下载。
 如要强制重新下载该视频,可使用`-f`(`--force`)选项:
 
-    $ ./you-get -f http://www.yinyuetai.com/video/463772
+    $ you-get -f http://www.yinyuetai.com/video/463772
 
 `-l`(`--playlist`)选项用于下载播放列表(只对某些网站适用):
 
-    $ ./you-get -l http://www.youku.com/playlist_show/id_5344313.html
+    $ you-get -l http://www.youku.com/playlist_show/id_5344313.html
 
 指定视频文件的下载目录:
 
-    $ ./you-get -o ~/Downloads http://www.yinyuetai.com/video/463772
+    $ you-get -o ~/Downloads http://www.yinyuetai.com/video/463772
 
 显示详细帮助:
 
-    $ ./you-get -h
+    $ you-get -h
 
 ### 如何设置代理
 
@@ -71,15 +296,15 @@ Python 3.x
 
 `-x`(`--http-proxy`)选项用于手动指定You-Get所使用的HTTP代理。例如:GoAgent的代理服务器是`http://127.0.0.1:8087`,则使用该代理下载某YouTube视频的命令是:
 
-    $ ./you-get -x 127.0.0.1:8087 http://www.youtube.com/watch?v=KbtO_Ayjw0M
+    $ you-get -x 127.0.0.1:8087 http://www.youtube.com/watch?v=KbtO_Ayjw0M
 
 Windows下的自由门等翻墙软件会自动设置系统全局代理,因此无需指定HTTP代理即可下载YouTube视频:
 
-    $ ./you-get http://www.youtube.com/watch?v=KbtO_Ayjw0M
+    $ you-get http://www.youtube.com/watch?v=KbtO_Ayjw0M
 
 如果不希望程序在下载过程中使用任何代理(包括系统的代理配置),可以显式地指定`--no-proxy`选项:
 
-    $ ./you-get --no-proxy http://v.youku.com/v_show/id_XMjI0ODc1NTc2.html
+    $ you-get --no-proxy http://v.youku.com/v_show/id_XMjI0ODc1NTc2.html
 
 ### 断点续传
 
@@ -87,12 +312,12 @@ Windows下的自由门等翻墙软件会自动设置系统全局代理,因此
 
 下次运行只要在目标路径中找到相应的`.download`临时文件,程序会自动从中断处继续下载。(除非指定了`-f`选项)
 
-### 使用Python 2?
+## 使用Python 2?
 
 优酷等国内视频网站的下载,请移步:[iambus/youku-lixian](https://github.com/iambus/youku-lixian)
 
 YouTube等国外视频网站的下载,请移步:[rg3/youtube-dl](https://github.com/rg3/youtube-dl)
 
-### 许可证
+## 许可证
 
-源码在MIT License下发布。
+You-Get在[MIT License](https://raw.github.com/soimort/you-get/master/LICENSE.txt)下发布。

+ 165 - 0
README.txt

@@ -1,2 +1,167 @@
 You-Get
 =======
+
+`You-Get <https://github.com/soimort/you-get>`_ is a video downloader runs on Python 3. It aims at easing the download of videos on `YouTube <http://www.youtube.com>`_, `Youku <http://www.youku.com>`_/`Tudou <http://www.tudou.com>`_ (biggest online video providers in China), etc., in one tool.
+
+See the project homepage http://www.soimort.org/you-get for further documentation.
+
+Fork me on GitHub: https://github.com/soimort/you-get
+
+Features
+--------
+
+Supported Sites (UPDATING!)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+* YouTube http://www.youtube.com
+* Youku http://www.youku.com
+* Tudou http://www.tudou.com
+* YinYueTai http://www.yinyuetai.com
+
+Supported Video Formats
+~~~~~~~~~~~~~~~~~~~~~~~
+
+* WebM (\*.webm)
+* MP4 (\*.mp4)
+* FLV (\*.flv)
+* 3GP (\*.3gp)
+
+Installation
+------------
+
+#) Install via `Pip <http://www.pip-installer.org/>`_::
+
+    $ pip install you_get
+    
+   Check if the installation was successful::
+    
+    $ you-get -V
+
+#) Install via `EasyInstall <http://pypi.python.org/pypi/setuptools>`_::
+
+    $ easy_install you_get
+    
+   Check if the installation was successful::
+    
+    $ you-get -V
+
+#) Direct download (from https://github.com/soimort/you-get/zipball/master)::
+    
+    $ wget -O you-get.zip https://github.com/soimort/you-get/zipball/master
+    $ unzip you-get.zip
+    
+   Use the raw script without installation::
+    
+    $ cd soimort-you-get-*/
+    $ ./you-get -V
+    
+   To install the package into the system path, execute::
+    
+    $ make install
+    
+   Or::
+    
+    > setup.py install
+    
+   on Windows.
+    
+   Check if the installation was successful::
+    
+    $ you-get -V
+
+#) Clone the Git repository (RECOMMENDED!)::
+
+    $ git clone git://github.com/soimort/you-get.git
+    
+   Use the raw script without installation::
+    
+    $ cd you-get/
+    $ ./you-get -V
+    
+   To install the package into the system path, execute::
+    
+    $ make install
+    
+   Or::
+    
+    > setup.py install
+    
+   on Windows.
+    
+   Check if the installation was successful::
+    
+    $ you-get -V
+
+Examples (For End-Users)
+------------------------
+
+Display the information of the video without downloading::
+
+    $ you-get -i http://www.youtube.com/watch?v=sGwy8DsUJ4M
+
+Download the video::
+
+    $ you-get http://www.youtube.com/watch?v=sGwy8DsUJ4M
+
+Download multiple videos::
+
+    $ you-get http://www.youtube.com/watch?v=sGwy8DsUJ4M http://www.youtube.com/watch?v=8bQlxQJEzLk
+
+By default, program will skip any video that already exists in the local directory when downloading. If a temporary file (ends with a filename extension ".download") exists, program will resume this download.
+
+To enforce the re-downloading of videos, use '-f' option (this will overwrite any existing video or temporary file, rather than skipping or resuming them)::
+
+    $ you-get -f http://www.youtube.com/watch?v=sGwy8DsUJ4M
+
+Set the output directory of downloaded files::
+
+    $ you-get -o ~/Downloads http://www.youtube.com/watch?v=sGwy8DsUJ4M
+
+Use a specific HTTP proxy for downloading::
+
+    $ you-get -x 127.0.0.1:8087 http://www.youtube.com/watch?v=sGwy8DsUJ4M
+
+By default, Python will apply the system proxy settings (i.e. environment variable $http_proxy). To cancel the use of proxy, use '--no-proxy' option::
+
+    $ you-get --no-proxy http://www.youtube.com/watch?v=sGwy8DsUJ4M
+
+Command-Line Options
+--------------------
+
+For a complete list of all available options, see::
+
+    $ you-get --help
+
+Examples (For Developers)
+-------------------------
+
+In Python 3.2 (interactive)::
+
+    >>> import you_get
+    
+    >>> you_get.__version__
+    '0.1'
+    
+    >>> you_get.youtube_download("http://www.youtube.com/watch?v=8bQlxQJEzLk", info_only = True)
+    Video Site: YouTube.com
+    Title:      If you're good at something, never do it for free!
+    Type:       WebM video (video/webm)
+    Size:       0.13 MB (133176 Bytes)
+    
+    >>> you_get.any_download("http://www.youtube.com/watch?v=sGwy8DsUJ4M") 
+    Video Site: YouTube.com
+    Title:      Mort from Madagascar LIKES
+    Type:       WebM video (video/webm)
+    Size:       1.78 MB (1867072 Bytes)
+    Downloading Mort from Madagascar LIKES.webm ...
+    100.0% (  1.8/1.8  MB) [========================================] 1/1
+
+API Reference
+-------------
+
+See source code.
+
+License
+-------
+
+You-Get is licensed under the `MIT license <https://raw.github.com/soimort/you-get/master/LICENSE.txt>`_.

+ 7 - 2
setup.cfg

@@ -1,5 +1,10 @@
 [build]
-force=0
+force = 0
 
 [global]
-verbose=0
+verbose = 0
+
+[egg_info]
+tag_build = 
+tag_date = 0
+tag_svn_revision = 0

+ 10 - 3
setup.py

@@ -9,7 +9,7 @@ proj_info = json.loads(open(os.path.join(here, PROJ_METADATA)).read())
 README = open(os.path.join(here, 'README.txt')).read()
 CHANGELOG = open(os.path.join(here, 'CHANGELOG.txt')).read()
 
-from distutils.core import setup
+from setuptools import setup, find_packages
 setup(
     name = proj_info['name'],
     version = proj_info['version'],
@@ -22,9 +22,16 @@ setup(
     
     description = proj_info['description'],
     keywords = proj_info['keywords'],
+    
     long_description = README + '\n\n' + CHANGELOG,
     
-    packages = proj_info['packages'],
+    packages = find_packages(),
+    
+    platforms = 'any',
+    zip_safe = False,
+    include_package_data = True,
+    
+    classifiers = proj_info['classifiers'],
     
-    classifiers = proj_info['classifiers']
+    entry_points = {'console_scripts': proj_info['console_scripts']}
 )

+ 1 - 1
you-get

@@ -3,4 +3,4 @@
 from you_get import *
 
 if __name__ == "__main__":
-   script_main('you-get', any_download, any_download_playlist)
+   main()

+ 7 - 9
you-get.json

@@ -1,7 +1,7 @@
 {
     "name": "you-get",
-    "version": "0.0.1",
-    "date": "2012-08-20",
+    "version": "0.1",
+    "date": "2012-09-01",
     
     "author": "Mort Yao",
     "author_email": "mort.yao@gmail.com",
@@ -12,14 +12,8 @@
     "description": "A YouTube/Youku video downloader written in Python 3.",
     "keywords": "video download youtube youku",
     
-    "packages": [
-        "you_get",
-        "you_get.downloader",
-        "you_get.processor"
-        ],
-    
     "classifiers": [
-        "Development Status :: 1 - Planning",
+        "Development Status :: 2 - Pre-Alpha",
         "Environment :: Console",
         "Environment :: Web Environment",
         "Intended Audience :: End Users/Desktop",
@@ -35,5 +29,9 @@
         "Topic :: Multimedia",
         "Topic :: Multimedia :: Video",
         "Topic :: Utilities"
+        ],
+    
+    "console_scripts": [
+        "you-get = you_get.main:main"
         ]
 }

+ 1 - 0
you_get/__init__.py

@@ -1,3 +1,4 @@
+#!/usr/bin/env python
 
 from .processor import *
 from .downloader import *

+ 2 - 1
you_get/common.py

@@ -1,3 +1,4 @@
+#!/usr/bin/env python
 
 import getopt
 import json
@@ -361,7 +362,7 @@ def set_http_proxy(proxy):
 
 def script_main(script_name, download, download_playlist = None):
     version = 'You-Get %s, a video downloader.' % proj_info['version']
-    help = 'Usage: [python3] %s [OPTION]... [URL]...\n' % script_name
+    help = 'Usage: %s [OPTION]... [URL]...\n' % script_name
     help += '''\nStartup options:
     -V | --version                           Display the version and exit.
     -h | --help                              Print this help and exit.

+ 1 - 0
you_get/downloader/__init__.py

@@ -1,3 +1,4 @@
+#!/usr/bin/env python
 
 from .tudou import *
 from .yinyuetai import *

+ 0 - 3
you_get/downloader/tudou.py

@@ -71,6 +71,3 @@ def tudou_download_playlist(url, output_dir = '.', merge = True, info_only = Fal
 site_info = "Tudou.com"
 download = tudou_download
 download_playlist = tudou_download_playlist
-
-if __name__ == '__main__':
-    script_main('tudou.py', tudou_download, tudou_download_playlist)

+ 0 - 3
you_get/downloader/yinyuetai.py

@@ -31,6 +31,3 @@ def yinyuetai_download(url, output_dir = '.', merge = True, info_only = False):
 site_info = "YinYueTai.com"
 download = yinyuetai_download
 download_playlist = playlist_not_supported('yinyuetai')
-
-if __name__ == '__main__':
-    script_main('yinyuetai.py', yinyuetai_download)

+ 0 - 3
you_get/downloader/youku.py

@@ -196,6 +196,3 @@ def youku_download_playlist(url, output_dir = '.', merge = True, info_only = Fal
 site_info = "Youku.com"
 download = youku_download
 download_playlist = youku_download_playlist
-
-if __name__ == '__main__':
-    script_main('youku.py', youku_download, youku_download_playlist)

+ 0 - 3
you_get/downloader/youtube.py

@@ -31,6 +31,3 @@ def youtube_download(url, output_dir = '.', merge = True, info_only = False):
 site_info = "YouTube.com"
 download = youtube_download
 download_playlist = playlist_not_supported('youtube')
-
-if __name__ == '__main__':
-    script_main('youtube.py', youtube_download)

+ 3 - 3
you_get/main.py

@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 
-__all__ = ['any_download', 'any_download_playlist']
+__all__ = ['main', 'any_download', 'any_download_playlist']
 
 from .downloader import *
 from .common import *
@@ -46,5 +46,5 @@ def any_download_playlist(url, output_dir = '.', merge = True, info_only = False
     m = url_to_module(url)
     m.download_playlist(url, output_dir = output_dir, merge = merge, info_only = info_only)
 
-if __name__ == '__main__':
-    script_main('main.py', any_download, any_download_playlist)
+def main():
+    script_main('you-get', any_download, any_download_playlist)

+ 1 - 0
you_get/processor/__init__.py

@@ -1,3 +1,4 @@
+#!/usr/bin/env python
 
 __all__ = ['concat_flvs', 'concat_mp4s']