Ampache v4.2.0 Release Notes
Release Date: 2020-08-06 // over 3 years ago-
(MD5SUM 8cff487d8cb7de72f221a044213df48f) ../ampache-4.2.0_all.zip
This is a big one; you ready for a JSON API!?
๐ 4.2.0-release
0๏ธโฃ A big visual change in the interface is that Ampache now defaults to US time for dates. ('Month/Day/Year')
For everyone who isn't American you have control over date formats using custom_datetime.
Admin => Server Config => Interface => Custom datetimee.g. "Y/m/d H:i" will convert to "2020/04/14 10:42"
Check the php manual for help making your desired string. ([https://www.php.net/manual/en/function.date.php])The API changelog for this version has been separated into a new sub-heading below to make it easier to follow.
โ Added
- โ Added Spotify art searches for both album and artist images.
- โก๏ธ Updated component installer and php-cs-fixer package.
- โก๏ธ Translation updates (April 2020, May 2020, July 2020)
- Added declare(strict_types=0); to lib/* and lib/class/* (requires more work before it can be enabled)
- โ Add 250 for search form limits in the web UI. (Jump from 100 to 500 is pretty big)
- โ Add Recently updated/added to search rules
- โ Add regex searching to text fields. ([https://mariadb.com/kb/en/regexp/])
- Refer to the wiki for information about search rules. (https://github.com/ampache/ampache/wiki/advanced-search)
- When labels are enabled, automatically generate and associate artists with their publisher/label tag values.
- Enforced stat recording for videos. (podcasts and episodes to be added later)
- โ Add tags (Genres) to "Anywhere" text searches.
- 0๏ธโฃ 10 second redirect on "Access Denied" to the default web_path
- ๐ Allow "Update from tags" for multi-disk album and artist pages
- ๐ show and hide the rightbar (playlist) using the minimize button in the header
- ๐ท Tag->f_name (New property on tag that was being set hackily)
- โ Add "Album" to Find Duplicates in admin/duplicates.php.
- "Local Image" added to Artist & Album search. Find out whether you have art stored in Ampache
- PHP_CodeSniffer checks and settings added to Scrutinizer. (phpcs --standard=.phpcs.xml lib/class)
- ๐ NEW database options
- cron_cache: Speed up the interface by allowing background caching of data
- show_skipped_times: Add "# skipped" to the UI. (disabled by default)
- custom_datetime: Allow you to format your date strings your way.
- unique_playlist: Force unique playlists by ignoring existing songs
- ๐ NEW config options
- skip_timer: Add Skip Timer Threshold to the config
- artist_art_folder: Specify a local folder to search for artist images using name/title
- rating_file_tag_user: Set ratings to this user ID when importing ratings from file tags
- spotify_client_id: Allows Spotify art search
- spotify_client_secret: Allows Spotify art search
- ๐ NEW files
- server/json.server.php & lib\class\json_data.class.php: JSON API!
- bin/compute_cache.inc: Cache object_count data to speed up access
- bin/cron.inc: Perform garbage_collection functions outside of main functions (includes compute_cache.inc)
- ๐ NEW examples
- docs/examples/ampache_cron.service
- docs/examples/ampache_cron.timer
๐ Changed
- ๐ Change license string from AGPLv3 to AGPL-3.0-or-later
- โก๏ธ Update Composer requirements
- ๐ Allow searching play times without requiring UI option
- ๐ Stop showing the average rating in the web interface as stars. (show an average when available as text separately)
- When you don't have a config file redirect to installer
- ๐ Change to numeric searches: Renamed 'is' => 'equals' and 'is not' => 'does not equal'
- ๐ Allow negative track numbers; reducing the maximum track number to 32767.
- ๐ Localplay volume control moved to the playlist (rightbar)
- Podcast_Episode::check_play_history Podcast_Episode::set_played (match song.class versions for stat recording)
- Video::check_play_history Video::set_played (match song.class versions for stat recording)
- php_cs rules for line endings
- Simplify play history checks and code a bit more
- ๐ท Tag (Genre) searches compare each item (e.g Pop) rather than the whole string (Pop,Rock,etc)
- Replace "Browse Library" buttons with a search header allowing faster browsing of other types
- Share secrets are generated by generate_password instead of a separate function
- inet_ntop may not convert some binary IP addresses (like ::1) these now show up as "Invalid" in the ip history.
- Searches using numeric rules must use an integer. ('1 Star' => 1, '2 Stars' => 2, etc)
- bin/delete_disabled.inc require -x to execute. (previously you needed to edit the file)
๐ Deprecated
- ๐ป Horde_Browser::getIPAddress(). Use Core::get_user_ip() instead.
โ Removed
- bin/migrate_config.inc (This was used to migrate the config file from php4 to php5)
- EchoNest api/song previews
- ๐ User::update_user_stats (used in play index only and useless)
- Share::generate_secret; use generate_password instead
- Song::get_cache_count (unused)
- Ampache Debug check for 'safe_mode'
๐ Fixed
- ๐ Fixed a lot of incorrectly typed function calls and code documentation
- ๐ง Gravatar Plugin: Make sure https is used when force_ssl is configured
- Truncate strings to match database limits when strings go over
- โ Add User php warnings
- Channel authentication
- IP checks when sending null proxy values
- Gather art page layout
- Read vorbis rating correctly
- ๐ Search rules in UI failing to load with custom_metadata
- Warn correctly when inserting art fails
- Insert missing user preferences on login
- ๐ When you had beautiful_urls enabled tracks would not parse in localplay making them all Unknown
- Podcast durations aren't always correct format, prep the time before trying to insert it
- ๐ Subsonic playlist add/remove removing incorrect songs
- Search/Smartlists need to have results to be used in lists
- Auth issues with stats for recording and localplay
- Stream_urls were generated with a typo when downloading
- ๐ Respect album grouping using of the moment plugin
- Filter album title with grouping enabled. (seriously deadmau5, stop with the <> everywhere)
- Share playback without a UID would fail to start
- 0๏ธโฃ Set a default popular_threshold if unauthenticated or unset
- play/index would record democratic streams as a download
- 0๏ธโฃ Make sure the default preferences table has all the preferences in them
- Beets catalog bug; date_diff expecting a datetime but given a string
- Searches using user data like ratings has been split in the SQL correctly
- Flagged playlists never had their flag deleted
- offset and limit were incorrectly used for top/recent searches
๐ Security
- ๐ Fix: CVE-2020-13625 in phpmailer
API 4.2.0
๐ API versions will follow release version and no longer use builds in the integer versions (e.g. 420000)
๐ API 5.0.0-release will be the first Ampache release to match the release string.โ Added
- JSON API now available!
- Call xml as normal:
- [http://music.com.au/server/xml.server.php?action=handshake&auth=APIKEY&version=420000]
- Call the JSON server:
- [http://music.com.au/server/json.server.php?action=handshake&auth=APIKEY&version=420000]
- Example XML and JSON responses available here
- ๐ NEW API functions
- get_similar: send artist or song id to get related objects from last.fm
- shares: get a list of shares you can access
- share: get a share by id
- share_create: create a share
- share_edit: edit an existing share
- share_delete: delete an existing share
- podcasts: get a list of podcasts you can access
- podcast: get a podcast by id
- podcast_episodes: get a list of podcast_episodes you can access
- podcast_episode: get a podcast_episode by id
- podcast_episode_delete: delete an existing podcast_episode
- podcast_create: create a podcast
- podcast_edit: edit an existing podcast
- podcast_delete: delete an existing podcast
- update_podcast: sync and download new episodes
- licenses: get a list of licenses you can access
- license: get a license by id
- catalogs: get all the catalogs
- catalog: get a catalog by id
- catalog_file: clean, add, verify using the file path (good for scripting)
๐ Changed
- โฌ๏ธ Bump API version to 420000 (4.2.0)
- All calls that return songs now include
<playlisttrack>
which can be used to identify track order. <playcount>
added to objects with a playcount.<license>
added to song objects.- Don't gather art when adding songs
- Added actions to catalog_action. 'verify_catalog' 'gather_art'
- API function "playlist_edit": added ability to edit playlist items
- items = (string) comma-separated song_id's (replace existing items with a new object_id) //optional
- tracks = (string) comma-separated playlisttrack numbers matched to items in order //optional
- Random albums will get songs for all disks if album_group enabled
๐ Deprecated
- ๐ API Build number is depreciated (the last 3 digits of the api version)
- API 5.0.0 will be released with a string version ("5.0.0-release")
- All future 4.x.x API versions will follow the main Ampache version. (420000, 421000, 422000)
- ๐ total_count in the XML API is depreciated and will be removed in API 5.0.0.
- XML can count objects the same was as a JSON array [https://www.php.net/manual/en/simplexmlelement.count.php]
- ๐ Genre in songs is depreciated and will be removed in API 5.0.0.
- Use tag instead of genre, tag provides a genre ID as well as the name.
๐ Fixed
- Extra text in catalog API calls
- โก๏ธ Don't fail the API calls when the database needs updating