Giter VIP home page Giter VIP logo

hasgeek.tv's Introduction

Hasgeek TV

Source for Hasgeek TV.

This project is winding down.

Test deployment

Here is how you make a test deployment:

$ git clone https://github.com/hasgeek/hasgeek.tv.git
$ cd hasgeek.tv
$ cp instance/settings-sample.py instance/settings.py
$ vim instance/settings.py # Customize this file as needed
$ pip install -r requirements.txt
$ python runserver.py

Asset builds

To build for production:

make assets

or if make is not available,

cd hgtv/assets
npm install
npm run build

hasgeek.tv's People

Contributors

dependabot[bot] avatar haseebgit avatar iambibhas avatar jace avatar karthikb351 avatar kracekumar avatar miteshashar avatar nigelbabu avatar pre-commit-ci[bot] avatar pyup-bot avatar shreyas-satish avatar snyk-bot avatar vidya-ram avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

hasgeek.tv's Issues

Channels and Playlists

Use channels and playlists instead of shows and seasons. URLs will now be:

  1. /channel
  2. /channel/playlist
  3. /video/videoname (tentative)

Videos now have a many-to-many relationship with playlists (and channels?)

Mobile video page

The mobile view for a video page makes poor use of space. Compare our page with the YouTube Android app:

2012-12-31 23 00 50
2012-12-31 23 03 02

In the YouTube app, the video is pinned to the top of the screen along with the header. Only the lower part scrolls. This allows the user to interact with the rest of the page without interrupting the video. The video is also full-width with no margins.

In our version, the video is not full-width and is not pinned to the page. The video and slides are separated by a row of buttons and the speaker's name.

We have to rethink the layout of this page to make better use of space on mobile browsers. We should be designing this for Android first and then for iOS because Android allows embedded video while iOS only plays video full screen. A design for Android will also work on iOS, but not the other way around.

Extending/syncing imported playlists

Add a feature on the "edit playlist" page to add more videos to a HGTV playlist from a given YouTube playlist.

This should not change existing videos in the playlist i.e. ignore any duplicates.

Login prompt

The login link in the network bar should have a floating hint recommending that users login. The hint could say "This gets better if you login. It's easy."

Tagging speakers creates channels with the wrong names

When a speaker is tagged on a video, if the speaker has not previously logged into hasgeek.tv, a channel is created for them. This channel's name should be user.username or user.userid. However, this is not what happens. Instead, the name becomes channel.make_name(), which makes a name based on title.

This is incorrect and will break login for anyone else who has the same username.

Remove unused ChannelVideo model

HGTV has a ChannelVideo model that is referred to from the Channel model, but is never used.

Since the project's UX is now stable, and the stream playlist has provided this functionality, this model and references to it should be removed (after verifying that it does not break anything).

What appears on the Home page?

Had a discussion with Krace about this. As of now he's just pulling in the few playlists he's created.

The options are:

  1. Latest playlist created or one with video added most recently
  2. Only HasGeek created playlists
  3. Some complex algo to determine it!
  4. Human editor picks playlists every few days to feature

1 and 2 are easy to implement I would guess, but 1 could mean random rubbish showing up on the home page.

3 might involve us arguing over what's the best way to surface good playlists

4 is what I would suggest. It will involve some extra work of building an admin UI to pick playlists, but in the long run curating the home page is a good idea.

Adding a Plus button or Watch later on video thumbnail

Adding a "Plus" or "Watch" later button on video thumbnail makes easier for user to add video to specific playlist/ queue up .

And also it would be better if we add small description about the video below the video thumbnail.

Old style breadcrumbs in video edit screen

The video edit page is still using old-style breadcrumbs. Breadcrumb rendering should be moved into a macro that is called from everywhere. The macro should accept a list of objects as the parents parameter and render them with item.url_for() and item.title.

@Praseetha-KR, please ask @kracekumar for help with creating a Jinja2 macro.

Screen Shot 2013-01-15 at 3 43 25 AM

Smart playlists required

Our current approach for automatic playlists -- especially when tagging speakers -- is inefficient for queries from the video page. To find a list of speakers or count how many users have liked a video, we have to query for all playlists containing this video, then look at the type tag on each playlist.

This approach is going to cause severe performance issues as user activity grows, so we should fix it before launch with a new approach to auto playlists: smart playlists

Step A:

  1. Remove like/unlike for now. It'll come back in a different form later since binary states (like or dislike) are not suitable for our content
  2. Remove the "speaking-in" auto playlist. Add a many-to-many relationship between Video and Channel named "speakers". Let speakers be tagged directly to a video.

Step B:

  1. The path /<channel>/speaking-in renders channel.videos, which is the reverse side of the relationship Video.speakers. It renders using the same playlist template.

Show original playlist

If a video is being viewed in anything other than its original playlist, a link to the original playlist should be displayed below the video.

This can be determined in the view by checking if playlist == video.playlist.

Embed view required

HGTV needs an embed view that displays video and slides side-by-side, for use on the blog and elsewhere.

Sequences

