Code Monkey home page Code Monkey logo

alfred's People

Contributors

cameronrwest avatar mrharpo avatar normakster avatar subcontrabass avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

alfred's Issues

Dev Build Fail

Able to clone Alfred and Otto, when running ./al Dev had following error occur.

#16 [alfred_api stage-1  6/29] RUN wget https://www.imagemagick.org/download/ImageMagick.tar.gz
#16 0.742 --2022-06-26 21:36:46--  https://www.imagemagick.org/download/ImageMagick.tar.gz
#16 0.754 Resolving www.imagemagick.org (www.imagemagick.org)... 50.251.58.13
#16 0.838 Connecting to www.imagemagick.org (www.imagemagick.org)|50.251.58.13|:443... connected.
#16 1.064 HTTP request sent, awaiting response... 302 Found
#16 1.142 Location: https://download.imagemagick.org/archive/ImageMagick.tar.gz [following]
#16 1.142 --2022-06-26 21:36:46--  https://download.imagemagick.org/archive/ImageMagick.tar.gz
#16 1.142 Resolving download.imagemagick.org (download.imagemagick.org)... 50.251.58.13
#16 1.274 Connecting to download.imagemagick.org (download.imagemagick.org)|50.251.58.13|:443... connected.
#16 1.524 HTTP request sent, awaiting response... 404 Not Found
#16 1.644 2022-06-26 21:36:47 ERROR 404: Not Found.
#16 1.644
#16 ERROR: executor failed running [/bin/sh -c wget https://www.imagemagick.org/download/ImageMagick.tar.gz]: exit code: 8

#17 [alfred_worker builder 3/3] RUN git clone https://github.com/quaternionmedia/kburns-slideshow.git
#0 0.751 Cloning into 'kburns-slideshow'...
#17 CANCELED
------
 > [alfred_api stage-1  6/29] RUN wget https://www.imagemagick.org/download/ImageMagick.tar.gz:
50.251.58.13
#16 0.838 Connecting to www.imagemagick.org (www.imagemagick.org)|50.251.58.13|:443... connected.
50.251.58.13
#16 1.274 Connecting to download.imagemagick.org (download.imagemagick.org)|50.251.58.13|:443... connected.
#16 1.524 HTTP request sent, awaiting response... 404 Not Found
#16 1.644 2022-06-26 21:36:47 ERROR 404: Not Found.
#16 1.644
------
failed to solve: executor failed running [/bin/sh -c wget https://www.imagemagick.org/download/ImageMagick.tar.gz]: exit code: 8

Clip multi-select

Implement sortablejs MultiDrag functionality

Adds .selected class to highlight selected clips, colored according to style guide.

Create export function

Create button in timeline view which renders the current edl.

api.py

@app.get('/render/{edl})
def render(edl: str):
    # turn edl into ffmpeg concat script
    # run ffmpeg
    # return result

demo fails to download media

./alfred demo
returns error
Usage: wget [OPTION]... [URL]...
Can't timestamp and not clobber old files at the same time

ubuntu 18.0.4 4LTS

Update Slider component value on timeupdate event

When video is playing, the slider component should update it's value attribute (or vnode.state) with the currentTime value from the timeupdate event.

Currently, changes in the Slider component update the Monitor, but not the other way around.

Bin - media browser

website

  • Create a Bin component to list the available media.
  • Make items draggable into timeline
  • Display thumbnail
  • Set inpoint and outpoint of source media
  • Open (preview) media

api

  • Add a /videos path to return a list of available media
    • For now, return os.listdir('videos')
    • Eventually, return db results

Mobile Swipe

On android, S8, scale is too small to be useful. I suggest using CSS to swipe between menus/panels/components.

Add 'razor' tool to split clips

Create a toolbar in the timeline, and make two selectable tools:

pointer - regular cursor, for resizing edges and drag resorting.
razor - razor cursor, for splitting clips.

Clip.js

onclick: (vnode) => {
  if (vnode.style.cursor == 'razor') {
    // split clip at mouse point
  }
}

Add markers

Create a Marker component.

Each marker will have a time property and an editable text description.

class Marker() {
  constructor(vnode) {
    this.time = vnode.attrs.time
    this.text = vnode.attrs.text
  }
  view(vnode) {
    return m('.marker', {time: this.time}, [
      m('.marker_text', this.text)
    ])
  }
}

Markers will be instantiated on clips.
src/Clip.js

m.request('/markers/' + this.filename).then( (m) => {
  this.markers = m
}

marker information, is pulled from api:

@app.get('/markers/{filename}')
def get_markers(filename: str):
    # get list of markers
    return markers

Content Uploader

New feature:

  • import/upload/attach new videos to working directory.
  • Ideally this will be a passthrough to a users choice of cloud provider.
  • uploads to cloud and stores locally (if cloud isn't available)

Menu Redesign

  • Add title to website
  • Change logo to be Home link
  • Add Menu Bar that remains on top of window
  • Create function to see which page is active and set link in menu bar as such
  • Move MenuItem class name to menu bar links rather than link itself
  • Add NavButton that hides based on window size
  • Create NavLinks with special class to design separately in css
  • Update logo

Add Documents Page

Add Document page to list user documents

  • Create the Documents Page
  • Update the links in Menu and Index
  • Style the documents page

Seek to Edl time, instead of Video time

Current behavior

When the Slider changes value, it seeks to that time in the current video.

Desired behavior

Slider should seek to that time in the Edl.


We need a Monitor.seekEdl(t) function which finds the index of the clip number we need to seek to, and jumps to the appropriate file and time.

Clip time indicator display

Fix the current time indicator on Clips to display only when:

(Clip.pos == Edl.current) &&
(Clip.inpoint < Video.time < Clip.outpoint)

Add Footer

Adds Footer for general information always present

  • Create Footer file
  • Create Footer scss file for design
  • Updates Components Layout with footer

mulitple logins to same instance of site on local dev

Step 1 run dev server
Step 2 open instance of site and login
Step 3 open a second instance of site and login

Step 3 fails
Error in inspect console:
request.js:197 POST http://localhost:8000/auth/jwt/login 400 (Bad Request)

Touch resize should prevent sorting

When resizing a Clip from a touch event, sorting should be disabled.

Sorting is currently disabled when cursor == 'ew-resize', i.e. when a mouse hovers within a few pixels of the left or right edges of a Clip, but this does not apply to mobile devices and touch events.

Redesign Home Page

Redesign Home page to match website style

  • Add content for home page
  • Style home page to match website style

fix api download media

Currently, download fails under any of the following conditions:

  • the url does not contain it's proper extension (i.e. .mp4, .jpg, .png etc.)
  • if unsafe characters appear in the url, they will be stored in the filename.
  • If two files are downloaded with the same name, they will overwrite each other.

Possible solutions:

  • use Content-Disposition to identify file types
  • save filenames as a url hash

Clip drag adjust selection

When adjusting a clip duration by dragging the beginning time later, the graphics make it seem like it is shortening from the end.

Possible solution to freeze position while updating, and only redraw the entire timeline after update.

Possible graphical feature added to distinguish dragging from beginning of one rather than end of the other.
2020-02-11_15-29-54

๐Ÿ‘ฌ Copy button

Because

As a user, I should be able to easily copy the project data object with a button.

Done when

  • I can click on a button that copies a project to the clipboard.

Actions: resize and seek

When interacting with Clips, currently, the onmousedown event will seek to the appropriate place in the video, unless the cursor is an ew-resize, or the event is within 25px of an edge (for mobile clients, see #3).

How do we discriminate between a click (or touch) meant to resize a clip, vs clicking somewhere on that clip to jump to a time in the Monitor?

Similarly, how do we discriminate between a jump action, vs a drag re-sort?

Redesign Renders Page

Redesign Renders Page to match the rest of the website

  • Rename html components
  • Design to match the rest of website

Media not found

@mrharpo For the examples provided, do we need to have a script to fetch those locally, or should we change to have those facing public links?

api_1 | RuntimeError: File at path /app/videos/ATripToTheMoon.mp4 does not exist.

Render progress does not update

Because

When rendering with a worker attached to the production instance (run via docker), the progress bar stays at 0%, even though the render completes sucessfully.

Done when

  • Render progress updates results

Create menu and navigation

Move from single app to multiple routes.

/ - Home - display links to components
/timeline - Timeline component with Monitor, etc.
/projects - Projects compo

Add a sidebar nav menu with the same links.

Redesign Projects Page

Redesign Projects page to match website

  • Rename html components in projects for designing
  • Design project page elements to match website

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.