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

⌈⌋ ⎇ branch:  streamtuner2


Check-in [8aa9e67d20]

Overview
Comment:refine dependency list
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 8aa9e67d2057e4514a5ac18fa468f075763e774a
User & Date: mario on 2020-05-21 11:55:11
Other Links: manifest | tags
Context
2020-05-21
12:36
Fix some links, add forgotten reddit help page. check-in: 3c42414ef6 user: mario tags: trunk
11:55
refine dependency list check-in: 8aa9e67d20 user: mario tags: trunk
11:54
safeguard wiki/links retrieval check-in: 3ab6b3fa94 user: mario tags: trunk
Changes

Modified dev/snapcraft.yaml from [131ff637c3] to [25a3306342].

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
# Terrible idea. Snap isn't very fit to harbour python desktop apps.
# Bloats up the whole package to 65MB (from 450K). The pyz→zip roundtrip
# is also fairly redundant.



name: streamtuner2
version: 2.2.1+2020-05
summary: Directory browser for internet radio, audio and video streams
description: |
 Streamtuner2 is a GUI for browsing internet radio directories,
 music collections, and video services - grouped by genres or
 categories. It runs your preferred audio player or streamripper
 for recording.
 |
 This SNAP package is just for testing. The DEB or PYZ are significantly
 smaller and faster to install.
icon: ./icon.png
grade: stable
base: core18

confinement: strict

parts:

  # pull in python2 + libs
  python:
    plugin: python
    python-version: python2
    python-packages: [requests,pyquery,lxml,six,urllib3,pillow]
    after: [desktop-gtk2]
    stage-packages:
      - python-gtk2

  # use prepared pyz in zip
  st2:
    plugin: dump


|
>

>

|












>
|


<




|







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
# Terrible idea. Snap isn't very fit to harbour python desktop apps.
# Bloats up the whole package to 65MB (from 450K). The pyz→zip roundtrip
# is also fairly redundant. (But the pyz is more relocatable than using
# the plain deb / make install setup.)


name: streamtuner2
version: 2.2.2-rc1
summary: Directory browser for internet radio, audio and video streams
description: |
 Streamtuner2 is a GUI for browsing internet radio directories,
 music collections, and video services - grouped by genres or
 categories. It runs your preferred audio player or streamripper
 for recording.
 |
 This SNAP package is just for testing. The DEB or PYZ are significantly
 smaller and faster to install.
icon: ./icon.png
grade: stable
base: core18
confinement: classic   # `strict` wouldn't allow exec of audacious/vlc/etc., which kinda defeats the purpose of st2


parts:

  # pull in python2 + libs
  python:
    plugin: python
    python-version: python2
    python-packages: [requests,pyquery,lxml,six,"urllib3[secure]",pillow]
    after: [desktop-gtk2]
    stage-packages:
      - python-gtk2

  # use prepared pyz in zip
  st2:
    plugin: dump
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73












74
75
76
77
78
79
80
81
82
83



84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101




    make-parameters: ["FLAVOR=gtk2"]
    build-packages:
      - build-essential
      - libgtk2.0-dev
    stage-packages:
      - libxkbcommon0  # XKB_CONFIG_ROOT
      - ttf-ubuntu-font-family
      - dmz-cursor-theme
      - light-themes
      - adwaita-icon-theme
      - gnome-themes-standard
      - shared-mime-info
      - libgtk2.0-0
      - libgdk-pixbuf2.0-0
      - libglib2.0-bin
      - libgtk2.0-bin
      - unity-gtk2-module
      - locales-all
      - libappindicator1
      - xdg-user-dirs
      - ibus-gtk
      - libibus-1.0-5













apps:
  pyz:
    command: desktop-launch $SNAP/streamtuner2.pyz
    plugs:
    - x11
    - home
    - network
    - desktop # needed for a lot of gtk3 and glib interaction with the host system
    - desktop-legacy # needed for accessibility tools IIRC




plugs:
  gtk-2-engines:
    interface: content
    target: $SNAP/lib/gtk-2.0
    default-provider: gtk2-common-themes
  gtk-2-themes:
    interface: content
    target: $SNAP/data-dir/themes
    default-provider: gtk-common-themes
  icon-themes:
    interface: content
    target: $SNAP/data-dir/icons
    default-provider: gtk-common-themes
  sound-themes:
    interface: content
    target: $SNAP/data-dir/sounds
    default-provider: gtk-common-themes











|









|




>
>
>
>
>
>
>
>
>
>
>
>










>
>
>


















