Menu

Timer for recording not working? How do I add my own station urls?

phd21
2015-11-08
2015-11-15
  • phd21

    phd21 - 2015-11-08

    Hi Everyone,

    I was really happy to see that this program was being maintained and updated. Wow, really nice update - very impressed. I am using Linux Mint KDE 17.1 and the one in the repos was old and did not work. I found this by accident, and glad I did.

    Everything seems to be working except the "timer" for recording. I have the program running, but it will not start recording automatically at the time specified, ex: "Sun 04:00-04:21 record". I was wondering if dates could be used as well as the generic weekdays, can the day(s) be left off for recording the same time everyday, or do you have to specify each day? I would really like to get this working.

    And, how do I add my own custom station urls?

    Thank you,

     

    Last edit: phd21 2015-11-08
  • Mario Salzer

    Mario Salzer - 2015-11-08

    Hi,

    The timer plugin depends on the Python kronos module. For testing please try to start streamtuner2 -D and watch out for error messages regarding either. May not work with Python3 at all. (Though I tested it with Gnome-based Ubuntu/Mint.)

    Also I just checked; and it didn't copy the stream url field along when bookmarking a timer.

    It's also somewhat picky with the time specifiers. kronos does allow more complex time ranges IIRC. But the ST2 timer module extracts only a subset of fields, so the record/play suffix can be detected.
    Honestly I hadn't used it for a while, else I'd have externalized the whole recording functionality to cron as planned.

    Adding new stations kind of works, but it's a workaround. Just open an existing station per Station→Edit and use [copy/new], then update title and url.
    We could have a proper Station→New function for that, but I didn't want to clutter the menu too much.

    BR.

     
  • Mario Salzer

    Mario Salzer - 2015-11-08

    Oh, I just got an error message with extra logging enabled:
    [ERR] queuing error global name 'act' is not defined
    So it's perhaps really broken. (Though that's just my test version.)

     

    Last edit: Mario Salzer 2015-11-08
  • Mario Salzer

    Mario Salzer - 2015-11-09

    Found the problem. The actual playback/recording triggers didn't pass all parameters correctly. There's a fixed version in:
    http://fossil.include-once.org/streamtuner2/artifact/6a46d248b98a279b

    Though you can probably update the module just per Config → 📦 Add → Refresh → Install "timer".

    I could probably add an option to specify "all", "any" an asterisk "*" for all weekdays. But I'm not sure if specific dates can be used with the task scheduler.

     
    • phd21

      phd21 - 2015-11-09

      Hi Mario Salzer,

      Thank you, I really appreciate you responding so quickly.

      1. "timer plugin depends on the Python kronos module". I have python2 and python3 installed and most everything related to those. I could not find any reference in the Software Manager or Synaptic Package Manager (SPM) in my system regarding this "kronos" module? Could it be part of another python module? How could I verify, check, to see if that is installed, and or functioning properly?

      2. I download your updates to the "timer.py" file (Thanks again). I checked my "/home/phil/.config/streamtuner2/plugins/" folder and it was empty before, except maybe for the "init.py". I have not had a chance yet to test the "timer", but I will. I did not manually put ht e"timer.py" file into the "/plugins" folder because I wanted to try the "Add->Refresh" option.

      3. In my StreamTuner2, I do not have "Config → 📦 Add → Refresh → Install "timer". I have and went through the "Edit", "Properties", "Add" tab, then clicked "Refresh", then I clicked "save" on everything, including "Recording Timer". I then went to check the contents of the "plugins" folder and there are now some Python files in there including "timer.py", and "timer.pyc". What is the "timer.pyc"? Is that a compiled version? Below I have also included the results of starting "streamtuner2 -D" before any updates, and after the updates, for you to review.

      4. I just tried "StreamTuner2", just to play various streaming stations, which all that I tried before worked, including those from yesterday. But, now some station categories, sections, do not seem to be working now, TuneIn, Surf Music-Florida, Live365 just doesn't show anyting active. Perhaps I should not have clicked "save" to everything in the "Edit (config)--> Add" options?

      In the "tunein" section, under "local" stations, I now get an error that did not happen yesterday? I am using "smplayer" to play the stations.

      Mplayer/MPV has finsihed unexpectedly. Exit code2

      /usr/bin/mpv --no-config --no-quiet --terminal --no-msg-color --input-file=/dev/stdin --no-fs --hwdec=auto --sub-auto=fuzzy --vo=xv, --ao=pulse --stop-screensaver --no-input-default-bindings --input-x11-keyboard=no --no-input-cursor --cursor-autohide=no --no-keepaspect --wid=123732179 --monitorpixelaspect=1 --osd-scale=1 --sub-ass --embeddedfonts --ass-line-spacing=0 --sub-scale=1 --sub-text-font=Arial --sub-text-color=#ffffff --sub-text-shadow-color=#000000 --sub-text-border-color=#000000 --sub-text-border-size=2.5 --sub-text-shadow-offset=5 --sub-codepage=utf8:ISO-8859-1 --sub-pos=100 --volume=101 --cache=2048 --osd-level=0 --index=default --screenshot-template=cap_%F_%p_%02n --audio-channels=2 --af-add=scaletempo --af-add=equalizer=0:0:0:0:0:0:0:0:0:0 --softvol=yes --softvol-max=110 --ytdl --term-playing-msg=MPV_VERSION=${=mpv-version:}
      INFO_VIDEO_WIDTH=${=width}
      INFO_VIDEO_HEIGHT=${=height}
      INFO_VIDEO_ASPECT=${=video-aspect}
      INFO_VIDEO_FPS=${=fps}
      INFO_VIDEO_FORMAT=${=video-format}
      INFO_VIDEO_CODEC=${=video-codec}
      INFO_AUDIO_FORMAT=${=audio-codec-name:${=audio-format}}
      INFO_AUDIO_CODEC=${=audio-codec}
      INFO_AUDIO_RATE=${=audio-params/samplerate:${=audio-samplerate}}
      INFO_AUDIO_NCH=${=audio-params/channel-count:${=audio-channels}}
      INFO_LENGTH=${=duration:${=length}}
      INFO_DEMUXER=${=demuxer}
      INFO_TITLES=${=disc-titles}
      INFO_CHAPTERS=${=chapters}
      INFO_TRACKS_COUNT=${=track-list/count}
      METADATA_TITLE=${metadata/by-key/title:}
      METADATA_ARTIST=${metadata/by-key/artist:}
      METADATA_ALBUM=${metadata/by-key/album:}
      METADATA_GENRE=${metadata/by-key/genre:}
      METADATA_DATE=${metadata/by-key/date:}
      METADATA_TRACK=${metadata/by-key/track:}
      METADATA_COPYRIGHT=${metadata/by-key/copyright:}
      INFO_MEDIA_TITLE=${=media-title:}
      --term-status-msg=STATUS: ${=time-pos} / ${=duration:${=length:0}} P: ${=pause} B: ${=paused-for-cache} I: ${=core-idle} http://opml.radiotime.com/Tune.ashx?id=s23849

      Playing: http://opml.radiotime.com/Tune.ashx?id=s23849
      Failed to recognize file format.
      Exiting... (Errors when loading file)

      1. The results of terminal command "streamtuner2 -D" before and after today's updates.

      streamtuner2 -D

      11-09-2015, before runnning any updates through the "Edit", "Properties", "Add", "Refresh"...

      [PROC] ConfigDict() initialized
      [PROC] load bookmarks.json
      [PROC] bookmarks.current:=timer ← from ['gui', 'gui', '__init__']
      [UI] bookmarks.display_categories(), uikit.tree(#1), expand_all(#<20), select_current(=timer)
      [UIKIT_EXEC] <bound method bookmarks.select_current of <channels.bookmarks.bookmarks object at 0xb623d98c>>
      [UI] reselect .current category in treelist: timer
      [STAT] disabled plugin: dirble
      [STAT] disabled plugin: filter_bitrate
      [STAT] disabled plugin: filtermusic
      [UI] bookmarks.display_categories(), uikit.tree(#2), expand_all(#<20), select_current(=timer)
      [UIKIT_EXEC] <bound method bookmarks.select_current of <channels.bookmarks.bookmarks object at 0xb623d98c>>
      [UI] reselect .current category in treelist: timer
      [PROC] internet_radio.current:=Salsa ← from ['gui', 'gui', '__init__']
      [UI] internet_radio.display_categories(), uikit.tree(#84), expand_all(#<20), select_current(=Salsa)
      [UIKIT_EXEC] <bound method internet_radio.select_current of <channels.internet_radio.internet_radio object at 0xb629af0c>>
      [UI] reselect .current category in treelist: Salsa
      [STAT] disabled plugin: jamendo
      [UI] bookmarks.display_categories(), uikit.tree(#3), expand_all(#<20), select_current(=timer)
      [UIKIT_EXEC] <bound method bookmarks.select_current of <channels.bookmarks.bookmarks object at 0xb623d98c>>
      [UI] reselect .current category in treelist: timer
      [PROC] live365.current:=Pop ← from ['gui', 'gui', '__init__']
      [UI] live365.display_categories(), uikit.tree(#23), expand_all(#<20), select_current(=Pop)
      [UIKIT_EXEC] <bound method live365.select_current of <channels.live365.live365 object at 0xb4641e2c>>
      [UI] reselect .current category in treelist: Pop
      [PROC] modarchive.current:=Alternative ← from ['gui', 'gui', '__init__']
      [UI] modarchive.display_categories(), uikit.tree(#15), expand_all(#<20), select_current(=Alternative)
      [UIKIT_EXEC] <bound method modarchive.select_current of <channels.modarchive.modarchive object at 0xb462cbac>>
      [UI] reselect .current category in treelist: Alternative
      [PROC] myoggradio.current:=common ← from ['gui', 'gui', '__init__']
      [UI] myoggradio.display_categories(), uikit.tree(#2), expand_all(#<20), select_current(=common)
      [UIKIT_EXEC] <bound method myoggradio.select_current of <channels.myoggradio.myoggradio object at 0xb4407e0c>>
      [UI] reselect .current category in treelist: common
      [PROC] radiobrowser.current:=topvote ← from ['gui', 'gui', '__init__']
      [UI] radiobrowser.display_categories(), uikit.tree(#4), expand_all(#<20), select_current(=topvote)
      [UIKIT_EXEC] <bound method radiobrowser.select_current of <channels.radiobrowser.radiobrowser object at 0xb42bee0c>>
      [UI] reselect .current category in treelist: topvote
      [PROC] radionomy.current:=Top Charts ← from ['gui', 'gui', '__init__']
      [UI] radionomy.display_categories(), uikit.tree(#32), expand_all(#<20), select_current(=Top Charts)
      [UIKIT_EXEC] <bound method radionomy.select_current of <channels.radionomy.radionomy object at 0xb413fd8c>>
      [UI] reselect .current category in treelist: Top Charts
      [STAT] disabled plugin: radiotray
      [PROC] shoutcast.current:=Alternative ← from ['gui', 'gui', '__init__']
      [UI] shoutcast.display_categories(), uikit.tree(#50), expand_all(#<20), select_current(=Alternative)
      [UIKIT_EXEC] <bound method shoutcast.select_current of <channels.shoutcast.shoutcast object at 0xb3da486c>>
      [UI] reselect .current category in treelist: Alternative
      [STAT] disabled plugin: somafm
      [PROC] surfmusik.current:=Florida ← from ['gui', 'gui', '__init__']
      [UI] surfmusik.display_categories(), uikit.tree(#22), expand_all(#<20), select_current(=Florida)
      [UIKIT_EXEC] <bound method surfmusik.select_current of <channels.surfmusik.surfmusik object at 0xb3d6b26c>>
      [UI] reselect .current category in treelist: Florida
      [UI] bookmarks.display_categories(), uikit.tree(#4), expand_all(#<20), select_current(=timer)
      [UIKIT_EXEC] <bound method bookmarks.select_current of <channels.bookmarks.bookmarks object at 0xb623d98c>>
      [UI] reselect .current category in treelist: timer
      [PROC] tunein.current:=local ← from ['gui', 'gui', '__init__']
      [UI] tunein.display_categories(), uikit.tree(#42), expand_all(#<20), select_current(=local)
      [UIKIT_EXEC] <bound method tunein.select_current of <channels.tunein.tunein object at 0xb3b4bcac>>
      [UI] reselect .current category in treelist: local
      [STAT] disabled plugin: ubuntuusers
      [STAT] disabled plugin: useragentswitcher
      [PROC] xiph.current:=all ← from ['gui', 'gui', '__init__']
      [UI] xiph.display_categories(), uikit.tree(#157), expand_all(#<20), select_current(=all)
      [UIKIT_EXEC] <bound method xiph.select_current of <channels.xiph.xiph object at 0xb3a9d78c>>
      [UI] reselect .current category in treelist: all
      [PROC] youtube.current:=Music ← from ['gui', 'gui', '__init__']
      [UI] youtube.display_categories(), uikit.tree(#6), expand_all(#<20), select_current(=Music)
      [UIKIT_EXEC] <bound method youtube.select_current of <channels.youtube.youtube object at 0xb033b24c>>
      [UI] reselect .current category in treelist: Music
      [PROC] bookmarks → first_show() , current= timer , categories= 4
      [UI] bookmarks → first_show(); station list → load( timer )
      [PROC] bookmarks.current:=timer ← from ['load', 'load', 'first_show']
      [UI] load() → uikit.columns(bookmarks.streams[timer]) ['load', 'first_show', '__init__', 'main']
      [UIKIT_EXEC] <bound method bookmarks.select_current of <channels.bookmarks.bookmarks object at 0xb623d98c>>
      [UI] reselect .current category in treelist: timer
      [UIKIT_EXEC] <bound method bookmarks.columns of <channels.bookmarks.bookmarks object at 0xb623d98c>>
      

      11-09-2015 03:15pm eastern us, after updating. "Edit", "properties", "Add", "Refresh", amd clicked "save" on everything.

      streamtuner2 -D

      [PROC] ConfigDict() initialized
      [PROC] load bookmarks.json
      [PROC] bookmarks.current:=favourite ← from ['gui', 'gui', '__init__']
      [UI] bookmarks.display_categories(), uikit.tree(#1), expand_all(#<20), select_current(=favourite)
      [UIKIT_EXEC] <bound method bookmarks.select_current of <channels.bookmarks.bookmarks object at 0xb631198c>>
      [UI] reselect .current category in treelist: favourite
      [UI] Couldn't read source meta information: di
      [STAT] disabled plugin: di
      [STAT] Couldn't read source meta information: file
      [INIT] load_plugin_channels: error initializing: file , exception:
      Traceback (most recent call last):
        File "/usr/share/streamtuner2/st2.py", line 422, in load_plugin_channels
          plugin_obj = plugin_class(parent=self)
        File "/home/phil/.config/streamtuner2/plugins/file.py", line 107, in __init__
          self.scan_dirs()
        File "/home/phil/.config/streamtuner2/plugins/file.py", line 164, in scan_dirs
          self.streams[name] = [self.file_entry(fn, dir) for fn in files if self.we_like_that_extension(fn)]
        File "/home/phil/.config/streamtuner2/plugins/file.py", line 184, in file_entry
          meta.update(mutagen_postprocess(get_meta(dir + "/" + fn) or {}))
        File "/home/phil/.config/streamtuner2/plugins/file.py", line 56, in mutagen_postprocess
          "encoder": d["TENC"][0],
        File "/usr/lib/python2.7/dist-packages/mutagen/_file.py", line 54, in __getitem__
          return self.tags[key]
        File "/usr/lib/python2.7/dist-packages/mutagen/_util.py", line 206, in __getitem__
          return self.__dict[key]
      KeyError: 'TENC'
      [INIT] Couldn't read source meta information: glrp
      [STAT] disabled plugin: glrp
      [STAT] Couldn't read source meta information: icast
      [STAT] disabled plugin: icast
      [STAT] Couldn't read source meta information: itunes
      [STAT] disabled plugin: itunes
      [STAT] Couldn't read source meta information: listenlive
      [STAT] disabled plugin: listenlive
      [STAT] Couldn't read source meta information: magnatune
      [STAT] disabled plugin: magnatune
      [STAT] Couldn't read source meta information: publicradiofan
      [STAT] disabled plugin: publicradiofan
      [STAT] Couldn't read source meta information: radionet
      [STAT] disabled plugin: radionet
      [PROC] radionomy.current:=Top Charts ← from ['gui', 'gui', '__init__']
      [UI] radionomy.display_categories(), uikit.tree(#32), expand_all(#<20), select_current(=Top Charts)
      [UIKIT_EXEC] <bound method radionomy.select_current of <channels.radionomy.radionomy object at 0xb4510d6c>>
      [UI] reselect .current category in treelist: Top Charts
      [UI] Couldn't read source meta information: reddit
      [STAT] disabled plugin: reddit
      [UI] bookmarks.display_categories(), uikit.tree(#2), expand_all(#<20), select_current(=favourite)
      [UIKIT_EXEC] <bound method bookmarks.select_current of <channels.bookmarks.bookmarks object at 0xb631198c>>
      [UI] reselect .current category in treelist: favourite
      [UI] Couldn't read source meta information: url_soundcloud
      [STAT] disabled plugin: url_soundcloud
      [STAT] Couldn't read source meta information: windowsmedia
      [STAT] disabled plugin: windowsmedia
      [STAT] disabled plugin: dirble
      [STAT] disabled plugin: filter_bitrate
      [STAT] disabled plugin: filtermusic
      [UI] bookmarks.display_categories(), uikit.tree(#3), expand_all(#<20), select_current(=favourite)
      [UIKIT_EXEC] <bound method bookmarks.select_current of <channels.bookmarks.bookmarks object at 0xb631198c>>
      [UI] reselect .current category in treelist: favourite
      [PROC] internet_radio.current:=Salsa ← from ['gui', 'gui', '__init__']
      [UI] internet_radio.display_categories(), uikit.tree(#84), expand_all(#<20), select_current(=Salsa)
      [UIKIT_EXEC] <bound method internet_radio.select_current of <channels.internet_radio.internet_radio object at 0xb41e518c>>
      [UI] reselect .current category in treelist: Salsa
      [STAT] disabled plugin: jamendo
      [UI] bookmarks.display_categories(), uikit.tree(#4), expand_all(#<20), select_current(=favourite)
      [UIKIT_EXEC] <bound method bookmarks.select_current of <channels.bookmarks.bookmarks object at 0xb631198c>>
      [UI] reselect .current category in treelist: favourite
      [PROC] live365.current:=Pop ← from ['gui', 'gui', '__init__']
      [UI] live365.display_categories(), uikit.tree(#23), expand_all(#<20), select_current(=Pop)
      [UIKIT_EXEC] <bound method live365.select_current of <channels.live365.live365 object at 0xb46211ec>>
      [UI] reselect .current category in treelist: Pop
      [PROC] modarchive.current:=Alternative ← from ['gui', 'gui', '__init__']
      [UI] modarchive.display_categories(), uikit.tree(#15), expand_all(#<20), select_current(=Alternative)
      [UIKIT_EXEC] <bound method modarchive.select_current of <channels.modarchive.modarchive object at 0xb47d05ec>>
      [UI] reselect .current category in treelist: Alternative
      [PROC] myoggradio.current:=common ← from ['gui', 'gui', '__init__']
      [UI] myoggradio.display_categories(), uikit.tree(#2), expand_all(#<20), select_current(=common)
      [UIKIT_EXEC] <bound method myoggradio.select_current of <channels.myoggradio.myoggradio object at 0xb47d77cc>>
      [UI] reselect .current category in treelist: common
      [PROC] radiobrowser.current:=topvote ← from ['gui', 'gui', '__init__']
      [UI] radiobrowser.display_categories(), uikit.tree(#4), expand_all(#<20), select_current(=topvote)
      [UIKIT_EXEC] <bound method radiobrowser.select_current of <channels.radiobrowser.radiobrowser object at 0xb2e1480c>>
      [UI] reselect .current category in treelist: topvote
      [STAT] disabled plugin: radiotray
      [PROC] shoutcast.current:=Alternative ← from ['gui', 'gui', '__init__']
      [UI] shoutcast.display_categories(), uikit.tree(#50), expand_all(#<20), select_current(=Alternative)
      [UIKIT_EXEC] <bound method shoutcast.select_current of <channels.shoutcast.shoutcast object at 0xb2ce990c>>
      [UI] reselect .current category in treelist: Alternative
      [STAT] disabled plugin: somafm
      [PROC] surfmusik.current:=Florida ← from ['gui', 'gui', '__init__']
      [UI] surfmusik.display_categories(), uikit.tree(#22), expand_all(#<20), select_current(=Florida)
      [UIKIT_EXEC] <bound method surfmusik.select_current of <channels.surfmusik.surfmusik object at 0xb2c322ac>>
      [UI] reselect .current category in treelist: Florida
      [PROC] tunein.current:=local ← from ['gui', 'gui', '__init__']
      [UI] tunein.display_categories(), uikit.tree(#42), expand_all(#<20), select_current(=local)
      [UIKIT_EXEC] <bound method tunein.select_current of <channels.tunein.tunein object at 0xb2b0020c>>
      [UI] reselect .current category in treelist: local
      [STAT] disabled plugin: ubuntuusers
      [STAT] disabled plugin: useragentswitcher
      [PROC] xiph.current:=all ← from ['gui', 'gui', '__init__']
      [UI] xiph.display_categories(), uikit.tree(#157), expand_all(#<20), select_current(=all)
      [UIKIT_EXEC] <bound method xiph.select_current of <channels.xiph.xiph object at 0xb36c7f8c>>
      [UI] reselect .current category in treelist: all
      [PROC] youtube.current:=Music ← from ['gui', 'gui', '__init__']
      [UI] youtube.display_categories(), uikit.tree(#6), expand_all(#<20), select_current(=Music)
      [UIKIT_EXEC] <bound method youtube.select_current of <channels.youtube.youtube object at 0xb12ef8cc>>
      [UI] reselect .current category in treelist: Music
      [PROC] bookmarks → first_show() , current= favourite , categories= 4
      [UI] bookmarks → first_show(); station list → load( favourite )
      [PROC] bookmarks.current:=favourite ← from ['load', 'load', 'first_show']
      [UI] load() → uikit.columns(bookmarks.streams[favourite]) ['load', 'first_show', '__init__', 'main']
      [UIKIT_EXEC] <bound method bookmarks.select_current of <channels.bookmarks.bookmarks object at 0xb631198c>>
      [UI] reselect .current category in treelist: favourite
      [UIKIT_EXEC] <bound method bookmarks.columns of <channels.bookmarks.bookmarks object at 0xb631198c>>
      

      Best regards to you and yours,

      Phil

       
    • phd21

      phd21 - 2015-11-10

      Hi Mario,

      Okay, I have been testing Streamtuner2.

      Here is what I found out.

      1. If I use the "VLC" media player for "audio/mpeg =vlc", then the streaming stations from "TuneIn" & "SurfMusic", will play, at least the ones that did yesterday with "smplayer". Most of the other stations also work. I also tried my favorite music application Amarok, and all worked except the the ones from "TuneIn" & "SurfMusic", they came up with the message below.

      "requires a plug-in uri text decoder, & can't find the plugin, stations show up as, 'tune.ashx' "?

      I liked a lot that ST2 updated Amarok's playlist, pretty cool. Any of the other type of streams, used VLC and worked. I understand that streaming stations change formats and such, so I do not expect all of them to work.

      1. The scheduled Timer recording did start just like it was supposed to, with the correct station, but it did not stop the timer recording when it was supposed to.

      I have a similar problem in Amarok, I cannot stop the streaming recording, like I can with Streamtuner2 by clicking the record button again, or closing the pop-up window, or in Amarok's case, by clicking the "stop recording" which does not stop "streamripper" in Amarok.

      I was wondering in ST2, if you could just call the sub-routine to click the record button again, or add something to issue the command "pkill streamripper". I would also like to know how you accomplish this, if you do not mind.

      1. After updating today, like I said in my previous post and saving everything in the "Add" section, my "init.py" in the "/plugins" folder was zero bytes, so I extracted that file from the installation ".deb" file and copied that back into the "/plugins" folder.

      2. I help out in the Linux Mint forums as user "phd21". I really like this Streamtuner2 program since it was re-written, and I would like to tell the people there how to install and use it. So, I have some questions and some suggestions, and I hope you don't mind me asking.

      -Can you search for stations? I noticed what looks like a very small search box at the top, but it does not seem to do anything? It would be nice if it did and it was larger.

      • Any Tips that you might have would be welcome.

      Thanks again for all your help.

      Best regards to you and yours,

      Phil

       

      Last edit: phd21 2015-11-10
  • Mario Salzer

    Mario Salzer - 2015-11-13

    Hey Phil,

    Dunno if you've seen the mail,
    so here's a repost:

    1. You can try to configure audio players in the settings dialog
      with something like:

      "amarok %xspf"

    That'll convert any m3u/pls files before they're passed to
    Amarok or VLC.

    Not all players accept any variation of playlist types. Both
    Amarok and VLC are pretty solid in that regard however. Some
    sites may block a few players however.

    The automatic playlist collection is a feature entirely implemented
    in Amarok. Not a specific gimmick of ST2 :)

    1. Yes, I just patched it to work. Barely. There was support
      for timeouts previously. But the new action module does not
      permit to pass a custom time range command-line flag.
      If it's going to be reimplemented, it would only work with
      streamripper, not fIcy/fPls for example. So it's probably
      going to become a config option.

    There was [x]STOP button formerly in ST2. It was meant
    to cancel recording. But I never got around to implement
    it. And mostly I'm just closing the xterm where streamripper
    was active.

    pkill streamripper would suffice of course, so I might
    add another plugin for that.

    It's just a bit difficult to control externally-run processes
    (like streamripper in xterm) from Python. Recording is more
    or less an afterthought in ST2, which is primarily about
    fetching stream lists, and letting audio apps handle any
    playback/recording minutae.

    1. Your $HOME/.config/streamtuner2/plugins/init.py is
      always supposed to be 0 bytes. It's just a placeholder.
      Simply delete it. It just helps Python to discover the
      module directory.

    2. If you can relay some details, or want to extend some
      documentation, that would be great. The current manual
      is a bit terse at details, and I'm not that great in
      Engrish et al^^

    3. The small station search box atop is just for highlighting
      stuff in the current view.

    There's a proper search function with Ctrl+F. It can either
    do cache searches (fast), or live server searches (slower,
    and only works for a few channels). Mostly using it for
    Youtube really.

    G,
    mario

    Btw, I've just uploaded another fix for the timer
    plugin.

    While it could be updated per [Add] → Refresh again,
    it also requires updating action.py beforehand.

    http://fossil.include-once.org/streamtuner2/raw/action.py?name=96185346f2a22d11d91c85e003d124d8a2248425

    Which now passes the duration flags for streamripper
    somewhat more reliably.

     
    • phd21

      phd21 - 2015-11-15

      Hi Mario,

      I think your English is very good. What is your native language? I think your profile here shows you are in Germany.

      Thank you again for your prompt replies and your work on this. I appreciate it and I'm sure others will too. I did not have access to the internet for the past couple days, or I would have replied sooner.

      I just downloaded the "action.py" file, but there was not a new link to the updated "timer.py" file. So, I used the last link in previous post here and downloaded that as well, but the date was not within the past few days? I put the "action.py" file into "/usr/share/streamtuner2/action.py" and I just noticed that "timer.py" is in two places, not just the "/home/phil/.config/streamtuner2/plugins/timer.py" folder but also in the "/usr/share/streamtuner2/channels/timer.py" folder. Do both folders need to have the updated "timer.py" file copied into them? I copied the "timer.py" into both places anyway. Would the update function in the "Settings", "add" tab, "refresh", update both the "Action.py" and the "timer.py" files properly, or do you have to manually copy the files into the appropriate folders?

      I also checked the http://fossil.include-once.org/streamtuner2/index and it looks as though "st2.py" was updated recently, do I need that as well?

      I am going to test this now, and I will report back my findings.

      I appreciate the other information you provided as well. I think it would be good to have a "stop recording" button, so if you can implement that with a plug-in or otherwise, that would be great. There a people from all over the world using Linux and Linux Mint, and they are from all over the world even though at this moment they could be somewhere else, so having a streaming application that can stream stations, like music and news, from everywhere, like ST2, is really nice. And, because the time zones are so different, and because you cannot always be at your computer, being able to set streaming recordings by date and time, etc.... is super convenient.

      I really like this program. You have done a great job on this. Thank you.

      During a testing phase of a program(s), or any of its functions, I find that it is sometimes useful to use regular email, rather than fill up the forum's postings with all that detail that can change rapidly and frequently. I have a regular email address that I could provide you, but I did not see a way to send a Private Message, or an E-Mail message, to you in this forum where I could give you my email address. I did not want to put my email address openly in this forum.

      Best regards to you and yours,
      Phil

       

Log in to post a comment.