a cross-platform software for automatically generating a low-quality opus rss feed from another (audio or video) rss feed.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
archives
references
src
.gitignore
Makefile
README.md

README.md

OpusFeed 1.5

opusfeed is a cross-platform software for automatically generating a low-quality opus rss feed from another (audio or video) rss feed.

The file format of the generated audio files :

  • container format : ogg
  • audio codec : opus
  • cover codec : jpeg

Dependencies :

  • zlib
  • libopus
  • libav
  • pcre
  • sqlite
  • tinyxml2
  • libcurl
  • openssl

Building environment under Windows :

  • msys
  • mingw
  • cmake (>=3.0)
  • yasm

Building environment under Linux :

  • gcc,g++
  • pkg-config
  • cmake (>=3.0)
  • yasm

Building steps :

cd to the directory where you downloaded the source and run the following commands:

$ make init
$ make 3rdparty
$ make opusfeed

the first command will extract and prepare the dependencies in ./tmp/ each to a separate folder and the project's makefiles in ./tmp/opusfeed/.
the second line will build the dependencies and install them to ./3rdparty/, log files will be stored in ./logs.
the third line will build opusfeed and install the final binary to ./bin/.

Usage :

opusfeed [options]
the software accepts options in these two forms :

  • option=value, eg :

    $ ./opusfeed option1=value1 option2=value2 ...
    
  • option value, eg :

    $ ./opusfeed option1 value1 option2 value2 ...
    

the options (--quiet,--verbose & --help) don't take values.

at least the following options must be set :

  • --media-dir
  • --feed-url
  • --media-prefix
  • --db-file
  • --output-rss

Options :

option descrription
--sample-ratesample rate in kHz [8,12,16,24,48] (default:48)
--bit-ratebit rate in kb/s (default:16)
--channelsnumber of channels [1,2] (default:2)
--embed-coverembed cover in output [yes,no] (default:yes)
--use-videouse video to generate cover image if possible [yes,no] (default:yes)
--cover-qualityjpeg cover quality [0-10] (default:6)
--cover-widthcover width, 0 for same as input (default:0)
--cover-heightcover height, 0 for same as input (default:0)
--preserve-arpreserve the aspect-ratio of the cover [yes,no] (default:yes)
--speed-limitdownload speed limit in KBytes/s, 0 for unlimited (default:0)
--follow-locationfollow http 3xx redirects [yes,no] (default:yes)
--ignore-sslignore ssl errors [yes,no] (default:yes)
--user-agenthttp user-agent string (default:Mozilla/5.0)
--cookiessemicolon separated string of 'var=value' cookies
--use-authuse authentication [yes,no] (default:no)
--auth-userhttp authentication user
--auth-passhttp authentication password
--use-proxyuse proxy [yes,no] (default:no)
--proxy-hostproxy host
--proxy-portproxy port
--proxy-typeproxy type [http,socks4,socks4a,socks5,socks5h] (default:http)
--use-proxy-authuse authentication (for http proxies) [yes,no] (default:no)
--proxy-auth-userhttp proxy user
--proxy-auth-passhttp proxy password
--download-retriesnumber of retries in case of a failed download (default:5)
--resume-retriesnumber of resume attempts before redownloading the file (default:5)
--retry-delaydelay between retries in seconds (default:10)
--ip-versionip version to be used [auto,ipv4,ipv6] (default:auto)
--preserve-failedpass original items to the output rss feed when encountering a downloading/converting error [yes,no] (default:yes)
--max-itemsmaximum number of items, 0 for unlimited (default:10)
--max-agemaximum age of items in days, 0 for unlimited (default:0)
--feed-urlurl of an rss feed
--media-dirwhere to store the media files
--media-prefixurl prefix to be used with in the generated rss feed
--tmp-dirtemporary directory where partially downloaded files are kept (default:/tmp/)
--db-filedatabase file for managing items
--output-rsspath of the output rss file
--update-intervalupdate interval in minutes, 0 for one shot (default:10)
--exec-on-changecommand to execute on data change
--enable-colorsenable colored output [yes,no] (default:yes)
--enable-progressshow downloading/converting progress [yes,no] (default:yes)
--verboseverbose output
--quietsuppress output
--helpthis message

Notes :

  • Migrating from version 1.3 :

    if you don't wish to rebuild your feed from scratch, run sqlite3 your-v1.3-db-file.db and then execute the following statements :

     alter table items add column downloaded text;
     alter table items add column converted text;
     alter table items add column moddate integer;
     alter table items add column originalsize integer;
     alter table items add column originalmimetype text;
     update items set downloaded="true",converted="true",originalmimetype="";
  • The media directory --media-dir :

    The media directory is managed completely by the software, make sure it's not set to a shared folder containing other files.

  • Force updating a specific item :

    delete the corresponding file in --media-dir.

  • Force the regeneration of the output rss file :

    The output rss file is regenerated automatically whenever the local data changes or when a related parameter is updated (--preserve-failed & --media-prefix), or when the output file doesn't exist...so if for some reason you wanted to force the software to rewrite the output rss file, just delete it.

  • Other make commands :

    • init dependencies only :

       $ make init-3rdparty  
      
    • init opusfeed only :

       $ make init-opusfeed  
      
    • clean the dependencies' build files & logs :

       $ make clean-3rdparty  
      
    • clean opusfeed's build files & log :

       $ make clean-opusfeed 
      
    • clean all build files & logs :

       $ make clean  
      
    • wipe everything except the opusfeed binary (this will delete built dependencies) :

       $ make wipe  
      
    • build sqlite only :

       $ make 3rdparty-sqlite 
      
    • build pcre only :

       $ make 3rdparty-pcre 
      
    • build openssl only :

       $ make 3rdparty-openssl
      
    • build curl only (requires openssl) :

       $ make 3rdparty-curl
      
    • build tinyxml2 only :

       $ make 3rdparty-tinyxml2
      
    • build opus only :

       $ make 3rdparty-opus
      
    • build libav only (requires opus) :

       $ make 3rdparty-libav
      

About :

By : Alex Izeld
Email : sub7zero@hotmail.com