All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- CLI: cleanup history did not correctly find duplicates
- CHECK: update all fields for stations
- CHECK: do check first and then local corrections
- CLI: basic cli commands for database maintenance
- API: countrycode field to countries endpoint (#148)
- API: Deprecated countrycodes endpoint
- API: support uppercase stationuuids (#147)
- CHECK: Station compare and update does not create new history entries if not needed anymore
- CHECK: check for http result code for favicons
- PULL: insert duplicates
- CHECK: check websites for favicons, if favicon is currently empty
- CLEANUP: recheck favicon every day if still existing and delete from station if not
- CONFIG: regular automatic load/download of config
- CONFIG: reload main config on HUP and regular automatic config reload (does not get used for db connection and api, but for regular jobs)
- CONFIG: added error log level, now there are 5 log levels, 0-4
- CHECK: tags replace
- API: added identifier and image tags to xspf output
- CLEANUP: add station change entries into the database for language and favicon updates
- DB: use transactions for migrations
- DB: allow update of existing stations with pulled changes
- CONFIG: replace config in shared memory
- CLEANUP: language replace, language to code
- API: iso 639 code output to language list
- DB: use binary collation for tags to fix compare
- CONFIG: allow pulling of replacement csv info from web
- CONFIG: reload csv list files on HUP signal
- DOCKER: use alpine as base image
- CHECK: update stations with new languagecodes
- DB: check for empty lists in streaming servers api
- DB: collect streaming servers only if enabled
- DB: removed fragment and query from streaming server urls
- CHECK: removed fragment and query from streaming server urls
- CLEANUP: remove unreferenced streaming server after 1 day
- API: new order type "changetimestamp"
- API: streaming servers
- DB: streaming servers
- CHECK: streaming servers
- DB: save geolat and geolong to checks table
- API: search by extended info marker
- API: search by is_https
- API: exposed iso_3166_2 in station lists
- DB: countrysubdivisioncode is now able to hold full 6 chars
- dependencies
- CHECK: new av-stream-info version does fix handling of depth limit for playlists
- API: limit and offset parameters to countries, countrycodes, languages, tags, states, codecs endpoints
- PULL: automatically remove duplicates from database
- API: multiple station endpoints do not support limit,offset and hidebroken parameters
- DOCS: added missing hidebroken to advanced search
- API: accept numbers in json post
- API: /stations/improvable
- CHECK: insert of station checks did not always use pregenerated uuids
- API: fields server_location and server_country_code to /json/config and /xml/config
- CHECK: added attribute ssl_error to /json/checks endpoint
- API: /json/checksteps, /xml/checksteps, /csv/checksteps
- API: languagecodes, geo_lat, geo_long
- CHECK: extract languagecodes, geo_lat, geo_long
- API: iso 8601 datetime fields
- CHECK: do not ignore streams with broken ssl, just mark them
- Dependency upgrade: av-stream-info-rust 0.10.0
- CHECK: do not throw away important check
- PULL: fixed importing external extra check info
- DB: save more information from checks (ServerSoftware, Sampling, LanguageCodes, TimingMs, CountrySubdivisionCode)
- API: add more information for checks
- CLEAN: clean urls in db
- API: check url and homepage on insert if correct
- CHECK: always ignore text/html urls
- API: limit parameter for format/station/changed
- API: limit parameter for format/checks
- PULL: parameter chunk-size-changes
- PULL: parameter chunk-size-checks
- DB: database name is now allowed to be different from "radio"
- CHECK: bitrate detection of stream works now on multiple bitrate headers
- PULL: try to import stations that are not existing locally for pulled checks
- PULL: votes syncing (#111)
- Dependency upgrade: prometheus 0.12.0
- Dependency upgrade: redis 0.20.0
- Dependency upgrade: reqwest 0.11.2
- Dependency upgrade: av-stream-info-rust 0.8.2
- Use do-not-index header of streams to delete them from the database
- Override "Url" field in database if stream override is set
- Support additional stream headers from https://www.stream-meta.info/version_2_headers.html
- DOCKER: added root certificates to container
- PKG: removed mysql dependency from deb package, this enables use of mariadb
- Docker build
- API: CSV output
- API: ignore country parameter on station add. it is autogenerated from countrycode (ISO 3166-1 Alpha2).
- API: allow only countrycodes with the exact length of 2 on insert.
- API: ignore case on subtable selects (/format/codecs, /format/countries, /format/countrycodes)
- CLEAN: calculate country column in database from countrycode every cleanup cycle
- CLEAN: remove stations from history, that do not have an active entry in main station table
- API: clicks are counted correctly
- API: endpoint for fetching multiple streams by uuid
- PULL: use correct user agent
- CACHE: shorter keys to make memcached work
- API: Response caching with builtin, redis and memcached
- LOG: Ignore content-type nothing in requests
- METRICS: do not expose search information in call counts
- Support for JSON log format
- Show api call timing information in log file
- Split up api calls in prometheus endpoint with tags
- CLI: Verbose did not work
- Fixed station voting from IPv6 address (Fixed: #69)
- DEPENDENCY: Use fern logger instead of env_logger
- API: Use limit parameter if limit is not otherwise provided (Fixed: #64)
- API: Old style click count from metrics
- PLS files had title and file content reversed
- Always add CORS header, even on errors
- Answer OPTIONS requests for better support of CORS
- METRICS: station_clicks, api_calls
- API: codec parameter to advanced search
- Use utc timestamp for clicks in database
- API: Added stationuuid to m3u output
- API: Filter order column for extra tables
- API: Wrong links in docs
- API: Faster select from stationcheck view with added index
- SYNC: Only update stations with changed votes
- SYNC: Faster update of station's clicks with added index
- DEB: logrotate config
- API: more exports to metrics
- API: config endpoint
- API: return change lists (stations, checks, clicks) from start if lastuuid not found
- CLEANUP: remove all non http/https content from favicon field of stations
- ANSIBLE: disabled all apache2 logging by default
- CONFIG: type errors do not get ignored with default value
- CONFIG: use human readable durations instead of fixed seconds or hours
- Fixed wrong sql delete
- Ignore station checks and clicks on pull, when there is no station
- Show "hidebroken" in docs for station query
- Migrations on mysql
- Simple sync of votes, may drop some votes
- Broken stations were not marked
- Make foreign keys of StationClick and StationCheckHistory on delete cascade
- Ansible role and example playbook for debian/ubuntu
- Station checks
- Always use UTC time in database
- Faster check insert with mysql 5.7
- Default install paths changed
- IPs for clicks are only kept until not needed anymore (default 24 hours)
- Insert of checks does now ignore duplicates
- Resuse checkuuids of pullserver, do not generate new ones on pull
- Incremental results of /format/stations/changed, /format/checks and /format/clicks do work reliably
- Replaced StationCheck table with view on StationCheckHistory
- Migration deletes contents of StationCheckHistory, to remove unconnected uuids
- Migration deletes contents of PullServers to force re-pulling of every server
- Script for building distribution file
- Debian package
- Improved readme
- Sync for clicks
- Api for clicks /format/clicks
- Document "/format/url" endpoint as station click endpoint
- Document returned structs "station", "checks"
- Faster sync
- Clickcount calculation for each station
- Error in /format/stations/changed endpoint
- Prometheus docs
- SQL error in endpoint /checks?seconds=x
- Database column mixup for state and language
- Run as non root user in docker by default
- Changelog
- Check fields: "metainfo_overrides_database", "public", "name", "description", "tags", "countrycode", "homepage", "favicon", "loadbalancer"
- "id" from all of the API, because database id should not be exposed
- Endpoint /stations/broken
- Faster station import from pull source
- Restructured more code to the new style of connecting to the database, this should enable other types of databases (e.g.: postgresql) on the long term, this means also more error checking and use of transactions.
- Output lastchangetime and countrycode in /json/stations/changed
- Correctly collect and summarize different sources of station checks
- "numberofentries" added to pls output
- Less usages of "unwrap()"
- "url_resolved" field to station lists
- "random" order to station lists
- "negativevotes" field from station lists
- Fixed json result of vote endpoint
- Clean up tag and language fields on import
- Documentation cleanup and extensions
- First documented release :)