Code Monkey home page Code Monkey logo

replay's Introduction

Project logo

[WIP] Replay

Explore and watch YouTube videos

Flatpak CI status Please do not ship this app yet Please do not theme this app Liberapay donations Telegram group badge

IMPORTANT: This project is work in progress. It's still in very early stages of development and isn't ready for use.

Created with privacy in mind, Replay is a new way to browse and watch your YouTube videos on laptops and phones. Check out the latest trends or quickly find that video of kittens that you love so much without having to open slow browsers that only know how to consume all the precious resources of your PC.

Install

Stable

Since this project is still under active development, there's no current stable build. You'll see a Flathub badge here when there's one.

Development

Development builds are automatically generated every time a new change lands on the main branch, and are marked with a custom icon and style. You can install a development build simply by going to the actions tab of this repository, and downloading one of those that have been successfully generated.

NOTE: You must download the artifact called "Flatpak Bundles", which contains 2 flatpak files ready to install: the application and the locales.

License

This project is licensed under the GNU General Public License v3 or any later version.

TL;DR: You may copy, distribute and modify this app as long as you track changes/dates in source files. Any modifications to GPL-licensed code must also be available under the GPL along with build & install instructions.

replay's People

Contributors

aleuqabali avatar dependabot[bot] avatar jannuary avatar lifeiscontent avatar marki2019 avatar naipotato avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  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

replay's Issues

Use the new `with` keyword when possible

The with keyboard seems to be a good way to reduce boilerplate code when many members of an instance are called consecutively

This:

this._a_long_private_field_name.do_this ();
this._a_long_private_field_name.do_another_thing ();
this._a_long_private_field_name.add ("Hi");
this._a_long_private_field_name.move ();

Becomes on this:

with (this._a_long_private_field_name) {
    do_this ();
    do_another_thing ();
    add ("Hi");
    move ();
}

Link subscribed channels across backends (youtube, odysee...) in one place

Depends on #76

Is your feature request related to a problem? Please describe.
Some content creators upload on multiple platforms, some videos are exclusive to one platform and some are duplicated. This makes it really hard (annoying/inconvenient) to keep track of all content from that creator.

Describe the solution you'd like
When the feed gets pulled, query all available (and user enabled) backends at the same time.
The default subscription view should be platform agnostic, zipping all duplicates into one and adding the exclusives. The user shouldn't care where the content is coming from, just that there is content. Basically an abstraction over backends :)
Linking could be done automatically by searching the channel name, but there should be a manual way to do it by channel url in case it fails.
If a video is available on multiple platforms the user needs a way to rank backends to decide from where we stream the video, or we could just default to youtube.
It should also have a manual choice in the video card menu.
grid
the Youtube, Odysee, Bitchute... would be a scrollable menu

Exporting, importing and syncing

Is your feature request related to a problem? Please describe.
If you have both a desktop and a phone (like pinephone) it's really annoying to keep track of subscriptions and settings on two devices simultaneously.

Describe the solution you'd like
The need for exporting and importing I think is obvious
Maybe syncing could be done with syncthing ? it's a mature project and it works p2p over the internet (if configured) and on the local network. Or maybe syncing gets left to the user and just offer instructions on what to sync

Update contributing guidelines

Once we solve #54, we should update the contributing guidelines with the new coding style, new guidelines for pull requests, and highlight the Telegram group

Nix flake

Is your feature request related to a problem?

This feature request is not related to a problem.

Describe the solution you'd like

Hello! This looks very cool, and I was wondering if a nix flake could be created so i can run this on NixOS easily? Thanks!

Describe alternatives you've considered

A package in nixpkgs unstable could also work.

Additional context

No response

Ability to store and organize playlists

Is your feature request related to a problem? Please describe.
One idea for Replay would be the ability to store and organize playlists, both custom and content creator playlists.

Describe the solution you'd like

It aligns with the Replay name as well, YouTube has a Watch Later Feature, but if I'm learning a subject it would be nice to create a playlist for things I'm interested in or learning about. E.g. I want to learn Vala, and I want to store all the videos I come across in Replay about Vala.

Describe alternatives you've considered
N/A

Additional context
It would be nice to store both videos and playlists from YouTube. that way you can organize based off a video series or just one off videos you want to watch.

No elements in window

Hi, I am in the process of making the AUR package and haven't been able to get it to work succesfully.
This is what it looks like (sorry for using custom theme):
screenshot@2020 05 14-12:10:39

I have the following dependecies:

  • Unitube-gtk-git: b43cd30-1 (this is the WIP AUR package)
  • libgee: 0.20.3-2
  • gtk3: 1:3.24.20-1
  • libhandy-git: 0.0.13.r270.gc100c7e-1

CI should ignore GitHub specific files

  • .github/ISSUE_TEMPLATE folder
  • .github/CODE_OF_CONDUCT.md
  • .github/CONTRIBUTING.md
  • pull_request_template.md

Most do not exist yet, but still need to be ignored

Empty window

Is there an existing issue for this?

  • I have searched the existing issues

Describe the bug

After install and launching app there is an empty window and nothing more

Nothing shows in terminal

To Reproduce

  1. Download latest flatpak
  2. Install it via terminal flatpak install app.drey.Replay.Devel.flatpak in package directory
  3. Launch app

Expected behavior

A working app

Screenshots

Снимок экрана от 2022-07-09 00-35-16

Kooha-07-09-2022-00-30-47.mp4

OS

Fedora Linux 36 (Silverblue edition)

Version

No response

Installation method

Flatpak from GitHub Actions

Additional context

No response

Should we move Replay-Design here?

Currently the repo where the designs live is somewhat separate from the app's repo. Should we consider moving it here and keeping it as an extra branch? Or maybe in a special folder within the project tree?

