Commit Graph

3319 Commits

Author SHA1 Message Date
auouymous 3c62528ec9 Wait for worker threads to finish before quitting.
Closing gpodder while tasks are downloading or pausing causes a hang and
must be killed from task manager or interrupted if launched from command
line. This was introduced in ed5d18e1b0
but only applicable when using python 3.10. The idle_add() callback is
no longer invoked to wake up the dequeue wait_for() condition, likely
due to the main thread terminating early, which didn't happen in older
python versions. Simply waiting for all worker threads to terminate
fixes the issue.

Fixes #1306.
2022-06-22 13:51:23 -06:00
Eric Le Lay b1bd429be0
Merge pull request #1246 from auouymous/ondemand-html-description
Generate HTML episode description only when needed.
2022-06-20 13:25:00 +02:00
Eric Le Lay 0acaee4ef9 get chapters from feedparser 2022-06-19 11:56:12 -06:00
auouymous 0fe74c18d2 Generate HTML episode description only when needed.
PR #1094 generated an HTML description for any episode that lacked one.
That however increased the database size (almost double in worst case)
because it was storing both text and html versions of each description.
This fixes that by storing the episode thumbnail URL in the database and
generating the HTML description only when shownotes are drawn.

The text description is now cleared for episodes with an HTML
description. This further reduces database size for feeds that provide
both. It also fixes an issue for feeds that provide different text and
HTML descriptions, because the short description would show the text
description and shownotes would show the HTML description. And EQL only
searched the text descriptions, which might not match what the user sees
in the shownotes.
2022-06-19 11:56:12 -06:00
auouymous 97d9459b90 Add episode art URL and chapters to database.
Co-authored-by: Eric Le Lay <elelay@macports.org>
2022-06-19 11:56:12 -06:00
JKAbrams 0a51542ab5
Add download retry without authentication if auth is set (#1300)
* Add download retry without authentification if auth is set
2022-06-16 15:37:30 -07:00
auouymous 4d4ad7f7cb Make the About dialog text selectable to copy version.
Fixes #1302.
2022-06-16 16:27:05 -06:00
auouymous c9ad2b6884 Add setting to disable find-as-you-type.
The new setting defaults to enabled to preserve the current behavior of
opening search fields in channel and episode lists when the user begins
typing. Disabling the feature ignores the keypresses and requires ctrl-f
or ctrl-shift-f to open or focus the search field.
2022-06-10 23:26:09 -06:00
Teemu Ikonen 7019eb8870 Allow marking non-dowloaded episode as deleted 2022-06-08 23:16:18 +03:00
Teemu Ikonen b7b0a87ecd Re-enable update_channel_action after update 2022-06-08 23:16:15 +03:00
auouymous ce6ba8eced Remove space between 'more' and ellipsis character. 2022-06-07 13:37:13 -06:00
auouymous f8d1b22909 Use ellipsis character instead of '...' for deleted titles. 2022-06-07 13:34:15 -06:00
Thomas Perl a9726153c7
iPod support restored using ctypes and libgpod (#1289)
* iPod support restored using ctypes and libgpod
2022-06-02 17:41:42 -07:00
Teemu Ikonen 4996a58475 Fix codestyle (make lint) 2022-06-02 20:59:12 +03:00
Teemu Ikonen 6105ec55e4 preferences: Add a hack to maximize on mobile screen 2022-06-02 20:59:08 +03:00
Teemu Ikonen 223b9fb9a5 Add flap to desktop/preferences.py 2022-06-02 20:58:06 +03:00
Teemu Ikonen b270471c17 Use desktop.preferences dialog 2022-06-02 20:58:06 +03:00
Teemu Ikonen 867fe57185 Require Gdk version 3.0 everywhere 2022-06-02 20:58:06 +03:00
Teemu Ikonen bce111451f Merge branch 'master' into dev-adaptive 2022-05-15 13:55:56 +03:00
Teemu Ikonen 241c656b15 Do not mark episodes streamed from episode selector as played 2022-05-15 13:40:56 +03:00
Teemu Ikonen 40e524b8ab episodeselector: Add a Stream button 2022-05-15 13:40:44 +03:00
auouymous 3e827c771b Recycle forced download tasks when finished.
Using "Start download now" creates a forced task that wasn't recycled
when it finished. This prevented it from being deleted because
can_delete() returns False for tasks in the DONE state.
2022-05-13 20:27:21 -06:00
Eric Le Lay 5eeda318f4
Fix #864 add undownload checkbox in delete episode confirm dialog (#1284)
* Fix #864 add undownload checkbox in delete episode confirm dialog

don't mark episodes new if we don't delete them now

when a mix of downloaded and not downloaded and old episodes
are selected
2022-05-13 01:35:32 -07:00
auouymous 14ea9008fc
Merge pull request #1285 from auouymous/open-episode-download-folder
Add context menu item to open episode download folder.
2022-05-13 00:40:00 -07:00
auouymous b91ea586bc Add open download folder menu item to Episodes menu. 2022-05-13 01:37:13 -06:00
auouymous 741530f5fe
Merge pull request #1287 from auouymous/fix-warnings
Fix warnings
2022-05-13 00:22:08 -07:00
auouymous f6a919759f Remove erroneous logger parameter when failing to get Youtube GDPR URL.
Reported-by: Teemu Ikonen <tpikonen@gmail.com>
2022-05-08 16:09:21 -06:00
Teemu Ikonen 03a6aabf96 Merge branch 'master' into dev-adaptive 2022-04-30 23:48:12 +03:00
auouymous 33aaf2a4eb Close config file after loading it.
Prevents a ResourceWarning when all warnings are enabled.
2022-04-29 02:54:32 -06:00
auouymous 41c312dd68 Change deprecated logger.warn() to logger.warning(). 2022-04-29 02:54:32 -06:00
auouymous 389d096854 Close extension file after reading metadata.
Prevents a ResourceWarning when all warnings are enabled.
2022-04-29 02:54:32 -06:00
auouymous 961f0d72bb
Merge pull request #1274 from tpikonen/narrow-prefs
A narrower preferences dialog
2022-04-29 01:48:13 -07:00
Teemu Ikonen 3a5a8ce990 preferences: Ellipsize playlist folder button label 2022-04-29 11:40:28 +03:00
auouymous 125ee1dfd2 Add context menu item to open episode download folder.
Closes #579.
2022-04-26 04:43:15 -06:00
auouymous f49068311e
Merge pull request #1272 from auouymous/show-episodes-without-enclosures
Show episodes without downloadable content.
2022-04-26 00:12:58 -07:00
Thomas Perl 3cbb36167c Gtk UI: Handle links in HTML shownotes 2022-04-23 13:54:31 +02:00
auouymous 16777ba5eb Enable new status toggle in Episodes menu when any episode is selected.
The menu item was only enabled when the selected episode could be played
or streamed. It was always enabled in the context menu but the keyboard
accelerator could not be used if the episode was not downloaded and not
streamable.

This also forces the play toolbar button to always show the 'open'
label and icon in the progress tab, instead of whatever random state it
was in before.
2022-04-19 04:13:57 -06:00
auouymous 5d304cbf3d Add comments about never unsetting play_or_download() flags once set. 2022-04-19 01:36:03 -06:00
auouymous 3a4b06f3eb
Merge pull request #1269 from auouymous/can-lock
Allow toggling lock of any locked or undeleted episode.
2022-04-19 00:29:10 -07:00
auouymous 1cc7941331 Show episodes without downloadable content.
Non-media RSS feeds only have a textual description and can't be
subscribed to in gpodder. Some media feeds lack downloadable content and
can only be accessed from the website. In both cases, gpodder removes
the episodes without any feedback to the user as to why, making it
appear to be a problem in gpodder.

This patch adds those episodes but prevents automatic download and
displays a proper error when a manual download is attempted. The
episodes also get a web browser icon to indicate they lack downloadable
content. While not downloadable or transferable to media devices,
gpodder can be used to notify the user when new episodes are available
and they can be accessed by clicking through to the website
2022-04-19 01:24:20 -06:00
lexolexo 778f5b708c
Added logic to trim away leading/trailing whitespaces in user-clipboard auto-inputted urls (#1276)
* Added logic to trim away leading/trailing whitespaces in user-inputted
urls. Tested against current gpodder-installe executable for correct/
desired behaviour. simplified receive_clipboard_text method of class
gPodderAddPodcast in addpodcast.py
resolves #520
2022-04-16 22:11:10 -07:00
Teemu Ikonen d6447d1bfb preferences: Enable word wrapping in checkbox labels 2022-04-13 16:28:25 +03:00
Teemu Ikonen 3d85283bac preferences: Allow a narrower Video page
* Replace Grid with FlowBox in Video page
 * Don't set hexpand on ComboBoxes
 * preferences.py: Ellipsize video format selector combobox strings
2022-04-13 16:28:25 +03:00
Teemu Ikonen b1ef6e0859 preferences: Allow a narrower Devices page
* Enable word wrap in labels
 * Replace GtkGrid with two vertical GtkBoxes
 * Add bottom margins to checkbuttons as label wrapping space
 * preferences.py: Ellipsize device button label, replace deprecated
   set_alignment() with set_xalign()
2022-04-13 16:28:25 +03:00
Teemu Ikonen cd15106eac Merge branch 'master' into dev-adaptive 2022-04-12 16:53:23 +03:00
Teemu Ikonen d3ccce258c
preferences: Use GtkStack instead of GtkNotebook (#1261)
* preferences: Use GtkStack instead of GtkNotebook

* Add Separator and ScrolledWindow to StackSwitcher

* Add ScrolledWindow to preferences Stack

Remove ScrolledWindow from Extensions page.
2022-04-10 04:17:53 -07:00
auouymous 8cefb936c5 Allow toggling lock of any locked or undeleted episode.
This allows undownloaded episodes to be locked with both menus and
guarantees both menus remain consistent.
2022-04-10 03:48:59 -06:00
Teemu Ikonen 0ab57fb2b1 Fix 'Mark episodes as old' context menu item 2022-03-25 23:43:18 +02:00
Teemu Ikonen c156e15ed3 Don't use shownotes keyboard callback 2022-03-25 23:43:18 +02:00
Teemu Ikonen 52e631bc73 gPodderShownotesLabel: Double html.escape link titles 2022-03-25 23:43:18 +02:00
Teemu Ikonen 542a3a9a2a Merge branch 'master' into dev-adaptive 2022-03-25 22:52:37 +02:00
Teemu Ikonen fb0b45dfe1 Merge commit 'a35e81fe0e52fc1d91ec3ebce4b1da4a4fea0ed9' into dev-adaptive 2022-03-25 22:23:55 +02:00
Teemu Ikonen b4892c3baa Merge commit '5043b0b192b80a061376faee3abecbb7406c61a1' into dev-adaptive 2022-03-25 21:47:56 +02:00
Teemu Ikonen 96db3d7cd4 Merge commit 'bc65930578445e7614a0b99874f33faadba88277' into dev-adaptive 2022-03-25 21:28:15 +02:00
Teemu Ikonen 57589db825 Merge commit '91829b82f6831f1bea7b5d7701117c52463f350b' into dev-adaptive 2022-03-25 21:22:24 +02:00
Teemu Ikonen d3fc65377f Merge commit 'cd35e29fa1d627d206b556421d92907a64ed028c' into dev-adaptive 2022-03-24 22:44:10 +02:00
auouymous 182abc575b Refactor play_or_download() progress tab action code.
Fixes an issue with the toolbar cancel button turning off and on when
entering the progress tab, even though it can't cancel anything until a
selection is made.

Properly cancels failed tasks manually removed from progress tab. Not
cancelling would leave the error icon and prevent downloading or
cancelling.

The download, pause and cancel actions in toolbar and Episodes
menu can now be used to control downloads in the progress tab. The
delete menu item in Episodes menu removes the download from list. This
also allows keyboard accelerators to be used, such as the Delete key
for removing tasks. Accelerators for cancel, and maybe download/pause,
should added in a future PR.

The progress tab context menu now has the same ordering as the other
menus.
2022-03-23 18:53:38 -06:00
auouymous 01cd2696f7 Refactor play_or_download() episode action code.
Streaming was always possible (#867) for all audio and video episodes if
an audio player was configured. Now it is only possible if a player is
configured for the episode's type.

Methods have been added to PodcastEpisode that are either now used by
actions or replicate the conditions used by actions to filter
selections. This will help prevent mismatched conditions between
play_or_download() and episode actions. And play_or_download() is easier
to reason about and should prevent future bugs such as #1250.

Fixes #1250.
2022-03-20 02:50:46 -06:00
auouymous 5cbd3175b2 Group Play with Preview and Stream since all three use the same icon. 2022-03-20 02:40:51 -06:00
auouymous 5314617e1f
Merge pull request #1213 from auouymous/fix-1212
mount_volume_for_file() must only use Gtk when the Gtk UI is available.
2022-03-16 16:09:26 -07:00
auouymous f6bae4f780 Remove invalid parameter passed to Device.cancel().
Fixes https://github.com/gpodder/gpodder/issues/1212#issuecomment-1069661280
2022-03-16 17:03:03 -06:00
Eric Le Lay a35e81fe0e
Merge pull request #1249 from auouymous/set-episode-toolbar-menu-actions
Set episode toolbar and menu actions.
2022-03-16 22:44:40 +01:00
Eric Le Lay 2ee8c23b31 fix #1227 pixbuf could be None in some cases
I couldn't reproduce it but I guess it's possible
2022-03-16 22:29:18 +01:00
Eric Le Lay 5043b0b192
Merge pull request #1248 from auouymous/cancel-failed-tasks
Allow failed downloads to be cancelled from episodes list.
2022-03-16 21:10:01 +01:00
auouymous dabd6b3353 Also toggle delete in Episodes menu when toggling lock. 2022-03-16 05:39:19 -06:00
auouymous de2094253a Set episode toolbar and menu actions.
Items in the Episode menu were not disabled when the progess tab was
opened. This consolidates the enabling and disabling of buttons in the
toolbar and items in the Episodes menu, and fixes that issue.

It also changes the label and icon for the toolbar play button to be
Open, Play, Preview or Stream.
2022-03-16 05:15:44 -06:00
auouymous 3a60f36876 Disable episode delete menu item when it can't be used.
Locked episodes can not be deleted, but the delete menu item remained
active for them.
2022-03-16 02:38:12 -06:00
auouymous f0156e1bda Directly access the Extras menu to add extension menu items. 2022-03-16 02:20:26 -06:00
auouymous fdccfec41c Fix downloading file count when pausing or cancelling synchronizing tasks.
PR #1243 added separate pausing and cancelling counts, and included them
in the downloading file count. However, synchronizing tasks can also be
pausing or cancelling and would erroneously be included in the
downloading file count.
2022-03-16 01:58:34 -06:00
auouymous f91f9e29b1 Change order of progress button status counts. 2022-03-16 01:47:36 -06:00
auouymous 6731b63706 Allow failed downloads to be cancelled from episodes list.
This not only removes the failed download from the progress list, but
also removes the error icon from the episode list.
2022-03-15 19:51:45 -06:00
auouymous bc65930578
Merge pull request #1244 from auouymous/undelete-episode-on-download
Undelete deleted episodes when a download is attempted.
2022-03-15 15:06:45 -07:00
auouymous 4313db72c0
Merge pull request #1243 from auouymous/nr-cancelling-pausing-tasks
Show number of pausing and cancelling tasks in progress tab.
2022-03-15 15:04:55 -07:00
auouymous 91829b82f6
Merge pull request #1242 from auouymous/pause-resume
Add pausing and resuming from Episodes and context menus, and toolbar.
2022-03-15 14:58:00 -07:00
JuanCanham d7b5843123
Make error message more verbose on NotFound sync error (#1235)
* Make error message more verbose on NotFound sync error

* Add Spanish translation

Co-authored-by: Rioting Pacifist <linux@riotingpacifist.net>
2022-03-08 21:59:40 -07:00
auouymous d0ad77b9a7 Undelete deleted episodes when a download is attempted.
In the event of a download failure, the error icon will properly
display, and the episode will remain undeleted after a restart for
another download attempt.
2022-03-08 17:38:50 -07:00
auouymous e1d90d8765 Show number of pausing and cancelling tasks in progress tab.
These transitions can sometimes take a while and this will provide some
feedback to the user that the transition is happening.
2022-03-08 17:06:31 -07:00
auouymous 6f0f623ead Add pausing and resuming from Episodes and context menus, and toolbar.
Queued and downloading episodes can now be paused from the episode list,
and the download button can then be used to resume the paused episode.

Fixes #1162.
2022-03-08 06:21:10 -07:00
auouymous a83b750459 Catch youtube 404 errors.
Avoids parsing the 404 error page as XML and then throwing malformed XML
errors.
2022-02-27 20:46:50 -07:00
auouymous 20dd397e9e Memoize youtube channel ID and feed data.
Internal youtube support and the youtube-dl extension both cause the
youtube feed URL to be fetched three times per update. Caching the feed
data from feedcore allows internal support to only load the feed once.
The lru_cache removes one of the youtube-dl fetches, not perfect, but
two is better than three. I saw a 40% decrease in update times when
using the internal youtube code.

Throwing an exception from get_channel_id_url() prevents get_cover() and
get_channel_desc() from attempting to fetch a None URL, and provides
more accurate errors.

The lru_cache on get_youtube_id() saves 1ms per youtube channel when
updating. Which adds up with a lot of channels, and might be more on
slower devices.
2022-02-27 02:52:06 -07:00
auouymous f7497c617a Create partial file when reusing cancelled tasks.
The partial file for a cancelled task is deleted, but the task is not
removed from progress list while other tasks are downloading.
Downloading the cancelled episode again would reuse the existing task
without creating a new partial file. This prevented resuming the
download after restarting gPodder, and caused the youtube-dl extension
to fail if used to re-download it.
2022-02-08 03:57:22 -07:00
auouymous 8f9b95bfb8
Merge pull request #1219 from auouymous/ytdl-partial-files
YoutubeDL partial file fixes
2022-02-07 23:17:42 -07:00
auouymous 61b13f514a Add mnemonics for channel and podcast directory dialog buttons. 2022-02-06 02:33:18 -07:00
Teemu Ikonen e9cb4e9eaa Fix typo on do_save_episode() strings 2022-02-05 22:22:38 +02:00
Teemu Ikonen 3f64a58fa9 gPodderExportToLocalFolder: Use GtkDialog.add_buttons()
Create the dialog buttons with GtkDialog.add_buttons(). This places them
either to the dialog action area, or to the headerbar, accoording to the
system setting.

Also set 'do-overwrite-confirmation' property of the Dialog to False.
2022-02-05 22:22:38 +02:00
Teemu Ikonen cab3629813 Merge branch 'master' into dev-adaptive 2022-02-04 12:30:02 +02:00
Teemu Ikonen 4453316aa8 Merge tag 'merge5' into dev-adaptive 2022-02-04 12:22:51 +02:00
Teemu Ikonen 75c3d49b5e Merge tag 'merge4' into dev-adaptive 2022-02-04 12:07:33 +02:00
Teemu Ikonen 9aebe95020 Merge tag 'merge3' into dev-adaptive 2022-02-04 11:39:36 +02:00
Teemu Ikonen 28c5774f89 Merge tag 'merge2' into dev-adaptive 2022-02-04 10:56:20 +02:00
Teemu Ikonen 0e1c0b209e Merge tag 'merge1' into dev-adaptive 2022-02-04 10:55:32 +02:00
Teemu Ikonen 222dba31be GtkBuilderWidget: Remove '_builder_expose' kwarg, add '_gtk_properties'
The '_builder_expose' argument to GtkBuilderWidget.__init__() allowed
binding of names in the ui-file to objects defined outside of the
ui-file.

Glade does not allow setting properties to values which are not defined
in the ui-file, so we set GTK/Gobject properties explicitly. This is
made with a new kwarg '_gtk_properties' in GtkBuilderWidget.__init__()
which is a dict with a (object_id, property_name) key.
2022-02-02 12:14:30 +02:00
Teemu Ikonen cb61d76474 Replace Gtk.STOCK_ button labels with strings 2022-02-02 12:13:24 +02:00
Teemu Ikonen 282996cd16 Replace Gtk.STOCK_ icons with standard icon names 2022-02-02 09:31:27 +02:00
Teemu Ikonen 011718c032 gPodderShownotesHTML: Replace Gtk.Action with Gio.SimpleAction
Gtk.Action is deprecated.
2022-02-02 09:31:27 +02:00
auouymous 9d72872c50 Clean up parial files created by cancelled YoutubeDL downloads.
YoutubeDL can append an extension to the partial file, creating
additional partial files. Adaptive formats create up to three more
partial files. Cancelling a download will leave behind these extra
partial files, and requires manual removal outside of gPodder.
2022-02-01 22:09:00 -07:00
auouymous 41b8f52fbf mount_volume_for_file() must only use Gtk when the Gtk UI is available.
Fixes #1212.
2022-01-25 14:32:04 -07:00
auouymous 3ff7ed37a5 Show 'Syncing' in progress tab instead of 'Downloading' when syncing. 2022-01-25 00:58:27 -07:00
auouymous c2d70b5e29 deviceplaylist should require Gio, not Gtk.
Fixes #1212.
2022-01-24 14:27:23 -07:00
Eric Le Lay 8873604e2d fix #1212 Error when running from CLI
the Gtk import was there by mistake
2022-01-24 21:16:32 +01:00
auouymous 57045619d3 Also open dialog if xdg-open is not found when opening a folder. 2022-01-16 22:02:27 -07:00
Benedikt Wildenhain 34098c19fc
Open error dialog if user tries to use not-installed program
Currently trying to use default player (xdg-)open when it's not installed
will only cause messages on the console, which might not be visible to
the user. This PR creates an alert box in this case.

Fixes #1003.
2022-01-16 18:24:41 +01:00
Eric Le Lay 40fd34b14a
Merge pull request #1206 from auouymous/fix-1195
Fix shownotes for episodes that contain HTML comments.
2022-01-03 09:32:33 +01:00
auouymous 3938809dd5 Fix shownotes for episodes that contain HTML comments.
When html5lib is used, a function is returned for each comment in the
HTML. It should be safe to skip functions until something else is found
to use them that causes issues finding hyperlinks.

Fixes #1195.
2022-01-01 18:15:51 -07:00
Eric Le Lay b8065cadf7 fix 1190 ERROR: Could not create save_dir on windows
"C:\gpodder-xxx\config\Downloads" results in
scheme="c" and path="\gpodder-xxx\config\Downloads"
(not double backslash)
2021-11-28 22:02:12 +01:00
Eric Le Lay ec6b63960c
Merge pull request #1191 from gpodder/fix-1190-gio-windows
fix #1190 ERROR: Could not create save_dir on windows with gio
2021-11-06 16:12:11 +01:00
Eric Le Lay 00b421b929 fix #1190 ERROR: Could not create save_dir on windows with gio
util.new_gio_file returned a GDummyFile, where every operation failed,
in this case make_directory_with_parents.
2021-11-01 16:36:57 +01:00
Marcel Ackermann 2f42c11e59
remove unused import
closes https://github.com/gpodder/gpodder/issues/1187
2021-10-30 11:13:00 +02:00
auouymous 10e48a3ea5
Merge pull request #1174 from auouymous/fix-youtube-json
Improve Youtube initial player response regular expression.
2021-10-28 03:31:24 -07:00
auouymous ce99daf065
Merge pull request #1171 from auouymous/fix-1147
Fix youtube-dl re-download after a failed download
2021-10-28 03:27:56 -07:00
auouymous 5499658ee3
Merge pull request #1172 from tpikonen/stockless-episodeselector
Remove deprecated GTK features from episodeselector
2021-10-28 03:23:30 -07:00
Teemu Ikonen 5990e57a81 episodeselector: Add underline mnemonics to all buttons
Set use-underline on all buttons in gpodderepisodeselector.ui.

Add underscore mnemonics to the special 'gpodder-download' button and in
'remove-button' and 'ok-button' args of callers in main.py.
2021-10-18 15:30:54 +03:00
auouymous cae617701f Support youtube 'user' feed URLs in for_each_feed_pattern(). 2021-10-14 19:28:05 -06:00
auouymous 8a403d2783 Optimize get_youtube_id().
The watch URL is the most common and should be checked first. The swf
URL probably no longer works but can be kept for compatibility.
2021-10-14 19:19:12 -06:00
auouymous 6ced881d74 Improve Youtube initial player response regular expression.
The text may contain "};" patterns inside the initial player response.
And the non-greedy regex would fail to match the entire IPR, causing it
to fail during JSON decoding.
2021-10-13 21:58:24 -06:00
auouymous 8d0bfce460 Remove dead code in get_foreground_color(). 2021-10-13 15:34:26 -06:00
Teemu Ikonen ce66b5fa62 episodeselector: Remove GtkStock usage
* Rename gPodderEpisodeSelector constructor kwarg 'stock_ok_button'
   to 'ok_button'. Change callers in main.py to use it with text labels
   instead of Gtk.STOCK_* values
 * Set transient for parent widget
2021-10-12 23:14:14 +03:00
auouymous db2aa385d0 Cancel failed task before streaming.
livestream to be streamed, after realizing it was a livestream. This
however caused the youtube-dl extension to fail when downloading DRM
content after gpodder failed to download it, because the partial file
was missing.

This removes that fix and properly cancels the failed task before
streaming to remove the partial file.

Fixes #1147.
2021-10-11 20:11:18 -06:00
auouymous 263c4ad9fe Actually delete partial file when cancelling.
Calling run() with CANCELLED state only returns without performing any
work. The CANCELLING state actually deletes the partial file and
recycles the task.
2021-10-11 19:53:00 -06:00
Eric Le Lay 69e242184c
Merge pull request #1145 from auouymous/delay-window-position-restore
Delay restoring window position until after it has been shown.
2021-10-11 22:16:42 +02:00
Eric Le Lay 3aba6ddea5
Merge pull request #1156 from tpikonen/stockless-dialogs
Remove deprecated GTK features from simple dialogs
2021-10-09 18:06:01 +02:00
auouymous ab61a04d0c
Merge pull request #1161 from auouymous/paused-episode-icon
Paused episode icon
2021-10-05 18:48:25 -07:00
auouymous 9daca64e2e
Merge pull request #1160 from auouymous/use-icons-for-pausing-cancelling
Use icons when pausing or cancelling tasks.
2021-10-05 18:31:11 -07:00
Teemu Ikonen e8c6969abd gPodderExportToLocalFolder: Remove deprecated GTK stock items
gpodderexporttolocalfolder.ui:
 * Save with Glade 3.38.2
 * Replace GTK stock labels with text

exportlocal.py: Set transient for parent (was not set before)
2021-09-17 22:11:10 +03:00
Teemu Ikonen 6483059d41 gPodderConfigEditor: Remove deprecated GTK features
gpodderconfigeditor.ui:
 * Save with Glade 3.38.2, require GTK 3.16
 * Replace gtk-close with text label
 * Use Dialog internal action_area for Close button
 * Add underline accelerator for '_Show All'

configeditor.py: Set transient for parent
2021-09-17 22:11:10 +03:00
Teemu Ikonen 1ef54e3216 gPodderAddPodcast: Remove deprecated GTK stock items
gpodderaddpodcast.ui:
 * Save with Glade 3.38.2, require GTK 3.16
 * Set can-focus to True where needed
 * Replace GTK stock labels with text

addpodcast.py: Set transient for parent
2021-09-17 22:11:10 +03:00
Teemu Ikonen f1739d3212 gPodderWelcome: Remove deprecated GTK features
gpodderwelcome.ui:
 * Save with Glade 3.38.2
 * Replace gtk-cancel stock with text label
 * Replace padding with margins
 * Replace border-width with margins
 * Set can-focus to True on buttons

welcome.py: Set transient for parent
2021-09-17 22:11:10 +03:00
auouymous 6feb312936 Don't recycle failed or paused tasks. 2021-09-16 18:01:10 -06:00
auouymous d20fbbe8a0 Set a paused icon in episode list when an episode is paused. 2021-09-14 04:10:40 -06:00
auouymous d508a3df8d Show paused tasks in progress tab. 2021-09-14 03:34:27 -06:00
auouymous 65aa1c679a Use icons when pausing or cancelling tasks.
This avoids shifting the list left and then right for single tasks. It
also gives more feedback that the task is being paused or cancelled.
2021-09-14 02:40:17 -06:00
Mark Weaver ed5d18e1b0 fixes #1152 and an odd corner case (#1155)
* #1152: fix re-ordering downloads list

* fix downloading a task that's already been removed from the download list

* fix download/delete/download of the same episode

* fix pausing/cancelling sync tasks; clean up partially synchronised files

* fix cancelling a failed download

* make failed/paused/cancelled mutually exclusive so the code has less paths (and hopefully is easier to follow)
2021-09-14 00:53:15 -07:00
blushingpenguin c86c7412ae remove unused variables 2021-09-13 15:45:39 +01:00
Teemu Ikonen 2ded35705e
Preferences: Remove deprecated GTK features (#1154)
* gpodderpreferences.ui: Save with Glade 3.38.2

* gpodderpreferences.ui: Add tab label children

* gpodderpreferences.ui: Return notebook pages to correct order

* gpodderpreferences.ui: Use named icons, replace stock-ids

* gpodderpreferences.ui: Remove extra rows and columns from table_video

* gpodderpreferences.ui: Use traditional indicator for CheckButtons

* gpodderpreferences.ui: Set can-focus to True where appropriate

* gpodderpreferences.ui: Add border-width to mygpo_config

* gpodderpreferences.ui: Add margins around dialog ButtonBox

* gpodderpreferences.ui: Replace gtk-close stock label with text

* preferences.py: Set transient for parent

* podcastdirectory.py: Set transient for parent

This was accidentally removed in d9a0c7d15a.

* gpodderchannel.ui: Downgrade GTK requirement to 3.16

* README.md: Increase minimum GTK version to 3.16
2021-09-10 17:14:12 -07:00
auouymous 3d966b95b2
Merge pull request #1149 from blushingpenguin/queue
#1117, #1137: fixes for pause/resume/cancelling download tasks
2021-09-08 16:23:18 -07:00
auouymous 9d92e86bc1
Merge pull request #1141 from auouymous/delay-column-reorder
Delay episode treeview column reordering.
2021-08-31 22:03:40 -07:00
blushingpenguin 20b0ed3aae #1117, #1137: fix another lint issue 2021-08-31 14:43:55 +01:00
blushingpenguin 3c322b610a Merge branch 'master' into queue 2021-08-31 14:42:20 +01:00
blushingpenguin 723c052fc2 #1117, #1137: fix lint issue 2021-08-31 14:40:13 +01:00
blushingpenguin 8760b6d315 #1117, #1137: fix re-introduced race queuing tasks 2021-08-31 14:37:36 +01:00
blushingpenguin 68195acc00 #1117, #1137: fixes for pause/resume/cancelling download tasks 2021-08-30 15:45:20 +01:00
auouymous dd299bce25 Delay restoring window position until after it has been shown.
The window manager might not honor the move request until after the
window is shown. This can cause window contents to be rendered at
a shifted offset inside the window borders.
2021-08-28 02:59:46 -06:00
Thomas Perl 4310fdbf5e Gtk UI: Use a TextView for dialogs with multiple text lines 2021-08-28 09:06:01 +02:00
Thomas Perl 7a4afcc198 Gtk UI: Use secondary text in Gtk.MessageDialog for formatting 2021-08-28 09:02:24 +02:00
auouymous a8386049af Delay episode treeview column reordering.
Moving columns before shown can produce "Negative content height"
warnings for themes with vertical padding or borders on treeview header
buttons.
2021-08-26 05:34:16 -06:00
Eric Le Lay 9a3eda7d6b
Merge pull request #1130 from auouymous/youtube-duration
Query duration for youtube episodes when not using youtube-dl.
2021-08-18 14:11:07 +02:00
Eric Le Lay 78bff43731
Merge pull request #1131 from auouymous/move-scale_pixbuf-to-util
Move scale_pixbuf to util.py and apply #1107 refactoring.
2021-08-18 14:09:21 +02:00
Eric Le Lay 90d2112c76
Merge pull request #1108 from ollieparanoid/close-after-startup
bin/gpodder cli: add sections and --close-after-startup option
2021-08-18 14:06:49 +02:00
auouymous d0171a7c8c Allow distributions to disable the update check.
Fixes #1103.
2021-08-16 18:37:33 -06:00
Oliver Smith ec60a55c36
bin/gpodder: add --close-after-startup option
Add an option that helps with measuring / profiling startup performance.
2021-08-15 20:36:45 +02:00
auouymous 114f708c74 Move scale_pixbuf to util.py and apply #1107 refactoring. 2021-08-14 23:42:17 -06:00
auouymous bba167b811 Query duration for youtube episodes when not using youtube-dl.
The duration is not available in the youtube feed and requires a request
for each episode. It was set when downloading but the user had no way of
knowing how long an episode was before downloading it. Live streams do
not have a duration until they end, and remain blank until downloaded or
the next update.

This will increase the time it takes to update feeds, with new
subscriptions possibly taking 16x longer to update due to the 16
requests vs the previous single request. Updating existing feeds
will only have an additional request for each new episode.
2021-08-14 23:09:07 -06:00
Teemu Ikonen 360eea3e31 adaptive/preferences.py: Require correct versions of Gdk and Gtk 2021-08-14 19:45:17 +03:00
Teemu Ikonen 526d2128c8 Fix isort / make lint 2021-08-14 19:30:09 +03:00
Teemu Ikonen 3564eedd7d Revert "Swipe hack to fix libhandy behaviour"
This reverts commit 6b62e79f3f.

Nested swipeable containers seem to work better in libhandy 1.2.2.
2021-08-13 10:03:02 +03:00
Teemu Ikonen b8497500e4 Retire adaptive/podcastdirectory.py, patch desktop version 2021-08-12 19:50:38 +03:00
Teemu Ikonen 0bcc751051 Load menus.ui from ui/adaptive 2021-08-12 19:50:38 +03:00
Teemu Ikonen 9c9f526dbb Set ui_folder to adaptive in gPodder instance 2021-08-12 19:50:38 +03:00
Teemu Ikonen 14f3584902 Set ui_folder to adaptive in gPodderPreferences instances 2021-08-12 19:50:38 +03:00
Teemu Ikonen ec68adb1d2 Set ui_folder to adaptive in gPodderPodcastDirectory instances 2021-08-12 19:50:38 +03:00
Teemu Ikonen 8ba6122592 Set ui_folder to adaptive in gPodderEpisodeSelector instances 2021-08-12 19:50:38 +03:00
Teemu Ikonen 96a5a31af4 Partially revert "Show Progress button also when syncing to device"
This reverts commit b5b86da519 on the
part of syncui.py.

Remove start_cb, show the progress button on main.py.
2021-08-12 19:50:38 +03:00
Teemu Ikonen 37d93cd5e5 Unbreak Delete Podcasts dialog 2021-08-12 19:50:38 +03:00
Teemu Ikonen bf23ef88ad Remove new_episodes_forward button from episodeselector 2021-08-12 19:50:38 +03:00
Eric Le Lay 3f695b0e56
Merge pull request #1127 from auouymous/click-to-open-channel-settings
Double-click or press Enter to open channel settings.
2021-08-12 18:06:31 +02:00
auouymous c35c6aa887 Double-click or press Enter to open channel settings.
This provides similar behavior to opening shownotes for episodes.
2021-08-12 06:27:53 -06:00
Eric Le Lay f74eba2e72 fix #1099 folder not escaped when podcast renamed from dialog 2021-08-12 11:15:06 +02:00
Teemu Ikonen b2514bc8c1 Remove episode_list_forward button 2021-08-12 11:50:24 +03:00
Teemu Ikonen cdd573f93f Remove channel_list_forward button 2021-08-12 11:44:51 +03:00
Teemu Ikonen 5eee09ce49 Merge branch 'master' into dev-adaptive 2021-08-12 11:34:46 +03:00
Teemu Ikonen 52a02a9658 gPodderShownotesLabel: Make episode heading a clickable link 2021-08-12 11:33:26 +03:00
Teemu Ikonen 7003148ec8 Merge commit '0578ba503e2dd772b6bdfa4df90ce537ed7c481f' into dev-adaptive 2021-08-12 10:02:45 +03:00
Teemu Ikonen cfc65c6c0c gPodderShownotesLabel: Reset shownotes to top when changing episodes 2021-08-12 09:59:07 +03:00
Teemu Ikonen 7179478d27 Merge commit '7e6e6c002884813c35a33429565823acd40f2cdd' into dev-adaptive 2021-08-12 09:58:29 +03:00
Teemu Ikonen 994ad483b1 Add checkbutton_delete_deleted_episodes to adaptive preferences 2021-08-12 09:53:27 +03:00
Teemu Ikonen 446a9937bc Use set_download_list_state() in gPodderSyncUI done_cb() 2021-08-11 21:45:54 +03:00
Teemu Ikonen 03a915bbd4 Merge commit '99c46e89e3e2ceb88d0be140789c63419a5fef2c' into dev-adaptive 2021-08-11 20:43:51 +03:00
Eric Le Lay 71f8ee70b3
Merge pull request #1110 from gpodder/fix-missing-audio_webm
Fix missing extension when downloading youtube-dl format=worstaudio (audio/webm mimetype)
2021-08-11 18:20:42 +02:00
Eric Le Lay b034f3dc29
Merge pull request #1120 from tpikonen/version-plus
Allow '+' as a version number separator
2021-08-10 11:14:25 +02:00
Teemu Ikonen 5bbc920a01 Support PEP 440 local version label
Handle public and local version parts of __version__ in version
comparisons and when parsing __version_info__.
2021-08-06 19:54:24 +03:00
auouymous 5ec9b60e3c Add option to require control click to sort episodes.
This avoids accidental sorting when trying to select the top episode.

Requested by Fourhundred Thecat on mailing list, but is also an issue
I've run into many times.
2021-08-05 04:40:53 -06:00
Teemu Ikonen 93b0bf9c28 Set adaptive release version and date 2021-08-04 16:29:21 +03:00
Teemu Ikonen 6cf12077c8 Remove adaptive version of channel dialog 2021-08-04 15:08:28 +03:00
Teemu Ikonen 7b2a3840e5 Fix pycodestyle errors 2021-08-04 15:06:57 +03:00
Teemu Ikonen 84a68f9e47 Use gPodderChannel ui from gtk/ and code from desktop/ 2021-08-04 14:00:42 +03:00
Teemu Ikonen 33c84d450c BuilderWidget: Allow defining ui_folder per instance 2021-08-04 14:00:15 +03:00
Teemu Ikonen 609968811b Merge tag '3.10.21' into adaptive
gPodder 3.10.21 release
2021-08-04 13:57:04 +03:00
Teemu Ikonen 4a5ef8eb0b gPodderShownotesLabel: Support dict-based details_fmt 2021-08-04 13:21:44 +03:00
Teemu Ikonen c660fe9517 Merge commit '8dd8b6b2cd6b6c7a0a2ef26f9a7597fcd9976437' into adaptive 2021-08-04 13:14:50 +03:00
Teemu Ikonen 803cfc375d Use a string, not stock name for Delete episodes Delete button 2021-08-04 11:07:46 +03:00
auouymous 016cde21bb
Merge pull request #1115 from blushingpenguin/master
fix download limit, queued tasks having wrong icon
2021-07-31 18:48:44 -07:00
auouymous 91b73ca40e Import gi only in function that need it. 2021-07-31 08:05:51 -06:00
blushingpenguin 56291c0f6f #1111: fix download limit not being respected, add new tasks in the queued state so they render correctly in the ui 2021-07-31 08:23:23 +01:00
auouymous 776b9b850e Fix additional linting issues. 2021-07-29 18:10:26 -06:00
auouymous 3c2362ebe1
Merge pull request #1112 from auouymous/fix-1054-linting
Fix linting issues from #1054
2021-07-29 17:02:17 -07:00
Eric Le Lay efcdb905e8 fix last linting errors 2021-07-29 21:52:51 +02:00
Oliver Smith 9b6149b9f3
gtkui: properly scale cover/pill on hires displays
Fix the cover images and "pill" looking blurry on high resolution
displays. For example, when the adaptive version of gPodder is used with
Phosh on the PinePhone.

Get the scale parameter from the gtkTreeView object and pass it down to
the cover thumbnail size and to draw_text_pill. If the scaling is not 1,
then use the new draw_iconcell_scale() function to draw the pixbuf with
high resolution.
2021-07-29 20:58:57 +02:00
auouymous 106e2f4fcd Fix linting issues from #1054 2021-07-27 21:44:04 -06:00
Eric Le Lay 5e857fd52a Fix missing extension when downloading youtube-dl format=worstaudio
See #1099 for a repro feed
2021-07-27 19:07:26 +02:00
Eric Le Lay 8f9159ebc7
Merge pull request #1098 from auouymous/make-text-shownotes-title-clickable
Make the text shownotes title a clickable and copyable link.
2021-07-26 21:13:55 +02:00
Oliver Smith d8d68e19e2
gtkui: refactor resize_pixbuf_keep_ratio
Do all image size calculation before calling scale_simple, so it only
needs to be called once.

Add a debug log message, since scaling cover images actually takes some
time and it's good to know the target resolution. (On my PinePhone,
scaling these cover images delays startup significantly and thumbnails
are too small when the program is scaled in the Phosh UI).

While at it, return early if no resize is needed so the changed and
result variables can be removed.

Calling scale_simple twice happens with the previous code, if the height
of the source image is greater than max_image_side and greater than the
width. In that case, the resulting image has less quality since the
second scale_simple already works with a scaled down image and scaling
takes twice as long. In practice most podcasts have square artwork so
I assume this didn't have much of a practical effect. But I care about
the log message and figured this would be the most elegant way to add it.
2021-07-24 09:21:45 +02:00
Oliver Smith 71709769c4
gtkui: fix loading of cached thumbnails
Due to this bug, thumbnails did not get loaded from the sqlite database,
but instead were regenerated on each start. Depending on the device this
leads to significant startup slowdown (30 podcast -> ~20s slowdown on my
PinePhone).
2021-07-23 20:20:53 +02:00
Eric Le Lay 04d0ea26d7
Merge pull request #1094 from auouymous/create-html-description-when-empty
Create an html description when none provided.
2021-07-23 15:06:53 +02:00
Eric Le Lay 7e6e6c0028
Merge pull request #1093 from auouymous/scroll-shownotes-to-top
Reset shownotes to top when changing episodes.
2021-07-23 15:06:26 +02:00
Eric Le Lay 37c2e2ef8d
Merge pull request #1096 from auouymous/restore-window-maximize-state
Restore window maximize state.
2021-07-23 15:06:14 +02:00
Eric Le Lay 99c46e89e3
Merge pull request #1054 from blushingpenguin/master
use Gio for file system based device sync (allows mtp:// urls)
2021-07-23 15:04:59 +02:00
auouymous 3a4915ca7d prepare 3.10.21 release 2021-07-19 22:58:51 -06:00
auouymous 1dafe6e3d6 Fix link in channel dialog by connecting signal and opening website. 2021-07-18 20:17:17 -06:00
auouymous 39f5f55ef5 Save and restore channel dialog state. 2021-07-18 20:12:30 -06:00
auouymous a5bb8b6652
Merge pull request #1071 from tpikonen/narrow-channel-dialog
Narrow channel dialog
2021-07-18 18:59:31 -07:00
auouymous db651427ee Use util.urlopen instead of requests.get for youtube. 2021-07-18 04:52:01 -06:00
auouymous 75567e618b
Merge pull request #1092 from auouymous/fix-soundcloud-api
Fix soundcloud API change when adding new channels.
2021-07-18 03:35:25 -07:00
auouymous 3dd11edf2b Fix soundcloud API change when adding new channels.
The API no longer uses the username to query user info. This requires an
extra page fetch to find the user ID when adding new users.
2021-07-18 04:27:40 -06:00
auouymous 39b3f8eb04 Fix links in About dialog by connecting signal and opening website. 2021-07-17 22:09:34 -06:00
auouymous 0578ba503e Make the text shownotes title a clickable and copyable link. 2021-07-17 20:38:10 -06:00
auouymous 482a52cb79 Restore window maximize state. 2021-07-17 00:56:02 -06:00
auouymous b0ebfd5333 Create an html description when none provided.
The youtube-dl extension code is moved into gPodder to provide this
feature for all feeds lacking an html description. This enables
clickable links inside non-html descriptions. And if available, an image
tag for the episode art URL is prepended to the html description
(currently only available in html shownotes).
2021-07-16 21:03:38 -06:00
auouymous e9353588f3 Reset shownotes to top when changing episodes.
This prevents the title from being partially clipped when moving between
episodes after scrolling the shownotes for one of them.
2021-07-16 05:16:08 -06:00
blushingpenguin c9bbc4f799 fix deleting episodes deleted from device (skip_locked was removed in 62bb7efade) 2021-07-12 11:32:49 +01:00
blushingpenguin 874bd35c81 clean up temporary file 2021-07-12 10:52:43 +01:00
blushingpenguin 13fb6e68c9 workaround mtp devices possibly not having partial write capabilities 2021-07-12 07:39:57 +01:00
blushingpenguin e09f5aecad fix playlist sync 2021-07-11 19:52:34 +01:00
auouymous 7429bc1904
Merge pull request #1084 from auouymous/change-youtube-endpoint-order
Try new youtube endpoint first and fallback to the old endpoint.
2021-07-08 21:45:06 -07:00
auouymous 6e48992b31 Skip non-integer youtube formats. 2021-07-07 01:59:41 -06:00
auouymous d6dd5b62bf Try new youtube endpoint first and fallback to the old endpoint. 2021-07-06 21:07:47 -06:00
auouymous 14bf8b44b7 Fix issues with #1073 pull request. 2021-07-06 19:05:23 -06:00
auouymous 82d926bcdd
Merge pull request #1073 from 18928172992817182/youtube-gdpr
Fix support for automatically accepting GDPR youtube consents
2021-07-06 17:56:13 -07:00
Teemu Ikonen fe161d0391 Set transient parent in Python code
This was set in the ui-file, but Glade does not like it.
2021-07-05 13:26:51 +03:00
Teemu Ikonen 0ee6598d6a gpodderchannel.ui: New layout
General:

 * Put channel info under 'Info' page in the notebook and settings
   under 'Settings', remove 'Advanced' page
 * Add GtkScrolledWindows to GtkNotebook pages
 * Don't change Channel editor window title to channel title
 * Replace 'Close' button with 'OK' and 'Cancel'

Info tab:

 * Use a GtkBox with a 'view' style class to show podcast info
 * Add a placeholder icon for podcast image
 * Add a GtkStack to switch between title Label and Entry
 * Replace description TextView by a selectable Label
 * Use a selectable label for channel website URL

Settings tab:

 * Use GtkListBox for settings items, activate the correct widget
   in the GtkListBoxRow on 'activate' signal
 * Replace Checkboxes with Switches
 * Replace plus icon with the symbolic version
 * Use GtkGrid for Authentication settings widgets
2021-07-05 13:16:31 +03:00
auouymous 8c56e71b0b Don't parse youtube feed URLs.
This fixes a bug where the feed URL is parsed to the channel URL,
potentially causing issues subscribing to feed URLs, but causing gpo
failures when enabling or disabling youtube channels.
2021-06-30 22:30:40 -06:00
auouymous 63196ae0e1 Fix "gpo sync" failure.
The skip_lock parameter was not removed from one of the
delete_episode_list() calls, causing a failure syncing with gpo.

Fixes #1077
2021-06-23 21:17:26 -06:00
blushingpenguin 58ef73b3e6 remove unreachable code 2021-06-20 06:36:16 +01:00
gustaf 3003c8a4c0 Fix support for automatically accepting GDPR youtube consents 2021-06-18 15:40:26 +02:00
blushingpenguin 2e3a9fba2e Merge branch 'master' of github.com:gpodder/gpodder 2021-06-17 22:23:01 +01:00
auouymous c31ba52f99
Merge pull request #1065 from auouymous/fix-soundcloud
Prevent soundcloud from downloading existing episodes each update.
2021-06-15 01:02:30 -07:00
Teemu Ikonen a11a99b353 Allow translation of shownotes header bar buttons
Change 'Cancel download' to 'Cancel', to make it fit the button.
2021-06-13 14:20:27 +03:00
blushingpenguin b6d5836827 remove old, disabled mtp support 2021-06-12 16:27:30 +01:00
blushingpenguin e2a512a34c add mount call for CLI; fix done_callback not being called if opening device fails; handle errors from querying device 2021-06-12 15:45:53 +01:00
auouymous 140a351bce Fix DRM content detection for youtube episodes. 2021-06-11 04:52:36 -06:00
Teemu Ikonen dcf6a3371e Set adaptive release date 2021-06-10 22:45:06 +03:00
Teemu Ikonen 12556a1a5e Add +1 to version in __init__.py 2021-06-10 14:18:38 +03:00
Eric Le Lay 8dd8b6b2cd fix 'msgid' format string with unnamed arguments cannot be properly localized warning 2021-06-10 10:28:54 +02:00
blushingpenguin 5f6e3ac285 Merge branch 'master' of github.com:blushingpenguin/gpodder 2021-06-09 06:35:57 +01:00
blushingpenguin 975b0338ab Merge branch 'master' of github.com:gpodder/gpodder 2021-06-09 06:35:20 +01:00
Teemu Ikonen a7d5fef572 Use view-sidebar-end-symbolic in adaptive podcastdirectory 2021-06-08 23:24:06 +03:00
Teemu Ikonen 63e24bd8c1 Merge branch 'master' into adaptive 2021-06-08 23:23:34 +03:00
blushingpenguin e93dcddb56 windows fixes 2021-06-08 20:55:56 +01:00
Teemu Ikonen 11d69da129 Merge commit '2ba4ada3ea88b06578dda844804e0c6f412a2169' into adaptive 2021-06-08 19:25:44 +03:00
Teemu Ikonen 08759da066 Merge commit 'a13ca1b99b1ab1089611691118ecd5ba3ca86d6e' into adaptive
Fix conflicts in on_{item,episodes}_cancel_download_activate.

Conflicts:
2021-06-08 19:21:18 +03:00
auouymous 91cf6c9410 Prevent soundcloud from downloading existing episodes each update.
GUIDs are stored in the database as strings, but soundcloud creates them
as integers. Python no longer succeeds when comparing these integers to
the string keys from the existing database entries. This produces new
episodes on every update which then collide with the existing GUIDs.
2021-06-08 00:55:35 -06:00