Hi everyone, I decided there simply were not enough docker apps for downloading Youtube videos, and so I made the situation worse :p

In all seriousness, I couldn’t find one that fulfilled all my desires in a YT downloader, so I wrote my own in python using pytubefix and streamlit. It’s still fairly rough, but it works, and i’d love to get your feedback. Installation is just a simple docker compose.

services:
    pytube-gui:
        container_name: pytube-gui
        image: artisanbytecrafter/pytube-gui:develop
        ports:
            - 8501:8501
        volumes:
            - /path/to/downloads:/app/downloads # set to where you want downloads to go

Please let me know if you run into any issues, or have any feedback. I do still have a long list :)

Source code: https://codeberg.org/ArtisanByteCrafter/pytube-gui

  • @[email protected]
    link
    fedilink
    English
    117 days ago

    I decided there simply were not enough docker apps for downloading Youtube videos, and so I made the situation worse :p

    You get my upvote for this alone!

  • @[email protected]
    link
    fedilink
    English
    137 days ago

    I’ll have to check this out. By any chance can you give it a Playlist and have it monitor it for changes and auto-download any new entries?

    • @[email protected]
      link
      fedilink
      English
      67 days ago

      yt-dlp supports downloading playlists. By using the --archive option it can save all downloaded video ID’s into a text file and will only download videos which are not in that file.

      I wrote a docker container with a friend that uses that mechanism to auto download new videos every time it is triggered using cron. The configuration is a bit rough though and there is no gui so if this supports that part as well I might switch.

      • @[email protected]
        link
        fedilink
        English
        27 days ago

        I have some batch jobs on my windows machine that do it, so I guess I could go to the trouble of building my own container to run them, was just looking for an easy way out ;)

    • @ArtVandelayOP
      link
      English
      37 days ago

      Playlist support is on the roadmap. I want to make sure existing functionality is solid first, and then i’d like to include this feature. There’s an issue in the tracker for it too.

    • Clay_pidgin
      link
      fedilink
      English
      27 days ago

      That’s a great idea. YouTube doesn’t have RSS feeds, does it?

  • @[email protected]
    link
    fedilink
    English
    107 days ago

    Is it possible to submit a channel and download all the videos (also new videos when they are released).

    • @ArtVandelayOP
      link
      English
      13 days ago

      I have playlist support now, but that’s all so far.

    • @grehund
      link
      English
      47 days ago

      TubeArchivist sounds like a better fit for that.

      • @[email protected]
        link
        fedilink
        English
        3
        edit-2
        7 days ago

        A simple cron job with youtube-dl works also fine.

        Edit: But thanks for your suggestion! I’ll take a look

        Edit 2: TubeArchivist looks nice, but way over my personal needs. Also, its performance requirements are quite high for my small server (4 Cores, 4 GB RAM). I’ll keep my small, scripted solution (yt-dl + store to nextcloud folders).

  • @[email protected]
    link
    fedilink
    English
    57 days ago

    <just some UI feedback from gleaning the screen shot>

    • looks clean enough
    • apparently contextual help, I like those
    • tables love to be sortable (maybe the table is already sortable, please indicate (🔺🔻))
    • the location of the ‘download’ button is somewhat random and it doesn’t need an extra border, the color is more than enough for it to stand out
    • this also affects the order of screen reading/information intake
    • @ArtVandelayOP
      link
      English
      37 days ago

      Thank you! The tables are indeed sortable by clicking the column headers. I do this with the underlying streamlit dataframe, I don’t believe they support styling the columns, but i’m not 100% sure. Feedback noted on the download button, the border is a remnant of a form submission that gradually got removed so now it’s just a form of one button. One of my chief goals was to avoid scrolling as much as possible.

  • @finitebanjo
    link
    English
    3
    edit-2
    6 days ago

    Idea for an unrelated browser extension:

    Add like 5-6 reccomended videos with similar tags for a platform other than YT to the top of YT Reccomendations.

    For people who want to spend less time on YT but dont want to spend more time searching.

  • RBG
    link
    fedilink
    English
    61
    edit-2
    7 days ago

    Would be nice if you could elaborate what exactly you did different than all the others?

    Edit: jeez, guys. It was just a question since they said “none of the others met their needs” so I was interested in that? Did that sound that rude? I am not a native English speaker, so I am not sure now. They are completely OK to ignore my question. But cool, will not ask that again and ignore such posts in the future.

    • @ArtVandelayOP
      link
      English
      77 days ago

      You’re ok, it’s a fair question. The initial want arose from my son asking me to download YT videos for him to watch offline, and the various youtube-dl, yt-dlp, pytube, etc based solutions all being in various stages of broken, due to how youtube always changes things on their end. I chose an underlying library (pytubefix) that seems to be fast in updating when YT breaks things. Nothing in my app is revolutionary on never seen before, except maybe the ability to choose and combine the exact stream you want, i’m not sure. I took everything I liked in various solutions and put them together to work how i wanted. Then I though maybe someone else might like it too, so i shared it :) I work on it when i want to and just kinda go in the direction i want.

      • RBG
        link
        fedilink
        English
        26 days ago

        Thank you! Also thanks for not getting discouraged to answer by all this comment mess.

      • @ArtVandelayOP
        link
        English
        37 days ago

        I am a data scientist, so i know python i guess is my only answer lol. I do love rust as a consumer, but I’m definitely not a full scale programmer.

    • @netvor
      link
      English
      -20
      edit-2
      7 days ago

      Why? Why ask for this from the creator?

      If someone can create new software and offer it for free, they should not also be expected to also create a comprehensive analysis of what other people did and list of differences.

      Just take it or leave it, it’s that simple. No need to act as if you’re trying to waste some door-to-door salesman’s time.

      Edit: I expected some downvotes but not that many.

      To my defense, the question in this thread is “you could elaborate what exactly you did different than all the others”. Look, I’m not a native English speaker either but I feel we could agree that is still pretty far away from simply being curious about design choices or “what led you to create this” sort of exploratory question.

      I might have overreacted, though, so sorry for that.

    • @[email protected]
      link
      fedilink
      English
      -177 days ago

      Why is this always the top comment when somebody makes something with the same functionality as another service?

      It’s just good there are some different options, maybe the UI is better, better tech stack, more responsive dev, who knows.

      • @Webster
        link
        English
        307 days ago

        In this particular case, OP said none of the others met their needs. I would like to know what new functionality this one has to know if it’s something I’m interested in or not. It’s not a critique - it’s helping me understand if I want to check it out or not.

        • @ArtVandelayOP
          link
          English
          27 days ago

          I gave a fuller answer here, but i also wanted to be able to run a solution in docker that could output straight to my NAS via volumes.

      • @netvor
        link
        English
        -157 days ago

        Some people see “free stuff”, and assume that it’s now open season on wasting OP’s time.

        It’s a good way to kill any enthusiasm. Imagine your kid made a spaghetti portrait as a gift for you and instead of just accepting it you asked, “but what exactly did you do differently from all kids on the block?”

  • @[email protected]
    link
    fedilink
    English
    347 days ago

    While I’m not able to give it a try right now (just woke up, need to get ready for work…) I just wanna thank you for sharing your work and contributing to the community !!

    It looks neat and simple :) !!!

  • @RookiA
    link
    English
    137 days ago

    Works pretty good but basic error handling is missing. I made a issue and a PR for it already. My first try at streamlit.

  • JackGreenEarth
    link
    fedilink
    English
    77 days ago

    I use Seal on Android and yt-dlp-gui on Linux because they’re native apps using native theming/design languages, but it’s always cool to have another option!