Playlists need a sequence number to indicate their order in the channel. See Kharcha's ExpenseReport -> Expense relationship for how this should be done.

Videos also need a sequence number in the playlist, but this is harder because of the many-to-many relationship. The playlists_videos secondary table should now carry the seq column. This may require some messing with SQLAlchemy wrappers to manage.

Add more info about playlists on channel page

The playlists on a channel page are just bare links in wide boxes.

We can start by adding an abbreviated description of the playlist along with how many videos are in it.

Adding thumbnails of videos would be even better! :)

Mobile homepage

On the mobile version of the site, the homepage opens with "Featured Playlists" on top. This is confusing because it's not clear what the site is about. The splash image appears further down.

  1. This order should be reversed. Reverse the order of columns in the code and add the push-right class to the splash screen column.
  2. When the user selects a playlist, the thumbnails change, but this is not apparent on mobile because the thumbnails are off screen. The browser should scroll to the thumbnail area.
  3. The thumbnails appear right aligned with the rightmost bit chopped off.

store iframe details in table

When a user submits a video url, fetch all the required details and store the iframe related detail like frameborder, allowfullscreen, autoplay etc in a table ...

RSS/Atom feeds

HasGeek TV needs RSS or Atom feeds per channel and per playlist.

  1. The per-playlist version is a list of all videos in the playlist, sorted by playlists_videos.created_at. Don't use updated_at as that will change when the playlist order changes.
  2. The per-channel version is a list of all videos that were originally added to a playlist owned by the channel. The query for this is Video.query.filter(Video.playlist.in_(channel.playlists).order_by('created_at')

I'm uncomfortable using created_at in a user-facing query, but I don't think we have another column with the same data.

You can borrow the Atom feed template and code from Eventframe. See feed.xml and related code

Relationship type needed

The video to channel secondary relationship needs a type descriptor. If a speaker was tagged in an event channel's video, the relationship should imply speaker. Crew may be similarly tagged (cameraman, editor). If an organization was tagged, it could be the employer, event series, or producer of the item that the speaker covered.

Automatic playlist for all videos

Channels should have an automatic playlist named "stream"* (tentatively) where all videos are automatically added.

This playlist is created when you upload your first video to a channel. It's where your videos go if you don't pick a playlist to add them to (more on that below).

The Channel page now gets an "Add video" link which goes to /<channel>/new/stream, which provides the same New Video form and makes the stream playlist along with the video. The /new/stream URL rides on top of the new slug (which is not allowed in playlist names) without adding another reserved keyword. Using /stream/new will prevent stream from being renamed. HGTV allows automatic playlists to be renamed.

When a video is added to a playlist via the "Add Video" link, it is also added to the stream playlist.

User actions such as Like/Star/AddTo etc do not add videos to the stream. The stream is only for videos originally uploaded to each channel.

  • The word "stream" is from Flickr, which uses "Photostream".

Add a recorded-date to video model

By adding a recorded date to video model it becomes easier to sort video to render the video list view similar to schedule view.

This one requires alembic script as part of patch.

UI issues with speaker tagging box

Scenario 1:

  1. Go to a video's edit box
  2. Paste something into the Speaker tagging box

The Add button does not get enabled with a Paste event. Similarly, it does not get disabled after a Cut event.

Scenario 2:

  1. Type username of a valid speaker
  2. Click Add

The speaker is now added, but the box is not emptied. The text remains in it.

Homepage sidebar list item height

On the homepage sidebar, list items do not have a fixed size. They expand to fit the text. We have a combination of single- and double-line titles currently and this looks bad.

Screen Shot 2012-12-28 at 6 41 26 PM

Line items should be of fixed height of two lines, with overflow: hidden to cut off any text that exceeds two lines.

Unable to create New Playlist when viewing video

Unable to create a new playlist when viewing a video, default cursor appears only in Google chrome and it doesn't appear in Firefox and Internet Explorer.

When i click to write on the New Playlist, the pop up menu disappears. where as it works when switching to other with the Tab key.

Audio-only "videos"

HasGeek TV needs to support audio sources such as SoundCloud in addition to video sources. We may have a case of audio+slides instead of video+slides.

Add Speaker's Bio

Add speakers bio icon below the video toolbar which should be visible to usres.

Status of Like/dislike

As of now status of like/dislike shows only on users profile. Probably we should highlight the button of like/dislike . As a reference Youtube does this.

Like/Unlike button doesn't meet user expectation

When a user clicks Like or Unlike, they could be indicating a preference for one of two things:

  1. The speaker's presentation, or
  2. The video quality, which the speaker has no control of.

Having a single button will get us data where #1 and #2 are indistinguishable, so the feedback is not useful to either us or the speaker statistically.

Instead of Like/Unlike, we should have a Rate this button that opens a panel where the user can give separate feedback on (a) content, (b) presentation and (c) video quality.

Storing this in the user's automatic playlists is a bit too much, so we should store this on the Video model.

The "Like" feature also served as a proxy for the user's favourites. It'll now be replaced by the "Star" feature. There is a usability problem with this ("Like" is a better term than "Star") but that's for another ticket.

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.