Update the files to 2015. - sweb - Some web helper scripts.
Log
Files
Refs
LICENSE
---
commit 3d0f86659c0642f60b856269d4ac91af4ea135db
parent ddb55dce90939a8fe1a3da65d0640bc5ec9570ca
Author: Christoph Lohmann <20h@r-36.net>
Date:   Sun, 10 May 2015 19:55:46 +0200

Update the files to 2015.

Diffstat:
  LICENSE                             |       2 +-
  ddg                                 |      14 ++++++++++----
  di-p                                |      63 +++++++++++++++++--------------
  google                              |      12 +++++-------
  sky-p                               |       1 -
  xpath                               |      31 ++++++++++++++++++++-----------
  ydl                                 |       4 ++--
  ypl                                 |      12 ++++--------

8 files changed, 77 insertions(+), 62 deletions(-)
---
diff --git a/LICENSE b/LICENSE
@@ -1,6 +1,6 @@
 This software is
 
-        © 2013 Christoph Lohmann <20h@r-36.net>
+        © 2013-15 Christoph Lohmann <20h@r-36.net>
 
 See the following part of this file for the license details:
 
diff --git a/ddg b/ddg
@@ -1,14 +1,15 @@
 #!/bin/sh
-# See the LICENSE file for copyright and license details.
 
 if [ $# -lt 1 ];
 tthen
-        echo "usage: `basename $0` search terms ..."
+        printf "usage: %s search terms ...\n" "$(basename "$0")" >&2
         exit 1
 fi
 
-search=`echo -n "$*" \
-        | perl -p -e 's/([^A-Za-z0-9])/sprintf("%%%02X", ord($1))/seg'`
+t[ -z "$PAGER" -o ! -t 1 ] && PAGER="cat"
+
+search="$(printf "%s" "$*" \
+        | perl -p -e 's/([^A-Za-z0-9])/sprintf("%%%02X", ord($1))/seg')"
 
 curl -s --user-agent \
         "Lynx/2.8.8dev.3 libwww-FM/2.14 SSL-MM/1.4.1" \
@@ -16,6 +17,11 @@ curl -s --user-agent \
         "https://duckduckgo.com/html/" \
         | xpath -a href "//a[@href]" \
         | grep "^.*://" \
+        | grep -v "https://duckduckgo.com" \
+        | grep -v "http://r.duckduckgo.com" \
+        | grep -v "http://ad.ddg.gg" \
+        | grep -v ".r.msn.com" \
+        | grep -v "^$" \
         | uniq \
         | head -n -7
 
diff --git a/di-p b/di-p
@@ -1,6 +1,9 @@
-#!/usr/bin/env python2
+#!/usr/bin/python
 # coding=utf-8
-# See the LICENSE file for copyright and license details.
+#
+# Copy me if you can.
+# by 20h
+#
 
 import sys
 import json
@@ -10,7 +13,7 @@ import datetime
 import random
 import signal
 from subprocess import Popen
-from urllib2 import urlopen, HTTPError
+import requests
 from getopt import getopt, GetoptError
 
 def runstream(player, stream):
@@ -22,24 +25,21 @@ def loadplaylistall():
                         "callback=_API_TrackHistory_getAll&_=%s"
 
         utim = time.mktime(datetime.datetime.now().timetuple())
-        fd = urlopen(pluri % (utim))
-        playlists = unicode(fd.read(), "iso-8859-1")
+        fd = requests.get(pluri % (utim))
+        playlists = str(fd.read(), "iso-8859-1")
         fd.close()
         playlists = playlists[playlists.index("(")+1:\
                         playlists.rindex(");")]
         playlist = json.loads(playlists)
 
-        return playlist
-
 def loadplaylist(ids):
         pluri = "http://api.v2.audioaddict.com/v1/di/track_history/"\
                         "channel/%s.jsonp?callback=_API_Track"\
                         "History_getChannel&_=%s"
 
         utim = time.mktime(datetime.datetime.now().timetuple())
-        fd = urlopen(pluri % (ids, utim))
-        playlists = unicode(fd.read(), "iso-8859-1")
-        fd.close()
+        fd = requests.get(pluri % (ids, utim))
+        playlists = fd.text
         playlists = playlists[playlists.index("[{"):\
                         playlists.rindex(");")]
         playlist = json.loads(playlists)
@@ -56,14 +56,14 @@ def usage(app):
 def main(args):
         try:
                 opts, largs = getopt(args[1:], "hai:p:dlnrs:uwy")
-        except GetoptError, err:
-                print str(err)
+        except GetoptError as err:
+                print(str(err))
                 usage(args[0])
                 sys.exit(1)
         
         uri = "http://listen.di.fm/public3"
 
-        player = "mplayer -quiet -cache 512 -playlist"
+        player = "mpv -quiet -cache 512 -playlist"
         debug = False
         listen = False
         plainlist = False
@@ -100,20 +100,20 @@ def main(args):
                 elif o == "-y":
                         playlist = True
                 elif o == "-w":
-                        whatson = True
+                        whatson = True 
                 else:
                         assert False, "unhandled option"
         
         if len(largs) < 1 and listen != True and dorandom != True and \
-                        doplaylist != True and whatson != True:
+                        doplaylist != True and whatson != True and \
+                        playlist != True:
                 sys.stderr.write("You need to specify the to be played "
                                 "stream. Please see -l for all available "
                                 "streams.\n")
                 usage(args[0])
 
-        fd = urlopen(uri)
-        streams = json.load(fd)
-        fd.close()
+        fd = requests.get(uri)
+        streams = fd.json()
 
         streams = sorted(streams, key = lambda k: k["key"])
 
@@ -135,41 +135,44 @@ def main(args):
 
         if whatson == True:
                 recentdata = loadplaylistall()
-
                 for i in streams:
                         cplay = recentdata[str(i["id"])]
                         sys.stdout.write("%s\t%s\n" % (i["key"],\
                                 cplay["track"]))
+
                 return 0
 
         if playlist == True:
-                for i in streams:
-                        if i["key"] != largs[0]:
-                                continue
-
-                        playlist = loadplaylist(i["id"])
+                def displayplaylist(playlist):
                         for song in playlist[::-1]:
                                 dates = datetime.datetime.fromtimestamp(
                                                 int(song["started"])).\
                                         strftime("%H:%M:%S")
                                 sys.stdout.write("[%s] %s\n" % (dates,\
                                         song["track"]))
+
+                for i in streams:
+                        if i["key"] != largs[0]:
+                                continue
+
+                        cplaylist = loadplaylist(i["id"])
+                        displayplaylist(cplaylist)
                 return 0
 
         if listen == True:
                 if plainlist == True:
                         for i in streams:
-                                print i["key"] 
+                                print(i["key"]) 
                         return 0
 
                 if showuri == True:
                         for i in streams:
-                                print i["playlist"]
+                                print(i["playlist"])
                         return 0
 
                 for i in streams:
-                        print "%s\t%s" % (i["key"], 
-                                        i["description"])
+                        print("%30s %s" % (i["key"], 
+                                        i["name"]))
                 return 0
 
         stream = None
@@ -186,6 +189,10 @@ def main(args):
                         " Please use -l for all available streams.\n")
                 return 1
 
