Internet radio browser GUI for music/video streams from various directory services.

⌈⌋ ⎇ branch:  streamtuner2


Check-in [e8c162f72a]

Overview
Comment:Add UserAgentSwitcher plugin. (Just for experimenting really, not required.)
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: e8c162f72ad3624b5d322003b00a85e35f61ac73
User & Date: mario on 2015-04-06 18:53:27
Original Comment: Add UserAgentSwitcher plugin. (Just for experimenting really, not required.)
Other Links: manifest | tags
Context
2015-04-06
18:55
Add workaround for ArgumentParser, which tries to map config: descriptors onto AP.add_argument(*yikes) params. check-in: 24a5fe69a1 user: mario tags: trunk
18:53
Add UserAgentSwitcher plugin. (Just for experimenting really, not required.) check-in: e8c162f72a user: mario tags: trunk
2015-04-05
22:06
Fix manual Makefile `install` rules. Update -D debug notes in README. Release as 2.1.5 (beta). check-in: b6b64a45f6 user: mario tags: trunk, 2.1.5
Changes

Makefile became executable with contents [0d018ef979].

Added channels/useragentswitcher.py version [08fd23fe89].



































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# encoding: UTF-8
# api: streamtuner2
# title: User Agent Switcher
# description: Mask streamtuner2 as browser or different radio player.
# version: 0.1
# type: feature
# category: session
# priority: rare
# config:
#   { type=select, name=useragent, value=Streamtuner2, select="Streamtuner2|VLC|Firefox|Chrome|Android|MSIE|iTunes", description=Which browser string to use for HTTP requests. }
# hooks: config_save
#
# This is currently unneeded.


from config import *
from channels import *
import ahttp

# override ahttp.session headers, hooks into config dialog
class useragentswitcher():

    module = "useragentswitcher"
    meta = plugin_meta()
    map = {
       "default": "streamtuner2/2.1 (X11; Linux amd64; rv:33.0) like WinAmp/2.1",
       "vlc": "vlc 1.1.0-git-20100330-0003",
       "firefox": "Mozilla/5.0 (Windows NT 6.3; rv:36.0) Gecko/20100101 Firefox/36.0",
       "chrome": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36",
       "android": "Mozilla/5.0 (Linux; U; Android 4.0.3; ko-kr; LG-L160L Build/IML74K) AppleWebkit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30",
       "msie": "Mozilla/5.0 (compatible, MSIE 11, Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko",
       "itunes": "iTunes/9.0.3 (Macintosh; U; Intel Mac OS X 10_6_2; en-ca)",
       "googlebot": "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)",
    }

    # register
    def __init__(self, parent):
        conf.add_plugin_defaults(self.meta, self.module)
        parent.hooks["config_save"].append(self.apply)
        self.apply()    

    # set new browser string in requests session
    def apply(self):
        ua = self.map.get(conf.useragent.lower(), self.map["default"])
        if ua:
            __print__(dbg.HTTP, "UserAgentSwitcher:", ua)
            ahttp.session.headers.update({ "User-Agent": ua })