Giter Site home page Giter Site logo

gpodder'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's People

Contributors

adamvoss avatar auouymous avatar blushingpenguin avatar brabadu avatar brot avatar crayxt avatar dovf avatar elelay avatar hiltronix avatar hoffmann avatar huftis avatar jnwickremasinghe avatar markushackspacher avatar marvil07 avatar mcspr avatar mortal avatar mrnicknoldus avatar neodyne avatar nikosapi avatar njsf avatar paper42 avatar sistosilvio avatar smarquespt avatar smunkel avatar thp avatar tomaszdom avatar tpikonen avatar tzocker avatar umonkey avatar vistaus 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  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  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

gpodder's Issues

renaming files in Windows doesn't work

Hi, I'm a bit of a podcast addict, and am surprised - no, dismayed - at how few reliable options there are out there. I used to use Miro, which was great it its peak, but is clearly in ruins now. I tried Media Monkey, but that seems like it's trying to do too much, and the worst thing was that it was systematically downloading podcasts more than once, without any apparent checking for duplicates. So that is clearly out of the game for me. And of course I hate iTunes 👎

So I'm trying gpodder just now. It's not so ambitious, not trying to do everything, which is fair enough, and which I understand. But one thing that I really do want it to be able to do is to rename files by date, for obvious enough reasons to do with continuity of listening (and whyyyyyy don't broadcasters think of this???? but that's not our issue here.....)

So, I went onto the preferences, and found this screen, and ticked these boxes (as shown in this image):

screenshot 2017-01-17 20 40 37

Well, I thought that would work, but it doesn't. I restarted the program, even restarted the computer (for whatever difference that might make - none, I assume), but none of that was any good.

I've even been rummaging around in the program files, and found this rename_download.py, which I assume is where this stuff is supposed to happen. I don't know python, but just as an experiment I tried setting those DefaultConfig bits to True rather than False. I didn't crash the program, but that didn't work. So I put them back to False, as you can see in the picture below. Well, please let me know. My decision whether to use gpodder probably depends on getting this to work!

screenshot 2017-01-17 20 50 37

Loose check selection when notify new episodes

Hi,

During checking episodes in the list (CTRL + mouse click), a notification appears to inform me news episodes where discovered.
This notification made unckecked my episode selection. I lost my selection.

Best regards.

(gPodder 3.9.0 / xubuntu 16.10)

Please add a search/filter function for podcast titles (and maybe description)

