ADDED CREDITS Index: CREDITS ================================================================== --- CREDITS +++ CREDITS @@ -0,0 +1,39 @@ + +· Mario Salzer, http://include-once.org/ + → Streamtuner2 maintainer + +· Christian Ehm, http://ehm-edv.de/ + → MyOggRadio service, API and plugin + +· gorgonz123, http://paste.ubuntuusers.de/399600/ + → SurfMusic channel plugin + +· Matthias Haase, http://www.bennewitz.com/ + and Leigh Scott, B.Jones + → Fedora package, many bug reports, fixes, etc. + +· Abhisek Sanyal + → Major fix/patch for Live365 + +· Heinrich Schwietering, http://ubuntuusers.de/ + → external + user-friendly documentation + +· Jean-Yves Lefort and contributors, + → For the original STREAMTUNER 0.99.xx! + +Of course also many thanks to all users +reporting and helping to investigate bugs! + + · samanthax + · aquarius + · kino + · omelette + · Daniel, http://www.librepc.com/ + · Troy + · darose + · b.nikola + · stefantalpalaru + · micha @ musicgoal + · jay.l.h + +And probably many others... ADDED PACKAGERS Index: PACKAGERS ================================================================== --- PACKAGERS +++ PACKAGERS @@ -0,0 +1,123 @@ + +This is a short summary for distribution package maintainers. +For regular end-user documentation see the help/ pages. + + +Structural changes in 2.1.5 (2015-04-xx) +---------------------------------------- + + → There's a new `bin` script. It's a lightweight invocation + wrapper, intended to be installed as /usr/bin/streamtuner2 + now. + + → The previous `st2.py` still exists, but is now supposed to + reside in `/usr/share/streamtuner2/st2.py` along with all + other modules. + + → Theoretically it's now possible to change the target path + even (just edit `bin`). + +I'd still advise to use /usr/share/streamtuner2/ as main target +directory though. It's not yet practical to extract into Python +site-package directories. + +The channel PNG files still need to reside alongside the Python +modules. Later versions may complete soak the images into the +source code (meta data section) for simpicity. + + +Aux files +--------- + + → Help files still need to go to share/docs/streamtuner2/help/ + unless you patch the source. + + → *.desktop as usual + + → and `logo.png` is the pixmap/app icon + + +Removed +------- + +Some plugin PNGs may have been removed already. + +And the streamtuner2.png logo is now source-embedded instead +(`logo.py` provides a `logo.png`). + +The old `gtk2.xml` file is gone. It probably became obsolete +a long while back. The gtk3.xml is instead runtime-patched +to work with PyGTK/gtk2. + + +Dependencies +------------ + +If possible, make ST2 dependend on Python2 -or- Python3. +It's not yet practical, and probably against distro standards, +and only APT could so anyway. But if feasible... + +Also, hard dependencies are meanwhile: + + - gtk (>= 2.16) + - pygtk || python-gi + - python-requests (>> 1.2.0) + - python-pyquery [though most plugins would work without] + - and its implied python-lxml + +Optional dependencies (just affects a single plugin, which +semi-gracefully disables itself): + + - python-keybinder [for global_key] + - python-dbus [for radiotray] + +Very optional dependencies (everything should work without): + + - python-xdg + +Strongly suggest: + + - Streamripper + +Suggest: + + - any audio player of course + - youtube-dl + + +Lazy installation +----------------- + +The new .PYZ archive bundles everything into a ZIP file. Which, +given the right shebang, could just be "installed" as literal +/usr/bin/streamtuner2 even. +I'm sure nobody is going to do so. But you know, it's at least +a theoretical option now.. + + +FPM/XPM packaging +----------------- + +You may have noticed (and scoffed at ;) the newer packaging +method. It's now using http://fossil.include-once.org/xpm/ +with the `src` filter. (That's what the meta comment blocks +in the source modules were always meant for.) + + +Repo +---- + +The source code is hosted in a Fossil repo. + +You can get a Git export however easily even per web interface: + + http://fossil.include-once.org/streamtuner2/git-fast-export + +Git may or may not choke on its own export format though.. + + +Fin +--- + +Thanks guys! + Index: README ================================================================== --- README +++ README @@ -7,32 +7,92 @@ It mimics the original streamtuner 1 to some extend. It's however written in Python now instead of C. -installation howto +Installation howto ------------------ -You can just execute the main binary "st2.py". -All the other files need to be copied into /usr/share/streamtuner2/ however. -In particular the channel/ directory needs to reside there, so ST2 can find -all its plugins. - -If it doesn't work, make sure you have Python and gtk/pygtk installed: - - sudo apt-get install python python-gtk2 python-glade2 python-xdg - -And a few modules like: - - sudo apt-get install python-requests python-pyquery python-keybinder - -You can also install Python modules per `pip` with +If possible, prefer the package directly from your BSD/Linux distribution. +Due to an excessive maintenance break, some still have older 2.0.8 version +however - which barely works anymore. +If so, you should use a manually installed version. + +Dependencies +------------ + +Running streamtuner2 requires Python and Gtk packages. Which nowadays are +installed per default. There's a few more Python packages required though: + + · python | python3 + · pygtk | python-gi + · python-requests + · python-pyquery + · python-lxml + · python-keybinder (optional) + · python-xdg (optional) + +Use your distro package manager with e.g.: + + sudo apt-get install python python-gtk2 python-xdg python-requests ... + +Or utilize Pythons local package installer even: sudo pip install requests -The gtk*.xml file represents the GUI, btw. So with glade installed, you -can inspect and adapt the interface. + +DEB / RPM +--------- + +There are rudimentary packages built as .DEB and .RPM version. Install +those if feasible. The dependencies may not match with your package +manger, and are somewhat incomplete. (See "Dependencies" section.) + + +PYZ +--- + +Other users may wish to try the new Python archive (.PYZ) instead. Which +requires little installation, but can just be run in-place: + + python streamtuner-2.1.5.pyz + +You could even make this Python ZIP executable, and copy it in your PATH. + + +Manual installation +------------------- + +If you've checked out the source code repository, or did download the +*.src.txz archive, then you can just run it right there: + + ./st2.py + +To install it manually: + + · Create a /usr/share/streamtuner2/ + · Copy all *.py files there. + · Also copy the "gtk3.xml" file into /usr/share/streamtuner2/ + · Copy the channels/ subdir into /usr/share/streamtuner2/channels/ + · Install "bin" as /usr/bin/streamtuner2. + · If you want to use another target, just edit the "bin" wrapper. + · Optionally copy the help/ folder to /usr/share/docs/streamtuner2/ + · And the logo.png into the system pixmaps/, + as well as the *.desktop file into /usr/share/applications/ + +That's pretty much what the binary packages extract to. + + +Hacking +------- + +If you want to edit a channel plugin, just have a look into the +channels/*.py files. It's often rather easy to adapt things. + +Moreover you can also edit the user interface. You need glade-3 +installed, and open the "gtk3.xml" file. There it's easy to +rename or rearrange things. alternatives ------------ @@ -44,8 +104,11 @@ license ------- -Public Domain. -(no rules: unrestricted copying, modification, distribution, etc.) +Public Domain. (Unrestricted copying, modification, etc.) + +If you wish you could thus redistribute it under a BSD/MIT +or even GNU-style license. + Index: action.py ================================================================== --- action.py +++ action.py @@ -1,29 +1,24 @@ -# + # encoding: UTF-8 # api: streamtuner2 # type: functions # title: play/record actions # description: Starts audio applications, guesses MIME types for URLs # version: 0.7 # -# -# Multimedia interface for starting audio players, recording app, -# or web browser (listed as "url/http" association in players). -# -# -# Each channel plugin has a .listtype which describes the linked -# audio playlist format. It's audio/x-scpls mostly, seldomly m3u, -# but sometimes url/direct if the entry[url] directly leads to the -# streaming server. -# -# As fallback there is a regex which just looks for URLs in the -# given resource (works for m3u/pls/xspf/asx/...). There is no -# actual url "filename" extension guessing. -# -# -# +# Multimedia interface for starting audio players, recording app, +# or web browser (listed as "url/http" association in players). +# +# Each channel plugin has a .listtype which describes the linked +# audio playlist format. It's audio/x-scpls mostly, seldomly m3u, +# but sometimes url/direct if the entry[url] directly leads to the +# streaming server. +# +# As fallback there is a regex which just looks for URLs in the +# given resource (works for m3u/pls/xspf/asx/...). There is no +# actual url "filename" extension guessing. import re import os import ahttp as http