Browse Source

dropped the support for Python 2.5
let's elaborate the decision: Python 2.5 is a 6 years old release
and "under the current release policy, no security issues in Python
2.5 will be fixed anymore" (!!); also, it doesn't support the new
zipfile distribution format.

Filippo Valsorda 13 years ago
parent
commit
921a145592
5 changed files with 4 additions and 126 deletions
  1. 1 1
      README.md
  2. BIN
      youtube-dl
  3. 2 11
      youtube_dl/InfoExtractors.py
  4. 0 109
      youtube_dl/trivialjson.py
  5. 1 5
      youtube_dl/utils.py

+ 1 - 1
README.md

@@ -6,7 +6,7 @@ youtube-dl [options] url [url...]
 ## DESCRIPTION
 **youtube-dl** is a small command-line program to download videos from
 YouTube.com and a few more sites. It requires the Python interpreter, version
-2.x (x being at least 5), and it is not platform specific. It should work in
+2.x (x being at least 6), and it is not platform specific. It should work in
 your Unix box, in Windows or in Mac OS X. It is released to the public domain,
 which means you can modify it, redistribute it or use it however you like.
 

BIN
youtube-dl


+ 2 - 11
youtube_dl/InfoExtractors.py

@@ -12,23 +12,14 @@ import time
 import urllib
 import urllib2
 import email.utils
+import xml.etree.ElementTree
+from urlparse import parse_qs
 
 try:
 	import cStringIO as StringIO
 except ImportError:
 	import StringIO
 
-# parse_qs was moved from the cgi module to the urlparse module recently.
-try:
-	from urlparse import parse_qs
-except ImportError:
-	from cgi import parse_qs
-
-try:
-	import xml.etree.ElementTree
-except ImportError: # Python<2.5: Not officially supported, but let it slip
-	warnings.warn('xml.etree.ElementTree support is missing. Consider upgrading to Python >= 2.5 if you get related errors.')
-
 from utils import *
 
 

+ 0 - 109
youtube_dl/trivialjson.py

@@ -1,109 +0,0 @@
-"""trivialjson (https://github.com/phihag/trivialjson)"""
-
-import re
-def loads(s):
-	s = s.decode('UTF-8')
-	def raiseError(msg, i):
-		raise ValueError(msg + ' at position ' + str(i) + ' of ' + repr(s) + ': ' + repr(s[i:]))
-	def skipSpace(i, expectMore=True):
-		while i < len(s) and s[i] in ' \t\r\n':
-			i += 1
-		if expectMore:
-			if i >= len(s):
-				raiseError('Premature end', i)
-		return i
-	def decodeEscape(match):
-		esc = match.group(1)
-		_STATIC = {
-			'"': '"',
-			'\\': '\\',
-			'/': '/',
-			'b': unichr(0x8),
-			'f': unichr(0xc),
-			'n': '\n',
-			'r': '\r',
-			't': '\t',
-		}
-		if esc in _STATIC:
-			return _STATIC[esc]
-		if esc[0] == 'u':
-			if len(esc) == 1+4:
-				return unichr(int(esc[1:5], 16))
-			if len(esc) == 5+6 and esc[5:7] == '\\u':
-				hi = int(esc[1:5], 16)
-				low = int(esc[7:11], 16)
-				return unichr((hi - 0xd800) * 0x400 + low - 0xdc00 + 0x10000)
-		raise ValueError('Unknown escape ' + str(esc))
-	def parseString(i):
-		i += 1
-		e = i
-		while True:
-			e = s.index('"', e)
-			bslashes = 0
-			while s[e-bslashes-1] == '\\':
-				bslashes += 1
-			if bslashes % 2 == 1:
-				e += 1
-				continue
-			break
-		rexp = re.compile(r'\\(u[dD][89aAbB][0-9a-fA-F]{2}\\u[0-9a-fA-F]{4}|u[0-9a-fA-F]{4}|.|$)')
-		stri = rexp.sub(decodeEscape, s[i:e])
-		return (e+1,stri)
-	def parseObj(i):
-		i += 1
-		res = {}
-		i = skipSpace(i)
-		if s[i] == '}': # Empty dictionary
-			return (i+1,res)
-		while True:
-			if s[i] != '"':
-				raiseError('Expected a string object key', i)
-			i,key = parseString(i)
-			i = skipSpace(i)
-			if i >= len(s) or s[i] != ':':
-				raiseError('Expected a colon', i)
-			i,val = parse(i+1)
-			res[key] = val
-			i = skipSpace(i)
-			if s[i] == '}':
-				return (i+1, res)
-			if s[i] != ',':
-				raiseError('Expected comma or closing curly brace', i)
-			i = skipSpace(i+1)
-	def parseArray(i):
-		res = []
-		i = skipSpace(i+1)
-		if s[i] == ']': # Empty array
-			return (i+1,res)
-		while True:
-			i,val = parse(i)
-			res.append(val)
-			i = skipSpace(i) # Raise exception if premature end
-			if s[i] == ']':
-				return (i+1, res)
-			if s[i] != ',':
-				raiseError('Expected a comma or closing bracket', i)
-			i = skipSpace(i+1)
-	def parseDiscrete(i):
-		for k,v in {'true': True, 'false': False, 'null': None}.items():
-			if s.startswith(k, i):
-				return (i+len(k), v)
-		raiseError('Not a boolean (or null)', i)
-	def parseNumber(i):
-		mobj = re.match('^(-?(0|[1-9][0-9]*)(\.[0-9]*)?([eE][+-]?[0-9]+)?)', s[i:])
-		if mobj is None:
-			raiseError('Not a number', i)
-		nums = mobj.group(1)
-		if '.' in nums or 'e' in nums or 'E' in nums:
-			return (i+len(nums), float(nums))
-		return (i+len(nums), int(nums))
-	CHARMAP = {'{': parseObj, '[': parseArray, '"': parseString, 't': parseDiscrete, 'f': parseDiscrete, 'n': parseDiscrete}
-	def parse(i):
-		i = skipSpace(i)
-		i,res = CHARMAP.get(s[i], parseNumber)(i)
-		i = skipSpace(i, False)
-		return (i,res)
-	i,res = parse(0)
-	if i < len(s):
-		raise ValueError('Extra data at end of input (index ' + str(i) + ' of ' + repr(s) + ': ' + repr(s[i:]) + ')')
-	return res

+ 1 - 5
youtube_dl/utils.py

@@ -11,16 +11,12 @@ import sys
 import zlib
 import urllib2
 import email.utils
+import json
 
 try:
 	import cStringIO as StringIO
 except ImportError:
 	import StringIO
-		
-try:
-	import json
-except ImportError: # Python <2.6, use trivialjson (https://github.com/phihag/trivialjson):
-	import trivialjson as json
 
 std_headers = {
 	'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:5.0.1) Gecko/20100101 Firefox/5.0.1',