I would like to be able to search/filter the displayed (downloaded) podcasts.
Often I know some words from the title, but not the full title, so I would like to be able to search for it.
(I tried to find the functionality - because it seems somewhat obvious - but failed in the application itself, the manual and the wiki.

Unicode path not supported for GPODDER_HOME

I get that error when I try to run gpodder.exe.

Running gpo.exe in console returns this:

C:\Program Files (x86)\gPodder>gpo.exe
Storing data in E:\ahiskali\╧юфърёЄ√ (GPODDER_HOME is set)

gPodder 3.9.3 "Whacketts" (2016-12-22) - http://gpodder.org/
? 2005-2016 Thomas Perl and the gPodder Team
License: GNU General Public License, version 3 or later

Entering interactive shell. Type 'help' for help.
Press Ctrl+D (EOF) or type 'quit' to quit.

1483584940.380000 [gpodder.log] ERROR: Uncaught exception: Traceback (most recent call last):
  File "bin\gpo", line 898, in <module>
    cli._shell()
  File "bin\gpo", line 758, in _shell
    cli._run_cleanups()
  File "bin\gpo", line 230, in _run_cleanups
    old_episodes = list(common.get_expired_episodes(self._model.get_podcasts(), self._config))
  File "C:\Program Files (x86)\gPodder\src\gpodder\model.py", line 1239, in get_podcasts
    self.children = self.db.load_podcasts(podcast_factory)
  File "C:\Program Files (x86)\gPodder\src\gpodder\dbsqlite.py", line 159, in load_podcasts
    cur = self.cursor()
  File "C:\Program Files (x86)\gPodder\src\gpodder\dbsqlite.py", line 103, in cursor
    return self.db.cursor()
  File "C:\Program Files (x86)\gPodder\src\gpodder\dbsqlite.py", line 91, in db
    self._db = sqlite.connect(self.database_file, check_same_thread=False)
OperationalError: unable to open database file

Traceback (most recent call last):
  File "bin\gpo", line 898, in <module>
    cli._shell()
  File "bin\gpo", line 758, in _shell
    cli._run_cleanups()
  File "bin\gpo", line 230, in _run_cleanups
    old_episodes = list(common.get_expired_episodes(self._model.get_podcasts(), self._config))
  File "C:\Program Files (x86)\gPodder\src\gpodder\model.py", line 1239, in get_podcasts
    self.children = self.db.load_podcasts(podcast_factory)
  File "C:\Program Files (x86)\gPodder\src\gpodder\dbsqlite.py", line 159, in load_podcasts
    cur = self.cursor()
  File "C:\Program Files (x86)\gPodder\src\gpodder\dbsqlite.py", line 103, in cursor
    return self.db.cursor()
  File "C:\Program Files (x86)\gPodder\src\gpodder\dbsqlite.py", line 91, in db
    self._db = sqlite.connect(self.database_file, check_same_thread=False)
sqlite3.OperationalError: unable to open database file

Python

My gpodder stop working after ask for update.
I downloaded the new files (gpodder 3.9.1, python 2.7.12 and pygtk), unistall the old ones and install the new ones, but now say "gpodder requires PyGTK, see ..."

Episode Counters Still Visible After Syncing To Device

After syncing all podcasts to device there are still podcast counters showing the new/totals beside each podcast. These should probably be reset after sync. The totals do not reset until application is restarted.

Example:
gpodder screenshot

gPodder unable to find Mutagen on Windows 7

Windows 7
gPodder 3.9.0
Pip 8.1.2
Mutagen 1.34.1
Python 3.5.2

C:\Users\aidan>pip install mutagen
Requirement already satisfied (use --upgrade to upgrade): mutagen in c:\program files (x86)\python35-32\lib\site-packages

Despite having installed mutagen, gPodder won't let me enable the tagging extension:

Extension cannot be activated
Python module not found: mutagen

Mutagen works from the command line:

Python 3.5.2 (v3.5.2:4def2a2901a5, Jun 25 2016, 22:01:18) [MSC v.1900 32 bit (Intel)] on win32

from mutagen.mp3 import MP3
print(MP3("The Cardigans - 01 - Paralyzed.mp3").info.length)
296.8

Sync to windows folder with non-ASCII characters in its name

Hello

I recently started using the windows version of gPodder, and I find it quite useful to manage my favorite podcasts and choose the ones I want to download and archive.

There is an issue I am having when synchronizing. My native language is Portuguese and I listen to Portuguese podcasts as well. The Windows filesystem folder I chose to synchronize has a couple of non-ASCII characters in its name such as á, ó and ú, typical among languages evolved from latin.

When I use the synchronize feature I get the error "Cannot open device". However, when I remove all "diacritical marks" from the characters in the folder's path, it synchronizes without issue.

Hence I would like to ask if this issue could be fixed in a future version of gPodder, or if there is any setting I can change to make gPodder "compatible" with "syncing" to folders with non-ASCII characters in their path.

Thank you and regards

EDIT

I do not know exactly how, but suddenly I no longer have this issue. Please nevermind my post. I will try to delete or close it if I can.

Poor GUI performance when download dir resides on NAS

I currently have 39 podcasts subscribed and are downloading new episodes directly to my NAS as my computer 'only' has a SSD which I do not want to be congested with gigabytes of audio files.

The gpodder home directory is still on my SSD, I switched the download directory by setting the GPODDER_DOWNLOAD_DIR variable to a folder on my nas. Basically this works fine for me.

But the gPodder GUI has severe performance issues with this configuration. After start it becomes unresponsive for several minutes as gPodder is obviously accessing the subfolders in the download directory to check which episodes are already downloaded (while it's unresponsive it generates quite a lot of network traffic at ~3-5mbps between my client and the NAS). The GUI does not respond at all until it finished that.

If you know this, it's fine, you must give gPodder the time it needs to update itself and download new episodes. If you don't know it you might think that gPodder crashed right after upstart as it behaves like it did.

gPodder should put all these tasks in background threads to keep it responsive.

Download-progressbar overlapping percentage

screenshot_20161223_123846
As you can see, as the download progresses, the font (percentage) becomes invisible (transpareceny of bar missing?)

gPodder3 version: 3.9.3 (2016-12-22) from git, run from source.
python2 version: 2.7.12
my system: Arch Linux, KDE Plasma 5.8, Breeze-theme

Progress tab is not updated in some cases

Running v3.9.0 (latest version in the Debian testing repositories) and there's a minor problem in that the 'progress' tab never seems to update after the first few minutes. It looks like gpodder has hung, but if you fire up ksysguard then you can see that downloads are still progressing. It looks to me like you need a few screen repaints in there somewhere (sorry if that's Pascal-speak!) No shortage of CPU power here, AMD Phenom II 6-core with 8GB of memory, and the PC isn't doing much else at the time (Chromium and that's it).

