diff --git a/feedWatcher b/feedWatcher index b110101..6f89c6b 100755 --- a/feedWatcher +++ b/feedWatcher @@ -211,8 +211,9 @@ my $silent = ( defined( $options{silent} ) ? $options{silent} : 0 ); my $loadfile = $options{'load'}; my $deletefile = $options{'delete'}; -my $scan = ( defined( $options{scan} ) ? $options{scan} : 0 ); -my $html = ( defined( $options{html} ) ? $options{html} : 0 ); +my $scan = ( defined( $options{scan} ) ? $options{scan} : 0 ); +my $refresh = ( defined( $options{refresh} ) ? $options{refresh} : 0 ); +my $html = ( defined( $options{html} ) ? $options{html} : 0 ); my $check = $options{check}; my $outfile = $options{out}; @@ -231,6 +232,9 @@ my $template = $options{template}; # die "Choose either -load or -delete, not both\n" if (defined($loadfile) && defined($deletefile)); +die "Options -load and -delete should not be combined with -scan or -refresh\n" + if ( ( defined($loadfile) || defined($deletefile) ) + && ( $scan || $refresh ) ); # # Check the configuration file @@ -378,8 +382,8 @@ my $work = ( || ( defined($report) || defined($json) || defined($opml) - || defined($template) - || $scan && $rows > 0 ) + || defined($template) ) + || ( ( $scan || $refresh ) && $rows > 0 ) ); unless ($work) { @@ -556,9 +560,18 @@ elsif ($action_mode eq 'delete') { # TODO: Needs to be developed; does nothing at the moment. #------------------------------------------------------------------------------- if ($scan) { - $LOG->warning( "Scan is not fully implemented yet" ); + warn "Refresh is not implemented yet\n"; + #$LOG->warning( "Scan is not fully implemented yet" ); # Testing. Processes the first two feeds - scanDB($dbh, \%keymap, $dry_run); + # TODO: Currently broken + #scanDB($dbh, \%keymap, $dry_run); +} + +#------------------------------------------------------------------------------- +# Perform a feed refresh +#------------------------------------------------------------------------------- +if ($refresh) { + warn "Refresh is not implemented yet"; } #------------------------------------------------------------------------------- @@ -861,7 +874,7 @@ sub loadUrls { # Perform a check on the copyright. The routine sets # $uridata{SAVE} = 0 if the copyright is not acceptable. # - $uridata{CHECKMODE} = $check; + $uridata{CHECKTYPE} = $check; if ( $check ne 'none' ) { unless (checkCopyright( $check, \%uridata )) { # @@ -1027,6 +1040,67 @@ sub searchTitle { } } +#=== FUNCTION ================================================================ +# NAME: refreshFeeds +# PURPOSE: To refresh the episodes on all feeds +# PARAMETERS: $dbh database handle +# RETURNS: Nothing +# DESCRIPTION: +# THROWS: No exceptions +# COMMENTS: None +# SEE ALSO: N/A +#=============================================================================== +sub refreshFeeds { + my ($dbh) = @_; + + my ( $sql1, $sth1, $rv1, $h1 ); + my ( $aref, @urls, $DT, $stream, $feed ); + my ( %uridata, $encref, $enc_changes ); + + # + # Query to return all feed URLs + # + $sql1 = q{SELECT id, url FROM urls WHERE urltype = 'Feed' ORDER BY title}; + + $sth1 = $dbh->prepare($sql1); + $rv1 = $sth1->execute(); + if ( $dbh->err ) { + warn $dbh->errstr; + } + + # + # Collect everything as an arrayref pointing to a bunch of arrayrefs + # containing the column details requested + # + $aref = $sth1->fetchall_arrayref; + + # + # Extract just the URL strings + # + @urls = map { $_->[1] } @{$aref}; + + # + # Loop through the feed URLs + # + foreach my $url (@urls) { + # + # Get the feed as XML + # + $stream = getFeed($url); + next unless $stream; + + # + # Parse the feed as an XML::Feed object + # + $feed = parseFeed($url,$stream); + next unless $feed; + + # + # Turn the enclosures in the feed into an array of anonymous hashes + # + $encref = extractEnclosures($feed); + } +} #=== FUNCTION ================================================================ # NAME: scanDB @@ -1215,7 +1289,6 @@ sub scanDB { return; } - #=== FUNCTION ================================================================ # NAME: scanFeed # PURPOSE: Performs a scan on a single feed @@ -1485,8 +1558,8 @@ sub reportFeed { 'urls_urltype' => 'URL type', 'urls_parent_id' => 'Parent ID', 'urls_child_count' => 'Child count', - ); + @seq1 = ( 'urls_title', 'urls_url', @@ -1509,6 +1582,7 @@ sub reportFeed { 'urls_parent_id', 'urls_child_count', ); + @seq2 = ( 'ep_title', 'ep_enclosure', @@ -1527,8 +1601,22 @@ sub reportFeed { if ($feed) { print $fh "Channel:\n"; foreach my $key (@seq1) { - printf $fh " %-*s: %s\n", $lwidth, $keys{$key}, - coalesce( $feed->{$key}, '--' ); + # + # Format the feed description with a left margin using textFormat. + # Everything else gets a simpler layout. + # + if ($key eq 'urls_description') { + printf $fh "%s\n", + textFormat( + coalesce( $feed->{$key}, '--' ), + sprintf( " %-*s:", $lwidth, $keys{$key} ), + 'L', $lwidth + 4, 80 + ); + } + else { + printf $fh " %-*s: %s\n", $lwidth, $keys{$key}, + coalesce( $feed->{$key}, '--' ); + } } print $fh "\nLatest episode:\n"; @@ -2011,38 +2099,6 @@ sub getFeed { } } -#=== FUNCTION ================================================================ -# NAME: start_handler -# PURPOSE: HTTP::Parser handler for events -# PARAMETERS: <first> the name of the tag found -# <second> the object being processed -# RETURNS: Nothing (ignored anyway) -# DESCRIPTION: -# THROWS: No exceptions -# COMMENTS: None -# SEE ALSO: N/A -#=============================================================================== -#sub start_handler { -# -# # -# # Ignore any tags which are not 'title' -# # -# return if shift ne "title"; -# -# # -# # Define more handlers if we have a title. One to collect the title string -# # and the other to abort the parse on encountering the end of the title. -# # -# my $self = shift; -# $self->handler(text => sub { $main::html_title = shift }, "dtext"); -# $self->handler( -# end => sub { -# shift->eof if shift eq "title"; -# }, -# "tagname,self" -# ); -#} - #=== FUNCTION ================================================================ # NAME: getHTMLTitle # PURPOSE: Parse an HTML page to get data. At the moment this is just the @@ -2144,44 +2200,6 @@ sub parseFeed { } -##=== FUNCTION ================================================================ -## NAME: parseFeedPP -## PURPOSE: Parse a podcast feed that has already been downloaded -## PARAMETERS: $feed_url URL of the feed previously downloaded -## $feed_content String containing the content of the feed, for -## parsing -## RETURNS: An XML::FeedPP object containing the parsed feed or undef if the -## parse failed -## DESCRIPTION: -## THROWS: No exceptions -## COMMENTS: None -## SEE ALSO: N/A -##=============================================================================== -#sub parseFeedPP { -# my ( $feed_url, $feed_content ) = @_; -# -# my $feed; -# -# try { -# $feed = XML::FeedPP->parse( \$feed_content, -type => 'string' ); -# unless ($feed) { -# # -# # Something went wrong. Abort this feed -# # -# warn "Failed to parse $feed_url: ", XML::Feed->errstr, "\n"; -# return; # undef -# } -# } -# catch { -# warn "Failed to parse $feed_url: ", $@, "\n"; -# return; -# } -# -# return $feed; -# -#} - - #=== FUNCTION ================================================================ # NAME: storeFeed # PURPOSE: Stores feed attributes in a hash @@ -2259,10 +2277,10 @@ sub checkCopyright { $decision = 0; }; + # + # If accepted we want a reason + # if ($decision) { - # - # If accepted we want a reason for this manual check - # try { $reason = prompt( -in => *STDIN, @@ -2652,6 +2670,90 @@ sub optionalFile { return 0; } +#=== FUNCTION ================================================================ +# NAME: textFormat +# PURPOSE: Formats a block of text in an indented, wrapped style with +# a label in the left column +# PARAMETERS: $text The text to be formatted, as a scalar string +# $tag The label to be added to the left of the top +# line +# $align Tag alignment, 'L' for left, otherwise right +# $lmargin Width of the left margin (assumed to be big +# enough for the tag) +# $textwidth The width of all of the text plus left margin +# (i.e. the right margin) +# RETURNS: The formatted result as a string +# DESCRIPTION: Chops the incoming text into words (thereby removing any +# formatting). Removes any leading spaces. Loops through the +# wordlist building them into lines of the right length to fit +# between the left and right margins. Saves the lines in an +# array. Adds the tag to the first line with the alignment +# requested then returns the array joined into a string. +# THROWS: No exceptions +# COMMENTS: Inspired by Text::Format but *much* simpler. In fact T::F is +# a nasty thing to have to use; I couldn't get it to do what +# this routine does. +# TODO Make the routine more resilient to silly input values. +# SEE ALSO: +#=============================================================================== +sub textFormat { + my ( $text, $tag, $align, $lmargin, $textwidth ) = @_; + + my ( $width, $word ); + my ( @words, @buff, @wrap ); + + # + # Build the tag early. If there's no text we'll just return the tag. + # + $tag = sprintf( "%*s", + ( $align =~ /L/i ? ( $lmargin - 1 ) * -1 : $lmargin - 1 ), $tag ); + + return $tag unless $text; + + $text =~ s/(^\s+|\s+$)//g; + return $tag unless $text; + + # + # Chop up the incoming text removing leading spaces + # + @words = split( /\s+/, $text ); + shift(@words) if ( @words && $words[0] eq '' ); + + # + # Compute the width of the active text + # + $width = $textwidth - $lmargin; + + # + # Format the words into lines with a blank left margin + # + while ( defined( $word = shift(@words) ) ) { + if ( length( join( ' ', @buff, $word ) ) < $width ) { + push( @buff, $word ); + } + else { + push( @wrap, ' ' x $lmargin . join( ' ', @buff ) ); + @buff = ($word); + } + } + + # + # Append any remainder + # + push( @wrap, ' ' x $lmargin . join( ' ', @buff ) ) if @buff; + + # + # Insert the tag into the first line + # + substr( $wrap[0], 0, $lmargin - 1 ) = $tag; + + # + # Return the formatted array as a string + # + return join( "\n", @wrap ); + +} + #=== FUNCTION ================================================================ # NAME: equal # PURPOSE: Compare two strings even if undefined @@ -2824,11 +2926,11 @@ sub Options { my ($optref) = @_; my @options = ( - "help", "manpage", "debug=i", "dry-run!", - "silent!", "load:s", "delete:s", "scan!", - "report:s", "html!", "check:s", "json:s", - "opml:s", "config=s", "out=s", "rejects:s", - "template:s", + "help", "manpage", "debug=i", "dry-run!", + "silent!", "load:s", "delete:s", "scan!", + "refresh!", "report:s", "html!", "check:s", + "json:s", "opml:s", "config=s", "out=s", + "rejects:s", "template:s", ); if ( !GetOptions( $optref, @options ) ) { diff --git a/feedWatcher.db b/feedWatcher.db index 9736f85..101c113 100644 Binary files a/feedWatcher.db and b/feedWatcher.db differ diff --git a/feedWatcher.html b/feedWatcher.html index 3f950e3..c46979a 100644 --- a/feedWatcher.html +++ b/feedWatcher.html @@ -262,6 +262,14 @@ + <dt><a href="https://www.castofwonders.org">Cast of Wonders</a> (<a href="https://www.castofwonders.org/feed/podcast/">feed</a>)</dt> + + + <dd>The Young Adult Speculative Fiction Podcast</dd> + + + + <dt><a href="https://destinationlinux.org">Destination Linux</a> (<a href="http://destinationlinux.org/feed/mp3/">feed</a>)</dt> @@ -270,6 +278,22 @@ + <dt><a href="https://distrohoppersdigest.blogspot.com/">Distrohoppers' Digest</a> (<a href="https://distrohoppersdigest.blogspot.com/feeds/posts/default">feed</a>)</dt> + + + <dd>We are three Blokes who love Linux and trying out new stuff, we thought it would be interesting to share our experience of trying new Linux and BSD distributions and how we found it trying to live with them as our daily driver for up to a Month at a time, by recording a podcast about how we got on.</dd> + + + + + <dt><a href="https://distrohoppersdigest.blogspot.com/">Distrohoppers' Digest</a> (<a href="https://distrohoppersdigest.blogspot.com/feeds/posts/default?alt=rss">feed</a>)</dt> + + + <dd>We are three Blokes who love Linux and trying out new stuff, we thought it would be interesting to share our experience of trying new Linux and BSD distributions and how we found it trying to live with them as our daily driver for up to a Month at a time, by recording a podcast about how we got on.</dd> + + + + <dt><a href="https://edictzero.com">Edict Zero</a> (<a href="https://edictzero.wordpress.com/feed/">feed</a>)</dt> diff --git a/feedWatcher.json b/feedWatcher.json index fcdf205..43427e0 100644 --- a/feedWatcher.json +++ b/feedWatcher.json @@ -30,7 +30,7 @@ "urls_id" : 99, "urls_image" : "https://2.5admins.com/wp-content/uploads/powerpress/2.5-admins-1600.png", "urls_language" : "en-US", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "https://2.5admins.com", "urls_modified" : null, "urls_parent_id" : null, @@ -70,7 +70,7 @@ "urls_id" : 1, "urls_image" : "http://www.adminadminpodcast.co.uk/wp-content/uploads/powerpress/adminadminlogosmall.jpg", "urls_language" : "en-US", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "https://www.adminadminpodcast.co.uk", "urls_modified" : null, "urls_parent_id" : null, @@ -110,7 +110,7 @@ "urls_id" : 30, "urls_image" : "https://elroy.twit.tv/sites/default/files/styles/twit_album_art_2048x2048/public/images/shows/all_about_android/album_art/audio/aaa2022_albumart_standard_2400.jpg?itok=kz3rVkEc", "urls_language" : "en-US", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "https://twit.tv/shows/all-about-android", "urls_modified" : "2023-01-03 22:15:02", "urls_parent_id" : null, @@ -150,7 +150,7 @@ "urls_id" : 2, "urls_image" : "http://aiit.se/radio/img/aiitr_icon_144x144.png", "urls_language" : "en-us", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "http://aiit.se/radio/", "urls_modified" : null, "urls_parent_id" : null, @@ -190,7 +190,7 @@ "urls_id" : 31, "urls_image" : "http://amateurlogic.tv/images/altv-cover-art.jpg", "urls_language" : "en-us", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "http://www.amateurlogic.tv", "urls_modified" : "2006-04-10 17:18:29", "urls_parent_id" : null, @@ -230,7 +230,7 @@ "urls_id" : 32, "urls_image" : null, "urls_language" : "en-us", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "https://podcast.asknoahshow.com", "urls_modified" : "2023-01-04 21:08:23", "urls_parent_id" : null, @@ -270,7 +270,7 @@ "urls_id" : 33, "urls_image" : "https://cchits.net/images/cchits_coverart.png", "urls_language" : "en-gb", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "https://cchits.net/daily", "urls_modified" : "2023-01-09 00:00:00", "urls_parent_id" : null, @@ -310,7 +310,7 @@ "urls_id" : 4, "urls_image" : "https://ccjam.otherside.network/wp-content/uploads/sites/4/powerpress/cover2-980.png", "urls_language" : "en-GB", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "https://ccjam.otherside.network/", "urls_modified" : null, "urls_parent_id" : null, @@ -319,6 +319,46 @@ "urls_url" : "https://ccjam.otherside.network/feed/podcast/", "urls_urltype" : "Feed" }, + { + "ep_author" : null, + "ep_byte_length" : 57060216, + "ep_category" : "Episodes, Staff Picks, Abraham, Alicia Caporaso, Alternate History, Charlemagne, David, destiny, free will, God, Humor, Jeremy Carter, Jesus, Karl Marx, Kevin M. Hayes, Louis Evans, religion, staff picks 2022, Yeshua, Young Adult fiction", + "ep_enclosure" : "https://traffic.libsyn.com/secure/castofwonders/Wonders525.mp3", + "ep_ep_id" : "https://www.castofwonders.org/?p=8978", + "ep_id" : 6919, + "ep_issued" : "2023-01-20 19:55:00", + "ep_last_update" : "2023-01-24 17:05:06", + "ep_link" : "https://www.castofwonders.org/2023/01/cast-of-wonders-525-and-i-will-make-thy-name-great-staff-picks-2022/", + "ep_mime_type" : "audio/mpeg", + "ep_modified" : null, + "ep_source" : null, + "ep_title" : "Cast of Wonders 525: And I Will Make Thy Name Great (Staff Picks 2022)", + "ep_urls_id" : 101, + "id" : 101, + "latest_ep" : "2023-01-20 19:55:00", + "urls_author" : null, + "urls_check_type" : "none", + "urls_child_count" : 0, + "urls_content_type" : "text/xml;charset=UTF-8", + "urls_copyright" : "Copyright © 2011-2021", + "urls_description" : "The Young Adult Speculative Fiction Podcast", + "urls_dns" : "68.66.228.90", + "urls_feedformat" : "RSS 2.0", + "urls_generator" : null, + "urls_host_up" : 1, + "urls_http_status" : "200 OK", + "urls_id" : 101, + "urls_image" : "https://www.castofwonders.org/wp-content/uploads/CastOfWonders_3k_512kb-scaled.jpg", + "urls_language" : "en-US", + "urls_last_update" : "2023-01-24 17:05:06", + "urls_link" : "https://www.castofwonders.org", + "urls_modified" : null, + "urls_parent_id" : null, + "urls_reason_accepted" : null, + "urls_title" : "Cast of Wonders", + "urls_url" : "https://www.castofwonders.org/feed/podcast/", + "urls_urltype" : "Feed" + }, { "ep_author" : null, "ep_byte_length" : 102139280, @@ -350,7 +390,7 @@ "urls_id" : 5, "urls_image" : "https://destinationlinux.org/wp-content/uploads/2021/06/dln-podcast-art-destination-linux-scaled.jpg", "urls_language" : "en-US", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "https://destinationlinux.org", "urls_modified" : null, "urls_parent_id" : null, @@ -359,6 +399,86 @@ "urls_url" : "http://destinationlinux.org/feed/mp3/", "urls_urltype" : "Feed" }, + { + "ep_author" : "Distro Hoppers Digest", + "ep_byte_length" : null, + "ep_category" : "", + "ep_enclosure" : null, + "ep_ep_id" : "tag:blogger.com,1999:blog-6837331763699536688.post-8737556239641605442", + "ep_id" : 7219, + "ep_issued" : "2023-01-07 00:59:00", + "ep_last_update" : "2023-01-24 17:13:02", + "ep_link" : "https://distrohoppersdigest.blogspot.com/2023/01/distrohoppers-digest-episode-39.html", + "ep_mime_type" : null, + "ep_modified" : "2023-01-07 00:59:17", + "ep_source" : null, + "ep_title" : "Distrohoppers' Digest Episode 39", + "ep_urls_id" : 103, + "id" : 103, + "latest_ep" : "2023-01-07 00:59:00", + "urls_author" : "Distro Hoppers Digest", + "urls_check_type" : "none", + "urls_child_count" : 0, + "urls_content_type" : "application/atom+xml; charset=UTF-8", + "urls_copyright" : null, + "urls_description" : "We are three Blokes who love Linux and trying out new stuff, we thought it would be interesting to share our experience of trying new Linux and BSD distributions and how we found it trying to live with them as our daily driver for up to a Month at a time, by recording a podcast about how we got on.", + "urls_dns" : "142.250.178.1", + "urls_feedformat" : "Atom", + "urls_generator" : "Blogger", + "urls_host_up" : 1, + "urls_http_status" : "200 OK", + "urls_id" : 103, + "urls_image" : null, + "urls_language" : null, + "urls_last_update" : "2023-01-24 17:13:02", + "urls_link" : "https://distrohoppersdigest.blogspot.com/", + "urls_modified" : "2023-01-22 13:52:11", + "urls_parent_id" : null, + "urls_reason_accepted" : null, + "urls_title" : "Distrohoppers' Digest", + "urls_url" : "https://distrohoppersdigest.blogspot.com/feeds/posts/default", + "urls_urltype" : "Feed" + }, + { + "ep_author" : "noreply@blogger.com (Distro Hoppers Digest)", + "ep_byte_length" : null, + "ep_category" : "", + "ep_enclosure" : null, + "ep_ep_id" : "tag:blogger.com,1999:blog-6837331763699536688.post-8737556239641605442", + "ep_id" : 7244, + "ep_issued" : "2023-01-07 08:59:00", + "ep_last_update" : "2023-01-24 17:13:05", + "ep_link" : "https://distrohoppersdigest.blogspot.com/2023/01/distrohoppers-digest-episode-39.html", + "ep_mime_type" : null, + "ep_modified" : "2023-01-07 00:59:17", + "ep_source" : null, + "ep_title" : "Distrohoppers' Digest Episode 39", + "ep_urls_id" : 104, + "id" : 104, + "latest_ep" : "2023-01-07 08:59:00", + "urls_author" : null, + "urls_check_type" : "none", + "urls_child_count" : 0, + "urls_content_type" : "application/rss+xml; charset=UTF-8", + "urls_copyright" : null, + "urls_description" : "We are three Blokes who love Linux and trying out new stuff, we thought it would be interesting to share our experience of trying new Linux and BSD distributions and how we found it trying to live with them as our daily driver for up to a Month at a time, by recording a podcast about how we got on.", + "urls_dns" : "142.250.178.1", + "urls_feedformat" : "RSS 2.0", + "urls_generator" : "Blogger", + "urls_host_up" : 1, + "urls_http_status" : "200 OK", + "urls_id" : 104, + "urls_image" : null, + "urls_language" : null, + "urls_last_update" : "2023-01-24 17:13:05", + "urls_link" : "https://distrohoppersdigest.blogspot.com/", + "urls_modified" : null, + "urls_parent_id" : null, + "urls_reason_accepted" : null, + "urls_title" : "Distrohoppers' Digest", + "urls_url" : "https://distrohoppersdigest.blogspot.com/feeds/posts/default?alt=rss", + "urls_urltype" : "Feed" + }, { "ep_author" : "Jack Kincaid", "ep_byte_length" : 0, @@ -390,7 +510,7 @@ "urls_id" : 6, "urls_image" : "https://edictzero.files.wordpress.com/2022/01/cropped-ezwebsitez_icon_2.jpg?w=32", "urls_language" : "en", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "https://edictzero.com", "urls_modified" : null, "urls_parent_id" : null, @@ -430,7 +550,7 @@ "urls_id" : 34, "urls_image" : "http://wikipediapodden.se/wp-content/uploads/2019/05/FB-profile-150x150.png", "urls_language" : "sv-SE", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "http://wikipediapodden.se", "urls_modified" : null, "urls_parent_id" : null, @@ -470,7 +590,7 @@ "urls_id" : 7, "urls_image" : "https://escapepod.org/wp-content/uploads/2018/03/cropped-Escape-Pod-chip-2-32x32.png", "urls_language" : "en-US", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "https://escapepod.org", "urls_modified" : null, "urls_parent_id" : null, @@ -510,7 +630,7 @@ "urls_id" : 96, "urls_image" : "https://ExpeditionSasquatch.org/img/logo.jpg", "urls_language" : "en", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "https://ExpeditionSasquatch.org", "urls_modified" : null, "urls_parent_id" : null, @@ -550,7 +670,7 @@ "urls_id" : 35, "urls_image" : "https://elroy.twit.tv/sites/default/files/styles/twit_album_art_2048x2048/public/images/shows/floss_weekly/album_art/audio/floss2022_albumart_standard_2400.jpg?itok=yojWupNV", "urls_language" : "en-US", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "https://twit.tv/shows/floss-weekly", "urls_modified" : "2023-01-04 17:18:23", "urls_parent_id" : null, @@ -590,7 +710,7 @@ "urls_id" : 36, "urls_image" : "https://elroy.twit.tv/sites/default/files/styles/twit_album_art_2048x2048/public/images/shows/floss_weekly/album_art/audio/floss2022_albumart_standard_2400.jpg?itok=yojWupNV", "urls_language" : "en-US", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "https://twit.tv/shows/floss-weekly", "urls_modified" : "2023-01-04 17:18:23", "urls_parent_id" : null, @@ -630,7 +750,7 @@ "urls_id" : 37, "urls_image" : "https://fossandcrafts.org/static/images/F_and_C_logo_combined.jpg", "urls_language" : "en-us", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "https://fossandcrafts.org", "urls_modified" : "2022-12-27 19:17:19", "urls_parent_id" : null, @@ -670,7 +790,7 @@ "urls_id" : 88, "urls_image" : "https://fsfe.org/events/fsfe-events.png", "urls_language" : "en", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "https://fsfe.org/events/", "urls_modified" : null, "urls_parent_id" : null, @@ -710,7 +830,7 @@ "urls_id" : 87, "urls_image" : "https://fsfe.org/news/fsfe-news.png", "urls_language" : "en", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "https://fsfe.org/news/", "urls_modified" : null, "urls_parent_id" : null, @@ -750,7 +870,7 @@ "urls_id" : 38, "urls_image" : "http://faif.us/img/cast/faif_144x144.jpg", "urls_language" : "en-us", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "http://faif.us/cast/", "urls_modified" : null, "urls_parent_id" : null, @@ -790,7 +910,7 @@ "urls_id" : 89, "urls_image" : "http://faif.us/img/cast/faif_144x144.jpg", "urls_language" : "en-us", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "http://faif.us/cast/", "urls_modified" : null, "urls_parent_id" : null, @@ -830,7 +950,7 @@ "urls_id" : 8, "urls_image" : null, "urls_language" : "en-us", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "http://www.hwhq.com/", "urls_modified" : null, "urls_parent_id" : null, @@ -870,7 +990,7 @@ "urls_id" : 9, "urls_image" : "http://gnuworldorder.info/images/site.png", "urls_language" : "en-us", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "http://www.gnuworldorder.info", "urls_modified" : "2021-01-01 01:20:18", "urls_parent_id" : null, @@ -910,7 +1030,7 @@ "urls_id" : 39, "urls_image" : null, "urls_language" : "en-us", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "http://gnulinuxrtm.blogspot.com/", "urls_modified" : "2022-12-05 00:43:48", "urls_parent_id" : null, @@ -950,7 +1070,7 @@ "urls_id" : 40, "urls_image" : "https://geekspeak.org/images/GeekSpeak_Logo_400x400_09022012.png", "urls_language" : "en", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "https://geekspeak.org/", "urls_modified" : "2022-06-01 22:03:52", "urls_parent_id" : null, @@ -990,7 +1110,7 @@ "urls_id" : 41, "urls_image" : null, "urls_language" : "en", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "http://frontrowcrew.com/geeknights/monday/", "urls_modified" : null, "urls_parent_id" : null, @@ -1030,7 +1150,7 @@ "urls_id" : 42, "urls_image" : "https://goinglinux.com/images/GoingLinux1400.jpg", "urls_language" : "en-us", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "https://goinglinux.com", "urls_modified" : "2022-12-21 00:00:02", "urls_parent_id" : null, @@ -1070,7 +1190,7 @@ "urls_id" : 43, "urls_image" : "http://hackerpublicradio.org/images/hpr_feed_small.png", "urls_language" : "en-us", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "http://hackerpublicradio.org/about.php", "urls_modified" : "2023-01-09 00:00:00", "urls_parent_id" : null, @@ -1110,7 +1230,7 @@ "urls_id" : 97, "urls_image" : "https://image.simplecastcdn.com/images/6d0021c7-4504-4cd8-a194-c8d6c2b4fd7a/14e8afb5-8608-4501-8d90-c3e5b4551078/3000x3000/podcast-square-season-4-temp.jpg?aid=rss_feed", "urls_language" : "en", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "https://www.eff.org/how-to-fix-the-internet-podcast", "urls_modified" : "2023-01-09 08:10:00", "urls_parent_id" : null, @@ -1150,7 +1270,7 @@ "urls_id" : 44, "urls_image" : "http://spielend-programmieren.at/intopenpodcast/international-open-podcast-logo2.png", "urls_language" : "en", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "http://internationalopenmagazine.org/category/podcast.html", "urls_modified" : "2016-05-10 09:35:00", "urls_parent_id" : null, @@ -1190,7 +1310,7 @@ "urls_id" : 10, "urls_image" : "https://archive.org/images/glogo.png", "urls_language" : "en-us", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "https://archive.org/", "urls_modified" : "2023-01-09 15:40:53", "urls_parent_id" : null, @@ -1230,7 +1350,7 @@ "urls_id" : 45, "urls_image" : "https://knightwise.com/wp-content/uploads/2021/05/podcast_avatar2-scaled.jpg", "urls_language" : "en-US", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "https://knightwise.com", "urls_modified" : null, "urls_parent_id" : null, @@ -1270,7 +1390,7 @@ "urls_id" : 11, "urls_image" : null, "urls_language" : "en", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "http://radio.linuxquestions.org", "urls_modified" : "2008-10-10 18:27:34", "urls_parent_id" : null, @@ -1310,7 +1430,7 @@ "urls_id" : 46, "urls_image" : null, "urls_language" : "en-us", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "http://thelinuxlink.net/lager", "urls_modified" : null, "urls_parent_id" : null, @@ -1350,7 +1470,7 @@ "urls_id" : 12, "urls_image" : "http://latenightlinux.com/wp-content/uploads/latenightlinux.jpg", "urls_language" : "en-US", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "https://latenightlinux.com", "urls_modified" : null, "urls_parent_id" : null, @@ -1390,7 +1510,7 @@ "urls_id" : 47, "urls_image" : "https://librelounge.org/static/images/ll-logo-square.png", "urls_language" : "en-us", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "https://librelounge.org", "urls_modified" : "2021-05-26 13:12:02", "urls_parent_id" : null, @@ -1430,7 +1550,7 @@ "urls_id" : 13, "urls_image" : null, "urls_language" : "en", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "https://www.eff.org/rss/podcast/mp3.xml", "urls_modified" : null, "urls_parent_id" : null, @@ -1470,7 +1590,7 @@ "urls_id" : 14, "urls_image" : "https://linuxafterdark.net/wp-content/uploads/2022/07/LAD.jpg", "urls_language" : "en-US", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "https://linuxafterdark.net", "urls_modified" : null, "urls_parent_id" : null, @@ -1510,7 +1630,7 @@ "urls_id" : 15, "urls_image" : "https://latenightlinux.com/LDT-3000.jpg", "urls_language" : "en-US", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "https://linuxdowntime.com", "urls_modified" : null, "urls_parent_id" : null, @@ -1550,7 +1670,7 @@ "urls_id" : 16, "urls_image" : null, "urls_language" : "en-US", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "https://linuxgamecast.com", "urls_modified" : null, "urls_parent_id" : null, @@ -1590,7 +1710,7 @@ "urls_id" : 48, "urls_image" : "https://linuxgamecast.com/wp-content/uploads/powerpress/2020ApplCover.jpg", "urls_language" : "en-US", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "https://linuxgamecast.com", "urls_modified" : null, "urls_parent_id" : null, @@ -1630,7 +1750,7 @@ "urls_id" : 49, "urls_image" : null, "urls_language" : "en-us", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "http://linuxindahouse.com", "urls_modified" : null, "urls_parent_id" : null, @@ -1670,7 +1790,7 @@ "urls_id" : 50, "urls_image" : null, "urls_language" : "en-gb", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "https://linuxinlaws.eu", "urls_modified" : "2023-01-05 02:00:00", "urls_parent_id" : null, @@ -1710,7 +1830,7 @@ "urls_id" : 51, "urls_image" : "https://linuxlads.com/images/ll_3000.png", "urls_language" : "en", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "https://linuxlads.com", "urls_modified" : null, "urls_parent_id" : null, @@ -1750,7 +1870,7 @@ "urls_id" : 52, "urls_image" : "http://sixgun.org/files/linuxoutlaws.jpg", "urls_language" : "en-US", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "http://sixgun.org", "urls_modified" : null, "urls_parent_id" : null, @@ -1790,7 +1910,7 @@ "urls_id" : 53, "urls_image" : null, "urls_language" : "en", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "http://www.linuxreality.com", "urls_modified" : null, "urls_parent_id" : null, @@ -1830,7 +1950,7 @@ "urls_id" : 54, "urls_image" : "http://www.setbit.org/lt-logo.jpg", "urls_language" : null, - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "http://setbit.org/lt.html", "urls_modified" : null, "urls_parent_id" : null, @@ -1870,7 +1990,7 @@ "urls_id" : 98, "urls_image" : null, "urls_language" : "en-us", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "https://www.linuxuserspace.show", "urls_modified" : "2023-01-02 11:45:06", "urls_parent_id" : null, @@ -1910,7 +2030,7 @@ "urls_id" : 55, "urls_image" : "https://www.linuxatwork.org/img/logo-itunes.jpg", "urls_language" : "en", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "https://www.linuxatwork.org", "urls_modified" : null, "urls_parent_id" : null, @@ -1950,7 +2070,7 @@ "urls_id" : 56, "urls_image" : "https://lhspodcast.info/wp-content/uploads/2016/05/cropped-lhs-newlogo-600x600-1-32x32.png", "urls_language" : "en-US", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "https://lhspodcast.info/category/podcast-mp3/", "urls_modified" : null, "urls_parent_id" : null, @@ -1990,7 +2110,7 @@ "urls_id" : 57, "urls_image" : "https://lhspodcast.info/wp-content/uploads/2016/05/cropped-lhs-newlogo-600x600-1-32x32.png", "urls_language" : "en-US", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "https://lhspodcast.info/category/podcast-ogg/", "urls_modified" : null, "urls_parent_id" : null, @@ -2030,7 +2150,7 @@ "urls_id" : 58, "urls_image" : "http://linuxlugcast.com/wp-content/uploads/powerpress/p0311718-188662.jpg", "urls_language" : "en-US", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "https://linuxlugcast.com", "urls_modified" : null, "urls_parent_id" : null, @@ -2070,7 +2190,7 @@ "urls_id" : 59, "urls_image" : "http://linuxlugcast.com/wp-content/uploads/powerpress/p0311718-188662.jpg", "urls_language" : "en-US", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "https://linuxlugcast.com", "urls_modified" : null, "urls_parent_id" : null, @@ -2110,7 +2230,7 @@ "urls_id" : 60, "urls_image" : "http://audio.lugradio.org/art_200x200.jpg", "urls_language" : "en", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "http://www.lugradio.org/episodes.ogg.rss", "urls_modified" : null, "urls_parent_id" : null, @@ -2150,7 +2270,7 @@ "urls_id" : 61, "urls_image" : "https://makerscorner.tech/wp-content/uploads/2020/01/makers_corner_itunes_coverart.jpg", "urls_language" : "en-US", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "https://makerscorner.tech", "urls_modified" : null, "urls_parent_id" : null, @@ -2190,7 +2310,7 @@ "urls_id" : 17, "urls_image" : "https://mintcast.org/wp-content/uploads/2020/03/big-logo-1600.png", "urls_language" : "en-US", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "https://mintcast.org", "urls_modified" : null, "urls_parent_id" : null, @@ -2230,7 +2350,7 @@ "urls_id" : 62, "urls_image" : "http://www.softwarefreedom.org/img/podcast/sflc-key-200x200.jpg", "urls_language" : "en-us", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "http://www.softwarefreedom.org/podcast/http://www.softwarefreedom.org/", "urls_modified" : null, "urls_parent_id" : null, @@ -2270,7 +2390,7 @@ "urls_id" : 63, "urls_image" : "https://d3t3ozftmdmh3i.cloudfront.net/production/podcast_uploaded_nologo/12892410/12892410-1613674549954-b2efc05b9037a.jpg", "urls_language" : "en", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "https://anchor.fm/creativecommons", "urls_modified" : null, "urls_parent_id" : null, @@ -2310,7 +2430,7 @@ "urls_id" : 64, "urls_image" : "https://ssl-static.libsyn.com/p/assets/b/4/6/1/b461334e2a151deb/avatars-000255353190-hvaldy-original.jpg", "urls_language" : "en", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "http://opensourcesecuritypodcast.com", "urls_modified" : "2023-01-09 00:00:00", "urls_parent_id" : null, @@ -2350,7 +2470,7 @@ "urls_id" : 18, "urls_image" : "https://podcastle.org/wp-content/uploads/2017/10/cropped-PC-Chip2-32x32.png", "urls_language" : "en-US", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "https://podcastle.org/", "urls_modified" : null, "urls_parent_id" : null, @@ -2390,7 +2510,7 @@ "urls_id" : 65, "urls_image" : "https://podcastubuntuportugal.org/images/thumbnail.png", "urls_language" : "pt-pt", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "https://podcastubuntuportugal.org/", "urls_modified" : null, "urls_parent_id" : null, @@ -2430,7 +2550,7 @@ "urls_id" : 66, "urls_image" : null, "urls_language" : "en-US", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "https://craphound.com", "urls_modified" : null, "urls_parent_id" : null, @@ -2470,7 +2590,7 @@ "urls_id" : 19, "urls_image" : null, "urls_language" : "en-US", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "https://blog.launchpad.net", "urls_modified" : null, "urls_parent_id" : null, @@ -2510,7 +2630,7 @@ "urls_id" : 20, "urls_image" : "https://pseudopod.org/wp-content/uploads/2018/04/cropped-PseudoPod-chip-32x32.png", "urls_language" : "en-US", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "https://pseudopod.org", "urls_modified" : null, "urls_parent_id" : null, @@ -2550,7 +2670,7 @@ "urls_id" : 67, "urls_image" : "http://archiv.radiotux.de/werbematerial/icons/rt-id3.png", "urls_language" : "de", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "https://www.radiotux.de/", "urls_modified" : "2023-01-04 11:11:32", "urls_parent_id" : null, @@ -2590,7 +2710,7 @@ "urls_id" : 68, "urls_image" : "http://ratholeradio.org/rathole_cover.png", "urls_language" : "en-GB", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "https://ratholeradio.org", "urls_modified" : null, "urls_parent_id" : null, @@ -2617,7 +2737,7 @@ "id" : 100, "latest_ep" : "2022-12-20 00:00:00", "urls_author" : null, - "urls_check_type" : null, + "urls_check_type" : "manual", "urls_child_count" : 0, "urls_content_type" : "text/xml; charset=utf-8", "urls_copyright" : "Copyright now Science for the People", @@ -2630,7 +2750,7 @@ "urls_id" : 100, "urls_image" : "http://podcasts.scienceforthepeople.ca/sftp-itunes-cover.jpg", "urls_language" : "en-us", - "urls_last_update" : "2023-01-14 23:08:22", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "http://www.scienceforthepeople.ca/", "urls_modified" : null, "urls_parent_id" : null, @@ -2670,7 +2790,7 @@ "urls_id" : 69, "urls_image" : "https://elroy.twit.tv/sites/default/files/styles/twit_album_art_2048x2048/public/images/shows/security_now/album_art/audio/sn2022_albumart_standard_2400.jpg?itok=hQwhlisn", "urls_language" : "en-US", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "https://twit.tv/shows/security-now", "urls_modified" : "2023-01-04 10:41:01", "urls_parent_id" : null, @@ -2710,7 +2830,7 @@ "urls_id" : 70, "urls_image" : null, "urls_language" : "en-us", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "http://www.skepticule.co.uk/", "urls_modified" : "2022-08-18 15:47:26", "urls_parent_id" : null, @@ -2750,7 +2870,7 @@ "urls_id" : 71, "urls_image" : "https://fsfe.org/graphics/podcast-logo.png", "urls_language" : "en", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "https://fsfe.org/news/podcast", "urls_modified" : null, "urls_parent_id" : null, @@ -2790,7 +2910,7 @@ "urls_id" : 72, "urls_image" : "https://fsfe.org/graphics/podcast-logo.png", "urls_language" : "en", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "https://fsfe.org/news/podcast", "urls_modified" : null, "urls_parent_id" : null, @@ -2830,7 +2950,7 @@ "urls_id" : 73, "urls_image" : "https://teaearlgreyhot.org/wp-content/uploads/2020/03/tea_earl_grey_hot_artwork.jpg", "urls_language" : "en-GB", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "https://teaearlgreyhot.org/", "urls_modified" : null, "urls_parent_id" : null, @@ -2870,7 +2990,7 @@ "urls_id" : 94, "urls_image" : "https://thelovebug.org/wp-content/uploads/TheBigSlurp.jpg", "urls_language" : "en-GB", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "https://thelovebug.org/series/slurp/", "urls_modified" : null, "urls_parent_id" : null, @@ -2910,7 +3030,7 @@ "urls_id" : 74, "urls_image" : "https://www.thebinarytimes.net/favicon-32x32.png", "urls_language" : "en-US", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "https://www.thebinarytimes.net", "urls_modified" : null, "urls_parent_id" : null, @@ -2950,7 +3070,7 @@ "urls_id" : 22, "urls_image" : "https://www.thebugcast.org/wp-content/uploads/1400x1400-A.jpg", "urls_language" : "en-GB", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "https://thebugcast.org/", "urls_modified" : null, "urls_parent_id" : null, @@ -2990,7 +3110,7 @@ "urls_id" : 75, "urls_image" : "http://petecogle.co.uk/images/dsz_1400x1400.jpg", "urls_language" : "en-US", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "http://petecogle.co.uk/category/the-dub-zone/", "urls_modified" : null, "urls_parent_id" : null, @@ -3030,7 +3150,7 @@ "urls_id" : 23, "urls_image" : "https://duffercast.org/wp-content/uploads/duffercastorg-2.png", "urls_language" : "en-US", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "https://duffercast.org/", "urls_modified" : null, "urls_parent_id" : null, @@ -3070,7 +3190,7 @@ "urls_id" : 95, "urls_image" : "https://i0.wp.com/fullcirclemagazine.org/wp-content/uploads/2017/01/FullCircle-WeeklyNews_image.jpg?fit=640%2C425&ssl=1", "urls_language" : "en-US", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "https://fullcirclemagazine.org/", "urls_modified" : null, "urls_parent_id" : null, @@ -3110,7 +3230,7 @@ "urls_id" : 76, "urls_image" : null, "urls_language" : "en", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "http://www.jodcast.net/", "urls_modified" : "2021-12-18 17:22:28", "urls_parent_id" : null, @@ -3150,7 +3270,7 @@ "urls_id" : 24, "urls_image" : "http://www.jupiterbroadcasting.com/images/LAS-300-Badge144.jpg", "urls_language" : "en", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "http://www.jupiterbroadcasting.com", "urls_modified" : "2017-05-08 13:50:51", "urls_parent_id" : null, @@ -3190,7 +3310,7 @@ "urls_id" : 25, "urls_image" : null, "urls_language" : null, - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "https://thelinuxcast.org/", "urls_modified" : "2022-12-09 00:00:00", "urls_parent_id" : null, @@ -3230,7 +3350,7 @@ "urls_id" : 77, "urls_image" : "http://www.thelinuxlink.net/images/tllts_sitelogo.png", "urls_language" : "en-us", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "http://www.tllts.org", "urls_modified" : null, "urls_parent_id" : null, @@ -3270,7 +3390,7 @@ "urls_id" : 78, "urls_image" : "http://www.thelinuxlink.net/images/tllts_sitelogo.png", "urls_language" : "en-us", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "http://www.tllts.org", "urls_modified" : null, "urls_parent_id" : null, @@ -3310,7 +3430,7 @@ "urls_id" : 79, "urls_image" : "https://elroy.twit.tv/sites/default/files/styles/twit_album_art_2048x2048/public/images/shows/this_week_in_computer_hardware/album_art/audio/twich_albumart_audio.jpg?itok=jfLJprnC", "urls_language" : "en-US", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "https://twit.tv/shows/this-week-in-computer-hardware", "urls_modified" : "2022-10-14 10:55:52", "urls_parent_id" : null, @@ -3350,7 +3470,7 @@ "urls_id" : 80, "urls_image" : "https://elroy.twit.tv/sites/default/files/styles/twit_album_art_2048x2048/public/images/shows/this_week_in_google/album_art/audio/twig2022_albumart_standard_2400.jpg?itok=bWIu02YI", "urls_language" : "en-US", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "https://twit.tv/shows/this-week-in-google", "urls_modified" : "2023-01-04 20:40:02", "urls_parent_id" : null, @@ -3390,7 +3510,7 @@ "urls_id" : 81, "urls_image" : "https://ssl-static.libsyn.com/p/assets/6/c/0/5/6c055f7feb4ada27/TWiM_v3_white2400.jpg", "urls_language" : "en", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "http://www.asm.org/twim/", "urls_modified" : "2022-12-29 05:00:00", "urls_parent_id" : null, @@ -3430,7 +3550,7 @@ "urls_id" : 82, "urls_image" : "https://elroy.twit.tv/sites/default/files/styles/twit_album_art_2048x2048/public/images/shows/this_week_in_tech/album_art/audio/twit_2022albumart_standard_2048.jpg?itok=NNZEJLnI", "urls_language" : "en-US", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "https://twit.tv/shows/this-week-in-tech", "urls_modified" : "2023-01-08 21:00:03", "urls_parent_id" : null, @@ -3470,7 +3590,7 @@ "urls_id" : 83, "urls_image" : "http://tuxjam.otherside.network/wp-content/uploads/sites/5/powerpress/Cover2.jpg", "urls_language" : "en-GB", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "https://tuxjam.otherside.network/", "urls_modified" : null, "urls_parent_id" : null, @@ -3510,7 +3630,7 @@ "urls_id" : 26, "urls_image" : "https://ubuntupodcast.org/wp-content/uploads/2015/12/uplogo_388-150x150.png", "urls_language" : "en-GB", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "https://ubuntupodcast.org", "urls_modified" : null, "urls_parent_id" : null, @@ -3550,7 +3670,7 @@ "urls_id" : 84, "urls_image" : "http://ubuntupodcast.org/wp-content/uploads/powerpress/uplogo_1400.png", "urls_language" : "en-GB", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "https://ubuntupodcast.org", "urls_modified" : null, "urls_parent_id" : null, @@ -3590,7 +3710,7 @@ "urls_id" : 85, "urls_image" : "http://wikipediapodden.se/wp-content/uploads/2019/05/FB-profile-150x150.png", "urls_language" : "sv-SE", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "http://wikipediapodden.se/prenumerera/", "urls_modified" : null, "urls_parent_id" : null, @@ -3630,7 +3750,7 @@ "urls_id" : 27, "urls_image" : null, "urls_language" : "en-us", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "http://bsdtalk.blogspot.com/", "urls_modified" : "2022-12-14 04:41:56", "urls_parent_id" : null, @@ -3670,7 +3790,7 @@ "urls_id" : 28, "urls_image" : null, "urls_language" : "en-US", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "https://fullcirclemagazine.org", "urls_modified" : null, "urls_parent_id" : null, @@ -3710,7 +3830,7 @@ "urls_id" : 29, "urls_image" : null, "urls_language" : "en", - "urls_last_update" : "2023-01-14 20:48:07", + "urls_last_update" : "2023-01-14 23:39:30", "urls_link" : "https://urandom-podcast.info/", "urls_modified" : null, "urls_parent_id" : null, diff --git a/feedWatcher.mkd b/feedWatcher.mkd index fde1bd4..0ebf13f 100644 --- a/feedWatcher.mkd +++ b/feedWatcher.mkd @@ -42,11 +42,26 @@ - Feed: https://ccjam.otherside.network/feed/podcast/ - Copyright: +- **Cast of Wonders** + - Website: https://www.castofwonders.org + - Feed: https://www.castofwonders.org/feed/podcast/ + - Copyright: Copyright © 2011-2021 + - **Destination Linux** - Website: https://destinationlinux.org - Feed: http://destinationlinux.org/feed/mp3/ - Copyright: +- **Distrohoppers' Digest** + - Website: https://distrohoppersdigest.blogspot.com/ + - Feed: https://distrohoppersdigest.blogspot.com/feeds/posts/default + - Copyright: + +- **Distrohoppers' Digest** + - Website: https://distrohoppersdigest.blogspot.com/ + - Feed: https://distrohoppersdigest.blogspot.com/feeds/posts/default?alt=rss + - Copyright: + - **Edict Zero** - Website: https://edictzero.com - Feed: https://edictzero.wordpress.com/feed/ diff --git a/feedWatcher.opml b/feedWatcher.opml index 7e866ce..3850e92 100644 --- a/feedWatcher.opml +++ b/feedWatcher.opml @@ -2,8 +2,8 @@ <opml version="1.1"> <head> <title>Free Culture Podcasts -2023-01-14 23:09:26 -2023-01-14 23:09:26 +2023-01-24 17:16:19 +2023-01-24 17:16:19 @@ -22,7 +22,10 @@ + + + diff --git a/feedWatcher.pdf b/feedWatcher.pdf index ed3bb4a..ab42dff 100644 Binary files a/feedWatcher.pdf and b/feedWatcher.pdf differ diff --git a/feedWatcher_4.tpl b/feedWatcher_4.tpl index 45dc8c2..5406bc2 100644 --- a/feedWatcher_4.tpl +++ b/feedWatcher_4.tpl @@ -1,5 +1,8 @@ [%# feedWatcher_4.tpl 2020-01-25 -%] [%# Generates simple lines each containing title and description per feed -%] + +*The following is a list of Creative Commons podcasts recommended by the Hacker Public Radio community.* + [% i = 0 -%] [% WHILE i < feeds.size -%] [% IF feeds.$i.urls_description.length > 0 -%] @@ -7,8 +10,9 @@ [% ELSE -%] [% desc = "[No description]" -%] [% END -%] -[% feeds.$i.urls_title %]: [% desc %] +**[% feeds.$i.urls_title %]**: [% desc %] [% i = i + 1 -%] + [% END -%] [%# # vim: syntax=tt2:ts=8:sw=4:ai:et:tw=78:fo=tcrqn21