>
>
>
>
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
    make-parameters: ["FLAVOR=gtk2"]
    build-packages:
      - build-essential
      - libgtk2.0-dev
    stage-packages:
      - libxkbcommon0  # XKB_CONFIG_ROOT
      - ttf-ubuntu-font-family
      #- dmz-cursor-theme
      - light-themes
      - adwaita-icon-theme
      - gnome-themes-standard
      - shared-mime-info
      - libgtk2.0-0
      - libgdk-pixbuf2.0-0
      - libglib2.0-bin
      - libgtk2.0-bin
      - unity-gtk2-module
      #- locales-all
      - libappindicator1
      - xdg-user-dirs
      - ibus-gtk
      - libibus-1.0-5

  # https://forum.snapcraft.io/t/simple-trick-to-reduce-size-and-startup-time-of-gnome-based-snaps/12006
  cleanup:
    after: [ python, st2, desktop-gtk2 ]
    plugin: nil
    build-snaps: [ gnome-3-28-1804 ]
    override-prime: |
      set -eux
      cd /snap/gnome-3-28-1804/current
      find . -type f,l -exec rm -f $SNAPCRAFT_PRIME/{} \;
      #cd $SNAPCRAFT_PRIME/usr/lib/locale
      #find . -type f,l -exec rm -f $SNAPCRAFT_PRIME/{} \;

apps:
  pyz:
    command: desktop-launch $SNAP/streamtuner2.pyz
    plugs:
    - x11
    - home
    - network
    - desktop # needed for a lot of gtk3 and glib interaction with the host system
    - desktop-legacy # needed for accessibility tools IIRC
    - gtk-2-engines
    - gtk-2-themes
    #- gnome-3-28-1804

plugs:
  gtk-2-engines:
    interface: content
    target: $SNAP/lib/gtk-2.0
    default-provider: gtk2-common-themes
  gtk-2-themes:
    interface: content
    target: $SNAP/data-dir/themes
    default-provider: gtk-common-themes
  icon-themes:
    interface: content
    target: $SNAP/data-dir/icons
    default-provider: gtk-common-themes
  sound-themes:
    interface: content
    target: $SNAP/data-dir/sounds
    default-provider: gtk-common-themes
#  gnome-3-28-1804:
#    interface: content
#    target: $SNAP/gnome-platform
#    default-provider: gnome-3-28-1804

Modified st2.py from [9801108f7e] to [9760f83ba6].

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
#!/usr/bin/env python
# encoding: UTF-8
# api: python
# type: application
# title: streamtuner2
# description: Directory browser for internet radio, audio and video streams
# version: 2.2.1+2020-05
# state: stable
# author: Mario Salzer <mario@include-once.org>
# license: Public Domain
# url: http://freshcode.club/projects/streamtuner2
# config:  
#   { type: env, name: HTTP_PROXY, description: proxy for HTTP access }
#   { type: env, name: XDG_CONFIG_HOME, description: relocates user .config subdirectory }
# category: sound
# depends: pygtk | gi, threading, requests, pyquery, lxml

# alias: streamtuner2, main
# id: st2
# pack: *.py, gtk3.xml.gz, bin, channels/__init__.py, bundle/*.py, CREDITS, help/index.page,
#   streamtuner2.desktop, README, help/streamtuner2.1=/usr/share/man/man1/,
#   NEWS=/usr/share/doc/streamtuner2/, icon.png=/usr/share/pixmaps/streamtuner2.png
# architecture: all
#
# Streamtuner2 is a GUI for browsing internet radio directories,
# music collections, and video services - grouped by genres or
# categories. It runs your preferred audio player or streamripper
# for recording.
#
# It's an independent rewrite of streamtuner1. Being written in
# Python, can be more easily extended and fixed. The mix of
# JSON APIs, regex or PyQuery extraction simplifies collecting
# station lists.
#
# Primarily radio stations are displayed, some channels however
# are music collections. Commercial and sign-up services are not
# an objective.


# standard modules
import sys
import os
import re
from copy import copy

|




|








|
>


















|
|







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
#!/usr/bin/env python
# encoding: utf-8
# api: python
# type: application
# title: streamtuner2
# description: Directory browser for internet radio, audio and video streams
# version: 2.2.2-rc1
# state: stable
# author: Mario Salzer <mario@include-once.org>
# license: Public Domain
# url: http://freshcode.club/projects/streamtuner2
# config:  
#   { type: env, name: HTTP_PROXY, description: proxy for HTTP access }
#   { type: env, name: XDG_CONFIG_HOME, description: relocates user .config subdirectory }
# category: sound
# depends: python (>= 2.7) | python3 (>= 3.2), python:pygtk | python:gobject,
#   python:requests (>= 1.1), python:pyquery, python:pillow, python:xdg
# alias: streamtuner2, main
# id: st2
# pack: *.py, gtk3.xml.gz, bin, channels/__init__.py, bundle/*.py, CREDITS, help/index.page,
#   streamtuner2.desktop, README, help/streamtuner2.1=/usr/share/man/man1/,
#   NEWS=/usr/share/doc/streamtuner2/, icon.png=/usr/share/pixmaps/streamtuner2.png
# architecture: all
#
# Streamtuner2 is a GUI for browsing internet radio directories,
# music collections, and video services - grouped by genres or
# categories. It runs your preferred audio player or streamripper
# for recording.
#
# It's an independent rewrite of streamtuner1. Being written in
# Python, can be more easily extended and fixed. The mix of
# JSON APIs, regex or PyQuery extraction simplifies collecting
# station lists.
#
# Primarily radio stations are displayed, some channels however
# are music collections or video platforms. Commercial and sign-up
# services are not an objective.


# standard modules
import sys
import os
import re
from copy import copy