Upgrading Podcastparser helped, but there's still one issue.

I was able to fix my problems (mostly), by updating to podcastparser 0.6.1, with my podcasts now restoring properly from my list of podcasts saved on gpodder.net, with one exception, a specific podcast that still fails, whether I try using the restored list from gpodder,net, or when I tried to manually add the problem podcast URL into the "Add podcast via URL" option.

http://media.wfyi.org/wfyi/audio/IWIR/IWIR.rss
...which gives me the following text in the popup:
Could not add some podcasts
Some podcasts could not be added to your list:
http://media.wfyi.org/wfyi/audio/IWIR/IWIR.rss: bad request

I can also confirm that reverting to 3.9.1 gives me no such woes, so something about this specific podcast must be choking 3.9.2, but (again) I have no idea what.
Here is the capture of "gpodder --verbose |& tee gpodder-3.9.2_error.txt"

gpodder-3.9.2_error.txt

As an aside, I inserted the "&" to the capture command because it was insufficient to capture only stdout to get tee to save the errors, but I needed instead to capture stderr for that purpose.
Thanks very much for getting me 95% of the way there, really, but there's clearly at least one tiny bug that will force me to stick with the previous version of gPodder for the time being.
I'll help in any way I can still, all the better to see to it that others won't likewise have problems.

A Few Small Suggestions

I just started using gPodder and really like it, but I feel it's missing a few basic features/options (and if these options already exist, I'd suggest making them easier to find or at least include them in the help page):

  1. Tray icon with options to close-to-tray and minimise-to-tray (and start-minimised-to-tray). I like to leave the program running throughout the day, kinda irritating to have it on the task bar the entire time. I'm currently using RBTray to force gPodder to the system tray, but a native tray option would be better.

  2. Option to start with the OS at boot.

  3. Make it easier to define a download location. The only way I found to do it was to "mount" a file system folder as a device, but even after all of that tinkering it didn't work for me when I ran the sync tool. Seems needlessly convoluted, regardless.

  4. Audio notifications or perhaps a tray balloon notification for new episodes.

That's all, just a few small things, otherwise the program is perfect!

Thanks for reading!

After deleting an episode the selectin should be set on the next or previous episode

If I delete an episode - either via the DEL-key or via Episodes/Delete (my translation) - the next cursor up/down key press, will jump to the first episode in the window.
I would like to have it moving to the next episode after the deleted one instead.
(The even better solution would be if gpodder remembers the last direction used and move it in this direction)

Link to AppImages once they are in sync with our Linux builds

Help -> Software updates -> "New version available" -> "Download the latest version from gpodder.org?" -> "Yes" -> Linux/BSD: Install via the package manager -> Available in most distributions (Debian, Ubuntu, Fedora, ...)

There is no newer one for my distribution.

Can gPodder provide a download on the homepage, like for Windows and macOS?

ValueError: need more than 0 values to unpack

GPodder invited me to report this problem, so I am. Here is the console output :

$ gpodder
1473588883.928676 [gpodder.sync] WARNING: Could not find gpod
1473588883.930683 [gpodder.sync] WARNING: Could not find eyed3.mp3
/usr/share/gpodder/extensions/ubuntu_unity.py:59: PyGIWarning: Unity was imported without specifying a version first. Use gi.require_version('Unity', '7.0') before import to ensure that the right version gets loaded.
  from gi.repository import Unity, GObject