+        if showuri == True:
+                print(("%s" % (stream["playlist"])))
+                return 0
+
         while 1:
                 p = runstream(player, stream)
                 sts = os.waitpid(p.pid, os.P_NOWAIT)[1]
diff --git a/google b/google
@@ -1,21 +1,19 @@
 #!/bin/sh
-# See the LICENSE file for copyright and license details.
-
-printf "You need to make this script work on your own. Google is"
-printf " forbidding to scrape their website. You are doing this on"
-printf " your own. One important detail is missing in this script.\n"
-exit 1
 
 if [ $# -lt 1 ];
 tthen
         echo "usage: `basename $0` search terms ..."
+        echo "Beware, that Google could filter the User-Agent!" \
+                "Be prepared to change it!"
         exit 1
 fi
 
 search=`echo -n "$*" \
         | perl -p -e 's/([^A-Za-z0-9])/sprintf("%%%02X", ord($1))/seg'`
 
-curl -s "https://encrypted.google.com/search?safe=off&q=${search}" \
+curl -s --user-agent \
+        "Lynx/2.8.8dev.3 libwww-FM/2.14 SSL-MM/1.4.1" \
+        "https://encrypted.google.com/search?safe=off&q=${search}" \
         | xpath -a href "//a[@href]" \
         | grep "^/url" \
         | sed 's,/url?q=,,' \
diff --git a/sky-p b/sky-p
@@ -1,5 +1,4 @@
 #!/bin/sh
-# See the LICENSE file for copyright and license details.
 
 di-p -i "http://listen.sky.fm/public3" "$@"
 
diff --git a/xpath b/xpath
@@ -1,5 +1,8 @@
-#!/usr/bin/env python2
-# See the LICENSE file for copyright and license details.
+#!/usr/bin/env python
+#
+# Copy me if you can.
+# by 20h
+#
 
 import os
 import sys
@@ -7,14 +10,17 @@ import getopt
 from lxml import etree
 
 def getxpath(fd, xpath, attribute=None, encoding=None):
-        parser = etree.HTMLParser(encoding=encoding)
-        xml = etree.parse(fd, parser)
-        sels = xml.xpath(xpath)
+        try:
+                parser = etree.HTMLParser(encoding=encoding)
+                xml = etree.parse(fd, parser)
+                sels = xml.xpath(xpath)
+        except AssertionError:
+                return None
 
         if attribute != None:
                 return "\n".join(["".join(i.attrib[attribute]) for i in sels])
 
-        return "".join(["".join(i.itertext()) for i in sels])
+        return "".join([("".join(i.itertext())).strip() for i in sels])
 
 def usage(app):
         app = os.path.basename(app)
@@ -25,8 +31,8 @@ def usage(app):
 def main(args):
         try:
                 opts, largs = getopt.getopt(args[1:], "he:a:")
-        except getopt.GetoptError, err:
-                print str(err)
+        except getopt.GetoptError as err:
+                print(str(err))
                 usage(args[0])
 
         encoding = None 
@@ -43,9 +49,12 @@ def main(args):
         
         if len(largs) < 1:
                 usage(args[0])
-        
-        sys.stdout.write(getxpath(sys.stdin, largs[0], attribute,
-                encoding))
+
+        rpath = getxpath(sys.stdin, largs[0], attribute, encoding)
+        if rpath == None:
+                return 1
+
+        sys.stdout.write(rpath)
 
         return 0
 
diff --git a/ydl b/ydl
@@ -1,5 +1,5 @@
 #!/bin/sh
-# See the LICENSE file for copyright and license details.
 
-cclive -f best "$1"
+cd $HOME/search/youtube
+yt -d "$@"
 
diff --git a/ypl b/ypl
@@ -1,11 +1,7 @@
 #!/bin/sh
-# See the LICENSE file for copyright and license details.
 
-MCMD="mplayer %u"
-if [ -z "$CACA_DRIVER" -a -z "$DISPLAY" ];
-tthen
-        export CACA_DRIVER=ncurses
-        MCMD="mplayer -vo caca %u"
-fi
-quvi --exec "$MCMD" "$1"
+t[ -z "$MEDIAPLAYER" ] && MEDIAPLAYER=mpv
+mkdir -p $HOME/tmp/ytcache
+cd $HOME/tmp/ytcache
+youtube-dl --exec "${MEDIAPLAYER} {}" "$@"