{"id":18547758,"url":"https://github.com/johnramsden/bashpod","last_synced_at":"2025-05-15T07:34:28.788Z","repository":{"id":102820439,"uuid":"56104988","full_name":"johnramsden/bashpod","owner":"johnramsden","description":null,"archived":false,"fork":false,"pushed_at":"2018-02-01T02:20:54.000Z","size":56,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-05-14T15:06:42.525Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/johnramsden.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-04-12T23:27:52.000Z","updated_at":"2024-08-21T10:40:51.000Z","dependencies_parsed_at":null,"dependency_job_id":"3908ee79-c189-495f-bfb1-0f3ac0aa42db","html_url":"https://github.com/johnramsden/bashpod","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johnramsden%2Fbashpod","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johnramsden%2Fbashpod/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johnramsden%2Fbashpod/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johnramsden%2Fbashpod/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/johnramsden","download_url":"https://codeload.github.com/johnramsden/bashpod/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254296754,"owners_count":22047345,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-06T20:31:11.667Z","updated_at":"2025-05-15T07:34:28.758Z","avatar_url":"https://github.com/johnramsden.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# BASHPOD\n\nA simple podcatching client based on BashPodder\n\nBashpodder is a simple podcasting client written completely in bash. in 2005 [chessgriffin](https://github.com/chessgriffin/mashpodder) took over maintenance of bshpodder and renamed it to mashpodder. In 2015 he stopped maintaining his version mashpotter, when I downloaded it and made a few simple customisations to my to make it able to do a few things I required, I forked project and renamed it Bashpod.\n\nBashpod allows the user to download podcast episodes. The user can choose to save these episodes in a named directory (i.e. separate directory per feed) or in a date-based directory, so the most recent episodes are in one folder. Or, the user can combine this by having some podcasts in a named directory and others in the date-based directory. The user can choose to download all, none, or a set number of episodes per feed. The user can also choose to mark the episodes as downloaded (without actually downloading them) which can be used to 'catch up' to a podcast.\n\n## Dependencies\n* bash\n* wget\n* curl\n* xsltproc\n\n## Configuration\n\n### pod.conf\n\nAdd podcast feeds here, each line represents a new podcast. Anything that doesn't exist in podcast.log will be downloaded.\n\n#### Configuration options\n\n* ```update```: Write complete history of feed to podcast.log but dont't download anything.\n\n* ```all```: Download everything from feed\n\n* ```number```: Download a number of recent episodes\n\nExample, Download all of \"The Linux Action Show!\" and \"Linux Unplugged\":\n\n```\nhttp://feeds.feedburner.com/linuxashd TheLinuxActionShow all\nhttp://feeds.feedburner.com/linuxunvid LinuxUnplugged all\n```\n\n### bashpod.sh\n\n* ```BASEDIR```: Base location of the script and related files.\n\n* ```RSSFILE```: Location of pod.conf file.\n\n* ```PODCASTDIR```: Location of podcast directories listed in ```$RSSFILE.```\n\n* ```CREATE_PODCASTDIR```: Default \"1\" will create the directory for you if it does not exist; \"\" means to fail and exit if ```$PODCASTDIR``` does not exist.\n\n* ```POD_SET_PERM```: Set permissions on downloads, \"1\" sets permissions to ```$PODCAST_PERM```, \"\" sets to default permissions.\n\n* ```PODCAST_PERM```: Permissions on download, should be a valid chmod value\n\n* ```DATEFILEDIR```: Location of the \"date\" directory below ```$PODCASTDIR```\n\n* ```TMPDIR```: Location of temp logs, where files are temporarily downloaded to,\n\n* ```DATESTRING```: Valid date format for date-based archiving.  \n\n* ```PARSE_ENCLOSURE```: Location of parse_enclosure.xsl file.\n\n* ```PODLOG```: This is a critical file.  This is the file that saves the name of every file downloaded (or checked with the 'update' option in mp.conf.)\n\n* ```PODLOG_BACKUP```: Setting this option to \"1\" will create a date-stamped backup of your podcast.log file before new podcast files are downloaded. The filename will be ```$PODLOG.$DATESTRING``` (see above variables).  If you enable this, you'll want to monitor the number of backups and manually remove old copies.  \n\n* ```FIRST_ONLY```: Default \"\" means look to pod.conf for whether to download or update; \"1\" will override mp.conf and download the newest episode.\n\n* ```M3U```: Default \"\" means no m3u playlist created; \"1\" will create m3u playlists in each podcast's directory listing all the files in that directory.\n\n* ```DAILY_PLAYLIST```: Default \"\" means no daily m3u playlist created; \"1\" will create an m3u playlist in $PODCASTDIR listing all newly downloaded shows.  \n\n* ```UPDATE```: Default \"\" means look to pod.conf on whether to download or update; \"1\" will override mp.conf and cause all feeds to be updated (meaning episodes will be marked as downloaded but not actually downloaded).\n\n* ```VERBOSE```: Default \"\" is quiet output; \"1\" is verbose.\n\n* ```WGET_QUIET```: Default is \"-q\" for quiet wget output; change to \"\" for wget output.\n\n* ```WGET_TIMEOUT```: Default is 30 seconds; can decrease or increase if some files are cut short. \n\n## Renaming downloads (Advanced configuration)\nIn order to change the name of a downloaded file from the default to something else, add a regular expression in the fix URL section of the script. This will require knowledge of regular expressions and bash scripting .\n\nExample:\n\nTo change Linux Action Show from it's original \"linuxactionshowep406.mp4\" to \"The Linux Action Show! E406.mp4\"\n\n```\n  if echo $FIXURL | grep -q \"linuxactionshowep[0-9]*.mp4$\"; then\n    FILENAME=\"The Linux Action Show! E$(echo ${FIRSTFILENAME} | sed -e 's/linuxactionshowep\\([0-9]*\\)\\(.mp4$\\)/\\1\\2/' )\"\n    return\n  fi\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjohnramsden%2Fbashpod","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjohnramsden%2Fbashpod","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjohnramsden%2Fbashpod/lists"}