1473589091.732538 [gpodder.my] WARNING: Flush requested, but sync disabled.
1473589485.250578 [gpodder.my] WARNING: Flush requested, but sync disabled.
1473589485.341347 [gpodder.log] ERROR: Uncaught exception: Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/gpodder/gtkui/main.py", line 2240, in on_after_update
    self.update_podcast_list_model(select_url=url)
  File "/usr/lib/python2.7/dist-packages/gpodder/gtkui/main.py", line 2075, in update_podcast_list_model
    self.podcast_list_model.update_all()
  File "/usr/lib/python2.7/dist-packages/gpodder/gtkui/model.py", line 732, in update_all
    self.update_by_iter(row.iter)
  File "/usr/lib/python2.7/dist-packages/gpodder/gtkui/model.py", line 755, in update_by_iter
    zip(*[c.get_statistics() for c in channels]))
ValueError: need more than 0 values to unpack

Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/gpodder/gtkui/main.py", line 2240, in on_after_update
    self.update_podcast_list_model(select_url=url)
  File "/usr/lib/python2.7/dist-packages/gpodder/gtkui/main.py", line 2075, in update_podcast_list_model
    self.podcast_list_model.update_all()
  File "/usr/lib/python2.7/dist-packages/gpodder/gtkui/model.py", line 732, in update_all
    self.update_by_iter(row.iter)
  File "/usr/lib/python2.7/dist-packages/gpodder/gtkui/model.py", line 755, in update_by_iter
    zip(*[c.get_statistics() for c in channels]))
ValueError: need more than 0 values to unpack
1473589497.504817 [gpodder.gtkui.main] ERROR: Exception happened while updating download list.
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/gpodder/gtkui/main.py", line 1163, in update_downloads_list
    self.update_podcast_list_model(channel_urls)
  File "/usr/lib/python2.7/dist-packages/gpodder/gtkui/main.py", line 2080, in update_podcast_list_model
    self.podcast_list_model.update_sections()
  File "/usr/lib/python2.7/dist-packages/gpodder/gtkui/model.py", line 737, in update_sections
    self.update_by_iter(row.iter)
  File "/usr/lib/python2.7/dist-packages/gpodder/gtkui/model.py", line 755, in update_by_iter
    zip(*[c.get_statistics() for c in channels]))
ValueError: need more than 0 values to unpack
1473589583.892281 [gpodder.log] ERROR: Uncaught exception: Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/gpodder/gtkui/main.py", line 2426, in update_progress
    self.update_podcast_list_model([channel.url])
  File "/usr/lib/python2.7/dist-packages/gpodder/gtkui/main.py", line 2080, in update_podcast_list_model
    self.podcast_list_model.update_sections()
  File "/usr/lib/python2.7/dist-packages/gpodder/gtkui/model.py", line 737, in update_sections
    self.update_by_iter(row.iter)
  File "/usr/lib/python2.7/dist-packages/gpodder/gtkui/model.py", line 755, in update_by_iter
    zip(*[c.get_statistics() for c in channels]))
ValueError: need more than 0 values to unpack

Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/gpodder/gtkui/main.py", line 2426, in update_progress
    self.update_podcast_list_model([channel.url])
  File "/usr/lib/python2.7/dist-packages/gpodder/gtkui/main.py", line 2080, in update_podcast_list_model
    self.podcast_list_model.update_sections()
  File "/usr/lib/python2.7/dist-packages/gpodder/gtkui/model.py", line 737, in update_sections
    self.update_by_iter(row.iter)
  File "/usr/lib/python2.7/dist-packages/gpodder/gtkui/model.py", line 755, in update_by_iter
    zip(*[c.get_statistics() for c in channels]))
ValueError: need more than 0 values to unpack
ii  gpodder        3.9.0-2
$ cat /etc/lsb-release 
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.1 LTS"

Syncing multiple files to device takes too long

Does gPodder copy podcasts to the device one at a time or all at once? I ask because syncing multiple files to my Sansa Clip Zip takes much longer than simply copying them with the file manager, which does them one at a time.

Example (two podcasts, ~50 MB each):

  • Nautilus: 25 seconds (including safely ejecting)
  • gPodder: 110 seconds

gtk3 migration

The gtk3 branch launches gPodder but some things are broken.
Is it on the right track? What's left for gtk3 migration?
What are the tough points?

Unicode error with certain episodes when syncing to device

I get the following error in my log when trying to synchronize certain podcasts with my device:

