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

⌈⌋ ⎇ branch:  streamtuner2


History of action.py of a872fb7d36a84d1c

History of the file that is called action.py at checkin a872fb7d36a84d1c

2017-02-26
21:44
Collect audio format form URL guessing into new class heuristic_funcs file: [77e25ddc1d] check-in: [7a1577bf74] user: mario, branch: trunk, size: 28778 [annotate] [blame] [check-ins using] [diff]
2017-01-22
16:42
Use sys.encoding for os.system calls on Windows file: [1923204c8e] check-in: [5e6408e8c5] user: Oliver, branch: trunk, size: 28484 [annotate] [blame] [check-ins using] [diff]
2016-12-31
14:53
Updated help.chm, whitespace fixed, new theme download dir back. file: [12a6d46476] check-in: [07d8e1cf0d] user: mario, branch: trunk, size: 28437 [annotate] [blame] [check-ins using] [diff]
2016-12-27
21:20
Remove stale comment, fix whitespace issue file: [a600e70b5c] check-in: [b5753830fa] user: mario, branch: trunk, size: 28454 [annotate] [blame] [check-ins using] [diff]
2016-12-26
20:42
Exempt `%` from Win quoting. file: [4e163fed55] check-in: [837517237c] user: Oliver, branch: trunk, size: 28495 [annotate] [blame] [check-ins using] [diff]
2016-12-23
22:22
Moved backslash conversion and .load() override back into file browser plugin. file: [01839c79bb] check-in: [60ee1e2e12] user: mario, branch: trunk, size: 28497 [annotate] [blame] [check-ins using] [diff]
21:31
Workaround for file:/// paths on windows with mixed driver letters and backslashes. file: [93aa08299f] check-in: [4c8fadb925] user: Oliver, branch: trunk, size: 28722 [annotate] [blame] [check-ins using] [diff]
2016-12-17
11:01
Adapt urn_resolve() invocation. Most handlers update the dict in place. A few will return a new row however. (This can be utilized to return a copy, instead of changing station entries → menat for user "script stations" plugin.) file: [078f11948a] check-in: [0a425cfb5d] user: mario, branch: trunk, size: 28440 [annotate] [blame] [check-ins using] [diff]
2016-12-10
17:54
Add statusbar message when converting file: [476ab89429] check-in: [10d20f4306] user: mario, branch: trunk, size: 28402 [annotate] [blame] [check-ins using] [diff]
2016-12-09
18:37
Support for %% escaping. file: [24f167ca4e] check-in: [5994cb76a9] user: mario, branch: trunk, size: 28351 [annotate] [blame] [check-ins using] [diff]
2016-12-01
13:19
Fix help.chm lookup and default Windows paths. file: [21a471fadf] check-in: [a88fe29963] user: mario, branch: trunk, size: 28327 [annotate] [blame] [check-ins using] [diff]
2016-11-20
23:31
Combine path checks into main ForEach loop. Make-Shortcut() and Rewrite-Startscript() functions to embed those as $tasks too. file: [ecd56b9293] check-in: [17cd4bef20] user: mario, branch: trunk, size: 28327 [annotate] [blame] [check-ins using] [diff]
16:09
Support .QTL output format file: [c3fda330b1] check-in: [08a43fb795] user: mario, branch: trunk, size: 28329 [annotate] [blame] [check-ins using] [diff]
2016-11-19
13:15
Combine relative and local path searches for help pages / or chm lookup. file: [e425666e38] check-in: [5c941bcb6f] user: mario, branch: trunk, size: 27855 [annotate] [blame] [check-ins using] [diff]
2016-11-14
22:04
Use web online manual as fallback if /usr/share/docs/streamtuner/help* absent. file: [904e423c83] check-in: [fe43e46f81] user: mario, branch: trunk, size: 27803 [annotate] [blame] [check-ins using] [diff]
2016-11-13
22:38
Fix .chm help invocation file: [cbdf5c690d] check-in: [e14b00789e] user: mario, branch: trunk, size: 27647 [annotate] [blame] [check-ins using] [diff]
14:06
Add windows CHM help file (only for .exe build at the moment) file: [f81c329779] check-in: [7379129b9f] user: mario, branch: trunk, size: 27652 [annotate] [blame] [check-ins using] [diff]
13:23
action: optionalize quoting for BSD/Linux if plain http:// url without special chars. And fix regex to properly caret-escape + quote for Windows. file: [1335d1a09a] check-in: [52f8cb3961] user: mario, branch: trunk, size: 27558 [annotate] [blame] [check-ins using] [diff]
2016-11-10
17:35
Custom .quote() cmd argument escaping for windows. file: [3ad993befe] check-in: [89f9b52549] user: mario, branch: trunk, size: 27478 [annotate] [blame] [check-ins using] [diff]
2016-11-09
20:08
Fixed file open "rt" mode. file: [a6fade5fcd] check-in: [93908484c3] user: mario, branch: trunk, size: 27309 [annotate] [blame] [check-ins using] [diff]
2016-11-06
20:06
Fix hidden `conf.cmd` lookup file: [ce49d58115] check-in: [a2ef839027] user: mario, branch: trunk, size: 27299 [annotate] [blame] [check-ins using] [diff]
14:41
Use subprocess.list2cmdline() for Windows, and pipes.quote() for BSD/Linux command execution. file: [8587c265d6] check-in: [5a6185c3aa] user: mario, branch: trunk, size: 27300 [annotate] [blame] [check-ins using] [diff]
12:45
Make action.cmd() more explicit again. Introduce cmd= override flag for action.run_fmt_url(). So that specbuttons can use it instead of just interpol(). Thus the urn:/mime handlers will engage as well. file: [53a5386135] check-in: [2b300a090d] user: mario, branch: trunk, size: 27103 [annotate] [blame] [check-ins using] [diff]
11:39
Implement resolve_urn() and handlers to look up "urn:xxx:iii" stream urls pripr playback. (Currently just used by reciva and delicast. Now allows to remove channel.row() override.) file: [f35a591c53] check-in: [5b63504d79] user: mario, branch: trunk, size: 26783 [annotate] [blame] [check-ins using] [diff]
01:56
More specific command argument quoting for Windows. file: [8f35066d04] check-in: [d253deb912] user: mario, branch: trunk, size: 25951 [annotate] [blame] [check-ins using] [diff]
2016-11-01
21:57
Undo extra os.system("start \"%s\"") quotes for Windows. file: [114f820dd5] check-in: [2e49eacad9] user: mario, branch: trunk, size: 25889 [annotate] [blame] [check-ins using] [diff]
2016-10-28
23:18
bump minor versions file: [8b37efd187] check-in: [1478740ada] user: mario, branch: trunk, size: 25893 [annotate] [blame] [check-ins using] [diff]
23:08
Fix add_default=False logic. file: [8584cbcec7] check-in: [87a6d5ac96] user: mario, branch: trunk, size: 25893 [annotate] [blame] [check-ins using] [diff]
2016-10-23
16:28
action: Allow %url %title placeholders also with $ prefix. Also reuse interpolate() function for specbuttons and without default %pls. file: [fa6ea02044] check-in: [27c88c7dcd] user: mario, branch: trunk, size: 25897 [annotate] [blame] [check-ins using] [diff]
2015-11-10
23:25
Readd support for timer record durations 01:00-02:00, streamripper only. file: [96185346f2] check-in: [9febd83e03] user: mario, branch: trunk, size: 25805 [annotate] [blame] [check-ins using] [diff]
2015-11-08
14:01
Python3 fixes (use `log.XYZ` instead of `print` statement). file: [31399c2ae9] check-in: [00df54ba31] user: mario, branch: trunk, size: 25675 [annotate] [blame] [check-ins using] [diff]
2015-05-26
00:40
Fix action.browser() to use only row{}, not pass url= argument. Native JAMJSON extractor now tests for ["tracks"] or uses plain ["results"] list. file: [385cdf85d8] check-in: [84114ae636] user: mario, branch: trunk, size: 25671 [annotate] [blame] [check-ins using] [diff]
2015-05-24
16:58
Remove url= attribute in main entry points in favour of row{} file: [2fb5f0a4d6] check-in: [a73f762152] user: mario, branch: trunk, size: 25610 [annotate] [blame] [check-ins using] [diff]
14:19
Introduce action.handler{} callbacks to convert custom streaming URL types such as "audio/soundcloud". Unify backend code for .play/record/browser() calls. Reddit module just splits out domain name now, then checks for walledgarden links (filter option renamed). Introduce url_soundcloud plugin in favour of `soundcli` cmdline client setting. file: [0cb40c6df9] check-in: [23bbd97989] user: mario, branch: trunk, size: 25573 [annotate] [blame] [check-ins using] [diff]
2015-05-18
22:21
A bit more PEP8, without undoing all readability. file: [005725eacf] check-in: [492cb2aacf] user: mario, branch: trunk, size: 25254 [annotate] [blame] [check-ins using] [diff]
00:30
Typecast str() for bookmarks.is_in() url lookups → redundant. (Prepare for merging columns-update hook.) file: [ec6873c4fb] check-in: [0977371de1] user: mario, branch: trunk, size: 25252 [annotate] [blame] [check-ins using] [diff]
2015-05-17
03:04
Remove ahttp aliases, print warning for "raw" extractor fallback, add some comment headlines for better overview. file: [b70f71d85a] check-in: [5d05601f03] user: mario, branch: trunk, size: 25229 [annotate] [blame] [check-ins using] [diff]
2015-05-07
01:17
Add windows media guide radio lists (ASX). Fixed action module to extract with case-insensitve matches for that playlist format. (It's not really XML after all.) file: [02cf432a5f] check-in: [7c085d54f9] user: mario, branch: trunk, size: 24304 [annotate] [blame] [check-ins using] [diff]
2015-05-06
17:06
Use fallback title= for mkrow() importing. file: [d816e37503] check-in: [fbb2beedd7] user: mario, branch: trunk, size: 24292 [annotate] [blame] [check-ins using] [diff]
2015-05-05
19:47
Filter `None` from extracted URLs. Fix save_playlist.export; copy.copy each row before overwriting/filling url. Implement specific `jamj` extractor (regex stumbled over playlist title). file: [75cdfd8027] check-in: [c9509eb384] user: mario, branch: trunk, size: 24283 [annotate] [blame] [check-ins using] [diff]
2015-04-30
21:21
A little more comments on playlist_export usage. file: [9f1cd78f49] check-in: [bf7e0f1bf3] user: mario, branch: trunk, size: 23773 [annotate] [blame] [check-ins using] [diff]
06:21
Add new config dialog group for "Playlists". Conf setting `playlist_asis` completely skips action.convert_playlist(). Works for any real m3u/pls/srv server and flexible audio players. But obviously breaks Jamendo albums or other JSON playlist sources. file: [c4b64401d8] check-in: [470e3fac2b] user: mario, branch: trunk, size: 23190 [annotate] [blame] [check-ins using] [diff]
2015-04-26
22:24
Extended generic JSON extractor, to understand a few common field aliases. Add fallbacks for mime_app lookup in case */* is absent. Simplified %rowfield injection, which is commonly unused anyway. file: [aa42f204ad] check-in: [2116c28445] user: mario, branch: trunk, size: 23161 [annotate] [blame] [check-ins using] [diff]
15:34
Add custom pls extractor (for unordered playlist entries), keep regex method as fallback. More logging. file: [18fc32c37f] check-in: [0725d3fbc8] user: mario, branch: trunk, size: 22663 [annotate] [blame] [check-ins using] [diff]
2015-04-24
19:22
Add .url exporting (shallow Windows variant of .desktop files). file: [d35e0e213b] check-in: [fd963a3d9b] user: mario, branch: trunk, size: 21967 [annotate] [blame] [check-ins using] [diff]
2015-04-23
19:31
Use distinct /tmp/streamtuner2/ directory for temporary pls/m3u/xspf files (also for DND). And have action. module reuse them, based on numeric row{} hash. file: [c19df7fb22] check-in: [7411543862] user: mario, branch: trunk, size: 21866 [annotate] [blame] [check-ins using] [diff]
01:09
Remove some print statements, and switch to log.FUNC where necessary. file: [4f5c978225] check-in: [ecc88e5d3e] user: mario, branch: trunk, size: 21875 [annotate] [blame] [check-ins using] [diff]
2015-04-22
20:52
Fix .desktop file exporting. Add mime_guess() for streaming url. Move insert_rows() implementation out of DND module. file: [b6bfb9c13d] check-in: [749715cb39] user: mario, branch: trunk, size: 21868 [annotate] [blame] [check-ins using] [diff]
2015-04-21
22:04
Major rewrite of playlist_extract handler. Now retains url and titles for playlist types that contain it. Still provides simpler urls() wrapper for old action.play/convert/interpol usage. Move probe_* functions into playlist_extract class as well. Introduce basic playlist_fmt_prio list for supported formats. (Too many regexps to probe for allowed file extensions, etc.) Add support for .url and .desktop files (import only.) file: [29efeecded] check-in: [f18b5c461f] user: mario, branch: trunk, size: 21074 [annotate] [blame] [check-ins using] [diff]
06:05
Replace old __print__/dbg.XYZ references with new log.XYZ() wrapper. file: [b04a438de7] check-in: [ebae9e51ac] user: mario, branch: trunk, size: 17103 [annotate] [blame] [check-ins using] [diff]
2015-04-20
23:18
Add overly crude playlist_convert.title() extraction (for M3U/PLS/XSPF/ASX and the custom STRING/TEXT format used by DND module). Insert imported rows at the right position. Scrolling won't work, because it's done in a separate thread. file: [d87b406b97] check-in: [6dfe1fdeb5] user: mario, branch: trunk, size: 17194 [annotate] [blame] [check-ins using] [diff]
16:24
Move playlist extension and context probing into separate functions. Introduce some rather crude import functionality for a few playlist file formats. (Still requires proper importer with title= reading, and entirely rows[] based function signatures in action module.) file: [ee9e1bcb9d] check-in: [8e3b1e4d5b] user: mario, branch: trunk, size: 16760 [annotate] [blame] [check-ins using] [diff]
2015-04-19
19:35
Experiment with a few more target types. Works with a few text editors on STRING. Most just want a uri-list, but can't handle it. file: [ceb9b4a4e2] check-in: [e0e28edba2] user: mario, branch: trunk, size: 16581 [annotate] [blame] [check-ins using] [diff]
2015-04-18
20:39
Fix homepage url issue / quote() checks for list first now. Restructure playlist extraction into ordered dict; use in conver_playlist as probe formats. Make xml/json url decoding explicit, prepare for custom extractors (e.g. real json or xml traversal, full row/title extraction). file: [820487cd33] check-in: [58d2981ca9] user: mario, branch: trunk, size: 16557 [annotate] [blame] [check-ins using] [diff]
17:19
Updated Jamendo plugin audioformat and listformat descriptors. Attempted to use v3.0 API for playlist tracks. Still no playlist API endpoint. So using a separate track requests now. Implemented a new action/playlist_convert URL extractor, which shall henceforth be known as "jamj" (JamJibberish). Fixed XML url extraction in regex mode, trivial backslash deescaping for JSON formats; and fixed multiply URL bug by copying row{} dict during conversion. file: [fc5074bffb] check-in: [7149d92fe1] user: mario, branch: trunk, size: 16005 [annotate] [blame] [check-ins using] [diff]
2015-04-11
14:06
Fix case-sensitive PLS construction and File\d+ index starting from 1. Adapt format detection regexps as well for html, and xspf xmlns. file: [f8a0134421] check-in: [3301815009] user: mario, branch: trunk, size: 15668 [annotate] [blame] [check-ins using] [diff]
2015-04-10
17:34
Fix str→bytes saving for Py3. Tmplement tmp_files[] cleanup. file: [097271c366] check-in: [36c234a70b] user: mario, branch: action-mapfmts, size: 15652 [annotate] [blame] [check-ins using] [diff]
16:40
Finalize allowed filename extensions for exporting. Normalize Python3 string decoding (errors='ignore' per default). Update XSPF and SMIL export. Use row={} template now, instead of just carrying over title= to rewritten playlists. file: [42bec82228] check-in: [e136a78c73] user: mario, branch: action-mapfmts, size: 15378 [annotate] [blame] [check-ins using] [diff]
11:56
Apply proper file extension to temp files (they're never cleaned up, are they?) Fix MIME type probing, strip attributes. Support Apple M3U minor type, detect GVP playlists. file: [a1f8b1c311] check-in: [59075dcc1b] user: mario, branch: action-mapfmts, size: 15128 [annotate] [blame] [check-ins using] [diff]
10:45
Update comment on rewritten action module. Add alternative MIME types for m3u and asx, spport asf detection and extraction. Fix listformat→source arg. Move save() and filename handling out of save_playlist. Fix mediafmt_t lookup and print warning when there's an audio-response on playlist fetching (and it does happen). Change myoggradio plugin "format" population, and set listformat to "mixed(..)" for automatic probing. file: [666f98e53e] check-in: [223368ebbf] user: mario, branch: action-mapfmts, size: 14984 [annotate] [blame] [check-ins using] [diff]
02:36
Fixed ASX and SMIL playlist exporting, allowed new placeholders %xspf, %jspf, %asx, %smil for application configuration. Documented in help/ pages. file: [f7b4eccd84] check-in: [1937c5766b] user: mario, branch: action-mapfmts, size: 13824 [annotate] [blame] [check-ins using] [diff]
2015-04-09
14:50
Still some parameter renaming in action module to do. Optional support for row={} parameter in play/record calls, in case .pls/.m3u needs to be constructed (to retain title=). Adapt action playlist exporting to wrapper object, which preconverts plain URL lists or [rows] list, can itself call convert_playlist(), and optionalized file writing. Rewrite main save() and exportcat.save() to utilize new save_playlist(). Implement overwrite confirmation for Save-as dialog. file: [941a6a0502] check-in: [b784d408c1] user: mario, branch: action-mapfmts, size: 12991 [annotate] [blame] [check-ins using] [diff]
02:51
Use ordered list for playlist content probing. Fix listfmt() mime to abbr conversion. Allow non-http URLs for raw() extraction. file: [fd5f4b120e] check-in: [babd818a96] user: mario, branch: action-mapfmts, size: 10474 [annotate] [blame] [check-ins using] [diff]
2015-04-08
23:32
Consolidate listformat types to just "pls", "m3u" and "srv". Probe for direct ICY server contact in action.playlist_convert(), unify extraction methods. file: [2ff7501bb2] check-in: [85313637a3] user: mario, branch: action-mapfmts, size: 10139 [annotate] [blame] [check-ins using] [diff]
17:59
Remove extraneous class wrapper action.action. Start to regroup listformat mapping (pls-url → m3u-fn rewrites). Will need some heuristics, as depending just on the channel.listformat assumption won't work in practice (some .pls servers actually host direct server links, or occasionally .m3u references even). Currently does nothing, just returns the pls/etc URL. file: [693e44deeb] check-in: [ea628d6426] user: mario, branch: trunk, size: 8949 [annotate] [blame] [check-ins using] [diff]
2015-04-07
05:54
Less indentation, starting to overhaul action.save() at least. (Whole `action` module is overdue.) file: [b136303bf1] check-in: [7726e18571] user: mario, branch: trunk, size: 9913 [annotate] [blame] [check-ins using] [diff]
2015-04-01
20:31
Update documentation files (dependencies and manual installation paths). file: [93903d7a98] check-in: [186f91779d] user: mario, branch: trunk, size: 10719 [annotate] [blame] [check-ins using] [diff]
2014-05-27
00:44
conf.record{} array is back, settings dialog now shows a separate editable table; default options prepared for `youtube-dl` video downloading. Action module now more orderly tries alternative media/* placeholders. file: [6e1dac85dc] check-in: [199c0ad425] user: mario, branch: trunk, size: 10739 [annotate] [blame] [check-ins using] [diff]
2014-05-14
23:44
New mime/app configuration screen in an editable ListStore. Players, recording hook and browser are now mixed up in conf.play{} file: [9506eb9e76] check-in: [0edaf9402f] user: mario, branch: trunk, size: 10386 [annotate] [blame] [check-ins using] [diff]
2014-05-13
21:00
Exchange audio/mp3 for standard audio/mpeg MIME type. file: [5d3890f993] check-in: [220ee1286a] user: mario, branch: trunk, size: 10339 [annotate] [blame] [check-ins using] [diff]
2014-04-10
04:31
* Fixed gtk_list_store_get_value: assertion `column < list_store->n_columns' by removing {width:20} reference from treeview datamap. * row.setdefault() for absent search_col/set and deleted state * More __print__/dbg colorization * Disabled pson.filter_data in favour of str casting in mygtk.columns() * Removed streamactions.popup PY2/PY3 workaround with named args * More .iteritems() removal file: [a3c14ebdbb] check-in: [1beab0563e] user: mario, branch: py3, size: 10387 [annotate] [blame] [check-ins using] [diff]
2014-04-08
21:16
rename http to ahttp to avoid conflict with Python3 modules, change .iteritems and xrange, remove same remaining plain print statements file: [cd681feda2] check-in: [d3b1418bc6] user: mario, branch: py3, size: 10304 [annotate] [blame] [check-ins using] [diff]
2014-04-07
00:33
Move __print__ into config, add unified dbg.COLOR codes file: [fc0650246a] check-in: [7ef1553f61] user: mario, branch: trunk, size: 10283 [annotate] [blame] [check-ins using] [diff]
2012-01-10
03:47
windows patches from Vincent file: [f63b7b9614] check-in: [4298cc4385] user: mario, branch: trunk, size: 10390 [annotate] [blame] [check-ins using] [diff]
2012-01-09
03:45
Added: 2.0.8.5 file: [a384a5d7ee] check-in: [ea81d1ad5d] user: mario, branch: trunk, size: 10226 [annotate] [blame] [check-ins using]