Review the coding style

We are currently using a code style very similar to C#, which may not be ideal for Vala projects.

Maybe we should adopt a code style more similar to that used in Vala?

Ideas for a new name :D

Ah, here we go...

Some of history

The name for this project, was inherited from a time where I was developing for UWP. I selected that name 'cause I was developing an "universal" application and it was a YouTube app so: Universal + YouTube = UniTube. Time later, Unigram was here, a Telegram client for Windows... Since then I'm trying to think a name to avoid the confusion that it may be related in some way to that project.

Fast forward to 2020, I'm on Linux since a few years, and I'm in love with GTK and GNOME, so I decided to restart my almost dead project again, but as a really universal app (multiplatform I mean) this time, using GTK and developing it as a GNOME app. But the name is still an outstanding account... So here we are :D

Things to consider

The new name should be attractive and should follow this rules:

  • Consist of one or two simple nouns
  • Be related to YouTube
  • Be short (less than 15 characters)
  • Be easy to pronounce
  • Use title case
  • Do not use trademarks or names of other projects
  • Not having a “G” prefix
  • Not be a complicated name or an acronym
  • Not made-up words or word combinations (sadly, the current one)

(those rules are extracted from this excellent article written by Tobias Bernard)

Proposed names

By @3eloa:
Cima

By @bertob:
Streams, Visor, Channels, Telly, Telecast

By @wada3n:
Cassette, Telegenic, Resume

By me:
Overflow, Replay

By a friend of mine:
Filmo

Let's go :D

Decide which method we will use to obtain the data

I open this issue for discussion.

Currently there are several ways in which Replay could obtain the data:

  • YouTube Data API (unpopular option for privacy lovers)
  • The Invidious API
  • Literally download YouTube web and parse data locally

Which method should be appropriate to use in this app? Which is the one that will hold up best in the long run?

The video resource is incomplete

The video resource in this library consists of 2 parts: the Video class and the VideoResource class. The first contains the data and the second contains the methods, they are divided for convenience.

The Video class currently only has the snippet object, it must also implement the following objects:

  • contentDetails
  • status
  • statistics
  • player
  • topicDetails
  • recordingDetails
  • fileDetails
  • processingDetails
  • suggestions
  • liveStreamingDetails
  • localizations

The VideoResource class currently only has the list method, it must also implement the following objects:

  • insert
  • update
  • rate
  • getRating
  • reportAbuse
  • delete

Some icons are missing

image

Missing icons:

  • go-home-symbolic
  • go-previous-symbolic
  • go-next-symbolic
  • system-run-symbolic
  • computer-fail-symbolic

Can't compile under archlinux / find gjson package

Is there an existing issue for this?

  • I have searched the existing issues

Describe the bug

When I compile it with meson setup it outputs:

...

Run-time dependency libadwaita-1 found: YES 1.2.2
Run-time dependency gee-0.8 found: YES 0.20.6
Run-time dependency gio-2.0 found: YES 2.74.5
Run-time dependency gjson-1.0 found: NO (tried pkgconfig)

../src/meson.build:28:0: ERROR: Dependency "gjson-1.0" not found, tried pkgconfig

I can't also find this package in archlinux aur or even on any git server.

Could you specify which library I need?

To Reproduce

No response

Expected behavior

No response

Screenshots

No response

OS

Artix (Archlinux)

Version

newest one

Installation method

None

Additional context

No response

error: app/app.drey.Replay.Devel.flatpak/x86_64/master not installed

Is there an existing issue for this?

  • I have searched the existing issues

Describe the bug

Installed from: https://github.com/nahuelwexd/Replay/actions/runs/3851479176

kreyren@dreamon ~/Downloads$ flatpak install --user app.drey.Replay.Devel.flatpak

Note that the directory 

'/var/lib/flatpak/exports/share'

is not in the search path set by the XDG_DATA_DIRS environment variable, so
applications installed by Flatpak may not appear on your desktop until the
session is restarted.


app.drey.Replay.Devel permissions:
    ipc    network    fallback-x11    wayland    x11    dri



        ID                                            Branch                Op          Remote                Download
 1. [✓] org.freedesktop.Platform.GL.default           22.08                 u           flathub               19.4 MB / 137.7 MB
 2. [✓] org.freedesktop.Platform.GL.default           22.08-extra           u           flathub                6.1 MB / 137.7 MB
 3. [✓] org.gnome.Platform.Locale                     43                    u           flathub                1.5 kB / 340.5 MB
 4. [✓] org.gnome.Platform                            43                    u           flathub                5.3 kB / 324.9 MB
 5. [✓] app.drey.Replay.Devel                         main                  i           devel-origin          0 bytes

Changes complete.
kreyren@dreamon ~/Downloads$ flatpak run app.drey.Replay.Devel.flatpak

Note that the directory 

'/var/lib/flatpak/exports/share'

is not in the search path set by the XDG_DATA_DIRS environment variable, so
applications installed by Flatpak may not appear on your desktop until the
session is restarted.

error: app/app.drey.Replay.Devel.flatpak/x86_64/master not installed

To Reproduce

No response

Expected behavior

No response

Screenshots

No response

OS

GNU Guix (https://git.savannah.gnu.org/cgit/guix.git/commit/?id=833febb522bd37a38156b558b108372b89a34949)

Version

No response

Installation method

Flatpak from GitHub Actions

Additional context

No response

AUR Package

Hi, I am looking into creating an AUR package for this. Would that be ok in it's current state of development, or would you want me to wait until it is stable?

Build action for ARM64

Is your feature request related to a problem? Please describe.
Cant install or build on Debian ARM64

Describe the solution you'd like
Add flatpak build action for ARM64

Additional context
This is an ideal app for Pinephone

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.