2016-07-30 14:13:14,355 [gpodder.log] ERROR: Uncaught exception: Traceback (most recent call last):
  File "C:\Program Files (x86)\gPodder\src\gpodder\gtkui\desktop\sync.py", line 282, in check_free_space
    resume_sync([],[],None)
  File "C:\Program Files (x86)\gPodder\src\gpodder\gtkui\desktop\sync.py", line 193, in resume_sync
    playlist.write_m3u(episodes_for_playlist)
  File "C:\Program Files (x86)\gPodder\src\gpodder\gtkui\desktop\deviceplaylist.py", line 110, in write_m3u
    filename = self.get_absolute_filename_for_playlist(current_episode)
  File "C:\Program Files (x86)\gPodder\src\gpodder\gtkui\desktop\deviceplaylist.py", line 89, in get_absolute_filename_for_playlist
    filename = os.path.join(util.relpath(self.mountpoint, self._config.device_sync.device_folder), filename)
  File "C:\Python27\Lib\ntpath.py", line 84, in join
    result_path = result_path + p_path
UnicodeDecodeError: 'utf8' codec can't decode byte 0x92 in position 26: invalid start byte

According to this answer, 0x92 is a Windows "smart quote", and I do see quite a few smart quotes scattered throughout various episode titles.

When I throw some debugging statements into deviceplaylist.py, it does indeed to be halting on episodes that contain apostrophes and quotes.

gtk3: Right-click context menu not available on Progress tab

On the Progress tab you can right click downloading, failed, and queued episodes to perform various actions including as retry (after failure) and cancel.

On the gtk3 branch, right-click has no effect. A context menu is not opened. There is no other way to access the functionality provided by the menu, thus no workaround.

Right-click works as expected on the "Podcasts" tab.

Pagination in Soundcloud

gPodder currently only supports the Standard-API Limit of 50 tracks. Could you maybe raise that to the maximum of 200? I follow some podcasts on there, that are already at over 150 tracks. Even better would be to use pagination to always get all tracks: ttps://developers.soundcloud.com/docs/api/guide#pagination
Sadly i can't do it myself as i am a total noob to Python right now.
Cheers.

tag downloaded file extension broken

Traceback:
1475429785.313095 [gpodder.extensions] ERROR: Error in /home/elelay/devel/gPodder/share/gpodder/extensions/tagging.py in on_episode_downloaded: 'OggFile' object has no attribute 'container'
Traceback (most recent call last):
File "/home/elelay/devel/gPodder/src/gpodder/extensions.py", line 83, in handler
cb_res = callback(_args, *_kwargs)
File "/home/elelay/devel/gPodder/share/gpodder/extensions/tagging.py", line 181, in on_episode_downloaded
self.write_info2file(info, episode)
File "/home/elelay/devel/gPodder/share/gpodder/extensions/tagging.py", line 259, in write_info2file
audio.write_basic_tags()
File "/home/elelay/devel/gPodder/share/gpodder/extensions/tagging.py", line 95, in write_basic_tags
if self.container.config.set_artist_to_album:
AttributeError: 'OggFile' object has no attribute 'container'

"Stream" option disabled

I am using gPodder on Ubuntu Gnome 16.04 LTS.

For all my subscribed Podcasts (including all recommended ones) the right-click option "stream" is disabled. I am not sure if I am missing a dependency that makes this feature work, or if the feature is redundant.

Thanks for this software, apart from this issue it's really great!

gtk3: Should menu items of the menu bar have icons?

In gtk2, most menu entries had a pictorial glyph associated with the text to indicating the action.

In gtk3, these images are currently absent. This implementation decision was intentional because images are "out of fashion."

Are users okay not having images in under the menu bar?

From #150

Client is opening an insane amount of parallel connections

We recently noticed a single IP address that had 199 connections open to one of our webservers. According to our logfiles the UserAgent used by this address was "gPodder/3.9.0 (+http://gpodder.org/)". Our anti-dos procedures effect an automatic ban against an IP when the number of concurrent active downloads cross a certain threshold. According to our logs, the client in question actually did start 199 concurrent downloads of 199 unique files from the same series of podcasts. This is a complete waste of resources both for the client in question and for the webserver it is downloading from. It would make much more sense to limit the number of parallel downloads to a more sane value of say four to six, so the user actually benefits from receiving complete files instead many dozens of incomplete ones before some firewall rule kicks in. The overall bandwidth consumed would probably stay the same, the overall transfer speed would probably increase as the overhead for handling so many connections in parallel would decrease; allowing the client to initialize several dozens of parallel connections just doesn't make any sense, unless you wish to promote this client as some kind of Denial of Service tool.

