Giter VIP home page Giter VIP logo

gpodder-sailfish's Introduction

      ___         _    _           ____
 __ _| _ \___  __| |__| |___ _ _  |__ /
/ _` |  _/ _ \/ _` / _` / -_) '_|  |_ \
\__, |_| \___/\__,_\__,_\___|_|   |___/
|___/
        Media aggregator and podcast client

Copyright 2005-2022 The gPodder Team

License

gPodder is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.

gPodder is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

Dependencies

As an alternative to python-dbus on Mac OS X and Windows, you can use the dummy (no-op) D-Bus module provided in "tools/fake-dbus-module/".

For quick testing, see Run from Git to install dependencies.

GTK3 UI - Additional Dependencies

Optional Dependencies

  • Bluetooth file sending: gnome-obex-send or bluetooth-sendto
  • Size detection on Windows: PyWin32
  • Native OS X support: ige-mac-integration
  • MP3 Player Sync Support: python-eyed3 (0.7 or newer)
  • iPod Sync Support: libgpod (tested with 0.8.3)
  • Clickable links in GTK UI show notes: html5lib
  • HTML show notes: WebKit2 gobject bindings (webkit2gtk, webkitgtk4 or gir1.2-webkit2-4.0 packages).
  • Better Youtube support (> 15 entries in feeds, download audio-only): youtube_dl or yt-dlp

Build Dependencies

  • help2man
  • intltool

Test Dependencies

  • python-minimock
  • pytest
  • pytest-httpserver
  • pytest-cov
  • desktop-file-utils

Testing

To run tests, use...

make unittest

To set a specific python binary set PYTHON:

PYTHON=python3 make unittest

Tests in gPodder are written in two different ways:

If you want to add doctests, simply write the doctest and make sure that the module appears after --doctest-modules in pytest.ini. If you add tests to any module in src/gpodder you have nothing to do.

If you want to add unit tests for a specific module (ex: gpodder.model), you should add the tests as gpodder.test.model, or in other words:

The file:       src/gpodder/model.py
is tested by:   src/gpodder/test/model.py

After you've added the test, make sure that the module appears in "test_modules" in src/gpodder/unittests.py - for the example above, the unittests in src/gpodder/test/model.py are added as 'model'. For unit tests, coverage reporting happens for the tested module (that's why the test module name should mirror the module to be tested).

Running and Installation

To run gPodder from source, use..

bin/gpodder              # for the Gtk+ UI
bin/gpo                  # for the command-line interface

To install gPodder system-wide, use make install. By default, this will install all UIs and all translations. The following environment variables are processed by setup.py:

LINGUAS                  space-separated list of languages to install
GPODDER_INSTALL_UIS      space-separated list of UIs to install
GPODDER_MANPATH_NO_SHARE if set, install manpages to $PREFIX/man/man1

See setup.py for a list of recognized UIs.

Example: Install the CLI and Gtk UI with German and Dutch translations:

export LINGUAS="de nl"
export GPODDER_INSTALL_UIS="cli gtk"
make install

The "make install" target also supports DESTDIR and PREFIX for installing into an alternative root (default /) and prefix (default /usr):

make install DESTDIR=tmp/ PREFIX=/usr/local/

Debian and Ubuntu use dist-packages instead of site-packages for third party installs, so you'll want something like:

sudo python3 setup.py install --root / --prefix /usr/local --optimize=1 --install-lib=/usr/local/lib/python3.10/dist-packages

In fact, first try running python -c "import sys; print(sys.path)" to check what is the exact path. It depends on your version of python.

Portable Mode / Roaming Profiles

The run-time environment variable GPODDER_HOME is used to set the location for storing the database and downloaded files.

This can be used for multiple configurations or to store the download directory directly on a MP3 player or USB disk:

export GPODDER_HOME=/media/usbdisk/gpodder-data/

OS X Specific Notes

  • default GPODDER_HOME="$HOME/Library/Application Support/gPodder"
  • default GPODDER_DOWNLOAD_DIR="$HOME/Library/Application Support/gPodder/download"

These settings may be modified by editing the following file of the .app :

/Applications/gPodder.app/Contents/MacOSX/_launcher

Add and edit the following lines to alter the launch environment on OS X :

export GPODDER_HOME="$HOME/Library/Application Support/gPodder"
export GPODDER_DOWNLOAD_DIR="$HOME/Library/Application Support/gPodder/download"

Changing the Download Directory

The run-time environment variable GPODDER_DOWNLOAD_DIR is used to set the location for storing the downloads only (independent of the data directory GPODDER_HOME):

export GPODDER_DOWNLOAD_DIR=/media/BigDisk/Podcasts/

In this case, the database and settings will be stored in the default location, with the downloads stored in /media/BigDisk/Podcasts/.

Another example would be to set both environment variables:

export GPODDER_HOME=~/.config/gpodder/
export GPODDER_DOWNLOAD_DIR=~/Podcasts/

This will store the database and settings files in ~/.config/gpodder/ and the downloads in ~/Podcasts/. If GPODDER_DOWNLOAD_DIR is not set, $GPODDER_HOME/Downloads/ will be used if it is set.

Logging

By default, gPodder writes log files to $GPODDER_HOME/Logs/ and removes them after a certain amount of times. To avoid this behavior, you can set the environment variable GPODDER_WRITE_LOGS to "no", e.g:

export GPODDER_WRITE_LOGS=no

Extensions

Extensions are normally loaded from gPodder's "extensions/" folder (in share/gpodder/extensions/) and from $GPODDER_HOME/Extensions/ - you can override this by setting an environment variable:

export GPODDER_EXTENSIONS="/path/to/extension1.py extension2.py"

In addition to that, if you want to disable loading of all extensions, you can do this by setting the following environment variable to a non- empty value:

export GPODDER_DISABLE_EXTENSIONS=yes

If you want to report a bug, please try to disable all extensions and check if the bug still appears to see if an extension causes the bug.

More Information

gpodder-sailfish's People

Contributors

atlochowski avatar carmenfdezb avatar chstem avatar dashinfantry avatar dikonov avatar elelay avatar eson57 avatar fravaccaro avatar keeper-of-the-keys avatar kreativjos avatar schmittlauch avatar sfbg avatar sjn avatar thigg avatar thp avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gpodder-sailfish's Issues

Impossible to replay finished episodes

I just tried to hear an old wrint episode again (deleted and downloaded again), but it always tries to use length+14s as start position and stops immediately.
Setting position to 0:00 and use "Play" pulldown also jumps to the end+14s position and stops.

Show error messages for invalid certificates in UI

I encountered a SSL certificate verification failure when trying to download an episode. This currently (gpodder 4.6) just fails silently from an end-users perspective as the error message (kind of, it's a stacktrace) is printed to stdout, see gpodder/gpodder-core#21 This isn't really user-friendly.

I think there are at least 2 things to be done:

  • catch the ssl.SSLError exception
  • display an understandable error message

How to get started fixing bugs?

Hi,

I would really like to work on this app, for example to add OPML import which I feel I would able to do. My problem is that after I cloned it and updated the submodules I have no idea how to compile/start the app on my desktop and there seems not to be any documentation at all in the README or the Wiki or the page this repo links to in the short description.

Could someone help me along the way? I see some indication that I would be able to start it with qmlscene but I have no idea how.

Remote control from headset

When I play back an episode I would like to control playback from my headset buttons.
My current headset is a Bluetooth headset from Nokia (BH-505) and remote control works from Jolla's mediaplayer.

Especially while commuting I often interrupt/pause the playback skip to next episode or reverse to replay some period. It is cumbersome to get out the phone unlock it and open the dialog, especially when you have those buttons at the headset

Subscribe to gpodder:// urls

Some podcasts, i.e. using the podlove subscribe button use gpodder://<podcast url> to activate subscriptions.
I'm currently investigating what would need to be done to support that. The way forward seems to be:

  • package the gpo command line tool with the rpm
  • change the .desktop file to register for the url and execute gpo subscribe <url>

Add support for MPRIS DBUS interface

I'd really love gpodder on SailfishOS to register itself as a MPRIS player

  • Would enable Remote Control from Lock Screen
  • Would enable Remote Control from Apps (my personal use case would be "resume playing on bluetooth reconnect" using my script at https://openrepos.net/content/velox/bleh )

Would it be possible to somehow include http://wiki.gpodder.org/wiki/Extensions/MprisListener?
If not: "import org.nemomobile.mpris 1.0" isn't accepted by harbour-tools for the jolla store, so I don't know if (or how, for that matter) https://github.com/nemomobile/qtmpris has to be included locally.

What do you think?

[Edit: I have since discovered there's a Plugin for desktop gpodder. This Issue has been updated accordingly.]

Wanted: Visualizing and updating which podcast episodes are new

I'd like to know which podcasts I have and have not listened to yet (I have a lot of them).

I would suggest that new podcast episodes are marked with a lighter background in the episode list screen (or vice-versa, old episodes are made less visually distinct).

Also, in the subscription screen, I'd like podcasts with new episodes are made visually distinct in exactly the same manner.

Finally, adding a menu item for setting an episode (or a whole podcast episode list) as "listned to", would be awesome. Same with re-setting an episode as "new".

I'm currently using harbour-org.gpodder.sailfish-4.0.0-1.7.1.noarch .

Resume downloads / clear partial downloads

From https://openrepos.net/comment/5373#comment-5373 / https://openrepos.net/users/horus:

thanks to the new update. It is great to have possibility to en-queue. Which could be a bit more intuitive. This post is quite a request because of issues I have, after using GPodder for Sailfish half a year.

The problem I had was that after using GPodder for half a year I ended up with a few gigs of .mp3.partial .mp4.partial and similar not fully loaded tracks. All those partially loaded files where not shown in GPodder and I could not continue to load the files or delete those from the app.

Because of the large amount of GBs that was wasted with this files. I went totally mad. Because the Jolla does not work properly with no more space left. After deleting some files I was able to use the phone...

It would be great to have to opportunity to continue loading the files or at least to automatically all those partially loaded files.

Feature: HTML shownotes

The shownotes of many podcasts are also provided in HTML and contain links. It'd be great if the HTML shownotes could be displayed directly in gpodder.

[Missing Feature] Add a sleep timer

I'd like to have a sleep timer available on gpodder which pauses after a configurable time.

Good intervals would be 5, 15, 30 and 60 minutes.

[Missing Feature] Only play downloaded episodes

The listed episodes in 'Subscriptions' does not indicate which of the episodes are new or old, nor which ones are downloaded. If I open one which is not yet downloaded but select 'play' it starts downloading.

This is unpleasant if out of wifi coverage

Memory usage slowly grows

I often have sailtime open to see how tight I am on memory. It appears to me gpodder slowly grows in memory usage after a day or 2 of fairly heavy use gpodder becomes very slow to respond. If I close gpodder and reopen it I regain speed and memory.

Remember position

Should gpodder (4.1.0 on latest sailfish os) remember the position when closed. Or is it a feature coming at a later time?

Right now if I close gpodder (be it paused or playing) when I open it again I can't find any hint as to what I was playing before and if I open the same podcast episode it starts from the beginning.

Thanks a bunch for an otherwise great app!

USgamer.net

Hi,

I just tried to add the podcast from usgamer:

http://usgamernet.libsyn.com/rss

But it won't be added. Normely there is this (turning) ring shown, when the app tries to add a new podcast. Restarted the app and handy, does not do anything. (additionally the gPodder.net search does not work).

UPDATE: After adding another podcast it worked...

Issues on adding podcasts with non-Latin characters

gPodder version: 4.6.0

I tried to add a podcast in Korean, and the podcast entry is spinning after entering URL. Closing and re-opening gPodder will not show the podcast on the list, while "Filter episodes" screen will reveal the episodes.

Possibly related logs:

2015-07-14 15:19:19,370 [gpodder.model] INFO: Cannot rename old download folder: /home/nemo/.local/share/harbour-org.gpodder.sailfish/http___xsfm.co.kr_xml_podera.xml
Traceback (most recent call last):
  File "/usr/share/harbour-org.gpodder.sailfish/gpodder/model.py", line 889, in get_save_dir
    os.rename(old_folder, new_folder)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 53-55: ordinal not in range(128)

URL to test: http://www.xsfm.co.kr/xml/idwk.xml

Editable podcast URL

The podcast URL is currently not editable, only the name.
As a result I had to update the URL of a podcast that moved by manually updating the JSON database (and gunzippen/gzippen). Please make it editable as well?

When playing an episode; immediately jump to the "Now playing" screen

Subject says it all. :)

The "Now playing" screen also needs the following features:

  • Name of podcast
  • Name of episode
  • The actual details of the podcast (or a short version of it) and NOT a link to the details. (There's a bug here! You can go arbitrarily deep: Play -> Details -> Now playing -> Details -> Now playing -> Details -> Now playing -> etc. etc.. Maybe you should draw a transition graph to check for loops? :))
  • The slider ought to do something too
  • Show time information (how much left of episode, total length of episode).

In the same way, it would be nice showing play/pause status in the Subscription and Fresh episodes screens. A small icon would probably be fine.

YouTube search is broken

For several months I am not able to get the content from my added YouTube channels and not able to find additional channels .
For a week a so I also can not access GPodder.net and can not add Podcasts from them.
(There fore I tried to add via Soundcloud my very first time and from then I only got the Title of the cast but not the episodes.

register gpodder:// protocol to support Podlove Subscribe Button

Hello!

I'm testing gPodder v4.4.0 on Sailfish 1.1.1.27 and noticed the following problem.

Situation: Using the default browser to click on the Podlove Subscribe Button (please find more details about that here) on a podcast website that supports it (many examples, including shameless self-promo)

Result: On the one hand, gPodder is correctly recognises as installed on the Jolla, but upon confirming to subscribe to that feed with gPodder, the following error appears (apparently when the browser attempts to transfer the feed URL):

Oops.
One of the following (gpodder) is not a registered protocl or is not allowed in this context.
Nightly can't load this page for some reason.
[Try Again] 

Opus playback

Hello,
I am on version 4.4.0 and opus items wont play.
After clicking the play item in the UI nothing is happening.
Other mp3 items work just fine.

I mentioned this bug trying to play a file from this feed: http://freakshow.fm/feed/opus/

Best regards,
toerb

Paused m4a episodes don't continue to play

When trying to play paused m4a podcasts via cover action or with the "Play" item in pulley menu, they don't continue to play as long as one doesn't skip forwards or backwards using the navigation wheel. This only happens with m4a files, not with opus or mp3s.
Example: Not Safe For Work m4a
I also have the codec pack from OpenRepos installed but haven't tried yet whether this issue is caused by that

latest gpodder 4.1.0 on SailfishOS 1.0.4

Cannout open subscribe dialog

I get this error instead:

I'm getting this while trying to use subscribe:

Error loading Subscribe.qml:file:///usr/share/harbour-org.gpodder.sailfish/qml/qml/Subscribe.qml:28 SubscribeProgress is not a type

QQmlComponent: Component is not ready
[W] unknown:111 - file:///usr/lib/qt5/qml/Sailfish/Silica/PageStack.js:111: TypeError: Cannot read property 'createObject' of null

Any ideas why?

[Feature request] podcast episode search/filter

Hi!

I'd love to search for a specific podcast episode! Some times I have the need to re-listen to a specific one, but finding it is at the moment really hard. You have to scroll and you have only a few words at the beginning of the title and description to look at, and if the podcast library consists of literally hundreds of episodes, searching for that specific one.... It quickly gets REALLY tedious.

Could you just add a search field where one can quickly can specify which episodes to show in the list? E.g. something that does a "select * from episodes where title like '%somekeyword%';"....

Thanks!

Feature: check single podcast updates

long press on a podcast should have a button for update episodes
checking all podcasts can be very slow if you just want the new episode of one of the last podcasts on the list.

pulldown menu would be another good place, but there are already enough items in it

Download problems

I subscribed this podcast:
http://damals-tm-podcast.de/?feed=damalstm-mp3
and the crawling, parsing and everything is fine. But i'm not able to download a file, nothing is happening when I push download. All other podcast feeds and downloads are working. . How should I debug this? Can anyone reproduce this behaviour?

Drains battery after downloading episodes

On 1.1.0.39 (Uitukka), I find that gPodder (as process "sailfish-qml") is drawing 20% CPU all the time, thus draining my battery.
This happens quite often after I have downloaded a few episodes (in parallel).

Clear queue

How can I remove all itens from the queue?
We can have a push-up or a pull-down menu with this option.

Timepicker playbackcontrols are missing

The timepicker, used for rewinding or forward winding the playback, is missing on the play page.
20150525170433

This bug appears since updating to gPodder 4.6 on SailfishOS 1.1.4.29

Problem with specific feed from feedburner.com

I have several feeds from feedburner.com that work. But I get no episodes from http://feeds.feedburner.com/TheWheelnerds (also tried http://feeds.feedburner.com/TheWheelnerds?format=xml).
Compared to a feed that do work (e.g. http://feeds.feedburner.com/linuxoutlaws-ogg?format=xml ) thinks look mostly the same, except that the Wheelnerds doesn't link to an episode page.

Is this a problem with gpodder or the feed?

Log gives nothing of interest
1427742913.814427 [gpodder.plugins.podcast] INFO: Parsing via podcastparser: http://feeds.feedburner.com/TheWheelnerds [D] onReceived:81 - unhandled message: refresh-progress,49,55 1427742914.924392 [gpodder.registry] INFO: fallback_feed_handler resolved by podcast_parser_handler from gpodder.plugins.podcast: None -> <gpodder.plugins.podcast.PodcastParserLinkFallbackFeed object at 0x46aeb5f0>

Playlist support

If an episode has finished I manually need to go back into the list of episodes and select a new one to continue. Rather unhandy when listening to podcasts with short episodes (such as detektor.fm)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.