commit
27d027cabd
|
@ -85,5 +85,6 @@
|
|||
"**/l10n": true,
|
||||
"**/.vscode": true,
|
||||
"**/patches": true
|
||||
}
|
||||
},
|
||||
"git.alwaysSignOff": true
|
||||
}
|
||||
|
|
|
@ -50,14 +50,14 @@ You may need to clear browser cache to use location search.
|
|||
- **Feature**: Allow editing more EXIF fields ([#169](https://github.com/pulsejet/memories/issues/169))
|
||||
- **Feature**: Alpha integration with the face recognition app ([#146](https://github.com/pulsejet/memories/issues/146))
|
||||
- Fix downloading from albums ([#259](https://github.com/pulsejet/memories/issues/259))
|
||||
- Fix support for HEVC live photos ([#234](https://github.com/pulsejet/memories/issues/234))
|
||||
- Fix support for HEVC Live Photos ([#234](https://github.com/pulsejet/memories/issues/234))
|
||||
- Fix native photo sharing ([#254](https://github.com/pulsejet/memories/issues/254), [#263](https://github.com/pulsejet/memories/issues/263))
|
||||
- Use larger previews in viewer (please see [these docs](https://github.com/pulsejet/memories/wiki/Configuration#preview-storage-considerations)) ([#226](https://github.com/pulsejet/memories/issues/226))
|
||||
|
||||
## v4.8.0, v3.8.0 (2022-11-22)
|
||||
|
||||
- **Feature**: Support for Live Photos ([#124](https://github.com/pulsejet/memories/issues/124))
|
||||
- You need to run `occ memories:index --clear` to reindex live photos
|
||||
- You need to run `occ memories:index --clear` to reindex Live Photos
|
||||
- Only JPEG (iOS with MOV, Google, Samsung) is supported. HEIC is not supported.
|
||||
- **Feature**: Timeline path now scans recursively for mounted volumes / shares inside it
|
||||
- **Feature**: Multiple timeline paths can be specified ([#178](https://github.com/pulsejet/memories/issues/178))
|
||||
|
|
|
@ -107,7 +107,7 @@ class VideoController extends ApiBase
|
|||
*
|
||||
* @NoCSRFRequired
|
||||
*
|
||||
* Return the live video part of a live photo
|
||||
* Return the live video part of a Live Photo
|
||||
*/
|
||||
public function livephoto(
|
||||
int $fileid,
|
||||
|
|
|
@ -18,7 +18,7 @@ class LivePhoto
|
|||
$this->connection = $connection;
|
||||
}
|
||||
|
||||
/** Check if a given Exif data is the video part of a live photo */
|
||||
/** Check if a given Exif data is the video part of a Live Photo */
|
||||
public function isVideoPart(array &$exif)
|
||||
{
|
||||
return \array_key_exists('MIMEType', $exif)
|
||||
|
|
|
@ -94,7 +94,7 @@ class TimelineWrite
|
|||
$prevRow = $cursor->fetch();
|
||||
$cursor->closeCursor();
|
||||
|
||||
// Check in live-photo table in case this is a video part of a live photo
|
||||
// Check in live-photo table in case this is a video part of a Live Photo
|
||||
if (!$prevRow) {
|
||||
$query = $this->connection->getQueryBuilder();
|
||||
$query->select('fileid', 'mtime')
|
||||
|
@ -129,7 +129,7 @@ class TimelineWrite
|
|||
} catch (\Exception $e) {
|
||||
}
|
||||
|
||||
// Hand off if live photo video part
|
||||
// Hand off if Live Photo video part
|
||||
if ($isvideo && $this->livePhoto->isVideoPart($exif)) {
|
||||
$this->livePhoto->processVideoPart($file, $exif);
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@ import PhotoSwipe from "photoswipe";
|
|||
import * as utils from "../../services/Utils";
|
||||
|
||||
export function isLiveContent(content): boolean {
|
||||
// Do not play live photo if the slideshow is
|
||||
// Do not play Live Photo if the slideshow is
|
||||
// playing in full screen mode.
|
||||
if (document.fullscreenElement) {
|
||||
return false;
|
||||
|
|
|
@ -573,7 +573,7 @@ export default defineComponent({
|
|||
preventDragOffset: 40,
|
||||
});
|
||||
|
||||
// Live photo support
|
||||
// Live Photo support
|
||||
new PsLivePhoto(<any>this.photoswipe, {});
|
||||
|
||||
// Image support
|
||||
|
@ -866,10 +866,10 @@ export default defineComponent({
|
|||
// Only for JPEG for now
|
||||
if (!this.canEdit) return;
|
||||
|
||||
// Prevent editing live photos
|
||||
// Prevent editing Live Photos
|
||||
if (this.currentPhoto.liveid) {
|
||||
alert(
|
||||
this.t("memories", "Editing is currently disabled for live photos")
|
||||
this.t("memories", "Editing is currently disabled for Live Photos")
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -56,7 +56,7 @@ body.has-viewer header {
|
|||
margin: 0 10px; // was unset
|
||||
}
|
||||
|
||||
// Live photo transitions
|
||||
// Live Photo transitions
|
||||
:root {
|
||||
--livephoto-img-transition: opacity 0.4s linear, transform 0.3s ease-in-out;
|
||||
}
|
||||
|
|
|
@ -248,7 +248,7 @@ export function getFolderRoutePath(basePath: string) {
|
|||
}
|
||||
|
||||
/**
|
||||
* Get URL to live photo video part
|
||||
* Get URL to Live Photo video part
|
||||
*/
|
||||
export function getLivePhotoVideoUrl(p: IPhoto, transcode: boolean) {
|
||||
return API.Q(API.VIDEO_LIVEPHOTO(p.fileid), {
|
||||
|
@ -259,7 +259,7 @@ export function getLivePhotoVideoUrl(p: IPhoto, transcode: boolean) {
|
|||
}
|
||||
|
||||
/**
|
||||
* Set up hooks to set classes on parent element for live photo
|
||||
* Set up hooks to set classes on parent element for Live Photo
|
||||
* @param video Video element
|
||||
*/
|
||||
export function setupLivePhotoHooks(video: HTMLVideoElement) {
|
||||
|
|
|
@ -190,10 +190,10 @@ export async function* runInParallel<T>(
|
|||
}
|
||||
|
||||
/**
|
||||
* Extend given list of Ids with extra files for live photos.
|
||||
* Extend given list of Ids with extra files for Live Photos.
|
||||
*
|
||||
* @param photos list of photos to search for live photos
|
||||
* @returns list of file ids that contains extra file Ids for live photos if any
|
||||
* @param photos list of photos to search for Live Photos
|
||||
* @returns list of file ids that contains extra file Ids for Live Photos if any
|
||||
*/
|
||||
async function extendWithLivePhotos(photos: IPhoto[]) {
|
||||
const livePhotos = (
|
||||
|
@ -230,7 +230,7 @@ export async function* deletePhotos(photos: IPhoto[]) {
|
|||
return;
|
||||
}
|
||||
|
||||
// Extend with live photos unless this is an album
|
||||
// Extend with Live Photos unless this is an album
|
||||
if (window.vueroute().name !== "albums") {
|
||||
photos = await extendWithLivePhotos(photos);
|
||||
}
|
||||
|
@ -292,7 +292,7 @@ export async function* movePhotos(
|
|||
targetPath += "/";
|
||||
}
|
||||
|
||||
// Also move the live photo videos
|
||||
// Also move the Live Photo videos
|
||||
photos = await extendWithLivePhotos(photos);
|
||||
const fileIdsSet = new Set(photos.map((p) => p.fileid));
|
||||
|
||||
|
|
|
@ -57,7 +57,7 @@ export type IPhoto = {
|
|||
w?: number;
|
||||
/** Height of full image */
|
||||
h?: number;
|
||||
/** Live photo identifier */
|
||||
/** Live Photo identifier */
|
||||
liveid?: string;
|
||||
|
||||
/** Grid display width px */
|
||||
|
|
Loading…
Reference in New Issue