Kind regards

Markus

Installed gPodder 3.9.0 and it won't launch.

I downloaded gpodder 3.9.0, pygtk 2.24.2 and python 2.7.10.

When I double-click on gpodder, it doesn't do anything. (Starts and stops without UI).

In looking at Process Monitor, gpodder is attempting to access a series of sub-folders under the gpodder install folder just before it exits. Things like "site", "lib", etc. I'm wondering if maybe there's supposed to be an environment variable or something that points gpodder to the python stuff? Or was it supposed to be installed under gpodder?

Here's the contents of my gpodder install folder, including folders.
"C:\Program Files (x86)\gPodder\gpodder.exe"
"C:\Program Files (x86)\gPodder\README"
"C:\Program Files (x86)\gPodder\unins000.dat"
"C:\Program Files (x86)\gPodder\unins000.exe"
"C:\Program Files (x86)\gPodder\bin"
"C:\Program Files (x86)\gPodder\share"
"C:\Program Files (x86)\gPodder\src"
"C:\Program Files (x86)\gPodder\COPYING"
"C:\Program Files (x86)\gPodder\gpo.exe"

gPodderProblem.zip
[email protected]
Leo V.

Feature Request: Close to Tray

I keep gPodder running throughout the day and would love to have the ability to minimise it to the tray. I currently use a third-party tool to let me do this (RBTray) but it would be more ideal to have gPodder handle it natively.

Cheers!

gPodder and its growing forgetfullness

gPodder has been exhibiting strange behaviours lately in relation to its database of podcasts and downloaded episodes. In particular, whenever a new episode is downloaded and played, that same episode will later turn up as new and not yet downloaded, even though it is downloaded and in its respective folder. This happens to several of my podcast subscriptions. I have about 50 podcast subscriptions in gPodder. I don't sync or have this option enabled so this rules out the cause. Is this an issue with gPodder where it cannot handle a large database of podcast subscriptions, since this has only recently started to occur? Any thoughts appreciated since gPodder is my favourite podcast manager and I'd hate to migrate to some other software just so I don't have this issue. It's quite annoying to see downloaded episodes as new since it can cause confusion especially with a large database of podcasts.

gtk3: `Gtk Status Icon` extension unavailable

The "Gtk Status Icon" under Extensions > Desktop integration does not work on the gtk3 branch.

Extension cannot be activated

'gi.repository.Gtk' object has no attribute 'status_icon_new_from_icon_name'

Initially reported as a comment on #150

Tagging extension broken on Manjaro 16.10

Since updates over the past 2 months, the tagging extension does not appear to be working properly. For instance, after download, the genre is not changed to the default.

I have tried modifying the code, but cannot locate the problem. Here are the versions I am using:

  • gpodder 3.9.1
  • mutagen 1.34.1-1
  • python 3.5.2

I have tried downgrading my mutagen with no luck. Any help would be greatly appreciated!

gtk3: Empty tree views do not indicate why

On gtk2,
On the Podcasts tab,
the main GtkTreeView will say (centered text) "Loading..." when the application has launched but before the list of episodes has been populated.
I believe there may be different text when it has completed loading but no episodes were found.

On the Progress tab,
The GtkTreeView will say "No active tasks" when it has an empty queue.

On gtk3,
The GtkTreeView on both tabs does not have any text, thus users do not know whether they are still waiting on loading or if it is correctly blank.

Feature request : "send to" enhancement

Hi,

I have a feature request.

I download episodes on my computer, and after download complete, copy them to Usb device with the "send to" gpodder feature.

  1. For each file, a file dialog box appears to ask me folder/filename. I would like a unique dialog asking me the folder only one time, not asking me a confirmation for each file. (or a checkbox on the actual dialog box : [x] use same folder for next files?)

  2. During copying, on slow device like usb, ... the file dialog box stays "frozen" (submit button checked but dialog box staying visible... ).

  3. Because copying is takes long time (slow device/big file), I switch to another app for working.... And, when gPodder finished copying current file, the file dialog box appears to ask about the next file, even gppoder is executing in background. So during entering data in the application, the dialog box appears and intercept keyboard entry... and what I was entering in my other app is erasing dialog box filename edition.

Best regards,

Sorry for my poor english.

(gPodder 3.9.0 / xubuntu 16.10)

Patreon private podcast feeds unsubscribeable

