GET https://kbin.spritesserver.nl/index.php/u/@danielquinn@lemmy.ca/commented/2023-10-14::2023-10-14

Security

Token

There is no security token.

Firewall

main Name
Security enabled
Stateless

Configuration

Key Value
provider security.user.provider.concrete.app_user_provider
context main
entry_point App\Security\KbinAuthenticator
user_checker App\Security\UserChecker
access_denied_handler (none)
access_denied_url (none)
authenticators
[
  "two_factor"
  "remember_me"
  "App\Security\KbinAuthenticator"
  "App\Security\FacebookAuthenticator"
  "App\Security\GoogleAuthenticator"
  "App\Security\GithubAuthenticator"
  "App\Security\KeycloakAuthenticator"
]

Listeners

Listener Duration Response
Symfony\Component\Security\Http\Firewall\ChannelListener {#723
  -map: Symfony\Component\Security\Http\AccessMap {#722 …}
  -logger: Monolog\Logger {#783 …}
  -httpPort: 80
  -httpsPort: 443
}
0.00 ms (none)
Symfony\Component\Security\Http\Firewall\ContextListener {#706
  -tokenStorage: Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage {#1017 …}
  -sessionKey: "_security_main"
  -logger: Monolog\Logger {#783 …}
  -userProviders: Symfony\Component\DependencyInjection\Argument\RewindableGenerator {#705 …}
  -dispatcher: Symfony\Component\EventDispatcher\Debug\TraceableEventDispatcher {#747 …}
  -registered: false
  -trustResolver: Scheb\TwoFactorBundle\Security\Authentication\AuthenticationTrustResolver {#780 …}
  -sessionTrackerEnabler: Symfony\Component\Security\Core\Authentication\Token\Storage\UsageTrackingTokenStorage::enableUsageTracking(): void {#703 …}
}
35.45 ms (none)
Symfony\Component\Security\Http\Firewall\AuthenticatorManagerListener {#584
  -authenticatorManager: Symfony\Component\Security\Http\Authentication\AuthenticatorManager {#595 …}
}
0.00 ms (none)
Scheb\TwoFactorBundle\Security\Http\Firewall\TwoFactorAccessListener {#582
  -twoFactorFirewallConfig: Scheb\TwoFactorBundle\Security\TwoFactor\TwoFactorFirewallConfig {#842 …}
  -tokenStorage: Symfony\Component\Security\Core\Authentication\Token\Storage\UsageTrackingTokenStorage {#1018 …}
  -twoFactorAccessDecider: Scheb\TwoFactorBundle\Security\Authorization\TwoFactorAccessDecider {#581 …}
}
0.08 ms (none)
Symfony\Component\Security\Http\Firewall\AccessListener {#579
  -tokenStorage: Symfony\Component\Security\Core\Authentication\Token\Storage\UsageTrackingTokenStorage {#1018 …}
  -accessDecisionManager: Symfony\Component\Security\Core\Authorization\TraceableAccessDecisionManager {#937 …}
  -map: Symfony\Component\Security\Http\AccessMap {#722 …}
}
0.00 ms (none)
Symfony\Component\Security\Http\Firewall\LogoutListener {#786
  -tokenStorage: Symfony\Component\Security\Core\Authentication\Token\Storage\UsageTrackingTokenStorage {#1018 …}
  -options: [
    "csrf_parameter" => "_csrf_token"
    "csrf_token_id" => "logout"
    "logout_path" => "app_logout"
  ]
  -httpUtils: Symfony\Component\Security\Http\HttpUtils {#841 …}
  -csrfTokenManager: Symfony\Component\Security\Csrf\CsrfTokenManager {#1015 …}
  -eventDispatcher: Symfony\Component\EventDispatcher\Debug\TraceableEventDispatcher {#747 …}
}
0.00 ms (none)

Authenticators

No authenticators have been recorded. Check previous profiles on your authentication endpoint.

Access Decision

affirmative Strategy
# Voter class
1
"Symfony\Component\Security\Core\Authorization\Voter\AuthenticatedVoter"
2
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
3
"Symfony\Component\Security\Core\Authorization\Voter\RoleHierarchyVoter"
4
"Symfony\Component\Security\Core\Authorization\Voter\ExpressionVoter"
5
"App\Security\Voter\EntryCommentVoter"
6
"App\Security\Voter\EntryVoter"
7
"App\Security\Voter\MagazineVoter"
8
"App\Security\Voter\MessageThreadVoter"
9
"App\Security\Voter\MessageVoter"
10
"App\Security\Voter\NotificationVoter"
11
"App\Security\Voter\OAuth2UserConsentVoter"
12
"App\Security\Voter\PostCommentVoter"
13
"App\Security\Voter\PostVoter"
14
"App\Security\Voter\UserVoter"

Access decision log

# Result Attributes Object
1 DENIED ROLE_USER
null
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"Symfony\Component\Security\Core\Authorization\Voter\RoleHierarchyVoter"
ACCESS DENIED
"App\Security\Voter\EntryCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
2 DENIED moderate
App\Entity\Entry {#1614
  +user: App\Entity\User {#258 …}
  +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
  +image: Proxies\__CG__\App\Entity\Image {#1581 …}
  +domain: Proxies\__CG__\App\Entity\Domain {#1654 …}
  +slug: "I-made-a-thing-to-make-playing-YouTube-videos-locally"
  +title: "I made a thing to make playing YouTube videos locally from your browser easier"
  +url: "https://gitlab.com/danielquinn/video-bypass"
  +body: """
    The other day someone was complaining about the new ad blocker-blocker on YouTube and I mentioned that it might be fun to write a Firefox extension that would just load up `yt-dlp` and play the video through `mpv`.\n
    \n
    It turns out, writing a Firefox extension is *easy* and tricking Firefox into launching `yt-dlp` isn’t much harder (though it does require some annoying configuration on the user’s end).\n
    \n
    Anyway, if you’re a Linux user, feel free to try it out. I don’t know how much I’m going to pour into this, but as an exercise of “can this be done”, it was pretty good for a few hours on a Friday night.
    """
  +type: "link"
  +lang: "en"
  +isOc: false
  +hasEmbed: false
  +commentCount: 19
  +favouriteCount: 200
  +score: 0
  +isAdult: false
  +sticky: false
  +lastActive: DateTime @1707557582 {#1446
    date: 2024-02-10 10:33:02.0 +01:00
  }
  +ip: null
  +adaAmount: 0
  +tags: null
  +mentions: null
  +comments: Doctrine\ORM\PersistentCollection {#1652 …}
  +votes: Doctrine\ORM\PersistentCollection {#1649 …}
  +reports: Doctrine\ORM\PersistentCollection {#1656 …}
  +favourites: Doctrine\ORM\PersistentCollection {#1525 …}
  +notifications: Doctrine\ORM\PersistentCollection {#1526 …}
  +badges: Doctrine\ORM\PersistentCollection {#1557 …}
  +children: [
    3 => App\Entity\EntryComment {#1630
      +user: App\Entity\User {#258 …}
      +entry: App\Entity\Entry {#1614}
      +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
      +image: null
      +parent: Proxies\__CG__\App\Entity\EntryComment {#2411 …}
      +root: Proxies\__CG__\App\Entity\EntryComment {#2411 …}
      +body: "Is there another way to do this? This hack was the only way I could figure out how to get Firefox to invoke an external binary, but if there’s a more conventional way to do it, I’d like to know 'cause I have another more complicated project in need of a pattern much like this one."
      +lang: "en"
      +isAdult: false
      +favouriteCount: 1
      +score: 0
      +lastActive: DateTime @1697268007 {#1702
        date: 2023-10-14 09:20:07.0 +02:00
      }
      +ip: null
      +tags: null
      +mentions: [
        "@danielquinn@lemmy.ca"
        "@Morgikan@lemm.ee"
      ]
      +children: Doctrine\ORM\PersistentCollection {#2448 …}
      +nested: Doctrine\ORM\PersistentCollection {#2465 …}
      +votes: Doctrine\ORM\PersistentCollection {#1740 …}
      +reports: Doctrine\ORM\PersistentCollection {#1739 …}
      +favourites: Doctrine\ORM\PersistentCollection {#2460 …}
      +notifications: Doctrine\ORM\PersistentCollection {#2462 …}
      -id: 48003
      -bodyTs: "'anoth':3,46 'binari':26 'caus':43 'complic':48 'convent':33 'could':15 'd':39 'extern':25 'figur':16 'firefox':21 'get':20 'hack':9 'invok':23 'know':42 'like':40,56 'much':55 'need':51 'one':58 'pattern':54 'project':49 'way':4,13,34"
      +ranking: 0
      +commentCount: 0
      +upVotes: 0
      +downVotes: 0
      +visibility: "visible             "
      +apId: "https://lemmy.ca/comment/3993154"
      +editedAt: null
      +createdAt: DateTimeImmutable @1697268007 {#1620
        date: 2023-10-14 09:20:07.0 +02:00
      }
      +"title": 48003
    }
    1 => App\Entity\EntryComment {#2384
      +user: App\Entity\User {#258 …}
      +entry: App\Entity\Entry {#1614}
      +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
      +image: null
      +parent: Proxies\__CG__\App\Entity\EntryComment {#2378 …}
      +root: Proxies\__CG__\App\Entity\EntryComment {#2378 …}
      +body: """
        Honestly, because I didn’t know (a) that ff2mpv even existed, or that (b) mpv could play YouTube URLs directly. So thanks! I learnt two things today :-)\n
        \n
        It was still a fun project though 'cause I learnt how to write a Firefox extension *and* get the browser to launch programs on-click, so not a waste of time!
        """
      +lang: "en"
      +isAdult: false
      +favouriteCount: 13
      +score: 0
      +lastActive: DateTime @1697288649 {#2382
        date: 2023-10-14 15:04:09.0 +02:00
      }
      +ip: null
      +tags: null
      +mentions: [
        "@danielquinn@lemmy.ca"
        "@khorovodoved@lemm.ee"
      ]
      +children: Doctrine\ORM\PersistentCollection {#2379 …}
      +nested: Doctrine\ORM\PersistentCollection {#2383 …}
      +votes: Doctrine\ORM\PersistentCollection {#1906 …}
      +reports: Doctrine\ORM\PersistentCollection {#1708 …}
      +favourites: Doctrine\ORM\PersistentCollection {#1410 …}
      +notifications: Doctrine\ORM\PersistentCollection {#1907 …}
      -id: 48431
      -bodyTs: "'b':14 'browser':47 'caus':35 'click':53 'could':16 'didn':4 'direct':20 'even':10 'exist':11 'extens':43 'ff2mpv':9 'firefox':42 'fun':32 'get':45 'honest':1 'know':6 'launch':49 'learnt':24,37 'mpv':15 'on-click':51 'play':17 'program':50 'project':33 'still':30 'thank':22 'thing':26 'though':34 'time':59 'today':27 'two':25 'url':19 'wast':57 'write':40 'youtub':18"
      +ranking: 0
      +commentCount: 0
      +upVotes: 0
      +downVotes: 0
      +visibility: "visible             "
      +apId: "https://lemmy.ca/comment/3997262"
      +editedAt: null
      +createdAt: DateTimeImmutable @1697288649 {#2385
        date: 2023-10-14 15:04:09.0 +02:00
      }
      +"title": 48431
    }
    2 => App\Entity\EntryComment {#2371
      +user: App\Entity\User {#258 …}
      +entry: App\Entity\Entry {#1614}
      +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
      +image: null
      +parent: Proxies\__CG__\App\Entity\EntryComment {#2467 …}
      +root: Proxies\__CG__\App\Entity\EntryComment {#2467 …}
      +body: """
        I don’t think I have it in me to put together a video, but I can describe it if you like.\n
        \n
        Once you install the extension and follow the setup instructions, you just go to a YouTube page. The extension adds an ugly button to the top-left of the page that says “bypass”. When you click it, Firefox launches `yt-dlp [the URL you’re at] -o - | mpv -` which basically just downloads the video and streams the output through the `mpv` video player. So now you’re watching just the video, with no web page necessary.
        """
      +lang: "en"
      +isAdult: false
      +favouriteCount: 3
      +score: 0
      +lastActive: DateTime @1697268377 {#1723
        date: 2023-10-14 09:26:17.0 +02:00
      }
      +ip: null
      +tags: null
      +mentions: [
        "@danielquinn@lemmy.ca"
        "@zaknenou@lemmy.dbzer0.com"
      ]
      +children: Doctrine\ORM\PersistentCollection {#2468 …}
      +nested: Doctrine\ORM\PersistentCollection {#2363 …}
      +votes: Doctrine\ORM\PersistentCollection {#2377 …}
      +reports: Doctrine\ORM\PersistentCollection {#2359 …}
      +favourites: Doctrine\ORM\PersistentCollection {#2364 …}
      +notifications: Doctrine\ORM\PersistentCollection {#2380 …}
      -id: 48009
      -bodyTs: "'add':42 'basic':74 'button':45 'bypass':56 'click':59 'describ':18 'dlp':65 'download':76 'extens':27,41 'firefox':61 'follow':29 'go':35 'instal':25 'instruct':32 'launch':62 'left':50 'like':22 'mpv':72,85 'necessari':100 'o':71 'output':82 'page':39,53,99 'player':87 'put':11 're':69,91 'say':55 'setup':31 'stream':80 'think':4 'togeth':12 'top':49 'top-left':48 'ugli':44 'url':67 'video':14,78,86,95 'watch':92 'web':98 'youtub':38 'yt':64 'yt-dlp':63"
      +ranking: 0
      +commentCount: 0
      +upVotes: 0
      +downVotes: 0
      +visibility: "visible             "
      +apId: "https://lemmy.ca/comment/3993221"
      +editedAt: null
      +createdAt: DateTimeImmutable @1697268377 {#2471
        date: 2023-10-14 09:26:17.0 +02:00
      }
      +"title": 48009
    }
    0 => App\Entity\EntryComment {#2391
      +user: App\Entity\User {#258 …}
      +entry: App\Entity\Entry {#1614}
      +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
      +image: null
      +parent: Proxies\__CG__\App\Entity\EntryComment {#2389 …}
      +root: Proxies\__CG__\App\Entity\EntryComment {#2411 …}
      +body: "That’s actually very helpful, thanks. I’ve been working on another project to open certain URLs in specific browsers/profiles, and wanted to be sure that I wasn’t missing a more obvious design pattern. The project is [here](https://gitlab.com/danielquinn/opening) if you’re curious."
      +lang: "en"
      +isAdult: false
      +favouriteCount: 1
      +score: 0
      +lastActive: DateTime @1697303255 {#1407
        date: 2023-10-14 19:07:35.0 +02:00
      }
      +ip: null
      +tags: null
      +mentions: [
        "@danielquinn@lemmy.ca"
        "@Morgikan@lemm.ee"
      ]
      +children: Doctrine\ORM\PersistentCollection {#2369 …}
      +nested: Doctrine\ORM\PersistentCollection {#2392 …}
      +votes: Doctrine\ORM\PersistentCollection {#2395 …}
      +reports: Doctrine\ORM\PersistentCollection {#1384 …}
      +favourites: Doctrine\ORM\PersistentCollection {#1383 …}
      +notifications: Doctrine\ORM\PersistentCollection {#1405 …}
      -id: 48905
      -bodyTs: "'/danielquinn/opening)':42 'actual':3 'anoth':12 'browsers/profiles':20 'certain':16 'curious':46 'design':34 'gitlab.com':41 'gitlab.com/danielquinn/opening)':40 'help':5 'miss':30 'obvious':33 'open':15 'pattern':35 'project':13,37 're':45 'specif':19 'sure':25 'thank':6 'url':17 've':8 'want':22 'wasn':28 'work':10"
      +ranking: 0
      +commentCount: 0
      +upVotes: 0
      +downVotes: 0
      +visibility: "visible             "
      +apId: "https://lemmy.ca/comment/4002090"
      +editedAt: null
      +createdAt: DateTimeImmutable @1697303255 {#1883
        date: 2023-10-14 19:07:35.0 +02:00
      }
      +"title": 48905
    }
  ]
  -id: 5166
  -titleTs: "'browser':13 'easier':14 'local':10 'made':2 'make':6 'play':7 'thing':4 'video':9 'youtub':8"
  -bodyTs: "'ad':10 'annoy':69 'anyway':76 'blocker':12,13 'blocker-block':11 'complain':6 'configur':70 'day':3 'dlp':36,59 'done':110 'easi':51 'end':75 'exercis':105 'extens':28,49 'feel':83 'firefox':27,48,54 'free':84 'friday':121 'fun':23 'go':97 'good':114 'harder':63 'hour':118 'isn':60 'know':92 'launch':56 'linux':81 'load':32 'm':96 'mention':18 'might':21 'mpv':42 'much':62,94 'new':9 'night':122 'play':38 'pour':99 'pretti':113 're':79 'requir':67 'someon':4 'though':64 'tri':86 'trick':53 'turn':44 'user':73,82 'video':40 'would':30 'write':25,46 'youtub':15 'yt':35,58 'yt-dlp':34,57"
  +cross: false
  +upVotes: 0
  +downVotes: 0
  +ranking: 1697325241
  +visibility: "visible             "
  +apId: "https://lemmy.ca/post/7150213"
  +editedAt: null
  +createdAt: DateTimeImmutable @1697238841 {#1442
    date: 2023-10-14 01:14:01.0 +02:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryVoter"
ACCESS DENIED
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
3 DENIED edit
App\Entity\Entry {#1614
  +user: App\Entity\User {#258 …}
  +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
  +image: Proxies\__CG__\App\Entity\Image {#1581 …}
  +domain: Proxies\__CG__\App\Entity\Domain {#1654 …}
  +slug: "I-made-a-thing-to-make-playing-YouTube-videos-locally"
  +title: "I made a thing to make playing YouTube videos locally from your browser easier"
  +url: "https://gitlab.com/danielquinn/video-bypass"
  +body: """
    The other day someone was complaining about the new ad blocker-blocker on YouTube and I mentioned that it might be fun to write a Firefox extension that would just load up `yt-dlp` and play the video through `mpv`.\n
    \n
    It turns out, writing a Firefox extension is *easy* and tricking Firefox into launching `yt-dlp` isn’t much harder (though it does require some annoying configuration on the user’s end).\n
    \n
    Anyway, if you’re a Linux user, feel free to try it out. I don’t know how much I’m going to pour into this, but as an exercise of “can this be done”, it was pretty good for a few hours on a Friday night.
    """
  +type: "link"
  +lang: "en"
  +isOc: false
  +hasEmbed: false
  +commentCount: 19
  +favouriteCount: 200
  +score: 0
  +isAdult: false
  +sticky: false
  +lastActive: DateTime @1707557582 {#1446
    date: 2024-02-10 10:33:02.0 +01:00
  }
  +ip: null
  +adaAmount: 0
  +tags: null
  +mentions: null
  +comments: Doctrine\ORM\PersistentCollection {#1652 …}
  +votes: Doctrine\ORM\PersistentCollection {#1649 …}
  +reports: Doctrine\ORM\PersistentCollection {#1656 …}
  +favourites: Doctrine\ORM\PersistentCollection {#1525 …}
  +notifications: Doctrine\ORM\PersistentCollection {#1526 …}
  +badges: Doctrine\ORM\PersistentCollection {#1557 …}
  +children: [
    3 => App\Entity\EntryComment {#1630
      +user: App\Entity\User {#258 …}
      +entry: App\Entity\Entry {#1614}
      +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
      +image: null
      +parent: Proxies\__CG__\App\Entity\EntryComment {#2411 …}
      +root: Proxies\__CG__\App\Entity\EntryComment {#2411 …}
      +body: "Is there another way to do this? This hack was the only way I could figure out how to get Firefox to invoke an external binary, but if there’s a more conventional way to do it, I’d like to know 'cause I have another more complicated project in need of a pattern much like this one."
      +lang: "en"
      +isAdult: false
      +favouriteCount: 1
      +score: 0
      +lastActive: DateTime @1697268007 {#1702
        date: 2023-10-14 09:20:07.0 +02:00
      }
      +ip: null
      +tags: null
      +mentions: [
        "@danielquinn@lemmy.ca"
        "@Morgikan@lemm.ee"
      ]
      +children: Doctrine\ORM\PersistentCollection {#2448 …}
      +nested: Doctrine\ORM\PersistentCollection {#2465 …}
      +votes: Doctrine\ORM\PersistentCollection {#1740 …}
      +reports: Doctrine\ORM\PersistentCollection {#1739 …}
      +favourites: Doctrine\ORM\PersistentCollection {#2460 …}
      +notifications: Doctrine\ORM\PersistentCollection {#2462 …}
      -id: 48003
      -bodyTs: "'anoth':3,46 'binari':26 'caus':43 'complic':48 'convent':33 'could':15 'd':39 'extern':25 'figur':16 'firefox':21 'get':20 'hack':9 'invok':23 'know':42 'like':40,56 'much':55 'need':51 'one':58 'pattern':54 'project':49 'way':4,13,34"
      +ranking: 0
      +commentCount: 0
      +upVotes: 0
      +downVotes: 0
      +visibility: "visible             "
      +apId: "https://lemmy.ca/comment/3993154"
      +editedAt: null
      +createdAt: DateTimeImmutable @1697268007 {#1620
        date: 2023-10-14 09:20:07.0 +02:00
      }
      +"title": 48003
    }
    1 => App\Entity\EntryComment {#2384
      +user: App\Entity\User {#258 …}
      +entry: App\Entity\Entry {#1614}
      +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
      +image: null
      +parent: Proxies\__CG__\App\Entity\EntryComment {#2378 …}
      +root: Proxies\__CG__\App\Entity\EntryComment {#2378 …}
      +body: """
        Honestly, because I didn’t know (a) that ff2mpv even existed, or that (b) mpv could play YouTube URLs directly. So thanks! I learnt two things today :-)\n
        \n
        It was still a fun project though 'cause I learnt how to write a Firefox extension *and* get the browser to launch programs on-click, so not a waste of time!
        """
      +lang: "en"
      +isAdult: false
      +favouriteCount: 13
      +score: 0
      +lastActive: DateTime @1697288649 {#2382
        date: 2023-10-14 15:04:09.0 +02:00
      }
      +ip: null
      +tags: null
      +mentions: [
        "@danielquinn@lemmy.ca"
        "@khorovodoved@lemm.ee"
      ]
      +children: Doctrine\ORM\PersistentCollection {#2379 …}
      +nested: Doctrine\ORM\PersistentCollection {#2383 …}
      +votes: Doctrine\ORM\PersistentCollection {#1906 …}
      +reports: Doctrine\ORM\PersistentCollection {#1708 …}
      +favourites: Doctrine\ORM\PersistentCollection {#1410 …}
      +notifications: Doctrine\ORM\PersistentCollection {#1907 …}
      -id: 48431
      -bodyTs: "'b':14 'browser':47 'caus':35 'click':53 'could':16 'didn':4 'direct':20 'even':10 'exist':11 'extens':43 'ff2mpv':9 'firefox':42 'fun':32 'get':45 'honest':1 'know':6 'launch':49 'learnt':24,37 'mpv':15 'on-click':51 'play':17 'program':50 'project':33 'still':30 'thank':22 'thing':26 'though':34 'time':59 'today':27 'two':25 'url':19 'wast':57 'write':40 'youtub':18"
      +ranking: 0
      +commentCount: 0
      +upVotes: 0
      +downVotes: 0
      +visibility: "visible             "
      +apId: "https://lemmy.ca/comment/3997262"
      +editedAt: null
      +createdAt: DateTimeImmutable @1697288649 {#2385
        date: 2023-10-14 15:04:09.0 +02:00
      }
      +"title": 48431
    }
    2 => App\Entity\EntryComment {#2371
      +user: App\Entity\User {#258 …}
      +entry: App\Entity\Entry {#1614}
      +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
      +image: null
      +parent: Proxies\__CG__\App\Entity\EntryComment {#2467 …}
      +root: Proxies\__CG__\App\Entity\EntryComment {#2467 …}
      +body: """
        I don’t think I have it in me to put together a video, but I can describe it if you like.\n
        \n
        Once you install the extension and follow the setup instructions, you just go to a YouTube page. The extension adds an ugly button to the top-left of the page that says “bypass”. When you click it, Firefox launches `yt-dlp [the URL you’re at] -o - | mpv -` which basically just downloads the video and streams the output through the `mpv` video player. So now you’re watching just the video, with no web page necessary.
        """
      +lang: "en"
      +isAdult: false
      +favouriteCount: 3
      +score: 0
      +lastActive: DateTime @1697268377 {#1723
        date: 2023-10-14 09:26:17.0 +02:00
      }
      +ip: null
      +tags: null
      +mentions: [
        "@danielquinn@lemmy.ca"
        "@zaknenou@lemmy.dbzer0.com"
      ]
      +children: Doctrine\ORM\PersistentCollection {#2468 …}
      +nested: Doctrine\ORM\PersistentCollection {#2363 …}
      +votes: Doctrine\ORM\PersistentCollection {#2377 …}
      +reports: Doctrine\ORM\PersistentCollection {#2359 …}
      +favourites: Doctrine\ORM\PersistentCollection {#2364 …}
      +notifications: Doctrine\ORM\PersistentCollection {#2380 …}
      -id: 48009
      -bodyTs: "'add':42 'basic':74 'button':45 'bypass':56 'click':59 'describ':18 'dlp':65 'download':76 'extens':27,41 'firefox':61 'follow':29 'go':35 'instal':25 'instruct':32 'launch':62 'left':50 'like':22 'mpv':72,85 'necessari':100 'o':71 'output':82 'page':39,53,99 'player':87 'put':11 're':69,91 'say':55 'setup':31 'stream':80 'think':4 'togeth':12 'top':49 'top-left':48 'ugli':44 'url':67 'video':14,78,86,95 'watch':92 'web':98 'youtub':38 'yt':64 'yt-dlp':63"
      +ranking: 0
      +commentCount: 0
      +upVotes: 0
      +downVotes: 0
      +visibility: "visible             "
      +apId: "https://lemmy.ca/comment/3993221"
      +editedAt: null
      +createdAt: DateTimeImmutable @1697268377 {#2471
        date: 2023-10-14 09:26:17.0 +02:00
      }
      +"title": 48009
    }
    0 => App\Entity\EntryComment {#2391
      +user: App\Entity\User {#258 …}
      +entry: App\Entity\Entry {#1614}
      +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
      +image: null
      +parent: Proxies\__CG__\App\Entity\EntryComment {#2389 …}
      +root: Proxies\__CG__\App\Entity\EntryComment {#2411 …}
      +body: "That’s actually very helpful, thanks. I’ve been working on another project to open certain URLs in specific browsers/profiles, and wanted to be sure that I wasn’t missing a more obvious design pattern. The project is [here](https://gitlab.com/danielquinn/opening) if you’re curious."
      +lang: "en"
      +isAdult: false
      +favouriteCount: 1
      +score: 0
      +lastActive: DateTime @1697303255 {#1407
        date: 2023-10-14 19:07:35.0 +02:00
      }
      +ip: null
      +tags: null
      +mentions: [
        "@danielquinn@lemmy.ca"
        "@Morgikan@lemm.ee"
      ]
      +children: Doctrine\ORM\PersistentCollection {#2369 …}
      +nested: Doctrine\ORM\PersistentCollection {#2392 …}
      +votes: Doctrine\ORM\PersistentCollection {#2395 …}
      +reports: Doctrine\ORM\PersistentCollection {#1384 …}
      +favourites: Doctrine\ORM\PersistentCollection {#1383 …}
      +notifications: Doctrine\ORM\PersistentCollection {#1405 …}
      -id: 48905
      -bodyTs: "'/danielquinn/opening)':42 'actual':3 'anoth':12 'browsers/profiles':20 'certain':16 'curious':46 'design':34 'gitlab.com':41 'gitlab.com/danielquinn/opening)':40 'help':5 'miss':30 'obvious':33 'open':15 'pattern':35 'project':13,37 're':45 'specif':19 'sure':25 'thank':6 'url':17 've':8 'want':22 'wasn':28 'work':10"
      +ranking: 0
      +commentCount: 0
      +upVotes: 0
      +downVotes: 0
      +visibility: "visible             "
      +apId: "https://lemmy.ca/comment/4002090"
      +editedAt: null
      +createdAt: DateTimeImmutable @1697303255 {#1883
        date: 2023-10-14 19:07:35.0 +02:00
      }
      +"title": 48905
    }
  ]
  -id: 5166
  -titleTs: "'browser':13 'easier':14 'local':10 'made':2 'make':6 'play':7 'thing':4 'video':9 'youtub':8"
  -bodyTs: "'ad':10 'annoy':69 'anyway':76 'blocker':12,13 'blocker-block':11 'complain':6 'configur':70 'day':3 'dlp':36,59 'done':110 'easi':51 'end':75 'exercis':105 'extens':28,49 'feel':83 'firefox':27,48,54 'free':84 'friday':121 'fun':23 'go':97 'good':114 'harder':63 'hour':118 'isn':60 'know':92 'launch':56 'linux':81 'load':32 'm':96 'mention':18 'might':21 'mpv':42 'much':62,94 'new':9 'night':122 'play':38 'pour':99 'pretti':113 're':79 'requir':67 'someon':4 'though':64 'tri':86 'trick':53 'turn':44 'user':73,82 'video':40 'would':30 'write':25,46 'youtub':15 'yt':35,58 'yt-dlp':34,57"
  +cross: false
  +upVotes: 0
  +downVotes: 0
  +ranking: 1697325241
  +visibility: "visible             "
  +apId: "https://lemmy.ca/post/7150213"
  +editedAt: null
  +createdAt: DateTimeImmutable @1697238841 {#1442
    date: 2023-10-14 01:14:01.0 +02:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryVoter"
ACCESS DENIED
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
4 DENIED moderate
App\Entity\Entry {#1614
  +user: App\Entity\User {#258 …}
  +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
  +image: Proxies\__CG__\App\Entity\Image {#1581 …}
  +domain: Proxies\__CG__\App\Entity\Domain {#1654 …}
  +slug: "I-made-a-thing-to-make-playing-YouTube-videos-locally"
  +title: "I made a thing to make playing YouTube videos locally from your browser easier"
  +url: "https://gitlab.com/danielquinn/video-bypass"
  +body: """
    The other day someone was complaining about the new ad blocker-blocker on YouTube and I mentioned that it might be fun to write a Firefox extension that would just load up `yt-dlp` and play the video through `mpv`.\n
    \n
    It turns out, writing a Firefox extension is *easy* and tricking Firefox into launching `yt-dlp` isn’t much harder (though it does require some annoying configuration on the user’s end).\n
    \n
    Anyway, if you’re a Linux user, feel free to try it out. I don’t know how much I’m going to pour into this, but as an exercise of “can this be done”, it was pretty good for a few hours on a Friday night.
    """
  +type: "link"
  +lang: "en"
  +isOc: false
  +hasEmbed: false
  +commentCount: 19
  +favouriteCount: 200
  +score: 0
  +isAdult: false
  +sticky: false
  +lastActive: DateTime @1707557582 {#1446
    date: 2024-02-10 10:33:02.0 +01:00
  }
  +ip: null
  +adaAmount: 0
  +tags: null
  +mentions: null
  +comments: Doctrine\ORM\PersistentCollection {#1652 …}
  +votes: Doctrine\ORM\PersistentCollection {#1649 …}
  +reports: Doctrine\ORM\PersistentCollection {#1656 …}
  +favourites: Doctrine\ORM\PersistentCollection {#1525 …}
  +notifications: Doctrine\ORM\PersistentCollection {#1526 …}
  +badges: Doctrine\ORM\PersistentCollection {#1557 …}
  +children: [
    3 => App\Entity\EntryComment {#1630
      +user: App\Entity\User {#258 …}
      +entry: App\Entity\Entry {#1614}
      +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
      +image: null
      +parent: Proxies\__CG__\App\Entity\EntryComment {#2411 …}
      +root: Proxies\__CG__\App\Entity\EntryComment {#2411 …}
      +body: "Is there another way to do this? This hack was the only way I could figure out how to get Firefox to invoke an external binary, but if there’s a more conventional way to do it, I’d like to know 'cause I have another more complicated project in need of a pattern much like this one."
      +lang: "en"
      +isAdult: false
      +favouriteCount: 1
      +score: 0
      +lastActive: DateTime @1697268007 {#1702
        date: 2023-10-14 09:20:07.0 +02:00
      }
      +ip: null
      +tags: null
      +mentions: [
        "@danielquinn@lemmy.ca"
        "@Morgikan@lemm.ee"
      ]
      +children: Doctrine\ORM\PersistentCollection {#2448 …}
      +nested: Doctrine\ORM\PersistentCollection {#2465 …}
      +votes: Doctrine\ORM\PersistentCollection {#1740 …}
      +reports: Doctrine\ORM\PersistentCollection {#1739 …}
      +favourites: Doctrine\ORM\PersistentCollection {#2460 …}
      +notifications: Doctrine\ORM\PersistentCollection {#2462 …}
      -id: 48003
      -bodyTs: "'anoth':3,46 'binari':26 'caus':43 'complic':48 'convent':33 'could':15 'd':39 'extern':25 'figur':16 'firefox':21 'get':20 'hack':9 'invok':23 'know':42 'like':40,56 'much':55 'need':51 'one':58 'pattern':54 'project':49 'way':4,13,34"
      +ranking: 0
      +commentCount: 0
      +upVotes: 0
      +downVotes: 0
      +visibility: "visible             "
      +apId: "https://lemmy.ca/comment/3993154"
      +editedAt: null
      +createdAt: DateTimeImmutable @1697268007 {#1620
        date: 2023-10-14 09:20:07.0 +02:00
      }
      +"title": 48003
    }
    1 => App\Entity\EntryComment {#2384
      +user: App\Entity\User {#258 …}
      +entry: App\Entity\Entry {#1614}
      +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
      +image: null
      +parent: Proxies\__CG__\App\Entity\EntryComment {#2378 …}
      +root: Proxies\__CG__\App\Entity\EntryComment {#2378 …}
      +body: """
        Honestly, because I didn’t know (a) that ff2mpv even existed, or that (b) mpv could play YouTube URLs directly. So thanks! I learnt two things today :-)\n
        \n
        It was still a fun project though 'cause I learnt how to write a Firefox extension *and* get the browser to launch programs on-click, so not a waste of time!
        """
      +lang: "en"
      +isAdult: false
      +favouriteCount: 13
      +score: 0
      +lastActive: DateTime @1697288649 {#2382
        date: 2023-10-14 15:04:09.0 +02:00
      }
      +ip: null
      +tags: null
      +mentions: [
        "@danielquinn@lemmy.ca"
        "@khorovodoved@lemm.ee"
      ]
      +children: Doctrine\ORM\PersistentCollection {#2379 …}
      +nested: Doctrine\ORM\PersistentCollection {#2383 …}
      +votes: Doctrine\ORM\PersistentCollection {#1906 …}
      +reports: Doctrine\ORM\PersistentCollection {#1708 …}
      +favourites: Doctrine\ORM\PersistentCollection {#1410 …}
      +notifications: Doctrine\ORM\PersistentCollection {#1907 …}
      -id: 48431
      -bodyTs: "'b':14 'browser':47 'caus':35 'click':53 'could':16 'didn':4 'direct':20 'even':10 'exist':11 'extens':43 'ff2mpv':9 'firefox':42 'fun':32 'get':45 'honest':1 'know':6 'launch':49 'learnt':24,37 'mpv':15 'on-click':51 'play':17 'program':50 'project':33 'still':30 'thank':22 'thing':26 'though':34 'time':59 'today':27 'two':25 'url':19 'wast':57 'write':40 'youtub':18"
      +ranking: 0
      +commentCount: 0
      +upVotes: 0
      +downVotes: 0
      +visibility: "visible             "
      +apId: "https://lemmy.ca/comment/3997262"
      +editedAt: null
      +createdAt: DateTimeImmutable @1697288649 {#2385
        date: 2023-10-14 15:04:09.0 +02:00
      }
      +"title": 48431
    }
    2 => App\Entity\EntryComment {#2371
      +user: App\Entity\User {#258 …}
      +entry: App\Entity\Entry {#1614}
      +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
      +image: null
      +parent: Proxies\__CG__\App\Entity\EntryComment {#2467 …}
      +root: Proxies\__CG__\App\Entity\EntryComment {#2467 …}
      +body: """
        I don’t think I have it in me to put together a video, but I can describe it if you like.\n
        \n
        Once you install the extension and follow the setup instructions, you just go to a YouTube page. The extension adds an ugly button to the top-left of the page that says “bypass”. When you click it, Firefox launches `yt-dlp [the URL you’re at] -o - | mpv -` which basically just downloads the video and streams the output through the `mpv` video player. So now you’re watching just the video, with no web page necessary.
        """
      +lang: "en"
      +isAdult: false
      +favouriteCount: 3
      +score: 0
      +lastActive: DateTime @1697268377 {#1723
        date: 2023-10-14 09:26:17.0 +02:00
      }
      +ip: null
      +tags: null
      +mentions: [
        "@danielquinn@lemmy.ca"
        "@zaknenou@lemmy.dbzer0.com"
      ]
      +children: Doctrine\ORM\PersistentCollection {#2468 …}
      +nested: Doctrine\ORM\PersistentCollection {#2363 …}
      +votes: Doctrine\ORM\PersistentCollection {#2377 …}
      +reports: Doctrine\ORM\PersistentCollection {#2359 …}
      +favourites: Doctrine\ORM\PersistentCollection {#2364 …}
      +notifications: Doctrine\ORM\PersistentCollection {#2380 …}
      -id: 48009
      -bodyTs: "'add':42 'basic':74 'button':45 'bypass':56 'click':59 'describ':18 'dlp':65 'download':76 'extens':27,41 'firefox':61 'follow':29 'go':35 'instal':25 'instruct':32 'launch':62 'left':50 'like':22 'mpv':72,85 'necessari':100 'o':71 'output':82 'page':39,53,99 'player':87 'put':11 're':69,91 'say':55 'setup':31 'stream':80 'think':4 'togeth':12 'top':49 'top-left':48 'ugli':44 'url':67 'video':14,78,86,95 'watch':92 'web':98 'youtub':38 'yt':64 'yt-dlp':63"
      +ranking: 0
      +commentCount: 0
      +upVotes: 0
      +downVotes: 0
      +visibility: "visible             "
      +apId: "https://lemmy.ca/comment/3993221"
      +editedAt: null
      +createdAt: DateTimeImmutable @1697268377 {#2471
        date: 2023-10-14 09:26:17.0 +02:00
      }
      +"title": 48009
    }
    0 => App\Entity\EntryComment {#2391
      +user: App\Entity\User {#258 …}
      +entry: App\Entity\Entry {#1614}
      +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
      +image: null
      +parent: Proxies\__CG__\App\Entity\EntryComment {#2389 …}
      +root: Proxies\__CG__\App\Entity\EntryComment {#2411 …}
      +body: "That’s actually very helpful, thanks. I’ve been working on another project to open certain URLs in specific browsers/profiles, and wanted to be sure that I wasn’t missing a more obvious design pattern. The project is [here](https://gitlab.com/danielquinn/opening) if you’re curious."
      +lang: "en"
      +isAdult: false
      +favouriteCount: 1
      +score: 0
      +lastActive: DateTime @1697303255 {#1407
        date: 2023-10-14 19:07:35.0 +02:00
      }
      +ip: null
      +tags: null
      +mentions: [
        "@danielquinn@lemmy.ca"
        "@Morgikan@lemm.ee"
      ]
      +children: Doctrine\ORM\PersistentCollection {#2369 …}
      +nested: Doctrine\ORM\PersistentCollection {#2392 …}
      +votes: Doctrine\ORM\PersistentCollection {#2395 …}
      +reports: Doctrine\ORM\PersistentCollection {#1384 …}
      +favourites: Doctrine\ORM\PersistentCollection {#1383 …}
      +notifications: Doctrine\ORM\PersistentCollection {#1405 …}
      -id: 48905
      -bodyTs: "'/danielquinn/opening)':42 'actual':3 'anoth':12 'browsers/profiles':20 'certain':16 'curious':46 'design':34 'gitlab.com':41 'gitlab.com/danielquinn/opening)':40 'help':5 'miss':30 'obvious':33 'open':15 'pattern':35 'project':13,37 're':45 'specif':19 'sure':25 'thank':6 'url':17 've':8 'want':22 'wasn':28 'work':10"
      +ranking: 0
      +commentCount: 0
      +upVotes: 0
      +downVotes: 0
      +visibility: "visible             "
      +apId: "https://lemmy.ca/comment/4002090"
      +editedAt: null
      +createdAt: DateTimeImmutable @1697303255 {#1883
        date: 2023-10-14 19:07:35.0 +02:00
      }
      +"title": 48905
    }
  ]
  -id: 5166
  -titleTs: "'browser':13 'easier':14 'local':10 'made':2 'make':6 'play':7 'thing':4 'video':9 'youtub':8"
  -bodyTs: "'ad':10 'annoy':69 'anyway':76 'blocker':12,13 'blocker-block':11 'complain':6 'configur':70 'day':3 'dlp':36,59 'done':110 'easi':51 'end':75 'exercis':105 'extens':28,49 'feel':83 'firefox':27,48,54 'free':84 'friday':121 'fun':23 'go':97 'good':114 'harder':63 'hour':118 'isn':60 'know':92 'launch':56 'linux':81 'load':32 'm':96 'mention':18 'might':21 'mpv':42 'much':62,94 'new':9 'night':122 'play':38 'pour':99 'pretti':113 're':79 'requir':67 'someon':4 'though':64 'tri':86 'trick':53 'turn':44 'user':73,82 'video':40 'would':30 'write':25,46 'youtub':15 'yt':35,58 'yt-dlp':34,57"
  +cross: false
  +upVotes: 0
  +downVotes: 0
  +ranking: 1697325241
  +visibility: "visible             "
  +apId: "https://lemmy.ca/post/7150213"
  +editedAt: null
  +createdAt: DateTimeImmutable @1697238841 {#1442
    date: 2023-10-14 01:14:01.0 +02:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryVoter"
ACCESS DENIED
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
5 DENIED ROLE_USER
null
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"Symfony\Component\Security\Core\Authorization\Voter\RoleHierarchyVoter"
ACCESS DENIED
"App\Security\Voter\EntryCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
6 DENIED moderate
App\Entity\EntryComment {#1630
  +user: App\Entity\User {#258 …}
  +entry: App\Entity\Entry {#1614
    +user: App\Entity\User {#258 …}
    +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
    +image: Proxies\__CG__\App\Entity\Image {#1581 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1654 …}
    +slug: "I-made-a-thing-to-make-playing-YouTube-videos-locally"
    +title: "I made a thing to make playing YouTube videos locally from your browser easier"
    +url: "https://gitlab.com/danielquinn/video-bypass"
    +body: """
      The other day someone was complaining about the new ad blocker-blocker on YouTube and I mentioned that it might be fun to write a Firefox extension that would just load up `yt-dlp` and play the video through `mpv`.\n
      \n
      It turns out, writing a Firefox extension is *easy* and tricking Firefox into launching `yt-dlp` isn’t much harder (though it does require some annoying configuration on the user’s end).\n
      \n
      Anyway, if you’re a Linux user, feel free to try it out. I don’t know how much I’m going to pour into this, but as an exercise of “can this be done”, it was pretty good for a few hours on a Friday night.
      """
    +type: "link"
    +lang: "en"
    +isOc: false
    +hasEmbed: false
    +commentCount: 19
    +favouriteCount: 200
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1707557582 {#1446
      date: 2024-02-10 10:33:02.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1652 …}
    +votes: Doctrine\ORM\PersistentCollection {#1649 …}
    +reports: Doctrine\ORM\PersistentCollection {#1656 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1525 …}
    +notifications: Doctrine\ORM\PersistentCollection {#1526 …}
    +badges: Doctrine\ORM\PersistentCollection {#1557 …}
    +children: [
      3 => App\Entity\EntryComment {#1630}
      1 => App\Entity\EntryComment {#2384
        +user: App\Entity\User {#258 …}
        +entry: App\Entity\Entry {#1614}
        +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
        +image: null
        +parent: Proxies\__CG__\App\Entity\EntryComment {#2378 …}
        +root: Proxies\__CG__\App\Entity\EntryComment {#2378 …}
        +body: """
          Honestly, because I didn’t know (a) that ff2mpv even existed, or that (b) mpv could play YouTube URLs directly. So thanks! I learnt two things today :-)\n
          \n
          It was still a fun project though 'cause I learnt how to write a Firefox extension *and* get the browser to launch programs on-click, so not a waste of time!
          """
        +lang: "en"
        +isAdult: false
        +favouriteCount: 13
        +score: 0
        +lastActive: DateTime @1697288649 {#2382
          date: 2023-10-14 15:04:09.0 +02:00
        }
        +ip: null
        +tags: null
        +mentions: [
          "@danielquinn@lemmy.ca"
          "@khorovodoved@lemm.ee"
        ]
        +children: Doctrine\ORM\PersistentCollection {#2379 …}
        +nested: Doctrine\ORM\PersistentCollection {#2383 …}
        +votes: Doctrine\ORM\PersistentCollection {#1906 …}
        +reports: Doctrine\ORM\PersistentCollection {#1708 …}
        +favourites: Doctrine\ORM\PersistentCollection {#1410 …}
        +notifications: Doctrine\ORM\PersistentCollection {#1907 …}
        -id: 48431
        -bodyTs: "'b':14 'browser':47 'caus':35 'click':53 'could':16 'didn':4 'direct':20 'even':10 'exist':11 'extens':43 'ff2mpv':9 'firefox':42 'fun':32 'get':45 'honest':1 'know':6 'launch':49 'learnt':24,37 'mpv':15 'on-click':51 'play':17 'program':50 'project':33 'still':30 'thank':22 'thing':26 'though':34 'time':59 'today':27 'two':25 'url':19 'wast':57 'write':40 'youtub':18"
        +ranking: 0
        +commentCount: 0
        +upVotes: 0
        +downVotes: 0
        +visibility: "visible             "
        +apId: "https://lemmy.ca/comment/3997262"
        +editedAt: null
        +createdAt: DateTimeImmutable @1697288649 {#2385
          date: 2023-10-14 15:04:09.0 +02:00
        }
        +"title": 48431
      }
      2 => App\Entity\EntryComment {#2371
        +user: App\Entity\User {#258 …}
        +entry: App\Entity\Entry {#1614}
        +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
        +image: null
        +parent: Proxies\__CG__\App\Entity\EntryComment {#2467 …}
        +root: Proxies\__CG__\App\Entity\EntryComment {#2467 …}
        +body: """
          I don’t think I have it in me to put together a video, but I can describe it if you like.\n
          \n
          Once you install the extension and follow the setup instructions, you just go to a YouTube page. The extension adds an ugly button to the top-left of the page that says “bypass”. When you click it, Firefox launches `yt-dlp [the URL you’re at] -o - | mpv -` which basically just downloads the video and streams the output through the `mpv` video player. So now you’re watching just the video, with no web page necessary.
          """
        +lang: "en"
        +isAdult: false
        +favouriteCount: 3
        +score: 0
        +lastActive: DateTime @1697268377 {#1723
          date: 2023-10-14 09:26:17.0 +02:00
        }
        +ip: null
        +tags: null
        +mentions: [
          "@danielquinn@lemmy.ca"
          "@zaknenou@lemmy.dbzer0.com"
        ]
        +children: Doctrine\ORM\PersistentCollection {#2468 …}
        +nested: Doctrine\ORM\PersistentCollection {#2363 …}
        +votes: Doctrine\ORM\PersistentCollection {#2377 …}
        +reports: Doctrine\ORM\PersistentCollection {#2359 …}
        +favourites: Doctrine\ORM\PersistentCollection {#2364 …}
        +notifications: Doctrine\ORM\PersistentCollection {#2380 …}
        -id: 48009
        -bodyTs: "'add':42 'basic':74 'button':45 'bypass':56 'click':59 'describ':18 'dlp':65 'download':76 'extens':27,41 'firefox':61 'follow':29 'go':35 'instal':25 'instruct':32 'launch':62 'left':50 'like':22 'mpv':72,85 'necessari':100 'o':71 'output':82 'page':39,53,99 'player':87 'put':11 're':69,91 'say':55 'setup':31 'stream':80 'think':4 'togeth':12 'top':49 'top-left':48 'ugli':44 'url':67 'video':14,78,86,95 'watch':92 'web':98 'youtub':38 'yt':64 'yt-dlp':63"
        +ranking: 0
        +commentCount: 0
        +upVotes: 0
        +downVotes: 0
        +visibility: "visible             "
        +apId: "https://lemmy.ca/comment/3993221"
        +editedAt: null
        +createdAt: DateTimeImmutable @1697268377 {#2471
          date: 2023-10-14 09:26:17.0 +02:00
        }
        +"title": 48009
      }
      0 => App\Entity\EntryComment {#2391
        +user: App\Entity\User {#258 …}
        +entry: App\Entity\Entry {#1614}
        +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
        +image: null
        +parent: Proxies\__CG__\App\Entity\EntryComment {#2389 …}
        +root: Proxies\__CG__\App\Entity\EntryComment {#2411 …}
        +body: "That’s actually very helpful, thanks. I’ve been working on another project to open certain URLs in specific browsers/profiles, and wanted to be sure that I wasn’t missing a more obvious design pattern. The project is [here](https://gitlab.com/danielquinn/opening) if you’re curious."
        +lang: "en"
        +isAdult: false
        +favouriteCount: 1
        +score: 0
        +lastActive: DateTime @1697303255 {#1407
          date: 2023-10-14 19:07:35.0 +02:00
        }
        +ip: null
        +tags: null
        +mentions: [
          "@danielquinn@lemmy.ca"
          "@Morgikan@lemm.ee"
        ]
        +children: Doctrine\ORM\PersistentCollection {#2369 …}
        +nested: Doctrine\ORM\PersistentCollection {#2392 …}
        +votes: Doctrine\ORM\PersistentCollection {#2395 …}
        +reports: Doctrine\ORM\PersistentCollection {#1384 …}
        +favourites: Doctrine\ORM\PersistentCollection {#1383 …}
        +notifications: Doctrine\ORM\PersistentCollection {#1405 …}
        -id: 48905
        -bodyTs: "'/danielquinn/opening)':42 'actual':3 'anoth':12 'browsers/profiles':20 'certain':16 'curious':46 'design':34 'gitlab.com':41 'gitlab.com/danielquinn/opening)':40 'help':5 'miss':30 'obvious':33 'open':15 'pattern':35 'project':13,37 're':45 'specif':19 'sure':25 'thank':6 'url':17 've':8 'want':22 'wasn':28 'work':10"
        +ranking: 0
        +commentCount: 0
        +upVotes: 0
        +downVotes: 0
        +visibility: "visible             "
        +apId: "https://lemmy.ca/comment/4002090"
        +editedAt: null
        +createdAt: DateTimeImmutable @1697303255 {#1883
          date: 2023-10-14 19:07:35.0 +02:00
        }
        +"title": 48905
      }
    ]
    -id: 5166
    -titleTs: "'browser':13 'easier':14 'local':10 'made':2 'make':6 'play':7 'thing':4 'video':9 'youtub':8"
    -bodyTs: "'ad':10 'annoy':69 'anyway':76 'blocker':12,13 'blocker-block':11 'complain':6 'configur':70 'day':3 'dlp':36,59 'done':110 'easi':51 'end':75 'exercis':105 'extens':28,49 'feel':83 'firefox':27,48,54 'free':84 'friday':121 'fun':23 'go':97 'good':114 'harder':63 'hour':118 'isn':60 'know':92 'launch':56 'linux':81 'load':32 'm':96 'mention':18 'might':21 'mpv':42 'much':62,94 'new':9 'night':122 'play':38 'pour':99 'pretti':113 're':79 'requir':67 'someon':4 'though':64 'tri':86 'trick':53 'turn':44 'user':73,82 'video':40 'would':30 'write':25,46 'youtub':15 'yt':35,58 'yt-dlp':34,57"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1697325241
    +visibility: "visible             "
    +apId: "https://lemmy.ca/post/7150213"
    +editedAt: null
    +createdAt: DateTimeImmutable @1697238841 {#1442
      date: 2023-10-14 01:14:01.0 +02:00
    }
  }
  +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
  +image: null
  +parent: Proxies\__CG__\App\Entity\EntryComment {#2411 …}
  +root: Proxies\__CG__\App\Entity\EntryComment {#2411 …}
  +body: "Is there another way to do this? This hack was the only way I could figure out how to get Firefox to invoke an external binary, but if there’s a more conventional way to do it, I’d like to know 'cause I have another more complicated project in need of a pattern much like this one."
  +lang: "en"
  +isAdult: false
  +favouriteCount: 1
  +score: 0
  +lastActive: DateTime @1697268007 {#1702
    date: 2023-10-14 09:20:07.0 +02:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@danielquinn@lemmy.ca"
    "@Morgikan@lemm.ee"
  ]
  +children: Doctrine\ORM\PersistentCollection {#2448 …}
  +nested: Doctrine\ORM\PersistentCollection {#2465 …}
  +votes: Doctrine\ORM\PersistentCollection {#1740 …}
  +reports: Doctrine\ORM\PersistentCollection {#1739 …}
  +favourites: Doctrine\ORM\PersistentCollection {#2460 …}
  +notifications: Doctrine\ORM\PersistentCollection {#2462 …}
  -id: 48003
  -bodyTs: "'anoth':3,46 'binari':26 'caus':43 'complic':48 'convent':33 'could':15 'd':39 'extern':25 'figur':16 'firefox':21 'get':20 'hack':9 'invok':23 'know':42 'like':40,56 'much':55 'need':51 'one':58 'pattern':54 'project':49 'way':4,13,34"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.ca/comment/3993154"
  +editedAt: null
  +createdAt: DateTimeImmutable @1697268007 {#1620
    date: 2023-10-14 09:20:07.0 +02:00
  }
  +"title": 48003
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
7 DENIED edit
App\Entity\EntryComment {#1630
  +user: App\Entity\User {#258 …}
  +entry: App\Entity\Entry {#1614
    +user: App\Entity\User {#258 …}
    +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
    +image: Proxies\__CG__\App\Entity\Image {#1581 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1654 …}
    +slug: "I-made-a-thing-to-make-playing-YouTube-videos-locally"
    +title: "I made a thing to make playing YouTube videos locally from your browser easier"
    +url: "https://gitlab.com/danielquinn/video-bypass"
    +body: """
      The other day someone was complaining about the new ad blocker-blocker on YouTube and I mentioned that it might be fun to write a Firefox extension that would just load up `yt-dlp` and play the video through `mpv`.\n
      \n
      It turns out, writing a Firefox extension is *easy* and tricking Firefox into launching `yt-dlp` isn’t much harder (though it does require some annoying configuration on the user’s end).\n
      \n
      Anyway, if you’re a Linux user, feel free to try it out. I don’t know how much I’m going to pour into this, but as an exercise of “can this be done”, it was pretty good for a few hours on a Friday night.
      """
    +type: "link"
    +lang: "en"
    +isOc: false
    +hasEmbed: false
    +commentCount: 19
    +favouriteCount: 200
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1707557582 {#1446
      date: 2024-02-10 10:33:02.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1652 …}
    +votes: Doctrine\ORM\PersistentCollection {#1649 …}
    +reports: Doctrine\ORM\PersistentCollection {#1656 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1525 …}
    +notifications: Doctrine\ORM\PersistentCollection {#1526 …}
    +badges: Doctrine\ORM\PersistentCollection {#1557 …}
    +children: [
      3 => App\Entity\EntryComment {#1630}
      1 => App\Entity\EntryComment {#2384
        +user: App\Entity\User {#258 …}
        +entry: App\Entity\Entry {#1614}
        +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
        +image: null
        +parent: Proxies\__CG__\App\Entity\EntryComment {#2378 …}
        +root: Proxies\__CG__\App\Entity\EntryComment {#2378 …}
        +body: """
          Honestly, because I didn’t know (a) that ff2mpv even existed, or that (b) mpv could play YouTube URLs directly. So thanks! I learnt two things today :-)\n
          \n
          It was still a fun project though 'cause I learnt how to write a Firefox extension *and* get the browser to launch programs on-click, so not a waste of time!
          """
        +lang: "en"
        +isAdult: false
        +favouriteCount: 13
        +score: 0
        +lastActive: DateTime @1697288649 {#2382
          date: 2023-10-14 15:04:09.0 +02:00
        }
        +ip: null
        +tags: null
        +mentions: [
          "@danielquinn@lemmy.ca"
          "@khorovodoved@lemm.ee"
        ]
        +children: Doctrine\ORM\PersistentCollection {#2379 …}
        +nested: Doctrine\ORM\PersistentCollection {#2383 …}
        +votes: Doctrine\ORM\PersistentCollection {#1906 …}
        +reports: Doctrine\ORM\PersistentCollection {#1708 …}
        +favourites: Doctrine\ORM\PersistentCollection {#1410 …}
        +notifications: Doctrine\ORM\PersistentCollection {#1907 …}
        -id: 48431
        -bodyTs: "'b':14 'browser':47 'caus':35 'click':53 'could':16 'didn':4 'direct':20 'even':10 'exist':11 'extens':43 'ff2mpv':9 'firefox':42 'fun':32 'get':45 'honest':1 'know':6 'launch':49 'learnt':24,37 'mpv':15 'on-click':51 'play':17 'program':50 'project':33 'still':30 'thank':22 'thing':26 'though':34 'time':59 'today':27 'two':25 'url':19 'wast':57 'write':40 'youtub':18"
        +ranking: 0
        +commentCount: 0
        +upVotes: 0
        +downVotes: 0
        +visibility: "visible             "
        +apId: "https://lemmy.ca/comment/3997262"
        +editedAt: null
        +createdAt: DateTimeImmutable @1697288649 {#2385
          date: 2023-10-14 15:04:09.0 +02:00
        }
        +"title": 48431
      }
      2 => App\Entity\EntryComment {#2371
        +user: App\Entity\User {#258 …}
        +entry: App\Entity\Entry {#1614}
        +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
        +image: null
        +parent: Proxies\__CG__\App\Entity\EntryComment {#2467 …}
        +root: Proxies\__CG__\App\Entity\EntryComment {#2467 …}
        +body: """
          I don’t think I have it in me to put together a video, but I can describe it if you like.\n
          \n
          Once you install the extension and follow the setup instructions, you just go to a YouTube page. The extension adds an ugly button to the top-left of the page that says “bypass”. When you click it, Firefox launches `yt-dlp [the URL you’re at] -o - | mpv -` which basically just downloads the video and streams the output through the `mpv` video player. So now you’re watching just the video, with no web page necessary.
          """
        +lang: "en"
        +isAdult: false
        +favouriteCount: 3
        +score: 0
        +lastActive: DateTime @1697268377 {#1723
          date: 2023-10-14 09:26:17.0 +02:00
        }
        +ip: null
        +tags: null
        +mentions: [
          "@danielquinn@lemmy.ca"
          "@zaknenou@lemmy.dbzer0.com"
        ]
        +children: Doctrine\ORM\PersistentCollection {#2468 …}
        +nested: Doctrine\ORM\PersistentCollection {#2363 …}
        +votes: Doctrine\ORM\PersistentCollection {#2377 …}
        +reports: Doctrine\ORM\PersistentCollection {#2359 …}
        +favourites: Doctrine\ORM\PersistentCollection {#2364 …}
        +notifications: Doctrine\ORM\PersistentCollection {#2380 …}
        -id: 48009
        -bodyTs: "'add':42 'basic':74 'button':45 'bypass':56 'click':59 'describ':18 'dlp':65 'download':76 'extens':27,41 'firefox':61 'follow':29 'go':35 'instal':25 'instruct':32 'launch':62 'left':50 'like':22 'mpv':72,85 'necessari':100 'o':71 'output':82 'page':39,53,99 'player':87 'put':11 're':69,91 'say':55 'setup':31 'stream':80 'think':4 'togeth':12 'top':49 'top-left':48 'ugli':44 'url':67 'video':14,78,86,95 'watch':92 'web':98 'youtub':38 'yt':64 'yt-dlp':63"
        +ranking: 0
        +commentCount: 0
        +upVotes: 0
        +downVotes: 0
        +visibility: "visible             "
        +apId: "https://lemmy.ca/comment/3993221"
        +editedAt: null
        +createdAt: DateTimeImmutable @1697268377 {#2471
          date: 2023-10-14 09:26:17.0 +02:00
        }
        +"title": 48009
      }
      0 => App\Entity\EntryComment {#2391
        +user: App\Entity\User {#258 …}
        +entry: App\Entity\Entry {#1614}
        +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
        +image: null
        +parent: Proxies\__CG__\App\Entity\EntryComment {#2389 …}
        +root: Proxies\__CG__\App\Entity\EntryComment {#2411 …}
        +body: "That’s actually very helpful, thanks. I’ve been working on another project to open certain URLs in specific browsers/profiles, and wanted to be sure that I wasn’t missing a more obvious design pattern. The project is [here](https://gitlab.com/danielquinn/opening) if you’re curious."
        +lang: "en"
        +isAdult: false
        +favouriteCount: 1
        +score: 0
        +lastActive: DateTime @1697303255 {#1407
          date: 2023-10-14 19:07:35.0 +02:00
        }
        +ip: null
        +tags: null
        +mentions: [
          "@danielquinn@lemmy.ca"
          "@Morgikan@lemm.ee"
        ]
        +children: Doctrine\ORM\PersistentCollection {#2369 …}
        +nested: Doctrine\ORM\PersistentCollection {#2392 …}
        +votes: Doctrine\ORM\PersistentCollection {#2395 …}
        +reports: Doctrine\ORM\PersistentCollection {#1384 …}
        +favourites: Doctrine\ORM\PersistentCollection {#1383 …}
        +notifications: Doctrine\ORM\PersistentCollection {#1405 …}
        -id: 48905
        -bodyTs: "'/danielquinn/opening)':42 'actual':3 'anoth':12 'browsers/profiles':20 'certain':16 'curious':46 'design':34 'gitlab.com':41 'gitlab.com/danielquinn/opening)':40 'help':5 'miss':30 'obvious':33 'open':15 'pattern':35 'project':13,37 're':45 'specif':19 'sure':25 'thank':6 'url':17 've':8 'want':22 'wasn':28 'work':10"
        +ranking: 0
        +commentCount: 0
        +upVotes: 0
        +downVotes: 0
        +visibility: "visible             "
        +apId: "https://lemmy.ca/comment/4002090"
        +editedAt: null
        +createdAt: DateTimeImmutable @1697303255 {#1883
          date: 2023-10-14 19:07:35.0 +02:00
        }
        +"title": 48905
      }
    ]
    -id: 5166
    -titleTs: "'browser':13 'easier':14 'local':10 'made':2 'make':6 'play':7 'thing':4 'video':9 'youtub':8"
    -bodyTs: "'ad':10 'annoy':69 'anyway':76 'blocker':12,13 'blocker-block':11 'complain':6 'configur':70 'day':3 'dlp':36,59 'done':110 'easi':51 'end':75 'exercis':105 'extens':28,49 'feel':83 'firefox':27,48,54 'free':84 'friday':121 'fun':23 'go':97 'good':114 'harder':63 'hour':118 'isn':60 'know':92 'launch':56 'linux':81 'load':32 'm':96 'mention':18 'might':21 'mpv':42 'much':62,94 'new':9 'night':122 'play':38 'pour':99 'pretti':113 're':79 'requir':67 'someon':4 'though':64 'tri':86 'trick':53 'turn':44 'user':73,82 'video':40 'would':30 'write':25,46 'youtub':15 'yt':35,58 'yt-dlp':34,57"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1697325241
    +visibility: "visible             "
    +apId: "https://lemmy.ca/post/7150213"
    +editedAt: null
    +createdAt: DateTimeImmutable @1697238841 {#1442
      date: 2023-10-14 01:14:01.0 +02:00
    }
  }
  +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
  +image: null
  +parent: Proxies\__CG__\App\Entity\EntryComment {#2411 …}
  +root: Proxies\__CG__\App\Entity\EntryComment {#2411 …}
  +body: "Is there another way to do this? This hack was the only way I could figure out how to get Firefox to invoke an external binary, but if there’s a more conventional way to do it, I’d like to know 'cause I have another more complicated project in need of a pattern much like this one."
  +lang: "en"
  +isAdult: false
  +favouriteCount: 1
  +score: 0
  +lastActive: DateTime @1697268007 {#1702
    date: 2023-10-14 09:20:07.0 +02:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@danielquinn@lemmy.ca"
    "@Morgikan@lemm.ee"
  ]
  +children: Doctrine\ORM\PersistentCollection {#2448 …}
  +nested: Doctrine\ORM\PersistentCollection {#2465 …}
  +votes: Doctrine\ORM\PersistentCollection {#1740 …}
  +reports: Doctrine\ORM\PersistentCollection {#1739 …}
  +favourites: Doctrine\ORM\PersistentCollection {#2460 …}
  +notifications: Doctrine\ORM\PersistentCollection {#2462 …}
  -id: 48003
  -bodyTs: "'anoth':3,46 'binari':26 'caus':43 'complic':48 'convent':33 'could':15 'd':39 'extern':25 'figur':16 'firefox':21 'get':20 'hack':9 'invok':23 'know':42 'like':40,56 'much':55 'need':51 'one':58 'pattern':54 'project':49 'way':4,13,34"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.ca/comment/3993154"
  +editedAt: null
  +createdAt: DateTimeImmutable @1697268007 {#1620
    date: 2023-10-14 09:20:07.0 +02:00
  }
  +"title": 48003
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
8 DENIED moderate
App\Entity\EntryComment {#1630
  +user: App\Entity\User {#258 …}
  +entry: App\Entity\Entry {#1614
    +user: App\Entity\User {#258 …}
    +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
    +image: Proxies\__CG__\App\Entity\Image {#1581 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1654 …}
    +slug: "I-made-a-thing-to-make-playing-YouTube-videos-locally"
    +title: "I made a thing to make playing YouTube videos locally from your browser easier"
    +url: "https://gitlab.com/danielquinn/video-bypass"
    +body: """
      The other day someone was complaining about the new ad blocker-blocker on YouTube and I mentioned that it might be fun to write a Firefox extension that would just load up `yt-dlp` and play the video through `mpv`.\n
      \n
      It turns out, writing a Firefox extension is *easy* and tricking Firefox into launching `yt-dlp` isn’t much harder (though it does require some annoying configuration on the user’s end).\n
      \n
      Anyway, if you’re a Linux user, feel free to try it out. I don’t know how much I’m going to pour into this, but as an exercise of “can this be done”, it was pretty good for a few hours on a Friday night.
      """
    +type: "link"
    +lang: "en"
    +isOc: false
    +hasEmbed: false
    +commentCount: 19
    +favouriteCount: 200
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1707557582 {#1446
      date: 2024-02-10 10:33:02.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1652 …}
    +votes: Doctrine\ORM\PersistentCollection {#1649 …}
    +reports: Doctrine\ORM\PersistentCollection {#1656 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1525 …}
    +notifications: Doctrine\ORM\PersistentCollection {#1526 …}
    +badges: Doctrine\ORM\PersistentCollection {#1557 …}
    +children: [
      3 => App\Entity\EntryComment {#1630}
      1 => App\Entity\EntryComment {#2384
        +user: App\Entity\User {#258 …}
        +entry: App\Entity\Entry {#1614}
        +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
        +image: null
        +parent: Proxies\__CG__\App\Entity\EntryComment {#2378 …}
        +root: Proxies\__CG__\App\Entity\EntryComment {#2378 …}
        +body: """
          Honestly, because I didn’t know (a) that ff2mpv even existed, or that (b) mpv could play YouTube URLs directly. So thanks! I learnt two things today :-)\n
          \n
          It was still a fun project though 'cause I learnt how to write a Firefox extension *and* get the browser to launch programs on-click, so not a waste of time!
          """
        +lang: "en"
        +isAdult: false
        +favouriteCount: 13
        +score: 0
        +lastActive: DateTime @1697288649 {#2382
          date: 2023-10-14 15:04:09.0 +02:00
        }
        +ip: null
        +tags: null
        +mentions: [
          "@danielquinn@lemmy.ca"
          "@khorovodoved@lemm.ee"
        ]
        +children: Doctrine\ORM\PersistentCollection {#2379 …}
        +nested: Doctrine\ORM\PersistentCollection {#2383 …}
        +votes: Doctrine\ORM\PersistentCollection {#1906 …}
        +reports: Doctrine\ORM\PersistentCollection {#1708 …}
        +favourites: Doctrine\ORM\PersistentCollection {#1410 …}
        +notifications: Doctrine\ORM\PersistentCollection {#1907 …}
        -id: 48431
        -bodyTs: "'b':14 'browser':47 'caus':35 'click':53 'could':16 'didn':4 'direct':20 'even':10 'exist':11 'extens':43 'ff2mpv':9 'firefox':42 'fun':32 'get':45 'honest':1 'know':6 'launch':49 'learnt':24,37 'mpv':15 'on-click':51 'play':17 'program':50 'project':33 'still':30 'thank':22 'thing':26 'though':34 'time':59 'today':27 'two':25 'url':19 'wast':57 'write':40 'youtub':18"
        +ranking: 0
        +commentCount: 0
        +upVotes: 0
        +downVotes: 0
        +visibility: "visible             "
        +apId: "https://lemmy.ca/comment/3997262"
        +editedAt: null
        +createdAt: DateTimeImmutable @1697288649 {#2385
          date: 2023-10-14 15:04:09.0 +02:00
        }
        +"title": 48431
      }
      2 => App\Entity\EntryComment {#2371
        +user: App\Entity\User {#258 …}
        +entry: App\Entity\Entry {#1614}
        +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
        +image: null
        +parent: Proxies\__CG__\App\Entity\EntryComment {#2467 …}
        +root: Proxies\__CG__\App\Entity\EntryComment {#2467 …}
        +body: """
          I don’t think I have it in me to put together a video, but I can describe it if you like.\n
          \n
          Once you install the extension and follow the setup instructions, you just go to a YouTube page. The extension adds an ugly button to the top-left of the page that says “bypass”. When you click it, Firefox launches `yt-dlp [the URL you’re at] -o - | mpv -` which basically just downloads the video and streams the output through the `mpv` video player. So now you’re watching just the video, with no web page necessary.
          """
        +lang: "en"
        +isAdult: false
        +favouriteCount: 3
        +score: 0
        +lastActive: DateTime @1697268377 {#1723
          date: 2023-10-14 09:26:17.0 +02:00
        }
        +ip: null
        +tags: null
        +mentions: [
          "@danielquinn@lemmy.ca"
          "@zaknenou@lemmy.dbzer0.com"
        ]
        +children: Doctrine\ORM\PersistentCollection {#2468 …}
        +nested: Doctrine\ORM\PersistentCollection {#2363 …}
        +votes: Doctrine\ORM\PersistentCollection {#2377 …}
        +reports: Doctrine\ORM\PersistentCollection {#2359 …}
        +favourites: Doctrine\ORM\PersistentCollection {#2364 …}
        +notifications: Doctrine\ORM\PersistentCollection {#2380 …}
        -id: 48009
        -bodyTs: "'add':42 'basic':74 'button':45 'bypass':56 'click':59 'describ':18 'dlp':65 'download':76 'extens':27,41 'firefox':61 'follow':29 'go':35 'instal':25 'instruct':32 'launch':62 'left':50 'like':22 'mpv':72,85 'necessari':100 'o':71 'output':82 'page':39,53,99 'player':87 'put':11 're':69,91 'say':55 'setup':31 'stream':80 'think':4 'togeth':12 'top':49 'top-left':48 'ugli':44 'url':67 'video':14,78,86,95 'watch':92 'web':98 'youtub':38 'yt':64 'yt-dlp':63"
        +ranking: 0
        +commentCount: 0
        +upVotes: 0
        +downVotes: 0
        +visibility: "visible             "
        +apId: "https://lemmy.ca/comment/3993221"
        +editedAt: null
        +createdAt: DateTimeImmutable @1697268377 {#2471
          date: 2023-10-14 09:26:17.0 +02:00
        }
        +"title": 48009
      }
      0 => App\Entity\EntryComment {#2391
        +user: App\Entity\User {#258 …}
        +entry: App\Entity\Entry {#1614}
        +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
        +image: null
        +parent: Proxies\__CG__\App\Entity\EntryComment {#2389 …}
        +root: Proxies\__CG__\App\Entity\EntryComment {#2411 …}
        +body: "That’s actually very helpful, thanks. I’ve been working on another project to open certain URLs in specific browsers/profiles, and wanted to be sure that I wasn’t missing a more obvious design pattern. The project is [here](https://gitlab.com/danielquinn/opening) if you’re curious."
        +lang: "en"
        +isAdult: false
        +favouriteCount: 1
        +score: 0
        +lastActive: DateTime @1697303255 {#1407
          date: 2023-10-14 19:07:35.0 +02:00
        }
        +ip: null
        +tags: null
        +mentions: [
          "@danielquinn@lemmy.ca"
          "@Morgikan@lemm.ee"
        ]
        +children: Doctrine\ORM\PersistentCollection {#2369 …}
        +nested: Doctrine\ORM\PersistentCollection {#2392 …}
        +votes: Doctrine\ORM\PersistentCollection {#2395 …}
        +reports: Doctrine\ORM\PersistentCollection {#1384 …}
        +favourites: Doctrine\ORM\PersistentCollection {#1383 …}
        +notifications: Doctrine\ORM\PersistentCollection {#1405 …}
        -id: 48905
        -bodyTs: "'/danielquinn/opening)':42 'actual':3 'anoth':12 'browsers/profiles':20 'certain':16 'curious':46 'design':34 'gitlab.com':41 'gitlab.com/danielquinn/opening)':40 'help':5 'miss':30 'obvious':33 'open':15 'pattern':35 'project':13,37 're':45 'specif':19 'sure':25 'thank':6 'url':17 've':8 'want':22 'wasn':28 'work':10"
        +ranking: 0
        +commentCount: 0
        +upVotes: 0
        +downVotes: 0
        +visibility: "visible             "
        +apId: "https://lemmy.ca/comment/4002090"
        +editedAt: null
        +createdAt: DateTimeImmutable @1697303255 {#1883
          date: 2023-10-14 19:07:35.0 +02:00
        }
        +"title": 48905
      }
    ]
    -id: 5166
    -titleTs: "'browser':13 'easier':14 'local':10 'made':2 'make':6 'play':7 'thing':4 'video':9 'youtub':8"
    -bodyTs: "'ad':10 'annoy':69 'anyway':76 'blocker':12,13 'blocker-block':11 'complain':6 'configur':70 'day':3 'dlp':36,59 'done':110 'easi':51 'end':75 'exercis':105 'extens':28,49 'feel':83 'firefox':27,48,54 'free':84 'friday':121 'fun':23 'go':97 'good':114 'harder':63 'hour':118 'isn':60 'know':92 'launch':56 'linux':81 'load':32 'm':96 'mention':18 'might':21 'mpv':42 'much':62,94 'new':9 'night':122 'play':38 'pour':99 'pretti':113 're':79 'requir':67 'someon':4 'though':64 'tri':86 'trick':53 'turn':44 'user':73,82 'video':40 'would':30 'write':25,46 'youtub':15 'yt':35,58 'yt-dlp':34,57"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1697325241
    +visibility: "visible             "
    +apId: "https://lemmy.ca/post/7150213"
    +editedAt: null
    +createdAt: DateTimeImmutable @1697238841 {#1442
      date: 2023-10-14 01:14:01.0 +02:00
    }
  }
  +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
  +image: null
  +parent: Proxies\__CG__\App\Entity\EntryComment {#2411 …}
  +root: Proxies\__CG__\App\Entity\EntryComment {#2411 …}
  +body: "Is there another way to do this? This hack was the only way I could figure out how to get Firefox to invoke an external binary, but if there’s a more conventional way to do it, I’d like to know 'cause I have another more complicated project in need of a pattern much like this one."
  +lang: "en"
  +isAdult: false
  +favouriteCount: 1
  +score: 0
  +lastActive: DateTime @1697268007 {#1702
    date: 2023-10-14 09:20:07.0 +02:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@danielquinn@lemmy.ca"
    "@Morgikan@lemm.ee"
  ]
  +children: Doctrine\ORM\PersistentCollection {#2448 …}
  +nested: Doctrine\ORM\PersistentCollection {#2465 …}
  +votes: Doctrine\ORM\PersistentCollection {#1740 …}
  +reports: Doctrine\ORM\PersistentCollection {#1739 …}
  +favourites: Doctrine\ORM\PersistentCollection {#2460 …}
  +notifications: Doctrine\ORM\PersistentCollection {#2462 …}
  -id: 48003
  -bodyTs: "'anoth':3,46 'binari':26 'caus':43 'complic':48 'convent':33 'could':15 'd':39 'extern':25 'figur':16 'firefox':21 'get':20 'hack':9 'invok':23 'know':42 'like':40,56 'much':55 'need':51 'one':58 'pattern':54 'project':49 'way':4,13,34"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.ca/comment/3993154"
  +editedAt: null
  +createdAt: DateTimeImmutable @1697268007 {#1620
    date: 2023-10-14 09:20:07.0 +02:00
  }
  +"title": 48003
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
9 DENIED ROLE_USER
null
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"Symfony\Component\Security\Core\Authorization\Voter\RoleHierarchyVoter"
ACCESS DENIED
"App\Security\Voter\EntryCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
10 DENIED moderate
App\Entity\EntryComment {#2384
  +user: App\Entity\User {#258 …}
  +entry: App\Entity\Entry {#1614
    +user: App\Entity\User {#258 …}
    +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
    +image: Proxies\__CG__\App\Entity\Image {#1581 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1654 …}
    +slug: "I-made-a-thing-to-make-playing-YouTube-videos-locally"
    +title: "I made a thing to make playing YouTube videos locally from your browser easier"
    +url: "https://gitlab.com/danielquinn/video-bypass"
    +body: """
      The other day someone was complaining about the new ad blocker-blocker on YouTube and I mentioned that it might be fun to write a Firefox extension that would just load up `yt-dlp` and play the video through `mpv`.\n
      \n
      It turns out, writing a Firefox extension is *easy* and tricking Firefox into launching `yt-dlp` isn’t much harder (though it does require some annoying configuration on the user’s end).\n
      \n
      Anyway, if you’re a Linux user, feel free to try it out. I don’t know how much I’m going to pour into this, but as an exercise of “can this be done”, it was pretty good for a few hours on a Friday night.
      """
    +type: "link"
    +lang: "en"
    +isOc: false
    +hasEmbed: false
    +commentCount: 19
    +favouriteCount: 200
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1707557582 {#1446
      date: 2024-02-10 10:33:02.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1652 …}
    +votes: Doctrine\ORM\PersistentCollection {#1649 …}
    +reports: Doctrine\ORM\PersistentCollection {#1656 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1525 …}
    +notifications: Doctrine\ORM\PersistentCollection {#1526 …}
    +badges: Doctrine\ORM\PersistentCollection {#1557 …}
    +children: [
      3 => App\Entity\EntryComment {#1630
        +user: App\Entity\User {#258 …}
        +entry: App\Entity\Entry {#1614}
        +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
        +image: null
        +parent: Proxies\__CG__\App\Entity\EntryComment {#2411 …}
        +root: Proxies\__CG__\App\Entity\EntryComment {#2411 …}
        +body: "Is there another way to do this? This hack was the only way I could figure out how to get Firefox to invoke an external binary, but if there’s a more conventional way to do it, I’d like to know 'cause I have another more complicated project in need of a pattern much like this one."
        +lang: "en"
        +isAdult: false
        +favouriteCount: 1
        +score: 0
        +lastActive: DateTime @1697268007 {#1702
          date: 2023-10-14 09:20:07.0 +02:00
        }
        +ip: null
        +tags: null
        +mentions: [
          "@danielquinn@lemmy.ca"
          "@Morgikan@lemm.ee"
        ]
        +children: Doctrine\ORM\PersistentCollection {#2448 …}
        +nested: Doctrine\ORM\PersistentCollection {#2465 …}
        +votes: Doctrine\ORM\PersistentCollection {#1740 …}
        +reports: Doctrine\ORM\PersistentCollection {#1739 …}
        +favourites: Doctrine\ORM\PersistentCollection {#2460 …}
        +notifications: Doctrine\ORM\PersistentCollection {#2462 …}
        -id: 48003
        -bodyTs: "'anoth':3,46 'binari':26 'caus':43 'complic':48 'convent':33 'could':15 'd':39 'extern':25 'figur':16 'firefox':21 'get':20 'hack':9 'invok':23 'know':42 'like':40,56 'much':55 'need':51 'one':58 'pattern':54 'project':49 'way':4,13,34"
        +ranking: 0
        +commentCount: 0
        +upVotes: 0
        +downVotes: 0
        +visibility: "visible             "
        +apId: "https://lemmy.ca/comment/3993154"
        +editedAt: null
        +createdAt: DateTimeImmutable @1697268007 {#1620
          date: 2023-10-14 09:20:07.0 +02:00
        }
        +"title": 48003
      }
      1 => App\Entity\EntryComment {#2384}
      2 => App\Entity\EntryComment {#2371
        +user: App\Entity\User {#258 …}
        +entry: App\Entity\Entry {#1614}
        +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
        +image: null
        +parent: Proxies\__CG__\App\Entity\EntryComment {#2467 …}
        +root: Proxies\__CG__\App\Entity\EntryComment {#2467 …}
        +body: """
          I don’t think I have it in me to put together a video, but I can describe it if you like.\n
          \n
          Once you install the extension and follow the setup instructions, you just go to a YouTube page. The extension adds an ugly button to the top-left of the page that says “bypass”. When you click it, Firefox launches `yt-dlp [the URL you’re at] -o - | mpv -` which basically just downloads the video and streams the output through the `mpv` video player. So now you’re watching just the video, with no web page necessary.
          """
        +lang: "en"
        +isAdult: false
        +favouriteCount: 3
        +score: 0
        +lastActive: DateTime @1697268377 {#1723
          date: 2023-10-14 09:26:17.0 +02:00
        }
        +ip: null
        +tags: null
        +mentions: [
          "@danielquinn@lemmy.ca"
          "@zaknenou@lemmy.dbzer0.com"
        ]
        +children: Doctrine\ORM\PersistentCollection {#2468 …}
        +nested: Doctrine\ORM\PersistentCollection {#2363 …}
        +votes: Doctrine\ORM\PersistentCollection {#2377 …}
        +reports: Doctrine\ORM\PersistentCollection {#2359 …}
        +favourites: Doctrine\ORM\PersistentCollection {#2364 …}
        +notifications: Doctrine\ORM\PersistentCollection {#2380 …}
        -id: 48009
        -bodyTs: "'add':42 'basic':74 'button':45 'bypass':56 'click':59 'describ':18 'dlp':65 'download':76 'extens':27,41 'firefox':61 'follow':29 'go':35 'instal':25 'instruct':32 'launch':62 'left':50 'like':22 'mpv':72,85 'necessari':100 'o':71 'output':82 'page':39,53,99 'player':87 'put':11 're':69,91 'say':55 'setup':31 'stream':80 'think':4 'togeth':12 'top':49 'top-left':48 'ugli':44 'url':67 'video':14,78,86,95 'watch':92 'web':98 'youtub':38 'yt':64 'yt-dlp':63"
        +ranking: 0
        +commentCount: 0
        +upVotes: 0
        +downVotes: 0
        +visibility: "visible             "
        +apId: "https://lemmy.ca/comment/3993221"
        +editedAt: null
        +createdAt: DateTimeImmutable @1697268377 {#2471
          date: 2023-10-14 09:26:17.0 +02:00
        }
        +"title": 48009
      }
      0 => App\Entity\EntryComment {#2391
        +user: App\Entity\User {#258 …}
        +entry: App\Entity\Entry {#1614}
        +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
        +image: null
        +parent: Proxies\__CG__\App\Entity\EntryComment {#2389 …}
        +root: Proxies\__CG__\App\Entity\EntryComment {#2411 …}
        +body: "That’s actually very helpful, thanks. I’ve been working on another project to open certain URLs in specific browsers/profiles, and wanted to be sure that I wasn’t missing a more obvious design pattern. The project is [here](https://gitlab.com/danielquinn/opening) if you’re curious."
        +lang: "en"
        +isAdult: false
        +favouriteCount: 1
        +score: 0
        +lastActive: DateTime @1697303255 {#1407
          date: 2023-10-14 19:07:35.0 +02:00
        }
        +ip: null
        +tags: null
        +mentions: [
          "@danielquinn@lemmy.ca"
          "@Morgikan@lemm.ee"
        ]
        +children: Doctrine\ORM\PersistentCollection {#2369 …}
        +nested: Doctrine\ORM\PersistentCollection {#2392 …}
        +votes: Doctrine\ORM\PersistentCollection {#2395 …}
        +reports: Doctrine\ORM\PersistentCollection {#1384 …}
        +favourites: Doctrine\ORM\PersistentCollection {#1383 …}
        +notifications: Doctrine\ORM\PersistentCollection {#1405 …}
        -id: 48905
        -bodyTs: "'/danielquinn/opening)':42 'actual':3 'anoth':12 'browsers/profiles':20 'certain':16 'curious':46 'design':34 'gitlab.com':41 'gitlab.com/danielquinn/opening)':40 'help':5 'miss':30 'obvious':33 'open':15 'pattern':35 'project':13,37 're':45 'specif':19 'sure':25 'thank':6 'url':17 've':8 'want':22 'wasn':28 'work':10"
        +ranking: 0
        +commentCount: 0
        +upVotes: 0
        +downVotes: 0
        +visibility: "visible             "
        +apId: "https://lemmy.ca/comment/4002090"
        +editedAt: null
        +createdAt: DateTimeImmutable @1697303255 {#1883
          date: 2023-10-14 19:07:35.0 +02:00
        }
        +"title": 48905
      }
    ]
    -id: 5166
    -titleTs: "'browser':13 'easier':14 'local':10 'made':2 'make':6 'play':7 'thing':4 'video':9 'youtub':8"
    -bodyTs: "'ad':10 'annoy':69 'anyway':76 'blocker':12,13 'blocker-block':11 'complain':6 'configur':70 'day':3 'dlp':36,59 'done':110 'easi':51 'end':75 'exercis':105 'extens':28,49 'feel':83 'firefox':27,48,54 'free':84 'friday':121 'fun':23 'go':97 'good':114 'harder':63 'hour':118 'isn':60 'know':92 'launch':56 'linux':81 'load':32 'm':96 'mention':18 'might':21 'mpv':42 'much':62,94 'new':9 'night':122 'play':38 'pour':99 'pretti':113 're':79 'requir':67 'someon':4 'though':64 'tri':86 'trick':53 'turn':44 'user':73,82 'video':40 'would':30 'write':25,46 'youtub':15 'yt':35,58 'yt-dlp':34,57"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1697325241
    +visibility: "visible             "
    +apId: "https://lemmy.ca/post/7150213"
    +editedAt: null
    +createdAt: DateTimeImmutable @1697238841 {#1442
      date: 2023-10-14 01:14:01.0 +02:00
    }
  }
  +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
  +image: null
  +parent: Proxies\__CG__\App\Entity\EntryComment {#2378 …}
  +root: Proxies\__CG__\App\Entity\EntryComment {#2378 …}
  +body: """
    Honestly, because I didn’t know (a) that ff2mpv even existed, or that (b) mpv could play YouTube URLs directly. So thanks! I learnt two things today :-)\n
    \n
    It was still a fun project though 'cause I learnt how to write a Firefox extension *and* get the browser to launch programs on-click, so not a waste of time!
    """
  +lang: "en"
  +isAdult: false
  +favouriteCount: 13
  +score: 0
  +lastActive: DateTime @1697288649 {#2382
    date: 2023-10-14 15:04:09.0 +02:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@danielquinn@lemmy.ca"
    "@khorovodoved@lemm.ee"
  ]
  +children: Doctrine\ORM\PersistentCollection {#2379 …}
  +nested: Doctrine\ORM\PersistentCollection {#2383 …}
  +votes: Doctrine\ORM\PersistentCollection {#1906 …}
  +reports: Doctrine\ORM\PersistentCollection {#1708 …}
  +favourites: Doctrine\ORM\PersistentCollection {#1410 …}
  +notifications: Doctrine\ORM\PersistentCollection {#1907 …}
  -id: 48431
  -bodyTs: "'b':14 'browser':47 'caus':35 'click':53 'could':16 'didn':4 'direct':20 'even':10 'exist':11 'extens':43 'ff2mpv':9 'firefox':42 'fun':32 'get':45 'honest':1 'know':6 'launch':49 'learnt':24,37 'mpv':15 'on-click':51 'play':17 'program':50 'project':33 'still':30 'thank':22 'thing':26 'though':34 'time':59 'today':27 'two':25 'url':19 'wast':57 'write':40 'youtub':18"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.ca/comment/3997262"
  +editedAt: null
  +createdAt: DateTimeImmutable @1697288649 {#2385
    date: 2023-10-14 15:04:09.0 +02:00
  }
  +"title": 48431
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
11 DENIED edit
App\Entity\EntryComment {#2384
  +user: App\Entity\User {#258 …}
  +entry: App\Entity\Entry {#1614
    +user: App\Entity\User {#258 …}
    +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
    +image: Proxies\__CG__\App\Entity\Image {#1581 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1654 …}
    +slug: "I-made-a-thing-to-make-playing-YouTube-videos-locally"
    +title: "I made a thing to make playing YouTube videos locally from your browser easier"
    +url: "https://gitlab.com/danielquinn/video-bypass"
    +body: """
      The other day someone was complaining about the new ad blocker-blocker on YouTube and I mentioned that it might be fun to write a Firefox extension that would just load up `yt-dlp` and play the video through `mpv`.\n
      \n
      It turns out, writing a Firefox extension is *easy* and tricking Firefox into launching `yt-dlp` isn’t much harder (though it does require some annoying configuration on the user’s end).\n
      \n
      Anyway, if you’re a Linux user, feel free to try it out. I don’t know how much I’m going to pour into this, but as an exercise of “can this be done”, it was pretty good for a few hours on a Friday night.
      """
    +type: "link"
    +lang: "en"
    +isOc: false
    +hasEmbed: false
    +commentCount: 19
    +favouriteCount: 200
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1707557582 {#1446
      date: 2024-02-10 10:33:02.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1652 …}
    +votes: Doctrine\ORM\PersistentCollection {#1649 …}
    +reports: Doctrine\ORM\PersistentCollection {#1656 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1525 …}
    +notifications: Doctrine\ORM\PersistentCollection {#1526 …}
    +badges: Doctrine\ORM\PersistentCollection {#1557 …}
    +children: [
      3 => App\Entity\EntryComment {#1630
        +user: App\Entity\User {#258 …}
        +entry: App\Entity\Entry {#1614}
        +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
        +image: null
        +parent: Proxies\__CG__\App\Entity\EntryComment {#2411 …}
        +root: Proxies\__CG__\App\Entity\EntryComment {#2411 …}
        +body: "Is there another way to do this? This hack was the only way I could figure out how to get Firefox to invoke an external binary, but if there’s a more conventional way to do it, I’d like to know 'cause I have another more complicated project in need of a pattern much like this one."
        +lang: "en"
        +isAdult: false
        +favouriteCount: 1
        +score: 0
        +lastActive: DateTime @1697268007 {#1702
          date: 2023-10-14 09:20:07.0 +02:00
        }
        +ip: null
        +tags: null
        +mentions: [
          "@danielquinn@lemmy.ca"
          "@Morgikan@lemm.ee"
        ]
        +children: Doctrine\ORM\PersistentCollection {#2448 …}
        +nested: Doctrine\ORM\PersistentCollection {#2465 …}
        +votes: Doctrine\ORM\PersistentCollection {#1740 …}
        +reports: Doctrine\ORM\PersistentCollection {#1739 …}
        +favourites: Doctrine\ORM\PersistentCollection {#2460 …}
        +notifications: Doctrine\ORM\PersistentCollection {#2462 …}
        -id: 48003
        -bodyTs: "'anoth':3,46 'binari':26 'caus':43 'complic':48 'convent':33 'could':15 'd':39 'extern':25 'figur':16 'firefox':21 'get':20 'hack':9 'invok':23 'know':42 'like':40,56 'much':55 'need':51 'one':58 'pattern':54 'project':49 'way':4,13,34"
        +ranking: 0
        +commentCount: 0
        +upVotes: 0
        +downVotes: 0
        +visibility: "visible             "
        +apId: "https://lemmy.ca/comment/3993154"
        +editedAt: null
        +createdAt: DateTimeImmutable @1697268007 {#1620
          date: 2023-10-14 09:20:07.0 +02:00
        }
        +"title": 48003
      }
      1 => App\Entity\EntryComment {#2384}
      2 => App\Entity\EntryComment {#2371
        +user: App\Entity\User {#258 …}
        +entry: App\Entity\Entry {#1614}
        +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
        +image: null
        +parent: Proxies\__CG__\App\Entity\EntryComment {#2467 …}
        +root: Proxies\__CG__\App\Entity\EntryComment {#2467 …}
        +body: """
          I don’t think I have it in me to put together a video, but I can describe it if you like.\n
          \n
          Once you install the extension and follow the setup instructions, you just go to a YouTube page. The extension adds an ugly button to the top-left of the page that says “bypass”. When you click it, Firefox launches `yt-dlp [the URL you’re at] -o - | mpv -` which basically just downloads the video and streams the output through the `mpv` video player. So now you’re watching just the video, with no web page necessary.
          """
        +lang: "en"
        +isAdult: false
        +favouriteCount: 3
        +score: 0
        +lastActive: DateTime @1697268377 {#1723
          date: 2023-10-14 09:26:17.0 +02:00
        }
        +ip: null
        +tags: null
        +mentions: [
          "@danielquinn@lemmy.ca"
          "@zaknenou@lemmy.dbzer0.com"
        ]
        +children: Doctrine\ORM\PersistentCollection {#2468 …}
        +nested: Doctrine\ORM\PersistentCollection {#2363 …}
        +votes: Doctrine\ORM\PersistentCollection {#2377 …}
        +reports: Doctrine\ORM\PersistentCollection {#2359 …}
        +favourites: Doctrine\ORM\PersistentCollection {#2364 …}
        +notifications: Doctrine\ORM\PersistentCollection {#2380 …}
        -id: 48009
        -bodyTs: "'add':42 'basic':74 'button':45 'bypass':56 'click':59 'describ':18 'dlp':65 'download':76 'extens':27,41 'firefox':61 'follow':29 'go':35 'instal':25 'instruct':32 'launch':62 'left':50 'like':22 'mpv':72,85 'necessari':100 'o':71 'output':82 'page':39,53,99 'player':87 'put':11 're':69,91 'say':55 'setup':31 'stream':80 'think':4 'togeth':12 'top':49 'top-left':48 'ugli':44 'url':67 'video':14,78,86,95 'watch':92 'web':98 'youtub':38 'yt':64 'yt-dlp':63"
        +ranking: 0
        +commentCount: 0
        +upVotes: 0
        +downVotes: 0
        +visibility: "visible             "
        +apId: "https://lemmy.ca/comment/3993221"
        +editedAt: null
        +createdAt: DateTimeImmutable @1697268377 {#2471
          date: 2023-10-14 09:26:17.0 +02:00
        }
        +"title": 48009
      }
      0 => App\Entity\EntryComment {#2391
        +user: App\Entity\User {#258 …}
        +entry: App\Entity\Entry {#1614}
        +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
        +image: null
        +parent: Proxies\__CG__\App\Entity\EntryComment {#2389 …}
        +root: Proxies\__CG__\App\Entity\EntryComment {#2411 …}
        +body: "That’s actually very helpful, thanks. I’ve been working on another project to open certain URLs in specific browsers/profiles, and wanted to be sure that I wasn’t missing a more obvious design pattern. The project is [here](https://gitlab.com/danielquinn/opening) if you’re curious."
        +lang: "en"
        +isAdult: false
        +favouriteCount: 1
        +score: 0
        +lastActive: DateTime @1697303255 {#1407
          date: 2023-10-14 19:07:35.0 +02:00
        }
        +ip: null
        +tags: null
        +mentions: [
          "@danielquinn@lemmy.ca"
          "@Morgikan@lemm.ee"
        ]
        +children: Doctrine\ORM\PersistentCollection {#2369 …}
        +nested: Doctrine\ORM\PersistentCollection {#2392 …}
        +votes: Doctrine\ORM\PersistentCollection {#2395 …}
        +reports: Doctrine\ORM\PersistentCollection {#1384 …}
        +favourites: Doctrine\ORM\PersistentCollection {#1383 …}
        +notifications: Doctrine\ORM\PersistentCollection {#1405 …}
        -id: 48905
        -bodyTs: "'/danielquinn/opening)':42 'actual':3 'anoth':12 'browsers/profiles':20 'certain':16 'curious':46 'design':34 'gitlab.com':41 'gitlab.com/danielquinn/opening)':40 'help':5 'miss':30 'obvious':33 'open':15 'pattern':35 'project':13,37 're':45 'specif':19 'sure':25 'thank':6 'url':17 've':8 'want':22 'wasn':28 'work':10"
        +ranking: 0
        +commentCount: 0
        +upVotes: 0
        +downVotes: 0
        +visibility: "visible             "
        +apId: "https://lemmy.ca/comment/4002090"
        +editedAt: null
        +createdAt: DateTimeImmutable @1697303255 {#1883
          date: 2023-10-14 19:07:35.0 +02:00
        }
        +"title": 48905
      }
    ]
    -id: 5166
    -titleTs: "'browser':13 'easier':14 'local':10 'made':2 'make':6 'play':7 'thing':4 'video':9 'youtub':8"
    -bodyTs: "'ad':10 'annoy':69 'anyway':76 'blocker':12,13 'blocker-block':11 'complain':6 'configur':70 'day':3 'dlp':36,59 'done':110 'easi':51 'end':75 'exercis':105 'extens':28,49 'feel':83 'firefox':27,48,54 'free':84 'friday':121 'fun':23 'go':97 'good':114 'harder':63 'hour':118 'isn':60 'know':92 'launch':56 'linux':81 'load':32 'm':96 'mention':18 'might':21 'mpv':42 'much':62,94 'new':9 'night':122 'play':38 'pour':99 'pretti':113 're':79 'requir':67 'someon':4 'though':64 'tri':86 'trick':53 'turn':44 'user':73,82 'video':40 'would':30 'write':25,46 'youtub':15 'yt':35,58 'yt-dlp':34,57"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1697325241
    +visibility: "visible             "
    +apId: "https://lemmy.ca/post/7150213"
    +editedAt: null
    +createdAt: DateTimeImmutable @1697238841 {#1442
      date: 2023-10-14 01:14:01.0 +02:00
    }
  }
  +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
  +image: null
  +parent: Proxies\__CG__\App\Entity\EntryComment {#2378 …}
  +root: Proxies\__CG__\App\Entity\EntryComment {#2378 …}
  +body: """
    Honestly, because I didn’t know (a) that ff2mpv even existed, or that (b) mpv could play YouTube URLs directly. So thanks! I learnt two things today :-)\n
    \n
    It was still a fun project though 'cause I learnt how to write a Firefox extension *and* get the browser to launch programs on-click, so not a waste of time!
    """
  +lang: "en"
  +isAdult: false
  +favouriteCount: 13
  +score: 0
  +lastActive: DateTime @1697288649 {#2382
    date: 2023-10-14 15:04:09.0 +02:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@danielquinn@lemmy.ca"
    "@khorovodoved@lemm.ee"
  ]
  +children: Doctrine\ORM\PersistentCollection {#2379 …}
  +nested: Doctrine\ORM\PersistentCollection {#2383 …}
  +votes: Doctrine\ORM\PersistentCollection {#1906 …}
  +reports: Doctrine\ORM\PersistentCollection {#1708 …}
  +favourites: Doctrine\ORM\PersistentCollection {#1410 …}
  +notifications: Doctrine\ORM\PersistentCollection {#1907 …}
  -id: 48431
  -bodyTs: "'b':14 'browser':47 'caus':35 'click':53 'could':16 'didn':4 'direct':20 'even':10 'exist':11 'extens':43 'ff2mpv':9 'firefox':42 'fun':32 'get':45 'honest':1 'know':6 'launch':49 'learnt':24,37 'mpv':15 'on-click':51 'play':17 'program':50 'project':33 'still':30 'thank':22 'thing':26 'though':34 'time':59 'today':27 'two':25 'url':19 'wast':57 'write':40 'youtub':18"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.ca/comment/3997262"
  +editedAt: null
  +createdAt: DateTimeImmutable @1697288649 {#2385
    date: 2023-10-14 15:04:09.0 +02:00
  }
  +"title": 48431
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
12 DENIED moderate
App\Entity\EntryComment {#2384
  +user: App\Entity\User {#258 …}
  +entry: App\Entity\Entry {#1614
    +user: App\Entity\User {#258 …}
    +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
    +image: Proxies\__CG__\App\Entity\Image {#1581 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1654 …}
    +slug: "I-made-a-thing-to-make-playing-YouTube-videos-locally"
    +title: "I made a thing to make playing YouTube videos locally from your browser easier"
    +url: "https://gitlab.com/danielquinn/video-bypass"
    +body: """
      The other day someone was complaining about the new ad blocker-blocker on YouTube and I mentioned that it might be fun to write a Firefox extension that would just load up `yt-dlp` and play the video through `mpv`.\n
      \n
      It turns out, writing a Firefox extension is *easy* and tricking Firefox into launching `yt-dlp` isn’t much harder (though it does require some annoying configuration on the user’s end).\n
      \n
      Anyway, if you’re a Linux user, feel free to try it out. I don’t know how much I’m going to pour into this, but as an exercise of “can this be done”, it was pretty good for a few hours on a Friday night.
      """
    +type: "link"
    +lang: "en"
    +isOc: false
    +hasEmbed: false
    +commentCount: 19
    +favouriteCount: 200
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1707557582 {#1446
      date: 2024-02-10 10:33:02.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1652 …}
    +votes: Doctrine\ORM\PersistentCollection {#1649 …}
    +reports: Doctrine\ORM\PersistentCollection {#1656 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1525 …}
    +notifications: Doctrine\ORM\PersistentCollection {#1526 …}
    +badges: Doctrine\ORM\PersistentCollection {#1557 …}
    +children: [
      3 => App\Entity\EntryComment {#1630
        +user: App\Entity\User {#258 …}
        +entry: App\Entity\Entry {#1614}
        +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
        +image: null
        +parent: Proxies\__CG__\App\Entity\EntryComment {#2411 …}
        +root: Proxies\__CG__\App\Entity\EntryComment {#2411 …}
        +body: "Is there another way to do this? This hack was the only way I could figure out how to get Firefox to invoke an external binary, but if there’s a more conventional way to do it, I’d like to know 'cause I have another more complicated project in need of a pattern much like this one."
        +lang: "en"
        +isAdult: false
        +favouriteCount: 1
        +score: 0
        +lastActive: DateTime @1697268007 {#1702
          date: 2023-10-14 09:20:07.0 +02:00
        }
        +ip: null
        +tags: null
        +mentions: [
          "@danielquinn@lemmy.ca"
          "@Morgikan@lemm.ee"
        ]
        +children: Doctrine\ORM\PersistentCollection {#2448 …}
        +nested: Doctrine\ORM\PersistentCollection {#2465 …}
        +votes: Doctrine\ORM\PersistentCollection {#1740 …}
        +reports: Doctrine\ORM\PersistentCollection {#1739 …}
        +favourites: Doctrine\ORM\PersistentCollection {#2460 …}
        +notifications: Doctrine\ORM\PersistentCollection {#2462 …}
        -id: 48003
        -bodyTs: "'anoth':3,46 'binari':26 'caus':43 'complic':48 'convent':33 'could':15 'd':39 'extern':25 'figur':16 'firefox':21 'get':20 'hack':9 'invok':23 'know':42 'like':40,56 'much':55 'need':51 'one':58 'pattern':54 'project':49 'way':4,13,34"
        +ranking: 0
        +commentCount: 0
        +upVotes: 0
        +downVotes: 0
        +visibility: "visible             "
        +apId: "https://lemmy.ca/comment/3993154"
        +editedAt: null
        +createdAt: DateTimeImmutable @1697268007 {#1620
          date: 2023-10-14 09:20:07.0 +02:00
        }
        +"title": 48003
      }
      1 => App\Entity\EntryComment {#2384}
      2 => App\Entity\EntryComment {#2371
        +user: App\Entity\User {#258 …}
        +entry: App\Entity\Entry {#1614}
        +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
        +image: null
        +parent: Proxies\__CG__\App\Entity\EntryComment {#2467 …}
        +root: Proxies\__CG__\App\Entity\EntryComment {#2467 …}
        +body: """
          I don’t think I have it in me to put together a video, but I can describe it if you like.\n
          \n
          Once you install the extension and follow the setup instructions, you just go to a YouTube page. The extension adds an ugly button to the top-left of the page that says “bypass”. When you click it, Firefox launches `yt-dlp [the URL you’re at] -o - | mpv -` which basically just downloads the video and streams the output through the `mpv` video player. So now you’re watching just the video, with no web page necessary.
          """
        +lang: "en"
        +isAdult: false
        +favouriteCount: 3
        +score: 0
        +lastActive: DateTime @1697268377 {#1723
          date: 2023-10-14 09:26:17.0 +02:00
        }
        +ip: null
        +tags: null
        +mentions: [
          "@danielquinn@lemmy.ca"
          "@zaknenou@lemmy.dbzer0.com"
        ]
        +children: Doctrine\ORM\PersistentCollection {#2468 …}
        +nested: Doctrine\ORM\PersistentCollection {#2363 …}
        +votes: Doctrine\ORM\PersistentCollection {#2377 …}
        +reports: Doctrine\ORM\PersistentCollection {#2359 …}
        +favourites: Doctrine\ORM\PersistentCollection {#2364 …}
        +notifications: Doctrine\ORM\PersistentCollection {#2380 …}
        -id: 48009
        -bodyTs: "'add':42 'basic':74 'button':45 'bypass':56 'click':59 'describ':18 'dlp':65 'download':76 'extens':27,41 'firefox':61 'follow':29 'go':35 'instal':25 'instruct':32 'launch':62 'left':50 'like':22 'mpv':72,85 'necessari':100 'o':71 'output':82 'page':39,53,99 'player':87 'put':11 're':69,91 'say':55 'setup':31 'stream':80 'think':4 'togeth':12 'top':49 'top-left':48 'ugli':44 'url':67 'video':14,78,86,95 'watch':92 'web':98 'youtub':38 'yt':64 'yt-dlp':63"
        +ranking: 0
        +commentCount: 0
        +upVotes: 0
        +downVotes: 0
        +visibility: "visible             "
        +apId: "https://lemmy.ca/comment/3993221"
        +editedAt: null
        +createdAt: DateTimeImmutable @1697268377 {#2471
          date: 2023-10-14 09:26:17.0 +02:00
        }
        +"title": 48009
      }
      0 => App\Entity\EntryComment {#2391
        +user: App\Entity\User {#258 …}
        +entry: App\Entity\Entry {#1614}
        +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
        +image: null
        +parent: Proxies\__CG__\App\Entity\EntryComment {#2389 …}
        +root: Proxies\__CG__\App\Entity\EntryComment {#2411 …}
        +body: "That’s actually very helpful, thanks. I’ve been working on another project to open certain URLs in specific browsers/profiles, and wanted to be sure that I wasn’t missing a more obvious design pattern. The project is [here](https://gitlab.com/danielquinn/opening) if you’re curious."
        +lang: "en"
        +isAdult: false
        +favouriteCount: 1
        +score: 0
        +lastActive: DateTime @1697303255 {#1407
          date: 2023-10-14 19:07:35.0 +02:00
        }
        +ip: null
        +tags: null
        +mentions: [
          "@danielquinn@lemmy.ca"
          "@Morgikan@lemm.ee"
        ]
        +children: Doctrine\ORM\PersistentCollection {#2369 …}
        +nested: Doctrine\ORM\PersistentCollection {#2392 …}
        +votes: Doctrine\ORM\PersistentCollection {#2395 …}
        +reports: Doctrine\ORM\PersistentCollection {#1384 …}
        +favourites: Doctrine\ORM\PersistentCollection {#1383 …}
        +notifications: Doctrine\ORM\PersistentCollection {#1405 …}
        -id: 48905
        -bodyTs: "'/danielquinn/opening)':42 'actual':3 'anoth':12 'browsers/profiles':20 'certain':16 'curious':46 'design':34 'gitlab.com':41 'gitlab.com/danielquinn/opening)':40 'help':5 'miss':30 'obvious':33 'open':15 'pattern':35 'project':13,37 're':45 'specif':19 'sure':25 'thank':6 'url':17 've':8 'want':22 'wasn':28 'work':10"
        +ranking: 0
        +commentCount: 0
        +upVotes: 0
        +downVotes: 0
        +visibility: "visible             "
        +apId: "https://lemmy.ca/comment/4002090"
        +editedAt: null
        +createdAt: DateTimeImmutable @1697303255 {#1883
          date: 2023-10-14 19:07:35.0 +02:00
        }
        +"title": 48905
      }
    ]
    -id: 5166
    -titleTs: "'browser':13 'easier':14 'local':10 'made':2 'make':6 'play':7 'thing':4 'video':9 'youtub':8"
    -bodyTs: "'ad':10 'annoy':69 'anyway':76 'blocker':12,13 'blocker-block':11 'complain':6 'configur':70 'day':3 'dlp':36,59 'done':110 'easi':51 'end':75 'exercis':105 'extens':28,49 'feel':83 'firefox':27,48,54 'free':84 'friday':121 'fun':23 'go':97 'good':114 'harder':63 'hour':118 'isn':60 'know':92 'launch':56 'linux':81 'load':32 'm':96 'mention':18 'might':21 'mpv':42 'much':62,94 'new':9 'night':122 'play':38 'pour':99 'pretti':113 're':79 'requir':67 'someon':4 'though':64 'tri':86 'trick':53 'turn':44 'user':73,82 'video':40 'would':30 'write':25,46 'youtub':15 'yt':35,58 'yt-dlp':34,57"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1697325241
    +visibility: "visible             "
    +apId: "https://lemmy.ca/post/7150213"
    +editedAt: null
    +createdAt: DateTimeImmutable @1697238841 {#1442
      date: 2023-10-14 01:14:01.0 +02:00
    }
  }
  +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
  +image: null
  +parent: Proxies\__CG__\App\Entity\EntryComment {#2378 …}
  +root: Proxies\__CG__\App\Entity\EntryComment {#2378 …}
  +body: """
    Honestly, because I didn’t know (a) that ff2mpv even existed, or that (b) mpv could play YouTube URLs directly. So thanks! I learnt two things today :-)\n
    \n
    It was still a fun project though 'cause I learnt how to write a Firefox extension *and* get the browser to launch programs on-click, so not a waste of time!
    """
  +lang: "en"
  +isAdult: false
  +favouriteCount: 13
  +score: 0
  +lastActive: DateTime @1697288649 {#2382
    date: 2023-10-14 15:04:09.0 +02:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@danielquinn@lemmy.ca"
    "@khorovodoved@lemm.ee"
  ]
  +children: Doctrine\ORM\PersistentCollection {#2379 …}
  +nested: Doctrine\ORM\PersistentCollection {#2383 …}
  +votes: Doctrine\ORM\PersistentCollection {#1906 …}
  +reports: Doctrine\ORM\PersistentCollection {#1708 …}
  +favourites: Doctrine\ORM\PersistentCollection {#1410 …}
  +notifications: Doctrine\ORM\PersistentCollection {#1907 …}
  -id: 48431
  -bodyTs: "'b':14 'browser':47 'caus':35 'click':53 'could':16 'didn':4 'direct':20 'even':10 'exist':11 'extens':43 'ff2mpv':9 'firefox':42 'fun':32 'get':45 'honest':1 'know':6 'launch':49 'learnt':24,37 'mpv':15 'on-click':51 'play':17 'program':50 'project':33 'still':30 'thank':22 'thing':26 'though':34 'time':59 'today':27 'two':25 'url':19 'wast':57 'write':40 'youtub':18"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.ca/comment/3997262"
  +editedAt: null
  +createdAt: DateTimeImmutable @1697288649 {#2385
    date: 2023-10-14 15:04:09.0 +02:00
  }
  +"title": 48431
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
13 DENIED ROLE_USER
null
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"Symfony\Component\Security\Core\Authorization\Voter\RoleHierarchyVoter"
ACCESS DENIED
"App\Security\Voter\EntryCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
14 DENIED moderate
App\Entity\EntryComment {#2371
  +user: App\Entity\User {#258 …}
  +entry: App\Entity\Entry {#1614
    +user: App\Entity\User {#258 …}
    +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
    +image: Proxies\__CG__\App\Entity\Image {#1581 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1654 …}
    +slug: "I-made-a-thing-to-make-playing-YouTube-videos-locally"
    +title: "I made a thing to make playing YouTube videos locally from your browser easier"
    +url: "https://gitlab.com/danielquinn/video-bypass"
    +body: """
      The other day someone was complaining about the new ad blocker-blocker on YouTube and I mentioned that it might be fun to write a Firefox extension that would just load up `yt-dlp` and play the video through `mpv`.\n
      \n
      It turns out, writing a Firefox extension is *easy* and tricking Firefox into launching `yt-dlp` isn’t much harder (though it does require some annoying configuration on the user’s end).\n
      \n
      Anyway, if you’re a Linux user, feel free to try it out. I don’t know how much I’m going to pour into this, but as an exercise of “can this be done”, it was pretty good for a few hours on a Friday night.
      """
    +type: "link"
    +lang: "en"
    +isOc: false
    +hasEmbed: false
    +commentCount: 19
    +favouriteCount: 200
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1707557582 {#1446
      date: 2024-02-10 10:33:02.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1652 …}
    +votes: Doctrine\ORM\PersistentCollection {#1649 …}
    +reports: Doctrine\ORM\PersistentCollection {#1656 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1525 …}
    +notifications: Doctrine\ORM\PersistentCollection {#1526 …}
    +badges: Doctrine\ORM\PersistentCollection {#1557 …}
    +children: [
      3 => App\Entity\EntryComment {#1630
        +user: App\Entity\User {#258 …}
        +entry: App\Entity\Entry {#1614}
        +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
        +image: null
        +parent: Proxies\__CG__\App\Entity\EntryComment {#2411 …}
        +root: Proxies\__CG__\App\Entity\EntryComment {#2411 …}
        +body: "Is there another way to do this? This hack was the only way I could figure out how to get Firefox to invoke an external binary, but if there’s a more conventional way to do it, I’d like to know 'cause I have another more complicated project in need of a pattern much like this one."
        +lang: "en"
        +isAdult: false
        +favouriteCount: 1
        +score: 0
        +lastActive: DateTime @1697268007 {#1702
          date: 2023-10-14 09:20:07.0 +02:00
        }
        +ip: null
        +tags: null
        +mentions: [
          "@danielquinn@lemmy.ca"
          "@Morgikan@lemm.ee"
        ]
        +children: Doctrine\ORM\PersistentCollection {#2448 …}
        +nested: Doctrine\ORM\PersistentCollection {#2465 …}
        +votes: Doctrine\ORM\PersistentCollection {#1740 …}
        +reports: Doctrine\ORM\PersistentCollection {#1739 …}
        +favourites: Doctrine\ORM\PersistentCollection {#2460 …}
        +notifications: Doctrine\ORM\PersistentCollection {#2462 …}
        -id: 48003
        -bodyTs: "'anoth':3,46 'binari':26 'caus':43 'complic':48 'convent':33 'could':15 'd':39 'extern':25 'figur':16 'firefox':21 'get':20 'hack':9 'invok':23 'know':42 'like':40,56 'much':55 'need':51 'one':58 'pattern':54 'project':49 'way':4,13,34"
        +ranking: 0
        +commentCount: 0
        +upVotes: 0
        +downVotes: 0
        +visibility: "visible             "
        +apId: "https://lemmy.ca/comment/3993154"
        +editedAt: null
        +createdAt: DateTimeImmutable @1697268007 {#1620
          date: 2023-10-14 09:20:07.0 +02:00
        }
        +"title": 48003
      }
      1 => App\Entity\EntryComment {#2384
        +user: App\Entity\User {#258 …}
        +entry: App\Entity\Entry {#1614}
        +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
        +image: null
        +parent: Proxies\__CG__\App\Entity\EntryComment {#2378 …}
        +root: Proxies\__CG__\App\Entity\EntryComment {#2378 …}
        +body: """
          Honestly, because I didn’t know (a) that ff2mpv even existed, or that (b) mpv could play YouTube URLs directly. So thanks! I learnt two things today :-)\n
          \n
          It was still a fun project though 'cause I learnt how to write a Firefox extension *and* get the browser to launch programs on-click, so not a waste of time!
          """
        +lang: "en"
        +isAdult: false
        +favouriteCount: 13
        +score: 0
        +lastActive: DateTime @1697288649 {#2382
          date: 2023-10-14 15:04:09.0 +02:00
        }
        +ip: null
        +tags: null
        +mentions: [
          "@danielquinn@lemmy.ca"
          "@khorovodoved@lemm.ee"
        ]
        +children: Doctrine\ORM\PersistentCollection {#2379 …}
        +nested: Doctrine\ORM\PersistentCollection {#2383 …}
        +votes: Doctrine\ORM\PersistentCollection {#1906 …}
        +reports: Doctrine\ORM\PersistentCollection {#1708 …}
        +favourites: Doctrine\ORM\PersistentCollection {#1410 …}
        +notifications: Doctrine\ORM\PersistentCollection {#1907 …}
        -id: 48431
        -bodyTs: "'b':14 'browser':47 'caus':35 'click':53 'could':16 'didn':4 'direct':20 'even':10 'exist':11 'extens':43 'ff2mpv':9 'firefox':42 'fun':32 'get':45 'honest':1 'know':6 'launch':49 'learnt':24,37 'mpv':15 'on-click':51 'play':17 'program':50 'project':33 'still':30 'thank':22 'thing':26 'though':34 'time':59 'today':27 'two':25 'url':19 'wast':57 'write':40 'youtub':18"
        +ranking: 0
        +commentCount: 0
        +upVotes: 0
        +downVotes: 0
        +visibility: "visible             "
        +apId: "https://lemmy.ca/comment/3997262"
        +editedAt: null
        +createdAt: DateTimeImmutable @1697288649 {#2385
          date: 2023-10-14 15:04:09.0 +02:00
        }
        +"title": 48431
      }
      2 => App\Entity\EntryComment {#2371}
      0 => App\Entity\EntryComment {#2391
        +user: App\Entity\User {#258 …}
        +entry: App\Entity\Entry {#1614}
        +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
        +image: null
        +parent: Proxies\__CG__\App\Entity\EntryComment {#2389 …}
        +root: Proxies\__CG__\App\Entity\EntryComment {#2411 …}
        +body: "That’s actually very helpful, thanks. I’ve been working on another project to open certain URLs in specific browsers/profiles, and wanted to be sure that I wasn’t missing a more obvious design pattern. The project is [here](https://gitlab.com/danielquinn/opening) if you’re curious."
        +lang: "en"
        +isAdult: false
        +favouriteCount: 1
        +score: 0
        +lastActive: DateTime @1697303255 {#1407
          date: 2023-10-14 19:07:35.0 +02:00
        }
        +ip: null
        +tags: null
        +mentions: [
          "@danielquinn@lemmy.ca"
          "@Morgikan@lemm.ee"
        ]
        +children: Doctrine\ORM\PersistentCollection {#2369 …}
        +nested: Doctrine\ORM\PersistentCollection {#2392 …}
        +votes: Doctrine\ORM\PersistentCollection {#2395 …}
        +reports: Doctrine\ORM\PersistentCollection {#1384 …}
        +favourites: Doctrine\ORM\PersistentCollection {#1383 …}
        +notifications: Doctrine\ORM\PersistentCollection {#1405 …}
        -id: 48905
        -bodyTs: "'/danielquinn/opening)':42 'actual':3 'anoth':12 'browsers/profiles':20 'certain':16 'curious':46 'design':34 'gitlab.com':41 'gitlab.com/danielquinn/opening)':40 'help':5 'miss':30 'obvious':33 'open':15 'pattern':35 'project':13,37 're':45 'specif':19 'sure':25 'thank':6 'url':17 've':8 'want':22 'wasn':28 'work':10"
        +ranking: 0
        +commentCount: 0
        +upVotes: 0
        +downVotes: 0
        +visibility: "visible             "
        +apId: "https://lemmy.ca/comment/4002090"
        +editedAt: null
        +createdAt: DateTimeImmutable @1697303255 {#1883
          date: 2023-10-14 19:07:35.0 +02:00
        }
        +"title": 48905
      }
    ]
    -id: 5166
    -titleTs: "'browser':13 'easier':14 'local':10 'made':2 'make':6 'play':7 'thing':4 'video':9 'youtub':8"
    -bodyTs: "'ad':10 'annoy':69 'anyway':76 'blocker':12,13 'blocker-block':11 'complain':6 'configur':70 'day':3 'dlp':36,59 'done':110 'easi':51 'end':75 'exercis':105 'extens':28,49 'feel':83 'firefox':27,48,54 'free':84 'friday':121 'fun':23 'go':97 'good':114 'harder':63 'hour':118 'isn':60 'know':92 'launch':56 'linux':81 'load':32 'm':96 'mention':18 'might':21 'mpv':42 'much':62,94 'new':9 'night':122 'play':38 'pour':99 'pretti':113 're':79 'requir':67 'someon':4 'though':64 'tri':86 'trick':53 'turn':44 'user':73,82 'video':40 'would':30 'write':25,46 'youtub':15 'yt':35,58 'yt-dlp':34,57"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1697325241
    +visibility: "visible             "
    +apId: "https://lemmy.ca/post/7150213"
    +editedAt: null
    +createdAt: DateTimeImmutable @1697238841 {#1442
      date: 2023-10-14 01:14:01.0 +02:00
    }
  }
  +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
  +image: null
  +parent: Proxies\__CG__\App\Entity\EntryComment {#2467 …}
  +root: Proxies\__CG__\App\Entity\EntryComment {#2467 …}
  +body: """
    I don’t think I have it in me to put together a video, but I can describe it if you like.\n
    \n
    Once you install the extension and follow the setup instructions, you just go to a YouTube page. The extension adds an ugly button to the top-left of the page that says “bypass”. When you click it, Firefox launches `yt-dlp [the URL you’re at] -o - | mpv -` which basically just downloads the video and streams the output through the `mpv` video player. So now you’re watching just the video, with no web page necessary.
    """
  +lang: "en"
  +isAdult: false
  +favouriteCount: 3
  +score: 0
  +lastActive: DateTime @1697268377 {#1723
    date: 2023-10-14 09:26:17.0 +02:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@danielquinn@lemmy.ca"
    "@zaknenou@lemmy.dbzer0.com"
  ]
  +children: Doctrine\ORM\PersistentCollection {#2468 …}
  +nested: Doctrine\ORM\PersistentCollection {#2363 …}
  +votes: Doctrine\ORM\PersistentCollection {#2377 …}
  +reports: Doctrine\ORM\PersistentCollection {#2359 …}
  +favourites: Doctrine\ORM\PersistentCollection {#2364 …}
  +notifications: Doctrine\ORM\PersistentCollection {#2380 …}
  -id: 48009
  -bodyTs: "'add':42 'basic':74 'button':45 'bypass':56 'click':59 'describ':18 'dlp':65 'download':76 'extens':27,41 'firefox':61 'follow':29 'go':35 'instal':25 'instruct':32 'launch':62 'left':50 'like':22 'mpv':72,85 'necessari':100 'o':71 'output':82 'page':39,53,99 'player':87 'put':11 're':69,91 'say':55 'setup':31 'stream':80 'think':4 'togeth':12 'top':49 'top-left':48 'ugli':44 'url':67 'video':14,78,86,95 'watch':92 'web':98 'youtub':38 'yt':64 'yt-dlp':63"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.ca/comment/3993221"
  +editedAt: null
  +createdAt: DateTimeImmutable @1697268377 {#2471
    date: 2023-10-14 09:26:17.0 +02:00
  }
  +"title": 48009
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
15 DENIED edit
App\Entity\EntryComment {#2371
  +user: App\Entity\User {#258 …}
  +entry: App\Entity\Entry {#1614
    +user: App\Entity\User {#258 …}
    +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
    +image: Proxies\__CG__\App\Entity\Image {#1581 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1654 …}
    +slug: "I-made-a-thing-to-make-playing-YouTube-videos-locally"
    +title: "I made a thing to make playing YouTube videos locally from your browser easier"
    +url: "https://gitlab.com/danielquinn/video-bypass"
    +body: """
      The other day someone was complaining about the new ad blocker-blocker on YouTube and I mentioned that it might be fun to write a Firefox extension that would just load up `yt-dlp` and play the video through `mpv`.\n
      \n
      It turns out, writing a Firefox extension is *easy* and tricking Firefox into launching `yt-dlp` isn’t much harder (though it does require some annoying configuration on the user’s end).\n
      \n
      Anyway, if you’re a Linux user, feel free to try it out. I don’t know how much I’m going to pour into this, but as an exercise of “can this be done”, it was pretty good for a few hours on a Friday night.
      """
    +type: "link"
    +lang: "en"
    +isOc: false
    +hasEmbed: false
    +commentCount: 19
    +favouriteCount: 200
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1707557582 {#1446
      date: 2024-02-10 10:33:02.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1652 …}
    +votes: Doctrine\ORM\PersistentCollection {#1649 …}
    +reports: Doctrine\ORM\PersistentCollection {#1656 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1525 …}
    +notifications: Doctrine\ORM\PersistentCollection {#1526 …}
    +badges: Doctrine\ORM\PersistentCollection {#1557 …}
    +children: [
      3 => App\Entity\EntryComment {#1630
        +user: App\Entity\User {#258 …}
        +entry: App\Entity\Entry {#1614}
        +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
        +image: null
        +parent: Proxies\__CG__\App\Entity\EntryComment {#2411 …}
        +root: Proxies\__CG__\App\Entity\EntryComment {#2411 …}
        +body: "Is there another way to do this? This hack was the only way I could figure out how to get Firefox to invoke an external binary, but if there’s a more conventional way to do it, I’d like to know 'cause I have another more complicated project in need of a pattern much like this one."
        +lang: "en"
        +isAdult: false
        +favouriteCount: 1
        +score: 0
        +lastActive: DateTime @1697268007 {#1702
          date: 2023-10-14 09:20:07.0 +02:00
        }
        +ip: null
        +tags: null
        +mentions: [
          "@danielquinn@lemmy.ca"
          "@Morgikan@lemm.ee"
        ]
        +children: Doctrine\ORM\PersistentCollection {#2448 …}
        +nested: Doctrine\ORM\PersistentCollection {#2465 …}
        +votes: Doctrine\ORM\PersistentCollection {#1740 …}
        +reports: Doctrine\ORM\PersistentCollection {#1739 …}
        +favourites: Doctrine\ORM\PersistentCollection {#2460 …}
        +notifications: Doctrine\ORM\PersistentCollection {#2462 …}
        -id: 48003
        -bodyTs: "'anoth':3,46 'binari':26 'caus':43 'complic':48 'convent':33 'could':15 'd':39 'extern':25 'figur':16 'firefox':21 'get':20 'hack':9 'invok':23 'know':42 'like':40,56 'much':55 'need':51 'one':58 'pattern':54 'project':49 'way':4,13,34"
        +ranking: 0
        +commentCount: 0
        +upVotes: 0
        +downVotes: 0
        +visibility: "visible             "
        +apId: "https://lemmy.ca/comment/3993154"
        +editedAt: null
        +createdAt: DateTimeImmutable @1697268007 {#1620
          date: 2023-10-14 09:20:07.0 +02:00
        }
        +"title": 48003
      }
      1 => App\Entity\EntryComment {#2384
        +user: App\Entity\User {#258 …}
        +entry: App\Entity\Entry {#1614}
        +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
        +image: null
        +parent: Proxies\__CG__\App\Entity\EntryComment {#2378 …}
        +root: Proxies\__CG__\App\Entity\EntryComment {#2378 …}
        +body: """
          Honestly, because I didn’t know (a) that ff2mpv even existed, or that (b) mpv could play YouTube URLs directly. So thanks! I learnt two things today :-)\n
          \n
          It was still a fun project though 'cause I learnt how to write a Firefox extension *and* get the browser to launch programs on-click, so not a waste of time!
          """
        +lang: "en"
        +isAdult: false
        +favouriteCount: 13
        +score: 0
        +lastActive: DateTime @1697288649 {#2382
          date: 2023-10-14 15:04:09.0 +02:00
        }
        +ip: null
        +tags: null
        +mentions: [
          "@danielquinn@lemmy.ca"
          "@khorovodoved@lemm.ee"
        ]
        +children: Doctrine\ORM\PersistentCollection {#2379 …}
        +nested: Doctrine\ORM\PersistentCollection {#2383 …}
        +votes: Doctrine\ORM\PersistentCollection {#1906 …}
        +reports: Doctrine\ORM\PersistentCollection {#1708 …}
        +favourites: Doctrine\ORM\PersistentCollection {#1410 …}
        +notifications: Doctrine\ORM\PersistentCollection {#1907 …}
        -id: 48431
        -bodyTs: "'b':14 'browser':47 'caus':35 'click':53 'could':16 'didn':4 'direct':20 'even':10 'exist':11 'extens':43 'ff2mpv':9 'firefox':42 'fun':32 'get':45 'honest':1 'know':6 'launch':49 'learnt':24,37 'mpv':15 'on-click':51 'play':17 'program':50 'project':33 'still':30 'thank':22 'thing':26 'though':34 'time':59 'today':27 'two':25 'url':19 'wast':57 'write':40 'youtub':18"
        +ranking: 0
        +commentCount: 0
        +upVotes: 0
        +downVotes: 0
        +visibility: "visible             "
        +apId: "https://lemmy.ca/comment/3997262"
        +editedAt: null
        +createdAt: DateTimeImmutable @1697288649 {#2385
          date: 2023-10-14 15:04:09.0 +02:00
        }
        +"title": 48431
      }
      2 => App\Entity\EntryComment {#2371}
      0 => App\Entity\EntryComment {#2391
        +user: App\Entity\User {#258 …}
        +entry: App\Entity\Entry {#1614}
        +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
        +image: null
        +parent: Proxies\__CG__\App\Entity\EntryComment {#2389 …}
        +root: Proxies\__CG__\App\Entity\EntryComment {#2411 …}
        +body: "That’s actually very helpful, thanks. I’ve been working on another project to open certain URLs in specific browsers/profiles, and wanted to be sure that I wasn’t missing a more obvious design pattern. The project is [here](https://gitlab.com/danielquinn/opening) if you’re curious."
        +lang: "en"
        +isAdult: false
        +favouriteCount: 1
        +score: 0
        +lastActive: DateTime @1697303255 {#1407
          date: 2023-10-14 19:07:35.0 +02:00
        }
        +ip: null
        +tags: null
        +mentions: [
          "@danielquinn@lemmy.ca"
          "@Morgikan@lemm.ee"
        ]
        +children: Doctrine\ORM\PersistentCollection {#2369 …}
        +nested: Doctrine\ORM\PersistentCollection {#2392 …}
        +votes: Doctrine\ORM\PersistentCollection {#2395 …}
        +reports: Doctrine\ORM\PersistentCollection {#1384 …}
        +favourites: Doctrine\ORM\PersistentCollection {#1383 …}
        +notifications: Doctrine\ORM\PersistentCollection {#1405 …}
        -id: 48905
        -bodyTs: "'/danielquinn/opening)':42 'actual':3 'anoth':12 'browsers/profiles':20 'certain':16 'curious':46 'design':34 'gitlab.com':41 'gitlab.com/danielquinn/opening)':40 'help':5 'miss':30 'obvious':33 'open':15 'pattern':35 'project':13,37 're':45 'specif':19 'sure':25 'thank':6 'url':17 've':8 'want':22 'wasn':28 'work':10"
        +ranking: 0
        +commentCount: 0
        +upVotes: 0
        +downVotes: 0
        +visibility: "visible             "
        +apId: "https://lemmy.ca/comment/4002090"
        +editedAt: null
        +createdAt: DateTimeImmutable @1697303255 {#1883
          date: 2023-10-14 19:07:35.0 +02:00
        }
        +"title": 48905
      }
    ]
    -id: 5166
    -titleTs: "'browser':13 'easier':14 'local':10 'made':2 'make':6 'play':7 'thing':4 'video':9 'youtub':8"
    -bodyTs: "'ad':10 'annoy':69 'anyway':76 'blocker':12,13 'blocker-block':11 'complain':6 'configur':70 'day':3 'dlp':36,59 'done':110 'easi':51 'end':75 'exercis':105 'extens':28,49 'feel':83 'firefox':27,48,54 'free':84 'friday':121 'fun':23 'go':97 'good':114 'harder':63 'hour':118 'isn':60 'know':92 'launch':56 'linux':81 'load':32 'm':96 'mention':18 'might':21 'mpv':42 'much':62,94 'new':9 'night':122 'play':38 'pour':99 'pretti':113 're':79 'requir':67 'someon':4 'though':64 'tri':86 'trick':53 'turn':44 'user':73,82 'video':40 'would':30 'write':25,46 'youtub':15 'yt':35,58 'yt-dlp':34,57"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1697325241
    +visibility: "visible             "
    +apId: "https://lemmy.ca/post/7150213"
    +editedAt: null
    +createdAt: DateTimeImmutable @1697238841 {#1442
      date: 2023-10-14 01:14:01.0 +02:00
    }
  }
  +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
  +image: null
  +parent: Proxies\__CG__\App\Entity\EntryComment {#2467 …}
  +root: Proxies\__CG__\App\Entity\EntryComment {#2467 …}
  +body: """
    I don’t think I have it in me to put together a video, but I can describe it if you like.\n
    \n
    Once you install the extension and follow the setup instructions, you just go to a YouTube page. The extension adds an ugly button to the top-left of the page that says “bypass”. When you click it, Firefox launches `yt-dlp [the URL you’re at] -o - | mpv -` which basically just downloads the video and streams the output through the `mpv` video player. So now you’re watching just the video, with no web page necessary.
    """
  +lang: "en"
  +isAdult: false
  +favouriteCount: 3
  +score: 0
  +lastActive: DateTime @1697268377 {#1723
    date: 2023-10-14 09:26:17.0 +02:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@danielquinn@lemmy.ca"
    "@zaknenou@lemmy.dbzer0.com"
  ]
  +children: Doctrine\ORM\PersistentCollection {#2468 …}
  +nested: Doctrine\ORM\PersistentCollection {#2363 …}
  +votes: Doctrine\ORM\PersistentCollection {#2377 …}
  +reports: Doctrine\ORM\PersistentCollection {#2359 …}
  +favourites: Doctrine\ORM\PersistentCollection {#2364 …}
  +notifications: Doctrine\ORM\PersistentCollection {#2380 …}
  -id: 48009
  -bodyTs: "'add':42 'basic':74 'button':45 'bypass':56 'click':59 'describ':18 'dlp':65 'download':76 'extens':27,41 'firefox':61 'follow':29 'go':35 'instal':25 'instruct':32 'launch':62 'left':50 'like':22 'mpv':72,85 'necessari':100 'o':71 'output':82 'page':39,53,99 'player':87 'put':11 're':69,91 'say':55 'setup':31 'stream':80 'think':4 'togeth':12 'top':49 'top-left':48 'ugli':44 'url':67 'video':14,78,86,95 'watch':92 'web':98 'youtub':38 'yt':64 'yt-dlp':63"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.ca/comment/3993221"
  +editedAt: null
  +createdAt: DateTimeImmutable @1697268377 {#2471
    date: 2023-10-14 09:26:17.0 +02:00
  }
  +"title": 48009
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
16 DENIED moderate
App\Entity\EntryComment {#2371
  +user: App\Entity\User {#258 …}
  +entry: App\Entity\Entry {#1614
    +user: App\Entity\User {#258 …}
    +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
    +image: Proxies\__CG__\App\Entity\Image {#1581 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1654 …}
    +slug: "I-made-a-thing-to-make-playing-YouTube-videos-locally"
    +title: "I made a thing to make playing YouTube videos locally from your browser easier"
    +url: "https://gitlab.com/danielquinn/video-bypass"
    +body: """
      The other day someone was complaining about the new ad blocker-blocker on YouTube and I mentioned that it might be fun to write a Firefox extension that would just load up `yt-dlp` and play the video through `mpv`.\n
      \n
      It turns out, writing a Firefox extension is *easy* and tricking Firefox into launching `yt-dlp` isn’t much harder (though it does require some annoying configuration on the user’s end).\n
      \n
      Anyway, if you’re a Linux user, feel free to try it out. I don’t know how much I’m going to pour into this, but as an exercise of “can this be done”, it was pretty good for a few hours on a Friday night.
      """
    +type: "link"
    +lang: "en"
    +isOc: false
    +hasEmbed: false
    +commentCount: 19
    +favouriteCount: 200
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1707557582 {#1446
      date: 2024-02-10 10:33:02.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1652 …}
    +votes: Doctrine\ORM\PersistentCollection {#1649 …}
    +reports: Doctrine\ORM\PersistentCollection {#1656 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1525 …}
    +notifications: Doctrine\ORM\PersistentCollection {#1526 …}
    +badges: Doctrine\ORM\PersistentCollection {#1557 …}
    +children: [
      3 => App\Entity\EntryComment {#1630
        +user: App\Entity\User {#258 …}
        +entry: App\Entity\Entry {#1614}
        +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
        +image: null
        +parent: Proxies\__CG__\App\Entity\EntryComment {#2411 …}
        +root: Proxies\__CG__\App\Entity\EntryComment {#2411 …}
        +body: "Is there another way to do this? This hack was the only way I could figure out how to get Firefox to invoke an external binary, but if there’s a more conventional way to do it, I’d like to know 'cause I have another more complicated project in need of a pattern much like this one."
        +lang: "en"
        +isAdult: false
        +favouriteCount: 1
        +score: 0
        +lastActive: DateTime @1697268007 {#1702
          date: 2023-10-14 09:20:07.0 +02:00
        }
        +ip: null
        +tags: null
        +mentions: [
          "@danielquinn@lemmy.ca"
          "@Morgikan@lemm.ee"
        ]
        +children: Doctrine\ORM\PersistentCollection {#2448 …}
        +nested: Doctrine\ORM\PersistentCollection {#2465 …}
        +votes: Doctrine\ORM\PersistentCollection {#1740 …}
        +reports: Doctrine\ORM\PersistentCollection {#1739 …}
        +favourites: Doctrine\ORM\PersistentCollection {#2460 …}
        +notifications: Doctrine\ORM\PersistentCollection {#2462 …}
        -id: 48003
        -bodyTs: "'anoth':3,46 'binari':26 'caus':43 'complic':48 'convent':33 'could':15 'd':39 'extern':25 'figur':16 'firefox':21 'get':20 'hack':9 'invok':23 'know':42 'like':40,56 'much':55 'need':51 'one':58 'pattern':54 'project':49 'way':4,13,34"
        +ranking: 0
        +commentCount: 0
        +upVotes: 0
        +downVotes: 0
        +visibility: "visible             "
        +apId: "https://lemmy.ca/comment/3993154"
        +editedAt: null
        +createdAt: DateTimeImmutable @1697268007 {#1620
          date: 2023-10-14 09:20:07.0 +02:00
        }
        +"title": 48003
      }
      1 => App\Entity\EntryComment {#2384
        +user: App\Entity\User {#258 …}
        +entry: App\Entity\Entry {#1614}
        +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
        +image: null
        +parent: Proxies\__CG__\App\Entity\EntryComment {#2378 …}
        +root: Proxies\__CG__\App\Entity\EntryComment {#2378 …}
        +body: """
          Honestly, because I didn’t know (a) that ff2mpv even existed, or that (b) mpv could play YouTube URLs directly. So thanks! I learnt two things today :-)\n
          \n
          It was still a fun project though 'cause I learnt how to write a Firefox extension *and* get the browser to launch programs on-click, so not a waste of time!
          """
        +lang: "en"
        +isAdult: false
        +favouriteCount: 13
        +score: 0
        +lastActive: DateTime @1697288649 {#2382
          date: 2023-10-14 15:04:09.0 +02:00
        }
        +ip: null
        +tags: null
        +mentions: [
          "@danielquinn@lemmy.ca"
          "@khorovodoved@lemm.ee"
        ]
        +children: Doctrine\ORM\PersistentCollection {#2379 …}
        +nested: Doctrine\ORM\PersistentCollection {#2383 …}
        +votes: Doctrine\ORM\PersistentCollection {#1906 …}
        +reports: Doctrine\ORM\PersistentCollection {#1708 …}
        +favourites: Doctrine\ORM\PersistentCollection {#1410 …}
        +notifications: Doctrine\ORM\PersistentCollection {#1907 …}
        -id: 48431
        -bodyTs: "'b':14 'browser':47 'caus':35 'click':53 'could':16 'didn':4 'direct':20 'even':10 'exist':11 'extens':43 'ff2mpv':9 'firefox':42 'fun':32 'get':45 'honest':1 'know':6 'launch':49 'learnt':24,37 'mpv':15 'on-click':51 'play':17 'program':50 'project':33 'still':30 'thank':22 'thing':26 'though':34 'time':59 'today':27 'two':25 'url':19 'wast':57 'write':40 'youtub':18"
        +ranking: 0
        +commentCount: 0
        +upVotes: 0
        +downVotes: 0
        +visibility: "visible             "
        +apId: "https://lemmy.ca/comment/3997262"
        +editedAt: null
        +createdAt: DateTimeImmutable @1697288649 {#2385
          date: 2023-10-14 15:04:09.0 +02:00
        }
        +"title": 48431
      }
      2 => App\Entity\EntryComment {#2371}
      0 => App\Entity\EntryComment {#2391
        +user: App\Entity\User {#258 …}
        +entry: App\Entity\Entry {#1614}
        +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
        +image: null
        +parent: Proxies\__CG__\App\Entity\EntryComment {#2389 …}
        +root: Proxies\__CG__\App\Entity\EntryComment {#2411 …}
        +body: "That’s actually very helpful, thanks. I’ve been working on another project to open certain URLs in specific browsers/profiles, and wanted to be sure that I wasn’t missing a more obvious design pattern. The project is [here](https://gitlab.com/danielquinn/opening) if you’re curious."
        +lang: "en"
        +isAdult: false
        +favouriteCount: 1
        +score: 0
        +lastActive: DateTime @1697303255 {#1407
          date: 2023-10-14 19:07:35.0 +02:00
        }
        +ip: null
        +tags: null
        +mentions: [
          "@danielquinn@lemmy.ca"
          "@Morgikan@lemm.ee"
        ]
        +children: Doctrine\ORM\PersistentCollection {#2369 …}
        +nested: Doctrine\ORM\PersistentCollection {#2392 …}
        +votes: Doctrine\ORM\PersistentCollection {#2395 …}
        +reports: Doctrine\ORM\PersistentCollection {#1384 …}
        +favourites: Doctrine\ORM\PersistentCollection {#1383 …}
        +notifications: Doctrine\ORM\PersistentCollection {#1405 …}
        -id: 48905
        -bodyTs: "'/danielquinn/opening)':42 'actual':3 'anoth':12 'browsers/profiles':20 'certain':16 'curious':46 'design':34 'gitlab.com':41 'gitlab.com/danielquinn/opening)':40 'help':5 'miss':30 'obvious':33 'open':15 'pattern':35 'project':13,37 're':45 'specif':19 'sure':25 'thank':6 'url':17 've':8 'want':22 'wasn':28 'work':10"
        +ranking: 0
        +commentCount: 0
        +upVotes: 0
        +downVotes: 0
        +visibility: "visible             "
        +apId: "https://lemmy.ca/comment/4002090"
        +editedAt: null
        +createdAt: DateTimeImmutable @1697303255 {#1883
          date: 2023-10-14 19:07:35.0 +02:00
        }
        +"title": 48905
      }
    ]
    -id: 5166
    -titleTs: "'browser':13 'easier':14 'local':10 'made':2 'make':6 'play':7 'thing':4 'video':9 'youtub':8"
    -bodyTs: "'ad':10 'annoy':69 'anyway':76 'blocker':12,13 'blocker-block':11 'complain':6 'configur':70 'day':3 'dlp':36,59 'done':110 'easi':51 'end':75 'exercis':105 'extens':28,49 'feel':83 'firefox':27,48,54 'free':84 'friday':121 'fun':23 'go':97 'good':114 'harder':63 'hour':118 'isn':60 'know':92 'launch':56 'linux':81 'load':32 'm':96 'mention':18 'might':21 'mpv':42 'much':62,94 'new':9 'night':122 'play':38 'pour':99 'pretti':113 're':79 'requir':67 'someon':4 'though':64 'tri':86 'trick':53 'turn':44 'user':73,82 'video':40 'would':30 'write':25,46 'youtub':15 'yt':35,58 'yt-dlp':34,57"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1697325241
    +visibility: "visible             "
    +apId: "https://lemmy.ca/post/7150213"
    +editedAt: null
    +createdAt: DateTimeImmutable @1697238841 {#1442
      date: 2023-10-14 01:14:01.0 +02:00
    }
  }
  +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
  +image: null
  +parent: Proxies\__CG__\App\Entity\EntryComment {#2467 …}
  +root: Proxies\__CG__\App\Entity\EntryComment {#2467 …}
  +body: """
    I don’t think I have it in me to put together a video, but I can describe it if you like.\n
    \n
    Once you install the extension and follow the setup instructions, you just go to a YouTube page. The extension adds an ugly button to the top-left of the page that says “bypass”. When you click it, Firefox launches `yt-dlp [the URL you’re at] -o - | mpv -` which basically just downloads the video and streams the output through the `mpv` video player. So now you’re watching just the video, with no web page necessary.
    """
  +lang: "en"
  +isAdult: false
  +favouriteCount: 3
  +score: 0
  +lastActive: DateTime @1697268377 {#1723
    date: 2023-10-14 09:26:17.0 +02:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@danielquinn@lemmy.ca"
    "@zaknenou@lemmy.dbzer0.com"
  ]
  +children: Doctrine\ORM\PersistentCollection {#2468 …}
  +nested: Doctrine\ORM\PersistentCollection {#2363 …}
  +votes: Doctrine\ORM\PersistentCollection {#2377 …}
  +reports: Doctrine\ORM\PersistentCollection {#2359 …}
  +favourites: Doctrine\ORM\PersistentCollection {#2364 …}
  +notifications: Doctrine\ORM\PersistentCollection {#2380 …}
  -id: 48009
  -bodyTs: "'add':42 'basic':74 'button':45 'bypass':56 'click':59 'describ':18 'dlp':65 'download':76 'extens':27,41 'firefox':61 'follow':29 'go':35 'instal':25 'instruct':32 'launch':62 'left':50 'like':22 'mpv':72,85 'necessari':100 'o':71 'output':82 'page':39,53,99 'player':87 'put':11 're':69,91 'say':55 'setup':31 'stream':80 'think':4 'togeth':12 'top':49 'top-left':48 'ugli':44 'url':67 'video':14,78,86,95 'watch':92 'web':98 'youtub':38 'yt':64 'yt-dlp':63"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.ca/comment/3993221"
  +editedAt: null
  +createdAt: DateTimeImmutable @1697268377 {#2471
    date: 2023-10-14 09:26:17.0 +02:00
  }
  +"title": 48009
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
17 DENIED ROLE_USER
null
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"Symfony\Component\Security\Core\Authorization\Voter\RoleHierarchyVoter"
ACCESS DENIED
"App\Security\Voter\EntryCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
18 DENIED moderate
App\Entity\EntryComment {#2391
  +user: App\Entity\User {#258 …}
  +entry: App\Entity\Entry {#1614
    +user: App\Entity\User {#258 …}
    +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
    +image: Proxies\__CG__\App\Entity\Image {#1581 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1654 …}
    +slug: "I-made-a-thing-to-make-playing-YouTube-videos-locally"
    +title: "I made a thing to make playing YouTube videos locally from your browser easier"
    +url: "https://gitlab.com/danielquinn/video-bypass"
    +body: """
      The other day someone was complaining about the new ad blocker-blocker on YouTube and I mentioned that it might be fun to write a Firefox extension that would just load up `yt-dlp` and play the video through `mpv`.\n
      \n
      It turns out, writing a Firefox extension is *easy* and tricking Firefox into launching `yt-dlp` isn’t much harder (though it does require some annoying configuration on the user’s end).\n
      \n
      Anyway, if you’re a Linux user, feel free to try it out. I don’t know how much I’m going to pour into this, but as an exercise of “can this be done”, it was pretty good for a few hours on a Friday night.
      """
    +type: "link"
    +lang: "en"
    +isOc: false
    +hasEmbed: false
    +commentCount: 19
    +favouriteCount: 200
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1707557582 {#1446
      date: 2024-02-10 10:33:02.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1652 …}
    +votes: Doctrine\ORM\PersistentCollection {#1649 …}
    +reports: Doctrine\ORM\PersistentCollection {#1656 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1525 …}
    +notifications: Doctrine\ORM\PersistentCollection {#1526 …}
    +badges: Doctrine\ORM\PersistentCollection {#1557 …}
    +children: [
      3 => App\Entity\EntryComment {#1630
        +user: App\Entity\User {#258 …}
        +entry: App\Entity\Entry {#1614}
        +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
        +image: null
        +parent: Proxies\__CG__\App\Entity\EntryComment {#2411 …}
        +root: Proxies\__CG__\App\Entity\EntryComment {#2411 …}
        +body: "Is there another way to do this? This hack was the only way I could figure out how to get Firefox to invoke an external binary, but if there’s a more conventional way to do it, I’d like to know 'cause I have another more complicated project in need of a pattern much like this one."
        +lang: "en"
        +isAdult: false
        +favouriteCount: 1
        +score: 0
        +lastActive: DateTime @1697268007 {#1702
          date: 2023-10-14 09:20:07.0 +02:00
        }
        +ip: null
        +tags: null
        +mentions: [
          "@danielquinn@lemmy.ca"
          "@Morgikan@lemm.ee"
        ]
        +children: Doctrine\ORM\PersistentCollection {#2448 …}
        +nested: Doctrine\ORM\PersistentCollection {#2465 …}
        +votes: Doctrine\ORM\PersistentCollection {#1740 …}
        +reports: Doctrine\ORM\PersistentCollection {#1739 …}
        +favourites: Doctrine\ORM\PersistentCollection {#2460 …}
        +notifications: Doctrine\ORM\PersistentCollection {#2462 …}
        -id: 48003
        -bodyTs: "'anoth':3,46 'binari':26 'caus':43 'complic':48 'convent':33 'could':15 'd':39 'extern':25 'figur':16 'firefox':21 'get':20 'hack':9 'invok':23 'know':42 'like':40,56 'much':55 'need':51 'one':58 'pattern':54 'project':49 'way':4,13,34"
        +ranking: 0
        +commentCount: 0
        +upVotes: 0
        +downVotes: 0
        +visibility: "visible             "
        +apId: "https://lemmy.ca/comment/3993154"
        +editedAt: null
        +createdAt: DateTimeImmutable @1697268007 {#1620
          date: 2023-10-14 09:20:07.0 +02:00
        }
        +"title": 48003
      }
      1 => App\Entity\EntryComment {#2384
        +user: App\Entity\User {#258 …}
        +entry: App\Entity\Entry {#1614}
        +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
        +image: null
        +parent: Proxies\__CG__\App\Entity\EntryComment {#2378 …}
        +root: Proxies\__CG__\App\Entity\EntryComment {#2378 …}
        +body: """
          Honestly, because I didn’t know (a) that ff2mpv even existed, or that (b) mpv could play YouTube URLs directly. So thanks! I learnt two things today :-)\n
          \n
          It was still a fun project though 'cause I learnt how to write a Firefox extension *and* get the browser to launch programs on-click, so not a waste of time!
          """
        +lang: "en"
        +isAdult: false
        +favouriteCount: 13
        +score: 0
        +lastActive: DateTime @1697288649 {#2382
          date: 2023-10-14 15:04:09.0 +02:00
        }
        +ip: null
        +tags: null
        +mentions: [
          "@danielquinn@lemmy.ca"
          "@khorovodoved@lemm.ee"
        ]
        +children: Doctrine\ORM\PersistentCollection {#2379 …}
        +nested: Doctrine\ORM\PersistentCollection {#2383 …}
        +votes: Doctrine\ORM\PersistentCollection {#1906 …}
        +reports: Doctrine\ORM\PersistentCollection {#1708 …}
        +favourites: Doctrine\ORM\PersistentCollection {#1410 …}
        +notifications: Doctrine\ORM\PersistentCollection {#1907 …}
        -id: 48431
        -bodyTs: "'b':14 'browser':47 'caus':35 'click':53 'could':16 'didn':4 'direct':20 'even':10 'exist':11 'extens':43 'ff2mpv':9 'firefox':42 'fun':32 'get':45 'honest':1 'know':6 'launch':49 'learnt':24,37 'mpv':15 'on-click':51 'play':17 'program':50 'project':33 'still':30 'thank':22 'thing':26 'though':34 'time':59 'today':27 'two':25 'url':19 'wast':57 'write':40 'youtub':18"
        +ranking: 0
        +commentCount: 0
        +upVotes: 0
        +downVotes: 0
        +visibility: "visible             "
        +apId: "https://lemmy.ca/comment/3997262"
        +editedAt: null
        +createdAt: DateTimeImmutable @1697288649 {#2385
          date: 2023-10-14 15:04:09.0 +02:00
        }
        +"title": 48431
      }
      2 => App\Entity\EntryComment {#2371
        +user: App\Entity\User {#258 …}
        +entry: App\Entity\Entry {#1614}
        +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
        +image: null
        +parent: Proxies\__CG__\App\Entity\EntryComment {#2467 …}
        +root: Proxies\__CG__\App\Entity\EntryComment {#2467 …}
        +body: """
          I don’t think I have it in me to put together a video, but I can describe it if you like.\n
          \n
          Once you install the extension and follow the setup instructions, you just go to a YouTube page. The extension adds an ugly button to the top-left of the page that says “bypass”. When you click it, Firefox launches `yt-dlp [the URL you’re at] -o - | mpv -` which basically just downloads the video and streams the output through the `mpv` video player. So now you’re watching just the video, with no web page necessary.
          """
        +lang: "en"
        +isAdult: false
        +favouriteCount: 3
        +score: 0
        +lastActive: DateTime @1697268377 {#1723
          date: 2023-10-14 09:26:17.0 +02:00
        }
        +ip: null
        +tags: null
        +mentions: [
          "@danielquinn@lemmy.ca"
          "@zaknenou@lemmy.dbzer0.com"
        ]
        +children: Doctrine\ORM\PersistentCollection {#2468 …}
        +nested: Doctrine\ORM\PersistentCollection {#2363 …}
        +votes: Doctrine\ORM\PersistentCollection {#2377 …}
        +reports: Doctrine\ORM\PersistentCollection {#2359 …}
        +favourites: Doctrine\ORM\PersistentCollection {#2364 …}
        +notifications: Doctrine\ORM\PersistentCollection {#2380 …}
        -id: 48009
        -bodyTs: "'add':42 'basic':74 'button':45 'bypass':56 'click':59 'describ':18 'dlp':65 'download':76 'extens':27,41 'firefox':61 'follow':29 'go':35 'instal':25 'instruct':32 'launch':62 'left':50 'like':22 'mpv':72,85 'necessari':100 'o':71 'output':82 'page':39,53,99 'player':87 'put':11 're':69,91 'say':55 'setup':31 'stream':80 'think':4 'togeth':12 'top':49 'top-left':48 'ugli':44 'url':67 'video':14,78,86,95 'watch':92 'web':98 'youtub':38 'yt':64 'yt-dlp':63"
        +ranking: 0
        +commentCount: 0
        +upVotes: 0
        +downVotes: 0
        +visibility: "visible             "
        +apId: "https://lemmy.ca/comment/3993221"
        +editedAt: null
        +createdAt: DateTimeImmutable @1697268377 {#2471
          date: 2023-10-14 09:26:17.0 +02:00
        }
        +"title": 48009
      }
      0 => App\Entity\EntryComment {#2391}
    ]
    -id: 5166
    -titleTs: "'browser':13 'easier':14 'local':10 'made':2 'make':6 'play':7 'thing':4 'video':9 'youtub':8"
    -bodyTs: "'ad':10 'annoy':69 'anyway':76 'blocker':12,13 'blocker-block':11 'complain':6 'configur':70 'day':3 'dlp':36,59 'done':110 'easi':51 'end':75 'exercis':105 'extens':28,49 'feel':83 'firefox':27,48,54 'free':84 'friday':121 'fun':23 'go':97 'good':114 'harder':63 'hour':118 'isn':60 'know':92 'launch':56 'linux':81 'load':32 'm':96 'mention':18 'might':21 'mpv':42 'much':62,94 'new':9 'night':122 'play':38 'pour':99 'pretti':113 're':79 'requir':67 'someon':4 'though':64 'tri':86 'trick':53 'turn':44 'user':73,82 'video':40 'would':30 'write':25,46 'youtub':15 'yt':35,58 'yt-dlp':34,57"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1697325241
    +visibility: "visible             "
    +apId: "https://lemmy.ca/post/7150213"
    +editedAt: null
    +createdAt: DateTimeImmutable @1697238841 {#1442
      date: 2023-10-14 01:14:01.0 +02:00
    }
  }
  +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
  +image: null
  +parent: Proxies\__CG__\App\Entity\EntryComment {#2389 …}
  +root: Proxies\__CG__\App\Entity\EntryComment {#2411 …}
  +body: "That’s actually very helpful, thanks. I’ve been working on another project to open certain URLs in specific browsers/profiles, and wanted to be sure that I wasn’t missing a more obvious design pattern. The project is [here](https://gitlab.com/danielquinn/opening) if you’re curious."
  +lang: "en"
  +isAdult: false
  +favouriteCount: 1
  +score: 0
  +lastActive: DateTime @1697303255 {#1407
    date: 2023-10-14 19:07:35.0 +02:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@danielquinn@lemmy.ca"
    "@Morgikan@lemm.ee"
  ]
  +children: Doctrine\ORM\PersistentCollection {#2369 …}
  +nested: Doctrine\ORM\PersistentCollection {#2392 …}
  +votes: Doctrine\ORM\PersistentCollection {#2395 …}
  +reports: Doctrine\ORM\PersistentCollection {#1384 …}
  +favourites: Doctrine\ORM\PersistentCollection {#1383 …}
  +notifications: Doctrine\ORM\PersistentCollection {#1405 …}
  -id: 48905
  -bodyTs: "'/danielquinn/opening)':42 'actual':3 'anoth':12 'browsers/profiles':20 'certain':16 'curious':46 'design':34 'gitlab.com':41 'gitlab.com/danielquinn/opening)':40 'help':5 'miss':30 'obvious':33 'open':15 'pattern':35 'project':13,37 're':45 'specif':19 'sure':25 'thank':6 'url':17 've':8 'want':22 'wasn':28 'work':10"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.ca/comment/4002090"
  +editedAt: null
  +createdAt: DateTimeImmutable @1697303255 {#1883
    date: 2023-10-14 19:07:35.0 +02:00
  }
  +"title": 48905
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
19 DENIED edit
App\Entity\EntryComment {#2391
  +user: App\Entity\User {#258 …}
  +entry: App\Entity\Entry {#1614
    +user: App\Entity\User {#258 …}
    +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
    +image: Proxies\__CG__\App\Entity\Image {#1581 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1654 …}
    +slug: "I-made-a-thing-to-make-playing-YouTube-videos-locally"
    +title: "I made a thing to make playing YouTube videos locally from your browser easier"
    +url: "https://gitlab.com/danielquinn/video-bypass"
    +body: """
      The other day someone was complaining about the new ad blocker-blocker on YouTube and I mentioned that it might be fun to write a Firefox extension that would just load up `yt-dlp` and play the video through `mpv`.\n
      \n
      It turns out, writing a Firefox extension is *easy* and tricking Firefox into launching `yt-dlp` isn’t much harder (though it does require some annoying configuration on the user’s end).\n
      \n
      Anyway, if you’re a Linux user, feel free to try it out. I don’t know how much I’m going to pour into this, but as an exercise of “can this be done”, it was pretty good for a few hours on a Friday night.
      """
    +type: "link"
    +lang: "en"
    +isOc: false
    +hasEmbed: false
    +commentCount: 19
    +favouriteCount: 200
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1707557582 {#1446
      date: 2024-02-10 10:33:02.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1652 …}
    +votes: Doctrine\ORM\PersistentCollection {#1649 …}
    +reports: Doctrine\ORM\PersistentCollection {#1656 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1525 …}
    +notifications: Doctrine\ORM\PersistentCollection {#1526 …}
    +badges: Doctrine\ORM\PersistentCollection {#1557 …}
    +children: [
      3 => App\Entity\EntryComment {#1630
        +user: App\Entity\User {#258 …}
        +entry: App\Entity\Entry {#1614}
        +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
        +image: null
        +parent: Proxies\__CG__\App\Entity\EntryComment {#2411 …}
        +root: Proxies\__CG__\App\Entity\EntryComment {#2411 …}
        +body: "Is there another way to do this? This hack was the only way I could figure out how to get Firefox to invoke an external binary, but if there’s a more conventional way to do it, I’d like to know 'cause I have another more complicated project in need of a pattern much like this one."
        +lang: "en"
        +isAdult: false
        +favouriteCount: 1
        +score: 0
        +lastActive: DateTime @1697268007 {#1702
          date: 2023-10-14 09:20:07.0 +02:00
        }
        +ip: null
        +tags: null
        +mentions: [
          "@danielquinn@lemmy.ca"
          "@Morgikan@lemm.ee"
        ]
        +children: Doctrine\ORM\PersistentCollection {#2448 …}
        +nested: Doctrine\ORM\PersistentCollection {#2465 …}
        +votes: Doctrine\ORM\PersistentCollection {#1740 …}
        +reports: Doctrine\ORM\PersistentCollection {#1739 …}
        +favourites: Doctrine\ORM\PersistentCollection {#2460 …}
        +notifications: Doctrine\ORM\PersistentCollection {#2462 …}
        -id: 48003
        -bodyTs: "'anoth':3,46 'binari':26 'caus':43 'complic':48 'convent':33 'could':15 'd':39 'extern':25 'figur':16 'firefox':21 'get':20 'hack':9 'invok':23 'know':42 'like':40,56 'much':55 'need':51 'one':58 'pattern':54 'project':49 'way':4,13,34"
        +ranking: 0
        +commentCount: 0
        +upVotes: 0
        +downVotes: 0
        +visibility: "visible             "
        +apId: "https://lemmy.ca/comment/3993154"
        +editedAt: null
        +createdAt: DateTimeImmutable @1697268007 {#1620
          date: 2023-10-14 09:20:07.0 +02:00
        }
        +"title": 48003
      }
      1 => App\Entity\EntryComment {#2384
        +user: App\Entity\User {#258 …}
        +entry: App\Entity\Entry {#1614}
        +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
        +image: null
        +parent: Proxies\__CG__\App\Entity\EntryComment {#2378 …}
        +root: Proxies\__CG__\App\Entity\EntryComment {#2378 …}
        +body: """
          Honestly, because I didn’t know (a) that ff2mpv even existed, or that (b) mpv could play YouTube URLs directly. So thanks! I learnt two things today :-)\n
          \n
          It was still a fun project though 'cause I learnt how to write a Firefox extension *and* get the browser to launch programs on-click, so not a waste of time!
          """
        +lang: "en"
        +isAdult: false
        +favouriteCount: 13
        +score: 0
        +lastActive: DateTime @1697288649 {#2382
          date: 2023-10-14 15:04:09.0 +02:00
        }
        +ip: null
        +tags: null
        +mentions: [
          "@danielquinn@lemmy.ca"
          "@khorovodoved@lemm.ee"
        ]
        +children: Doctrine\ORM\PersistentCollection {#2379 …}
        +nested: Doctrine\ORM\PersistentCollection {#2383 …}
        +votes: Doctrine\ORM\PersistentCollection {#1906 …}
        +reports: Doctrine\ORM\PersistentCollection {#1708 …}
        +favourites: Doctrine\ORM\PersistentCollection {#1410 …}
        +notifications: Doctrine\ORM\PersistentCollection {#1907 …}
        -id: 48431
        -bodyTs: "'b':14 'browser':47 'caus':35 'click':53 'could':16 'didn':4 'direct':20 'even':10 'exist':11 'extens':43 'ff2mpv':9 'firefox':42 'fun':32 'get':45 'honest':1 'know':6 'launch':49 'learnt':24,37 'mpv':15 'on-click':51 'play':17 'program':50 'project':33 'still':30 'thank':22 'thing':26 'though':34 'time':59 'today':27 'two':25 'url':19 'wast':57 'write':40 'youtub':18"
        +ranking: 0
        +commentCount: 0
        +upVotes: 0
        +downVotes: 0
        +visibility: "visible             "
        +apId: "https://lemmy.ca/comment/3997262"
        +editedAt: null
        +createdAt: DateTimeImmutable @1697288649 {#2385
          date: 2023-10-14 15:04:09.0 +02:00
        }
        +"title": 48431
      }
      2 => App\Entity\EntryComment {#2371
        +user: App\Entity\User {#258 …}
        +entry: App\Entity\Entry {#1614}
        +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
        +image: null
        +parent: Proxies\__CG__\App\Entity\EntryComment {#2467 …}
        +root: Proxies\__CG__\App\Entity\EntryComment {#2467 …}
        +body: """
          I don’t think I have it in me to put together a video, but I can describe it if you like.\n
          \n
          Once you install the extension and follow the setup instructions, you just go to a YouTube page. The extension adds an ugly button to the top-left of the page that says “bypass”. When you click it, Firefox launches `yt-dlp [the URL you’re at] -o - | mpv -` which basically just downloads the video and streams the output through the `mpv` video player. So now you’re watching just the video, with no web page necessary.
          """
        +lang: "en"
        +isAdult: false
        +favouriteCount: 3
        +score: 0
        +lastActive: DateTime @1697268377 {#1723
          date: 2023-10-14 09:26:17.0 +02:00
        }
        +ip: null
        +tags: null
        +mentions: [
          "@danielquinn@lemmy.ca"
          "@zaknenou@lemmy.dbzer0.com"
        ]
        +children: Doctrine\ORM\PersistentCollection {#2468 …}
        +nested: Doctrine\ORM\PersistentCollection {#2363 …}
        +votes: Doctrine\ORM\PersistentCollection {#2377 …}
        +reports: Doctrine\ORM\PersistentCollection {#2359 …}
        +favourites: Doctrine\ORM\PersistentCollection {#2364 …}
        +notifications: Doctrine\ORM\PersistentCollection {#2380 …}
        -id: 48009
        -bodyTs: "'add':42 'basic':74 'button':45 'bypass':56 'click':59 'describ':18 'dlp':65 'download':76 'extens':27,41 'firefox':61 'follow':29 'go':35 'instal':25 'instruct':32 'launch':62 'left':50 'like':22 'mpv':72,85 'necessari':100 'o':71 'output':82 'page':39,53,99 'player':87 'put':11 're':69,91 'say':55 'setup':31 'stream':80 'think':4 'togeth':12 'top':49 'top-left':48 'ugli':44 'url':67 'video':14,78,86,95 'watch':92 'web':98 'youtub':38 'yt':64 'yt-dlp':63"
        +ranking: 0
        +commentCount: 0
        +upVotes: 0
        +downVotes: 0
        +visibility: "visible             "
        +apId: "https://lemmy.ca/comment/3993221"
        +editedAt: null
        +createdAt: DateTimeImmutable @1697268377 {#2471
          date: 2023-10-14 09:26:17.0 +02:00
        }
        +"title": 48009
      }
      0 => App\Entity\EntryComment {#2391}
    ]
    -id: 5166
    -titleTs: "'browser':13 'easier':14 'local':10 'made':2 'make':6 'play':7 'thing':4 'video':9 'youtub':8"
    -bodyTs: "'ad':10 'annoy':69 'anyway':76 'blocker':12,13 'blocker-block':11 'complain':6 'configur':70 'day':3 'dlp':36,59 'done':110 'easi':51 'end':75 'exercis':105 'extens':28,49 'feel':83 'firefox':27,48,54 'free':84 'friday':121 'fun':23 'go':97 'good':114 'harder':63 'hour':118 'isn':60 'know':92 'launch':56 'linux':81 'load':32 'm':96 'mention':18 'might':21 'mpv':42 'much':62,94 'new':9 'night':122 'play':38 'pour':99 'pretti':113 're':79 'requir':67 'someon':4 'though':64 'tri':86 'trick':53 'turn':44 'user':73,82 'video':40 'would':30 'write':25,46 'youtub':15 'yt':35,58 'yt-dlp':34,57"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1697325241
    +visibility: "visible             "
    +apId: "https://lemmy.ca/post/7150213"
    +editedAt: null
    +createdAt: DateTimeImmutable @1697238841 {#1442
      date: 2023-10-14 01:14:01.0 +02:00
    }
  }
  +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
  +image: null
  +parent: Proxies\__CG__\App\Entity\EntryComment {#2389 …}
  +root: Proxies\__CG__\App\Entity\EntryComment {#2411 …}
  +body: "That’s actually very helpful, thanks. I’ve been working on another project to open certain URLs in specific browsers/profiles, and wanted to be sure that I wasn’t missing a more obvious design pattern. The project is [here](https://gitlab.com/danielquinn/opening) if you’re curious."
  +lang: "en"
  +isAdult: false
  +favouriteCount: 1
  +score: 0
  +lastActive: DateTime @1697303255 {#1407
    date: 2023-10-14 19:07:35.0 +02:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@danielquinn@lemmy.ca"
    "@Morgikan@lemm.ee"
  ]
  +children: Doctrine\ORM\PersistentCollection {#2369 …}
  +nested: Doctrine\ORM\PersistentCollection {#2392 …}
  +votes: Doctrine\ORM\PersistentCollection {#2395 …}
  +reports: Doctrine\ORM\PersistentCollection {#1384 …}
  +favourites: Doctrine\ORM\PersistentCollection {#1383 …}
  +notifications: Doctrine\ORM\PersistentCollection {#1405 …}
  -id: 48905
  -bodyTs: "'/danielquinn/opening)':42 'actual':3 'anoth':12 'browsers/profiles':20 'certain':16 'curious':46 'design':34 'gitlab.com':41 'gitlab.com/danielquinn/opening)':40 'help':5 'miss':30 'obvious':33 'open':15 'pattern':35 'project':13,37 're':45 'specif':19 'sure':25 'thank':6 'url':17 've':8 'want':22 'wasn':28 'work':10"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.ca/comment/4002090"
  +editedAt: null
  +createdAt: DateTimeImmutable @1697303255 {#1883
    date: 2023-10-14 19:07:35.0 +02:00
  }
  +"title": 48905
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
20 DENIED moderate
App\Entity\EntryComment {#2391
  +user: App\Entity\User {#258 …}
  +entry: App\Entity\Entry {#1614
    +user: App\Entity\User {#258 …}
    +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
    +image: Proxies\__CG__\App\Entity\Image {#1581 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1654 …}
    +slug: "I-made-a-thing-to-make-playing-YouTube-videos-locally"
    +title: "I made a thing to make playing YouTube videos locally from your browser easier"
    +url: "https://gitlab.com/danielquinn/video-bypass"
    +body: """
      The other day someone was complaining about the new ad blocker-blocker on YouTube and I mentioned that it might be fun to write a Firefox extension that would just load up `yt-dlp` and play the video through `mpv`.\n
      \n
      It turns out, writing a Firefox extension is *easy* and tricking Firefox into launching `yt-dlp` isn’t much harder (though it does require some annoying configuration on the user’s end).\n
      \n
      Anyway, if you’re a Linux user, feel free to try it out. I don’t know how much I’m going to pour into this, but as an exercise of “can this be done”, it was pretty good for a few hours on a Friday night.
      """
    +type: "link"
    +lang: "en"
    +isOc: false
    +hasEmbed: false
    +commentCount: 19
    +favouriteCount: 200
    +score: 0
    +isAdult: false
    +sticky: false
    +lastActive: DateTime @1707557582 {#1446
      date: 2024-02-10 10:33:02.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1652 …}
    +votes: Doctrine\ORM\PersistentCollection {#1649 …}
    +reports: Doctrine\ORM\PersistentCollection {#1656 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1525 …}
    +notifications: Doctrine\ORM\PersistentCollection {#1526 …}
    +badges: Doctrine\ORM\PersistentCollection {#1557 …}
    +children: [
      3 => App\Entity\EntryComment {#1630
        +user: App\Entity\User {#258 …}
        +entry: App\Entity\Entry {#1614}
        +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
        +image: null
        +parent: Proxies\__CG__\App\Entity\EntryComment {#2411 …}
        +root: Proxies\__CG__\App\Entity\EntryComment {#2411 …}
        +body: "Is there another way to do this? This hack was the only way I could figure out how to get Firefox to invoke an external binary, but if there’s a more conventional way to do it, I’d like to know 'cause I have another more complicated project in need of a pattern much like this one."
        +lang: "en"
        +isAdult: false
        +favouriteCount: 1
        +score: 0
        +lastActive: DateTime @1697268007 {#1702
          date: 2023-10-14 09:20:07.0 +02:00
        }
        +ip: null
        +tags: null
        +mentions: [
          "@danielquinn@lemmy.ca"
          "@Morgikan@lemm.ee"
        ]
        +children: Doctrine\ORM\PersistentCollection {#2448 …}
        +nested: Doctrine\ORM\PersistentCollection {#2465 …}
        +votes: Doctrine\ORM\PersistentCollection {#1740 …}
        +reports: Doctrine\ORM\PersistentCollection {#1739 …}
        +favourites: Doctrine\ORM\PersistentCollection {#2460 …}
        +notifications: Doctrine\ORM\PersistentCollection {#2462 …}
        -id: 48003
        -bodyTs: "'anoth':3,46 'binari':26 'caus':43 'complic':48 'convent':33 'could':15 'd':39 'extern':25 'figur':16 'firefox':21 'get':20 'hack':9 'invok':23 'know':42 'like':40,56 'much':55 'need':51 'one':58 'pattern':54 'project':49 'way':4,13,34"
        +ranking: 0
        +commentCount: 0
        +upVotes: 0
        +downVotes: 0
        +visibility: "visible             "
        +apId: "https://lemmy.ca/comment/3993154"
        +editedAt: null
        +createdAt: DateTimeImmutable @1697268007 {#1620
          date: 2023-10-14 09:20:07.0 +02:00
        }
        +"title": 48003
      }
      1 => App\Entity\EntryComment {#2384
        +user: App\Entity\User {#258 …}
        +entry: App\Entity\Entry {#1614}
        +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
        +image: null
        +parent: Proxies\__CG__\App\Entity\EntryComment {#2378 …}
        +root: Proxies\__CG__\App\Entity\EntryComment {#2378 …}
        +body: """
          Honestly, because I didn’t know (a) that ff2mpv even existed, or that (b) mpv could play YouTube URLs directly. So thanks! I learnt two things today :-)\n
          \n
          It was still a fun project though 'cause I learnt how to write a Firefox extension *and* get the browser to launch programs on-click, so not a waste of time!
          """
        +lang: "en"
        +isAdult: false
        +favouriteCount: 13
        +score: 0
        +lastActive: DateTime @1697288649 {#2382
          date: 2023-10-14 15:04:09.0 +02:00
        }
        +ip: null
        +tags: null
        +mentions: [
          "@danielquinn@lemmy.ca"
          "@khorovodoved@lemm.ee"
        ]
        +children: Doctrine\ORM\PersistentCollection {#2379 …}
        +nested: Doctrine\ORM\PersistentCollection {#2383 …}
        +votes: Doctrine\ORM\PersistentCollection {#1906 …}
        +reports: Doctrine\ORM\PersistentCollection {#1708 …}
        +favourites: Doctrine\ORM\PersistentCollection {#1410 …}
        +notifications: Doctrine\ORM\PersistentCollection {#1907 …}
        -id: 48431
        -bodyTs: "'b':14 'browser':47 'caus':35 'click':53 'could':16 'didn':4 'direct':20 'even':10 'exist':11 'extens':43 'ff2mpv':9 'firefox':42 'fun':32 'get':45 'honest':1 'know':6 'launch':49 'learnt':24,37 'mpv':15 'on-click':51 'play':17 'program':50 'project':33 'still':30 'thank':22 'thing':26 'though':34 'time':59 'today':27 'two':25 'url':19 'wast':57 'write':40 'youtub':18"
        +ranking: 0
        +commentCount: 0
        +upVotes: 0
        +downVotes: 0
        +visibility: "visible             "
        +apId: "https://lemmy.ca/comment/3997262"
        +editedAt: null
        +createdAt: DateTimeImmutable @1697288649 {#2385
          date: 2023-10-14 15:04:09.0 +02:00
        }
        +"title": 48431
      }
      2 => App\Entity\EntryComment {#2371
        +user: App\Entity\User {#258 …}
        +entry: App\Entity\Entry {#1614}
        +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
        +image: null
        +parent: Proxies\__CG__\App\Entity\EntryComment {#2467 …}
        +root: Proxies\__CG__\App\Entity\EntryComment {#2467 …}
        +body: """
          I don’t think I have it in me to put together a video, but I can describe it if you like.\n
          \n
          Once you install the extension and follow the setup instructions, you just go to a YouTube page. The extension adds an ugly button to the top-left of the page that says “bypass”. When you click it, Firefox launches `yt-dlp [the URL you’re at] -o - | mpv -` which basically just downloads the video and streams the output through the `mpv` video player. So now you’re watching just the video, with no web page necessary.
          """
        +lang: "en"
        +isAdult: false
        +favouriteCount: 3
        +score: 0
        +lastActive: DateTime @1697268377 {#1723
          date: 2023-10-14 09:26:17.0 +02:00
        }
        +ip: null
        +tags: null
        +mentions: [
          "@danielquinn@lemmy.ca"
          "@zaknenou@lemmy.dbzer0.com"
        ]
        +children: Doctrine\ORM\PersistentCollection {#2468 …}
        +nested: Doctrine\ORM\PersistentCollection {#2363 …}
        +votes: Doctrine\ORM\PersistentCollection {#2377 …}
        +reports: Doctrine\ORM\PersistentCollection {#2359 …}
        +favourites: Doctrine\ORM\PersistentCollection {#2364 …}
        +notifications: Doctrine\ORM\PersistentCollection {#2380 …}
        -id: 48009
        -bodyTs: "'add':42 'basic':74 'button':45 'bypass':56 'click':59 'describ':18 'dlp':65 'download':76 'extens':27,41 'firefox':61 'follow':29 'go':35 'instal':25 'instruct':32 'launch':62 'left':50 'like':22 'mpv':72,85 'necessari':100 'o':71 'output':82 'page':39,53,99 'player':87 'put':11 're':69,91 'say':55 'setup':31 'stream':80 'think':4 'togeth':12 'top':49 'top-left':48 'ugli':44 'url':67 'video':14,78,86,95 'watch':92 'web':98 'youtub':38 'yt':64 'yt-dlp':63"
        +ranking: 0
        +commentCount: 0
        +upVotes: 0
        +downVotes: 0
        +visibility: "visible             "
        +apId: "https://lemmy.ca/comment/3993221"
        +editedAt: null
        +createdAt: DateTimeImmutable @1697268377 {#2471
          date: 2023-10-14 09:26:17.0 +02:00
        }
        +"title": 48009
      }
      0 => App\Entity\EntryComment {#2391}
    ]
    -id: 5166
    -titleTs: "'browser':13 'easier':14 'local':10 'made':2 'make':6 'play':7 'thing':4 'video':9 'youtub':8"
    -bodyTs: "'ad':10 'annoy':69 'anyway':76 'blocker':12,13 'blocker-block':11 'complain':6 'configur':70 'day':3 'dlp':36,59 'done':110 'easi':51 'end':75 'exercis':105 'extens':28,49 'feel':83 'firefox':27,48,54 'free':84 'friday':121 'fun':23 'go':97 'good':114 'harder':63 'hour':118 'isn':60 'know':92 'launch':56 'linux':81 'load':32 'm':96 'mention':18 'might':21 'mpv':42 'much':62,94 'new':9 'night':122 'play':38 'pour':99 'pretti':113 're':79 'requir':67 'someon':4 'though':64 'tri':86 'trick':53 'turn':44 'user':73,82 'video':40 'would':30 'write':25,46 'youtub':15 'yt':35,58 'yt-dlp':34,57"
    +cross: false
    +upVotes: 0
    +downVotes: 0
    +ranking: 1697325241
    +visibility: "visible             "
    +apId: "https://lemmy.ca/post/7150213"
    +editedAt: null
    +createdAt: DateTimeImmutable @1697238841 {#1442
      date: 2023-10-14 01:14:01.0 +02:00
    }
  }
  +magazine: Proxies\__CG__\App\Entity\Magazine {#1588 …}
  +image: null
  +parent: Proxies\__CG__\App\Entity\EntryComment {#2389 …}
  +root: Proxies\__CG__\App\Entity\EntryComment {#2411 …}
  +body: "That’s actually very helpful, thanks. I’ve been working on another project to open certain URLs in specific browsers/profiles, and wanted to be sure that I wasn’t missing a more obvious design pattern. The project is [here](https://gitlab.com/danielquinn/opening) if you’re curious."
  +lang: "en"
  +isAdult: false
  +favouriteCount: 1
  +score: 0
  +lastActive: DateTime @1697303255 {#1407
    date: 2023-10-14 19:07:35.0 +02:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@danielquinn@lemmy.ca"
    "@Morgikan@lemm.ee"
  ]
  +children: Doctrine\ORM\PersistentCollection {#2369 …}
  +nested: Doctrine\ORM\PersistentCollection {#2392 …}
  +votes: Doctrine\ORM\PersistentCollection {#2395 …}
  +reports: Doctrine\ORM\PersistentCollection {#1384 …}
  +favourites: Doctrine\ORM\PersistentCollection {#1383 …}
  +notifications: Doctrine\ORM\PersistentCollection {#1405 …}
  -id: 48905
  -bodyTs: "'/danielquinn/opening)':42 'actual':3 'anoth':12 'browsers/profiles':20 'certain':16 'curious':46 'design':34 'gitlab.com':41 'gitlab.com/danielquinn/opening)':40 'help':5 'miss':30 'obvious':33 'open':15 'pattern':35 'project':13,37 're':45 'specif':19 'sure':25 'thank':6 'url':17 've':8 'want':22 'wasn':28 'work':10"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.ca/comment/4002090"
  +editedAt: null
  +createdAt: DateTimeImmutable @1697303255 {#1883
    date: 2023-10-14 19:07:35.0 +02:00
  }
  +"title": 48905
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
21 DENIED ROLE_ADMIN
null
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"Symfony\Component\Security\Core\Authorization\Voter\RoleHierarchyVoter"
ACCESS DENIED
"App\Security\Voter\EntryCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
22 DENIED ROLE_MODERATOR
null
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"Symfony\Component\Security\Core\Authorization\Voter\RoleHierarchyVoter"
ACCESS DENIED
"App\Security\Voter\EntryCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details