I donate monthly to a couple podcasts on Patreon and they have a few exclusive episodes per month. They all have a private RSS link for their exclusive episodes that looks like https://www.patreon.com/rss/campaign_name?auth={32 character hex string}

When I paste them into the subscribe by URL field in gPodder, nothing happens. One (or both) of two things could be the issue: gPodder sees the URL as invalid or Patreon sees the User-agent string gPodder sends (gpodder.user_agent) and blocks it. There's nothing in the log files to suggest what exactly is happening and gPodder doesn't pop any dialog windows up to report the error.

Frequent 403 errors on youtube videos

gpodder fails to download a significant portion of youtube videos, reporting an http 403 error. I suspect this has something to do with uploader settings, because it only happens on certain channels, usually larger ones and they are usually music-related, whereas I never have problems with smaller channels. The videos download perfectly fine using youtube-dl. How difficult would it be to add an option to hook into the installed version of youtube-dl, similar to what mpv does?

Example video: https://www.youtube.com/watch?v=Z0RO1SCcanY
from feed https://www.youtube.com/feeds/videos.xml?user=nyuualiaslucy

Specs:
Arch Linux x86_64, kernel version 4.7.4
gpodder3 version 3.9.1 (2016-08-31) "My BLT Drive Just Went AWOL"

KeyError: 0 when updating feeds with PyXML installed and gPodder 3.9.2

Well, I was a bit excited that a new revision of gPodder had been released, so I dutifully downloaded, then installed it.
The first error I noticed was that, although it seemed to be going through the process of checking for new episodes in my existing list of podcasts, it consistently failed to download any new podcasts, even though I knew new ones were coming in over just the last few minutes.
Failing that, I deleted my GPODDER_HOME directory (.gPodder for me), then started it again, this time attempting to retrieve my complete podcast list that I had saved on gpodder.net.
Again, it seemed to be downloading the list, even showing the names of all the podcasts, at which point I clicked "Select All" to allow it to load them, then waited, only to see it fail on all of them, with the error you can see in the screenshot below:

gpodder_error

I also saved the terminal output for more information, and you can see that below:

out.txt

I have never had this problem with all the many revisions of this excellent (there is not even a single other RSS feed/podcast downloader that approaches how good gPodder is) program, but I value being able to listen to my daily podcasts, so I reluctantly deleted 3.9.2 and reinstalled 3.9.1 for now, and I'm back to being able to download my podcasts, although I had to first delete my GPODDER_HOME directory, then restore from my backed up copy of the same directory from before I had tested 3.9.2, because the older revision of gPodder refused to download a thing until then, which makes it clear that the newer revision had somehow polluted the directory.
I'm still able to get my podcasts, but I have to stick to the older revision for the time being until I figure out what's wrong with the new revision.
Thanks in advance for anything you can help me with.

Allow user to configure API key for Sound Cloud

Sometimes when trying to play or download an episode, nothing happens (at least in the Sailfish OS version). If running from the terminal I see that Sound Cloud complains about "Too many requests". The API key doesn't seem to allow enough requests. Would it be possible to ask them for a higher limit?

'NoneType' object has no attribute 'get_selected'

After selecting some podcast episodes to be downloaded, I got this message:

Unhandled exception

Please report this problem and restart gPodder:

'NoneType' object has no attribute 'get_selected'

Send multiple episodes to the same folder

If you select multiple episodes and choose "Send to -> Local folder", the user is prompted to specify the name and location individually for each episode. This is slow and tedious if the user wants to put all episodes into the same folder and use the default name.

The desired behavior would be to choose only a folder when multiple episodes are selected. All selected episodes would then be saved to that folder using the default name gPodder suggests for the episode.

Would changing the default behavior when multiple episodes are selected be accepted or is an alternate menu item needed?

Youtube video descriptions are not displayed

Running 3.9.1 Youtube video descriptions are not displayed. In older versions, e.g. 3.8.x, the issue could be resolved by installing the package libwebkitgtk (depending on the distribution, in my case OpenSUSE), however now the problem remains and any youtube channel only displays the title of the video and the channel name. The RSS feed associated with the channels follow the format: https://www.youtube.com/feeds/videos.xml?channel_id= followed by the alphanumeric sequence associated with the channel in the API (e.g. UCzH3iADRIq1IJlIXjfNgTpA for the RoosterTeeth channel.)

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.