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

Components

21 Twig Components
67 Render Count
184 ms Render Time
14.0 MiB Memory Usage

Components

Name Metadata Render Count Render Time
settings_row_switch
"App\Twig\Components\SettingsRowSwitchComponent"
components/_settings_row_switch.html.twig
15 8.10ms
date
"App\Twig\Components\DateComponent"
components/date.html.twig
6 0.96ms
user_avatar
"App\Twig\Components\UserAvatarComponent"
components/user_avatar.html.twig
5 4.02ms
user_inline
"App\Twig\Components\UserInlineComponent"
components/user_inline.html.twig
5 0.77ms
date_edited
"App\Twig\Components\DateEditedComponent"
components/date_edited.html.twig
5 0.56ms
vote
"App\Twig\Components\VoteComponent"
components/vote.html.twig
5 2.28ms
boost
"App\Twig\Components\BoostComponent"
components/boost.html.twig
5 4.69ms
entry_comment
"App\Twig\Components\EntryCommentComponent"
components/entry_comment.html.twig
4 132.35ms
user_settings_row_switch
"App\Twig\Components\UserSettingsRowSwitchComponent"
components/_user_settings_row_switch.html.twig
4 0.78ms
settings_row_enum
"App\Twig\Components\SettingsRowEnumComponent"
components/_settings_row_enum.html.twig
2 0.41ms
user_box
"App\Twig\Components\UserBoxComponent"
components/user_box.html.twig
1 9.97ms
user_actions
"App\Twig\Components\UserActionsComponent"
components/user_actions.html.twig
1 2.62ms
entry
"App\Twig\Components\EntryComponent"
components/_cached.html.twig
1 21.08ms
magazine_inline
"App\Twig\Components\MagazineInlineComponent"
components/magazine_inline.html.twig
1 0.17ms
related_magazines
"App\Twig\Components\RelatedMagazinesComponent"
components/_cached.html.twig
1 2.09ms
active_users
"App\Twig\Components\ActiveUsersComponent"
components/_cached.html.twig
1 0.23ms
related_categories
"App\Twig\Components\RelatedCategoriesComponent"
components/_cached.html.twig
1 1.57ms
related_posts
"App\Twig\Components\RelatedPostsComponent"
components/_cached.html.twig
1 4.32ms
related_entries
"App\Twig\Components\RelatedEntriesComponent"
components/_cached.html.twig
1 2.50ms
support_us_block
"App\Twig\Components\SupportUsBlock"
components/_cached.html.twig
1 0.50ms
featured_magazines
"App\Twig\Components\FeaturedMagazinesComponent"
components/_cached.html.twig
1 0.85ms

Render calls

user_box App\Twig\Components\UserBoxComponent 14.0 MiB 9.97 ms
Input props
[
  "user" => App\Entity\User {#260
    +avatar: Proxies\__CG__\App\Entity\Image {#240 …}
    +cover: null
    +email: "danielquinn@lemmy.ca"
    +username: "@danielquinn@lemmy.ca"
    +roles: []
    +followersCount: 0
    +homepage: "front"
    +about: "Canadian software engineer living in Europe."
    +lastActive: DateTime @1727577650 {#273
      date: 2024-09-29 04:40:50.0 +02:00
    }
    +markedForDeletionAt: null
    +fields: null
    +oauthGithubId: null
    +oauthGoogleId: null
    +oauthFacebookId: null
    +oauthKeycloakId: null
    +hideAdult: true
    +showSubscribedUsers: true
    +showSubscribedMagazines: true
    +showSubscribedDomains: true
    +preferredLanguages: []
    +featuredMagazines: null
    +showProfileSubscriptions: false
    +showProfileFollowings: true
    +markNewComments: false
    +notifyOnNewEntry: false
    +notifyOnNewEntryReply: true
    +notifyOnNewEntryCommentReply: true
    +notifyOnNewPost: false
    +notifyOnNewPostReply: true
    +notifyOnNewPostCommentReply: true
    +addMentionsEntries: false
    +addMentionsPosts: true
    +isBanned: false
    +isVerified: false
    +isDeleted: false
    +isBot: false
    +spamProtection: true
    +customCss: null
    +ignoreMagazinesCustomCss: false
    +moderatorTokens: Doctrine\ORM\PersistentCollection {#231 …}
    +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#227 …}
    +moderatorRequests: Doctrine\ORM\PersistentCollection {#216 …}
    +entries: Doctrine\ORM\PersistentCollection {#174 …}
    +entryVotes: Doctrine\ORM\PersistentCollection {#146 …}
    +entryComments: Doctrine\ORM\PersistentCollection {#119 …}
    +entryCommentVotes: Doctrine\ORM\PersistentCollection {#89 …}
    +posts: Doctrine\ORM\PersistentCollection {#62 …}
    +postVotes: Doctrine\ORM\PersistentCollection {#77 …}
    +postComments: Doctrine\ORM\PersistentCollection {#2405 …}
    +postCommentVotes: Doctrine\ORM\PersistentCollection {#1607 …}
    +subscriptions: Doctrine\ORM\PersistentCollection {#1768 …}
    +subscribedDomains: Doctrine\ORM\PersistentCollection {#2445 …}
    +follows: Doctrine\ORM\PersistentCollection {#1849 …}
    +followers: Doctrine\ORM\PersistentCollection {#1810 …}
    +blocks: Doctrine\ORM\PersistentCollection {#1794 …}
    +blockers: Doctrine\ORM\PersistentCollection {#2415 …}
    +blockedMagazines: Doctrine\ORM\PersistentCollection {#2421 …}
    +blockedDomains: Doctrine\ORM\PersistentCollection {#2418 …}
    +reports: Doctrine\ORM\PersistentCollection {#2398 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1918 …}
    +violations: Doctrine\ORM\PersistentCollection {#1834 …}
    +notifications: Doctrine\ORM\PersistentCollection {#1878 …}
    +awards: Doctrine\ORM\PersistentCollection {#1886 …}
    +subscribedCategories: Doctrine\ORM\PersistentCollection {#1899 …}
    +categories: Doctrine\ORM\PersistentCollection {#1954 …}
    -id: 57593
    -password: "$2y$13$/L0PmovM1H9sjmzmYDFDJ./Rjx6mWwKcBTi6vz7ViURzIQuLk35WK"
    -totpSecret: null
    -totpBackupCodes: []
    -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1978 …}
    +apId: "danielquinn@lemmy.ca"
    +apProfileId: "https://lemmy.ca/u/danielquinn"
    +apPublicUrl: "https://lemmy.ca/u/danielquinn"
    +apFollowersUrl: null
    +apInboxUrl: "https://lemmy.ca/inbox"
    +apDomain: "lemmy.ca"
    +apPreferredUsername: "danielquinn"
    +apDiscoverable: true
    +apManuallyApprovesFollowers: false
    +privateKey: null
    +publicKey: null
    +apFetchedAt: DateTime @1729106992 {#276
      date: 2024-10-16 21:29:52.0 +02:00
    }
    +apDeletedAt: null
    +apTimeoutAt: null
    +visibility: "visible             "
    +createdAt: DateTimeImmutable @1697197941 {#272
      date: 2023-10-13 13:52:21.0 +02:00
    }
  }
  "stretchedLink" => false
]
Attributes
[]
Component
App\Twig\Components\UserBoxComponent {#2036
  +user: App\Entity\User {#260
    +avatar: Proxies\__CG__\App\Entity\Image {#240 …}
    +cover: null
    +email: "danielquinn@lemmy.ca"
    +username: "@danielquinn@lemmy.ca"
    +roles: []
    +followersCount: 0
    +homepage: "front"
    +about: "Canadian software engineer living in Europe."
    +lastActive: DateTime @1727577650 {#273
      date: 2024-09-29 04:40:50.0 +02:00
    }
    +markedForDeletionAt: null
    +fields: null
    +oauthGithubId: null
    +oauthGoogleId: null
    +oauthFacebookId: null
    +oauthKeycloakId: null
    +hideAdult: true
    +showSubscribedUsers: true
    +showSubscribedMagazines: true
    +showSubscribedDomains: true
    +preferredLanguages: []
    +featuredMagazines: null
    +showProfileSubscriptions: false
    +showProfileFollowings: true
    +markNewComments: false
    +notifyOnNewEntry: false
    +notifyOnNewEntryReply: true
    +notifyOnNewEntryCommentReply: true
    +notifyOnNewPost: false
    +notifyOnNewPostReply: true
    +notifyOnNewPostCommentReply: true
    +addMentionsEntries: false
    +addMentionsPosts: true
    +isBanned: false
    +isVerified: false
    +isDeleted: false
    +isBot: false
    +spamProtection: true
    +customCss: null
    +ignoreMagazinesCustomCss: false
    +moderatorTokens: Doctrine\ORM\PersistentCollection {#231 …}
    +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#227 …}
    +moderatorRequests: Doctrine\ORM\PersistentCollection {#216 …}
    +entries: Doctrine\ORM\PersistentCollection {#174 …}
    +entryVotes: Doctrine\ORM\PersistentCollection {#146 …}
    +entryComments: Doctrine\ORM\PersistentCollection {#119 …}
    +entryCommentVotes: Doctrine\ORM\PersistentCollection {#89 …}
    +posts: Doctrine\ORM\PersistentCollection {#62 …}
    +postVotes: Doctrine\ORM\PersistentCollection {#77 …}
    +postComments: Doctrine\ORM\PersistentCollection {#2405 …}
    +postCommentVotes: Doctrine\ORM\PersistentCollection {#1607 …}
    +subscriptions: Doctrine\ORM\PersistentCollection {#1768 …}
    +subscribedDomains: Doctrine\ORM\PersistentCollection {#2445 …}
    +follows: Doctrine\ORM\PersistentCollection {#1849 …}
    +followers: Doctrine\ORM\PersistentCollection {#1810 …}
    +blocks: Doctrine\ORM\PersistentCollection {#1794 …}
    +blockers: Doctrine\ORM\PersistentCollection {#2415 …}
    +blockedMagazines: Doctrine\ORM\PersistentCollection {#2421 …}
    +blockedDomains: Doctrine\ORM\PersistentCollection {#2418 …}
    +reports: Doctrine\ORM\PersistentCollection {#2398 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1918 …}
    +violations: Doctrine\ORM\PersistentCollection {#1834 …}
    +notifications: Doctrine\ORM\PersistentCollection {#1878 …}
    +awards: Doctrine\ORM\PersistentCollection {#1886 …}
    +subscribedCategories: Doctrine\ORM\PersistentCollection {#1899 …}
    +categories: Doctrine\ORM\PersistentCollection {#1954 …}
    -id: 57593
    -password: "$2y$13$/L0PmovM1H9sjmzmYDFDJ./Rjx6mWwKcBTi6vz7ViURzIQuLk35WK"
    -totpSecret: null
    -totpBackupCodes: []
    -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1978 …}
    +apId: "danielquinn@lemmy.ca"
    +apProfileId: "https://lemmy.ca/u/danielquinn"
    +apPublicUrl: "https://lemmy.ca/u/danielquinn"
    +apFollowersUrl: null
    +apInboxUrl: "https://lemmy.ca/inbox"
    +apDomain: "lemmy.ca"
    +apPreferredUsername: "danielquinn"
    +apDiscoverable: true
    +apManuallyApprovesFollowers: false
    +privateKey: null
    +publicKey: null
    +apFetchedAt: DateTime @1729106992 {#276
      date: 2024-10-16 21:29:52.0 +02:00
    }
    +apDeletedAt: null
    +apTimeoutAt: null
    +visibility: "visible             "
    +createdAt: DateTimeImmutable @1697197941 {#272
      date: 2023-10-13 13:52:21.0 +02:00
    }
  }
  +stretchedLink: false
}
user_avatar App\Twig\Components\UserAvatarComponent 14.0 MiB 3.12 ms
Input props
[
  "user" => App\Entity\User {#260
    +avatar: Proxies\__CG__\App\Entity\Image {#240 …}
    +cover: null
    +email: "danielquinn@lemmy.ca"
    +username: "@danielquinn@lemmy.ca"
    +roles: []
    +followersCount: 0
    +homepage: "front"
    +about: "Canadian software engineer living in Europe."
    +lastActive: DateTime @1727577650 {#273
      date: 2024-09-29 04:40:50.0 +02:00
    }
    +markedForDeletionAt: null
    +fields: null
    +oauthGithubId: null
    +oauthGoogleId: null
    +oauthFacebookId: null
    +oauthKeycloakId: null
    +hideAdult: true
    +showSubscribedUsers: true
    +showSubscribedMagazines: true
    +showSubscribedDomains: true
    +preferredLanguages: []
    +featuredMagazines: null
    +showProfileSubscriptions: false
    +showProfileFollowings: true
    +markNewComments: false
    +notifyOnNewEntry: false
    +notifyOnNewEntryReply: true
    +notifyOnNewEntryCommentReply: true
    +notifyOnNewPost: false
    +notifyOnNewPostReply: true
    +notifyOnNewPostCommentReply: true
    +addMentionsEntries: false
    +addMentionsPosts: true
    +isBanned: false
    +isVerified: false
    +isDeleted: false
    +isBot: false
    +spamProtection: true
    +customCss: null
    +ignoreMagazinesCustomCss: false
    +moderatorTokens: Doctrine\ORM\PersistentCollection {#231 …}
    +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#227 …}
    +moderatorRequests: Doctrine\ORM\PersistentCollection {#216 …}
    +entries: Doctrine\ORM\PersistentCollection {#174 …}
    +entryVotes: Doctrine\ORM\PersistentCollection {#146 …}
    +entryComments: Doctrine\ORM\PersistentCollection {#119 …}
    +entryCommentVotes: Doctrine\ORM\PersistentCollection {#89 …}
    +posts: Doctrine\ORM\PersistentCollection {#62 …}
    +postVotes: Doctrine\ORM\PersistentCollection {#77 …}
    +postComments: Doctrine\ORM\PersistentCollection {#2405 …}
    +postCommentVotes: Doctrine\ORM\PersistentCollection {#1607 …}
    +subscriptions: Doctrine\ORM\PersistentCollection {#1768 …}
    +subscribedDomains: Doctrine\ORM\PersistentCollection {#2445 …}
    +follows: Doctrine\ORM\PersistentCollection {#1849 …}
    +followers: Doctrine\ORM\PersistentCollection {#1810 …}
    +blocks: Doctrine\ORM\PersistentCollection {#1794 …}
    +blockers: Doctrine\ORM\PersistentCollection {#2415 …}
    +blockedMagazines: Doctrine\ORM\PersistentCollection {#2421 …}
    +blockedDomains: Doctrine\ORM\PersistentCollection {#2418 …}
    +reports: Doctrine\ORM\PersistentCollection {#2398 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1918 …}
    +violations: Doctrine\ORM\PersistentCollection {#1834 …}
    +notifications: Doctrine\ORM\PersistentCollection {#1878 …}
    +awards: Doctrine\ORM\PersistentCollection {#1886 …}
    +subscribedCategories: Doctrine\ORM\PersistentCollection {#1899 …}
    +categories: Doctrine\ORM\PersistentCollection {#1954 …}
    -id: 57593
    -password: "$2y$13$/L0PmovM1H9sjmzmYDFDJ./Rjx6mWwKcBTi6vz7ViURzIQuLk35WK"
    -totpSecret: null
    -totpBackupCodes: []
    -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1978 …}
    +apId: "danielquinn@lemmy.ca"
    +apProfileId: "https://lemmy.ca/u/danielquinn"
    +apPublicUrl: "https://lemmy.ca/u/danielquinn"
    +apFollowersUrl: null
    +apInboxUrl: "https://lemmy.ca/inbox"
    +apDomain: "lemmy.ca"
    +apPreferredUsername: "danielquinn"
    +apDiscoverable: true
    +apManuallyApprovesFollowers: false
    +privateKey: null
    +publicKey: null
    +apFetchedAt: DateTime @1729106992 {#276
      date: 2024-10-16 21:29:52.0 +02:00
    }
    +apDeletedAt: null
    +apTimeoutAt: null
    +visibility: "visible             "
    +createdAt: DateTimeImmutable @1697197941 {#272
      date: 2023-10-13 13:52:21.0 +02:00
    }
  }
  "width" => 100
  "height" => 100
]
Attributes
[]
Component
App\Twig\Components\UserAvatarComponent {#2205
  +width: 100
  +height: 100
  +user: App\Entity\User {#260
    +avatar: Proxies\__CG__\App\Entity\Image {#240 …}
    +cover: null
    +email: "danielquinn@lemmy.ca"
    +username: "@danielquinn@lemmy.ca"
    +roles: []
    +followersCount: 0
    +homepage: "front"
    +about: "Canadian software engineer living in Europe."
    +lastActive: DateTime @1727577650 {#273
      date: 2024-09-29 04:40:50.0 +02:00
    }
    +markedForDeletionAt: null
    +fields: null
    +oauthGithubId: null
    +oauthGoogleId: null
    +oauthFacebookId: null
    +oauthKeycloakId: null
    +hideAdult: true
    +showSubscribedUsers: true
    +showSubscribedMagazines: true
    +showSubscribedDomains: true
    +preferredLanguages: []
    +featuredMagazines: null
    +showProfileSubscriptions: false
    +showProfileFollowings: true
    +markNewComments: false
    +notifyOnNewEntry: false
    +notifyOnNewEntryReply: true
    +notifyOnNewEntryCommentReply: true
    +notifyOnNewPost: false
    +notifyOnNewPostReply: true
    +notifyOnNewPostCommentReply: true
    +addMentionsEntries: false
    +addMentionsPosts: true
    +isBanned: false
    +isVerified: false
    +isDeleted: false
    +isBot: false
    +spamProtection: true
    +customCss: null
    +ignoreMagazinesCustomCss: false
    +moderatorTokens: Doctrine\ORM\PersistentCollection {#231 …}
    +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#227 …}
    +moderatorRequests: Doctrine\ORM\PersistentCollection {#216 …}
    +entries: Doctrine\ORM\PersistentCollection {#174 …}
    +entryVotes: Doctrine\ORM\PersistentCollection {#146 …}
    +entryComments: Doctrine\ORM\PersistentCollection {#119 …}
    +entryCommentVotes: Doctrine\ORM\PersistentCollection {#89 …}
    +posts: Doctrine\ORM\PersistentCollection {#62 …}
    +postVotes: Doctrine\ORM\PersistentCollection {#77 …}
    +postComments: Doctrine\ORM\PersistentCollection {#2405 …}
    +postCommentVotes: Doctrine\ORM\PersistentCollection {#1607 …}
    +subscriptions: Doctrine\ORM\PersistentCollection {#1768 …}
    +subscribedDomains: Doctrine\ORM\PersistentCollection {#2445 …}
    +follows: Doctrine\ORM\PersistentCollection {#1849 …}
    +followers: Doctrine\ORM\PersistentCollection {#1810 …}
    +blocks: Doctrine\ORM\PersistentCollection {#1794 …}
    +blockers: Doctrine\ORM\PersistentCollection {#2415 …}
    +blockedMagazines: Doctrine\ORM\PersistentCollection {#2421 …}
    +blockedDomains: Doctrine\ORM\PersistentCollection {#2418 …}
    +reports: Doctrine\ORM\PersistentCollection {#2398 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1918 …}
    +violations: Doctrine\ORM\PersistentCollection {#1834 …}
    +notifications: Doctrine\ORM\PersistentCollection {#1878 …}
    +awards: Doctrine\ORM\PersistentCollection {#1886 …}
    +subscribedCategories: Doctrine\ORM\PersistentCollection {#1899 …}
    +categories: Doctrine\ORM\PersistentCollection {#1954 …}
    -id: 57593
    -password: "$2y$13$/L0PmovM1H9sjmzmYDFDJ./Rjx6mWwKcBTi6vz7ViURzIQuLk35WK"
    -totpSecret: null
    -totpBackupCodes: []
    -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1978 …}
    +apId: "danielquinn@lemmy.ca"
    +apProfileId: "https://lemmy.ca/u/danielquinn"
    +apPublicUrl: "https://lemmy.ca/u/danielquinn"
    +apFollowersUrl: null
    +apInboxUrl: "https://lemmy.ca/inbox"
    +apDomain: "lemmy.ca"
    +apPreferredUsername: "danielquinn"
    +apDiscoverable: true
    +apManuallyApprovesFollowers: false
    +privateKey: null
    +publicKey: null
    +apFetchedAt: DateTime @1729106992 {#276
      date: 2024-10-16 21:29:52.0 +02:00
    }
    +apDeletedAt: null
    +apTimeoutAt: null
    +visibility: "visible             "
    +createdAt: DateTimeImmutable @1697197941 {#272
      date: 2023-10-13 13:52:21.0 +02:00
    }
  }
  +asLink: false
}
user_actions App\Twig\Components\UserActionsComponent 14.0 MiB 2.62 ms
Input props
[
  "user" => App\Entity\User {#260
    +avatar: Proxies\__CG__\App\Entity\Image {#240 …}
    +cover: null
    +email: "danielquinn@lemmy.ca"
    +username: "@danielquinn@lemmy.ca"
    +roles: []
    +followersCount: 0
    +homepage: "front"
    +about: "Canadian software engineer living in Europe."
    +lastActive: DateTime @1727577650 {#273
      date: 2024-09-29 04:40:50.0 +02:00
    }
    +markedForDeletionAt: null
    +fields: null
    +oauthGithubId: null
    +oauthGoogleId: null
    +oauthFacebookId: null
    +oauthKeycloakId: null
    +hideAdult: true
    +showSubscribedUsers: true
    +showSubscribedMagazines: true
    +showSubscribedDomains: true
    +preferredLanguages: []
    +featuredMagazines: null
    +showProfileSubscriptions: false
    +showProfileFollowings: true
    +markNewComments: false
    +notifyOnNewEntry: false
    +notifyOnNewEntryReply: true
    +notifyOnNewEntryCommentReply: true
    +notifyOnNewPost: false
    +notifyOnNewPostReply: true
    +notifyOnNewPostCommentReply: true
    +addMentionsEntries: false
    +addMentionsPosts: true
    +isBanned: false
    +isVerified: false
    +isDeleted: false
    +isBot: false
    +spamProtection: true
    +customCss: null
    +ignoreMagazinesCustomCss: false
    +moderatorTokens: Doctrine\ORM\PersistentCollection {#231 …}
    +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#227 …}
    +moderatorRequests: Doctrine\ORM\PersistentCollection {#216 …}
    +entries: Doctrine\ORM\PersistentCollection {#174 …}
    +entryVotes: Doctrine\ORM\PersistentCollection {#146 …}
    +entryComments: Doctrine\ORM\PersistentCollection {#119 …}
    +entryCommentVotes: Doctrine\ORM\PersistentCollection {#89 …}
    +posts: Doctrine\ORM\PersistentCollection {#62 …}
    +postVotes: Doctrine\ORM\PersistentCollection {#77 …}
    +postComments: Doctrine\ORM\PersistentCollection {#2405 …}
    +postCommentVotes: Doctrine\ORM\PersistentCollection {#1607 …}
    +subscriptions: Doctrine\ORM\PersistentCollection {#1768 …}
    +subscribedDomains: Doctrine\ORM\PersistentCollection {#2445 …}
    +follows: Doctrine\ORM\PersistentCollection {#1849 …}
    +followers: Doctrine\ORM\PersistentCollection {#1810 …}
    +blocks: Doctrine\ORM\PersistentCollection {#1794 …}
    +blockers: Doctrine\ORM\PersistentCollection {#2415 …}
    +blockedMagazines: Doctrine\ORM\PersistentCollection {#2421 …}
    +blockedDomains: Doctrine\ORM\PersistentCollection {#2418 …}
    +reports: Doctrine\ORM\PersistentCollection {#2398 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1918 …}
    +violations: Doctrine\ORM\PersistentCollection {#1834 …}
    +notifications: Doctrine\ORM\PersistentCollection {#1878 …}
    +awards: Doctrine\ORM\PersistentCollection {#1886 …}
    +subscribedCategories: Doctrine\ORM\PersistentCollection {#1899 …}
    +categories: Doctrine\ORM\PersistentCollection {#1954 …}
    -id: 57593
    -password: "$2y$13$/L0PmovM1H9sjmzmYDFDJ./Rjx6mWwKcBTi6vz7ViURzIQuLk35WK"
    -totpSecret: null
    -totpBackupCodes: []
    -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1978 …}
    +apId: "danielquinn@lemmy.ca"
    +apProfileId: "https://lemmy.ca/u/danielquinn"
    +apPublicUrl: "https://lemmy.ca/u/danielquinn"
    +apFollowersUrl: null
    +apInboxUrl: "https://lemmy.ca/inbox"
    +apDomain: "lemmy.ca"
    +apPreferredUsername: "danielquinn"
    +apDiscoverable: true
    +apManuallyApprovesFollowers: false
    +privateKey: null
    +publicKey: null
    +apFetchedAt: DateTime @1729106992 {#276
      date: 2024-10-16 21:29:52.0 +02:00
    }
    +apDeletedAt: null
    +apTimeoutAt: null
    +visibility: "visible             "
    +createdAt: DateTimeImmutable @1697197941 {#272
      date: 2023-10-13 13:52:21.0 +02:00
    }
  }
]
Attributes
[]
Component
App\Twig\Components\UserActionsComponent {#2152
  +user: App\Entity\User {#260
    +avatar: Proxies\__CG__\App\Entity\Image {#240 …}
    +cover: null
    +email: "danielquinn@lemmy.ca"
    +username: "@danielquinn@lemmy.ca"
    +roles: []
    +followersCount: 0
    +homepage: "front"
    +about: "Canadian software engineer living in Europe."
    +lastActive: DateTime @1727577650 {#273
      date: 2024-09-29 04:40:50.0 +02:00
    }
    +markedForDeletionAt: null
    +fields: null
    +oauthGithubId: null
    +oauthGoogleId: null
    +oauthFacebookId: null
    +oauthKeycloakId: null
    +hideAdult: true
    +showSubscribedUsers: true
    +showSubscribedMagazines: true
    +showSubscribedDomains: true
    +preferredLanguages: []
    +featuredMagazines: null
    +showProfileSubscriptions: false
    +showProfileFollowings: true
    +markNewComments: false
    +notifyOnNewEntry: false
    +notifyOnNewEntryReply: true
    +notifyOnNewEntryCommentReply: true
    +notifyOnNewPost: false
    +notifyOnNewPostReply: true
    +notifyOnNewPostCommentReply: true
    +addMentionsEntries: false
    +addMentionsPosts: true
    +isBanned: false
    +isVerified: false
    +isDeleted: false
    +isBot: false
    +spamProtection: true
    +customCss: null
    +ignoreMagazinesCustomCss: false
    +moderatorTokens: Doctrine\ORM\PersistentCollection {#231 …}
    +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#227 …}
    +moderatorRequests: Doctrine\ORM\PersistentCollection {#216 …}
    +entries: Doctrine\ORM\PersistentCollection {#174 …}
    +entryVotes: Doctrine\ORM\PersistentCollection {#146 …}
    +entryComments: Doctrine\ORM\PersistentCollection {#119 …}
    +entryCommentVotes: Doctrine\ORM\PersistentCollection {#89 …}
    +posts: Doctrine\ORM\PersistentCollection {#62 …}
    +postVotes: Doctrine\ORM\PersistentCollection {#77 …}
    +postComments: Doctrine\ORM\PersistentCollection {#2405 …}
    +postCommentVotes: Doctrine\ORM\PersistentCollection {#1607 …}
    +subscriptions: Doctrine\ORM\PersistentCollection {#1768 …}
    +subscribedDomains: Doctrine\ORM\PersistentCollection {#2445 …}
    +follows: Doctrine\ORM\PersistentCollection {#1849 …}
    +followers: Doctrine\ORM\PersistentCollection {#1810 …}
    +blocks: Doctrine\ORM\PersistentCollection {#1794 …}
    +blockers: Doctrine\ORM\PersistentCollection {#2415 …}
    +blockedMagazines: Doctrine\ORM\PersistentCollection {#2421 …}
    +blockedDomains: Doctrine\ORM\PersistentCollection {#2418 …}
    +reports: Doctrine\ORM\PersistentCollection {#2398 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1918 …}
    +violations: Doctrine\ORM\PersistentCollection {#1834 …}
    +notifications: Doctrine\ORM\PersistentCollection {#1878 …}
    +awards: Doctrine\ORM\PersistentCollection {#1886 …}
    +subscribedCategories: Doctrine\ORM\PersistentCollection {#1899 …}
    +categories: Doctrine\ORM\PersistentCollection {#1954 …}
    -id: 57593
    -password: "$2y$13$/L0PmovM1H9sjmzmYDFDJ./Rjx6mWwKcBTi6vz7ViURzIQuLk35WK"
    -totpSecret: null
    -totpBackupCodes: []
    -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1978 …}
    +apId: "danielquinn@lemmy.ca"
    +apProfileId: "https://lemmy.ca/u/danielquinn"
    +apPublicUrl: "https://lemmy.ca/u/danielquinn"
    +apFollowersUrl: null
    +apInboxUrl: "https://lemmy.ca/inbox"
    +apDomain: "lemmy.ca"
    +apPreferredUsername: "danielquinn"
    +apDiscoverable: true
    +apManuallyApprovesFollowers: false
    +privateKey: null
    +publicKey: null
    +apFetchedAt: DateTime @1729106992 {#276
      date: 2024-10-16 21:29:52.0 +02:00
    }
    +apDeletedAt: null
    +apTimeoutAt: null
    +visibility: "visible             "
    +createdAt: DateTimeImmutable @1697197941 {#272
      date: 2023-10-13 13:52:21.0 +02:00
    }
  }
}
entry App\Twig\Components\EntryComponent 14.0 MiB 21.08 ms
Input props
[
  "entry" => App\Entity\Entry {#1609
    +user: App\Entity\User {#260
      +avatar: Proxies\__CG__\App\Entity\Image {#240 …}
      +cover: null
      +email: "danielquinn@lemmy.ca"
      +username: "@danielquinn@lemmy.ca"
      +roles: []
      +followersCount: 0
      +homepage: "front"
      +about: "Canadian software engineer living in Europe."
      +lastActive: DateTime @1727577650 {#273
        date: 2024-09-29 04:40:50.0 +02:00
      }
      +markedForDeletionAt: null
      +fields: null
      +oauthGithubId: null
      +oauthGoogleId: null
      +oauthFacebookId: null
      +oauthKeycloakId: null
      +hideAdult: true
      +showSubscribedUsers: true
      +showSubscribedMagazines: true
      +showSubscribedDomains: true
      +preferredLanguages: []
      +featuredMagazines: null
      +showProfileSubscriptions: false
      +showProfileFollowings: true
      +markNewComments: false
      +notifyOnNewEntry: false
      +notifyOnNewEntryReply: true
      +notifyOnNewEntryCommentReply: true
      +notifyOnNewPost: false
      +notifyOnNewPostReply: true
      +notifyOnNewPostCommentReply: true
      +addMentionsEntries: false
      +addMentionsPosts: true
      +isBanned: false
      +isVerified: false
      +isDeleted: false
      +isBot: false
      +spamProtection: true
      +customCss: null
      +ignoreMagazinesCustomCss: false
      +moderatorTokens: Doctrine\ORM\PersistentCollection {#231 …}
      +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#227 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#216 …}
      +entries: Doctrine\ORM\PersistentCollection {#174 …}
      +entryVotes: Doctrine\ORM\PersistentCollection {#146 …}
      +entryComments: Doctrine\ORM\PersistentCollection {#119 …}
      +entryCommentVotes: Doctrine\ORM\PersistentCollection {#89 …}
      +posts: Doctrine\ORM\PersistentCollection {#62 …}
      +postVotes: Doctrine\ORM\PersistentCollection {#77 …}
      +postComments: Doctrine\ORM\PersistentCollection {#2405 …}
      +postCommentVotes: Doctrine\ORM\PersistentCollection {#1607 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#1768 …}
      +subscribedDomains: Doctrine\ORM\PersistentCollection {#2445 …}
      +follows: Doctrine\ORM\PersistentCollection {#1849 …}
      +followers: Doctrine\ORM\PersistentCollection {#1810 …}
      +blocks: Doctrine\ORM\PersistentCollection {#1794 …}
      +blockers: Doctrine\ORM\PersistentCollection {#2415 …}
      +blockedMagazines: Doctrine\ORM\PersistentCollection {#2421 …}
      +blockedDomains: Doctrine\ORM\PersistentCollection {#2418 …}
      +reports: Doctrine\ORM\PersistentCollection {#2398 …}
      +favourites: Doctrine\ORM\PersistentCollection {#1918 …}
      +violations: Doctrine\ORM\PersistentCollection {#1834 …}
      +notifications: Doctrine\ORM\PersistentCollection {#1878 …}
      +awards: Doctrine\ORM\PersistentCollection {#1886 …}
      +subscribedCategories: Doctrine\ORM\PersistentCollection {#1899 …}
      +categories: Doctrine\ORM\PersistentCollection {#1954 …}
      -id: 57593
      -password: "$2y$13$/L0PmovM1H9sjmzmYDFDJ./Rjx6mWwKcBTi6vz7ViURzIQuLk35WK"
      -totpSecret: null
      -totpBackupCodes: []
      -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1978 …}
      +apId: "danielquinn@lemmy.ca"
      +apProfileId: "https://lemmy.ca/u/danielquinn"
      +apPublicUrl: "https://lemmy.ca/u/danielquinn"
      +apFollowersUrl: null
      +apInboxUrl: "https://lemmy.ca/inbox"
      +apDomain: "lemmy.ca"
      +apPreferredUsername: "danielquinn"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: false
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729106992 {#276
        date: 2024-10-16 21:29:52.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1697197941 {#272
        date: 2023-10-13 13:52:21.0 +02:00
      }
    }
    +magazine: Proxies\__CG__\App\Entity\Magazine {#1584
      +icon: Proxies\__CG__\App\Entity\Image {#3026 …}
      +name: "piracy@lemmy.dbzer0.com"
      +title: "piracy"
      +description: """
        ##### ⚓ Community devoted to in-depth debate on topics concerning digital piracy, ethical problems, and legal advancements.\n
        \n
        ---\n
        \n
        ### Rules • [Full Version](https://rentry.co/piracy-rules)\n
        \n
        **1**. Posts must be related to the discussion of digital piracy\n
        \n
        **2**. Don’t request invites, trade, sell, or self-promote\n
        \n
        **3**. Don’t request or link to specific pirated titles, including DMs\n
        \n
        **4**. Don’t submit low-quality posts, be entitled, or harass others\n
        \n
        **5**. Don’t post questions already answered. READ THE [WIKI](https://lemmy.dbzer0.com/post/10901)\n
        \n
        ---\n
        \n
        [![](https://a.imagem.app/oZoQ1v.png)](https://lemmy.dbzer0.com/post/10901)\n
        ---------------------------------------------------------------------------\n
        \n
        ### Loot, Pillage, & Plunder\n
        \n
        - [📜 Megathread](https://rentry.co/megathread)\n
        - [🪶 FAQ](https://rentry.co/piracy-faq)\n
        - [🪶 ISP Complaints](https://rentry.co/piracy-isp-complaints)\n
        - [🪶 Rules](https://rentry.co/piracy-rules)\n
        \n
        ---\n
        \n
        💰 Please help cover server costs.\n
        \n
        [![Ko-Fi](https://lemmy.dbzer0.com/pictrs/image/4a2f073a-3dd8-492a-942d-72bd929c9f1d.png)](https://ko-fi.com/dbzer0)[![Liberapay](https://lemmy.dbzer0.com/pictrs/image/eec4659d-39be-4fc9-bc9e-66a96285ea2c.png)](https://liberapay.com/db0/)\n
        \n
        ---
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 866
      +entryCommentCount: 20194
      +postCount: 7
      +postCommentCount: 149
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729581369 {#3023
        date: 2024-10-22 09:16:09.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#3027 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#3029 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#3031 …}
      +entries: Doctrine\ORM\PersistentCollection {#3033 …}
      +posts: Doctrine\ORM\PersistentCollection {#3035 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#3037 …}
      +bans: Doctrine\ORM\PersistentCollection {#3043 …}
      +reports: Doctrine\ORM\PersistentCollection {#3051 …}
      +badges: Doctrine\ORM\PersistentCollection {#3064 …}
      +logs: Doctrine\ORM\PersistentCollection {#3074 …}
      +awards: Doctrine\ORM\PersistentCollection {#3056 …}
      +categories: Doctrine\ORM\PersistentCollection {#3080 …}
      -id: 51
      +apId: "piracy@lemmy.dbzer0.com"
      +apProfileId: "https://lemmy.dbzer0.com/c/piracy"
      +apPublicUrl: "https://lemmy.dbzer0.com/c/piracy"
      +apFollowersUrl: "https://lemmy.dbzer0.com/c/piracy/followers"
      +apInboxUrl: "https://lemmy.dbzer0.com/inbox"
      +apDomain: "lemmy.dbzer0.com"
      +apPreferredUsername: "piracy"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1708748229 {#3024
        date: 2024-02-24 05:17:09.0 +01:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1697197339 {#3025
        date: 2023-10-13 13:42:19.0 +02:00
      }
      +__isInitialized__: true
       …2
    }
    +image: Proxies\__CG__\App\Entity\Image {#1579 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1679 …}
    +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 {#1421
      date: 2024-02-10 10:33:02.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1650 …}
    +votes: Doctrine\ORM\PersistentCollection {#1652 …}
    +reports: Doctrine\ORM\PersistentCollection {#1651 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1527 …}
    +notifications: Doctrine\ORM\PersistentCollection {#1560 …}
    +badges: Doctrine\ORM\PersistentCollection {#1558 …}
    +children: [
      3 => App\Entity\EntryComment {#1611
        +user: App\Entity\User {#260}
        +entry: App\Entity\Entry {#1609}
        +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
        +image: null
        +parent: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
        +root: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
        +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 {#1596
          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 {#2464 …}
        +nested: Doctrine\ORM\PersistentCollection {#1740 …}
        +votes: Doctrine\ORM\PersistentCollection {#1739 …}
        +reports: Doctrine\ORM\PersistentCollection {#1716 …}
        +favourites: Doctrine\ORM\PersistentCollection {#2461 …}
        +notifications: Doctrine\ORM\PersistentCollection {#2447 …}
        -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 {#1555
          date: 2023-10-14 09:20:07.0 +02:00
        }
        +"title": 48003
      }
      2 => App\Entity\EntryComment {#2467
        +user: App\Entity\User {#260}
        +entry: App\Entity\Entry {#1609}
        +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
        +image: null
        +parent: Proxies\__CG__\App\Entity\EntryComment {#2470 …}
        +root: Proxies\__CG__\App\Entity\EntryComment {#2470 …}
        +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 {#1731
          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 {#2455 …}
        +nested: Doctrine\ORM\PersistentCollection {#2471 …}
        +votes: Doctrine\ORM\PersistentCollection {#2363 …}
        +reports: Doctrine\ORM\PersistentCollection {#2377 …}
        +favourites: Doctrine\ORM\PersistentCollection {#2359 …}
        +notifications: Doctrine\ORM\PersistentCollection {#2364 …}
        -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 {#2469
          date: 2023-10-14 09:26:17.0 +02:00
        }
        +"title": 48009
      }
      1 => App\Entity\EntryComment {#2382
        +user: App\Entity\User {#260}
        +entry: App\Entity\Entry {#1609}
        +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
        +image: null
        +parent: Proxies\__CG__\App\Entity\EntryComment {#2385 …}
        +root: Proxies\__CG__\App\Entity\EntryComment {#2385 …}
        +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 {#2380
          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 {#2384 …}
        +nested: Doctrine\ORM\PersistentCollection {#2379 …}
        +votes: Doctrine\ORM\PersistentCollection {#2383 …}
        +reports: Doctrine\ORM\PersistentCollection {#1906 …}
        +favourites: Doctrine\ORM\PersistentCollection {#1708 …}
        +notifications: Doctrine\ORM\PersistentCollection {#1410 …}
        -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 {#2386
          date: 2023-10-14 15:04:09.0 +02:00
        }
        +"title": 48431
      }
      0 => App\Entity\EntryComment {#1407
        +user: App\Entity\User {#260}
        +entry: App\Entity\Entry {#1609}
        +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
        +image: null
        +parent: Proxies\__CG__\App\Entity\EntryComment {#1883 …}
        +root: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
        +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 {#1907
          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 {#2391 …}
        +nested: Doctrine\ORM\PersistentCollection {#2369 …}
        +votes: Doctrine\ORM\PersistentCollection {#2392 …}
        +reports: Doctrine\ORM\PersistentCollection {#2395 …}
        +favourites: Doctrine\ORM\PersistentCollection {#1384 …}
        +notifications: Doctrine\ORM\PersistentCollection {#1383 …}
        -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 {#1908
          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 {#1424
      date: 2023-10-14 01:14:01.0 +02:00
    }
  }
  "dateAsUrl" => true
]
Attributes
[
  "dateAsUrl" => true
]
Component
App\Twig\Components\EntryComponent {#2970
  -authorizationChecker: Symfony\Component\Security\Core\Authorization\AuthorizationChecker {#931 …}
  -newCommentMarkerCount: App\Kbin\NewCommentMarker\NewCommentMarkerCount {#2971 …}
  -cache: Symfony\Component\Cache\Adapter\TraceableTagAwareAdapter {#600 …}
  -twig: Twig\Environment {#1252 …}
  -requestStack: Symfony\Component\HttpFoundation\RequestStack {#1328 …}
  -security: Symfony\Bundle\SecurityBundle\Security {#1101 …}
  +entry: App\Entity\Entry {#1609
    +user: App\Entity\User {#260
      +avatar: Proxies\__CG__\App\Entity\Image {#240 …}
      +cover: null
      +email: "danielquinn@lemmy.ca"
      +username: "@danielquinn@lemmy.ca"
      +roles: []
      +followersCount: 0
      +homepage: "front"
      +about: "Canadian software engineer living in Europe."
      +lastActive: DateTime @1727577650 {#273
        date: 2024-09-29 04:40:50.0 +02:00
      }
      +markedForDeletionAt: null
      +fields: null
      +oauthGithubId: null
      +oauthGoogleId: null
      +oauthFacebookId: null
      +oauthKeycloakId: null
      +hideAdult: true
      +showSubscribedUsers: true
      +showSubscribedMagazines: true
      +showSubscribedDomains: true
      +preferredLanguages: []
      +featuredMagazines: null
      +showProfileSubscriptions: false
      +showProfileFollowings: true
      +markNewComments: false
      +notifyOnNewEntry: false
      +notifyOnNewEntryReply: true
      +notifyOnNewEntryCommentReply: true
      +notifyOnNewPost: false
      +notifyOnNewPostReply: true
      +notifyOnNewPostCommentReply: true
      +addMentionsEntries: false
      +addMentionsPosts: true
      +isBanned: false
      +isVerified: false
      +isDeleted: false
      +isBot: false
      +spamProtection: true
      +customCss: null
      +ignoreMagazinesCustomCss: false
      +moderatorTokens: Doctrine\ORM\PersistentCollection {#231 …}
      +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#227 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#216 …}
      +entries: Doctrine\ORM\PersistentCollection {#174 …}
      +entryVotes: Doctrine\ORM\PersistentCollection {#146 …}
      +entryComments: Doctrine\ORM\PersistentCollection {#119 …}
      +entryCommentVotes: Doctrine\ORM\PersistentCollection {#89 …}
      +posts: Doctrine\ORM\PersistentCollection {#62 …}
      +postVotes: Doctrine\ORM\PersistentCollection {#77 …}
      +postComments: Doctrine\ORM\PersistentCollection {#2405 …}
      +postCommentVotes: Doctrine\ORM\PersistentCollection {#1607 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#1768 …}
      +subscribedDomains: Doctrine\ORM\PersistentCollection {#2445 …}
      +follows: Doctrine\ORM\PersistentCollection {#1849 …}
      +followers: Doctrine\ORM\PersistentCollection {#1810 …}
      +blocks: Doctrine\ORM\PersistentCollection {#1794 …}
      +blockers: Doctrine\ORM\PersistentCollection {#2415 …}
      +blockedMagazines: Doctrine\ORM\PersistentCollection {#2421 …}
      +blockedDomains: Doctrine\ORM\PersistentCollection {#2418 …}
      +reports: Doctrine\ORM\PersistentCollection {#2398 …}
      +favourites: Doctrine\ORM\PersistentCollection {#1918 …}
      +violations: Doctrine\ORM\PersistentCollection {#1834 …}
      +notifications: Doctrine\ORM\PersistentCollection {#1878 …}
      +awards: Doctrine\ORM\PersistentCollection {#1886 …}
      +subscribedCategories: Doctrine\ORM\PersistentCollection {#1899 …}
      +categories: Doctrine\ORM\PersistentCollection {#1954 …}
      -id: 57593
      -password: "$2y$13$/L0PmovM1H9sjmzmYDFDJ./Rjx6mWwKcBTi6vz7ViURzIQuLk35WK"
      -totpSecret: null
      -totpBackupCodes: []
      -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1978 …}
      +apId: "danielquinn@lemmy.ca"
      +apProfileId: "https://lemmy.ca/u/danielquinn"
      +apPublicUrl: "https://lemmy.ca/u/danielquinn"
      +apFollowersUrl: null
      +apInboxUrl: "https://lemmy.ca/inbox"
      +apDomain: "lemmy.ca"
      +apPreferredUsername: "danielquinn"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: false
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729106992 {#276
        date: 2024-10-16 21:29:52.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1697197941 {#272
        date: 2023-10-13 13:52:21.0 +02:00
      }
    }
    +magazine: Proxies\__CG__\App\Entity\Magazine {#1584
      +icon: Proxies\__CG__\App\Entity\Image {#3026 …}
      +name: "piracy@lemmy.dbzer0.com"
      +title: "piracy"
      +description: """
        ##### ⚓ Community devoted to in-depth debate on topics concerning digital piracy, ethical problems, and legal advancements.\n
        \n
        ---\n
        \n
        ### Rules • [Full Version](https://rentry.co/piracy-rules)\n
        \n
        **1**. Posts must be related to the discussion of digital piracy\n
        \n
        **2**. Don’t request invites, trade, sell, or self-promote\n
        \n
        **3**. Don’t request or link to specific pirated titles, including DMs\n
        \n
        **4**. Don’t submit low-quality posts, be entitled, or harass others\n
        \n
        **5**. Don’t post questions already answered. READ THE [WIKI](https://lemmy.dbzer0.com/post/10901)\n
        \n
        ---\n
        \n
        [![](https://a.imagem.app/oZoQ1v.png)](https://lemmy.dbzer0.com/post/10901)\n
        ---------------------------------------------------------------------------\n
        \n
        ### Loot, Pillage, & Plunder\n
        \n
        - [📜 Megathread](https://rentry.co/megathread)\n
        - [🪶 FAQ](https://rentry.co/piracy-faq)\n
        - [🪶 ISP Complaints](https://rentry.co/piracy-isp-complaints)\n
        - [🪶 Rules](https://rentry.co/piracy-rules)\n
        \n
        ---\n
        \n
        💰 Please help cover server costs.\n
        \n
        [![Ko-Fi](https://lemmy.dbzer0.com/pictrs/image/4a2f073a-3dd8-492a-942d-72bd929c9f1d.png)](https://ko-fi.com/dbzer0)[![Liberapay](https://lemmy.dbzer0.com/pictrs/image/eec4659d-39be-4fc9-bc9e-66a96285ea2c.png)](https://liberapay.com/db0/)\n
        \n
        ---
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 866
      +entryCommentCount: 20194
      +postCount: 7
      +postCommentCount: 149
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729581369 {#3023
        date: 2024-10-22 09:16:09.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#3027 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#3029 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#3031 …}
      +entries: Doctrine\ORM\PersistentCollection {#3033 …}
      +posts: Doctrine\ORM\PersistentCollection {#3035 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#3037 …}
      +bans: Doctrine\ORM\PersistentCollection {#3043 …}
      +reports: Doctrine\ORM\PersistentCollection {#3051 …}
      +badges: Doctrine\ORM\PersistentCollection {#3064 …}
      +logs: Doctrine\ORM\PersistentCollection {#3074 …}
      +awards: Doctrine\ORM\PersistentCollection {#3056 …}
      +categories: Doctrine\ORM\PersistentCollection {#3080 …}
      -id: 51
      +apId: "piracy@lemmy.dbzer0.com"
      +apProfileId: "https://lemmy.dbzer0.com/c/piracy"
      +apPublicUrl: "https://lemmy.dbzer0.com/c/piracy"
      +apFollowersUrl: "https://lemmy.dbzer0.com/c/piracy/followers"
      +apInboxUrl: "https://lemmy.dbzer0.com/inbox"
      +apDomain: "lemmy.dbzer0.com"
      +apPreferredUsername: "piracy"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1708748229 {#3024
        date: 2024-02-24 05:17:09.0 +01:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1697197339 {#3025
        date: 2023-10-13 13:42:19.0 +02:00
      }
      +__isInitialized__: true
       …2
    }
    +image: Proxies\__CG__\App\Entity\Image {#1579 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1679 …}
    +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 {#1421
      date: 2024-02-10 10:33:02.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1650 …}
    +votes: Doctrine\ORM\PersistentCollection {#1652 …}
    +reports: Doctrine\ORM\PersistentCollection {#1651 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1527 …}
    +notifications: Doctrine\ORM\PersistentCollection {#1560 …}
    +badges: Doctrine\ORM\PersistentCollection {#1558 …}
    +children: [
      3 => App\Entity\EntryComment {#1611
        +user: App\Entity\User {#260}
        +entry: App\Entity\Entry {#1609}
        +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
        +image: null
        +parent: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
        +root: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
        +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 {#1596
          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 {#2464 …}
        +nested: Doctrine\ORM\PersistentCollection {#1740 …}
        +votes: Doctrine\ORM\PersistentCollection {#1739 …}
        +reports: Doctrine\ORM\PersistentCollection {#1716 …}
        +favourites: Doctrine\ORM\PersistentCollection {#2461 …}
        +notifications: Doctrine\ORM\PersistentCollection {#2447 …}
        -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 {#1555
          date: 2023-10-14 09:20:07.0 +02:00
        }
        +"title": 48003
      }
      2 => App\Entity\EntryComment {#2467
        +user: App\Entity\User {#260}
        +entry: App\Entity\Entry {#1609}
        +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
        +image: null
        +parent: Proxies\__CG__\App\Entity\EntryComment {#2470 …}
        +root: Proxies\__CG__\App\Entity\EntryComment {#2470 …}
        +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 {#1731
          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 {#2455 …}
        +nested: Doctrine\ORM\PersistentCollection {#2471 …}
        +votes: Doctrine\ORM\PersistentCollection {#2363 …}
        +reports: Doctrine\ORM\PersistentCollection {#2377 …}
        +favourites: Doctrine\ORM\PersistentCollection {#2359 …}
        +notifications: Doctrine\ORM\PersistentCollection {#2364 …}
        -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 {#2469
          date: 2023-10-14 09:26:17.0 +02:00
        }
        +"title": 48009
      }
      1 => App\Entity\EntryComment {#2382
        +user: App\Entity\User {#260}
        +entry: App\Entity\Entry {#1609}
        +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
        +image: null
        +parent: Proxies\__CG__\App\Entity\EntryComment {#2385 …}
        +root: Proxies\__CG__\App\Entity\EntryComment {#2385 …}
        +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 {#2380
          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 {#2384 …}
        +nested: Doctrine\ORM\PersistentCollection {#2379 …}
        +votes: Doctrine\ORM\PersistentCollection {#2383 …}
        +reports: Doctrine\ORM\PersistentCollection {#1906 …}
        +favourites: Doctrine\ORM\PersistentCollection {#1708 …}
        +notifications: Doctrine\ORM\PersistentCollection {#1410 …}
        -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 {#2386
          date: 2023-10-14 15:04:09.0 +02:00
        }
        +"title": 48431
      }
      0 => App\Entity\EntryComment {#1407
        +user: App\Entity\User {#260}
        +entry: App\Entity\Entry {#1609}
        +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
        +image: null
        +parent: Proxies\__CG__\App\Entity\EntryComment {#1883 …}
        +root: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
        +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 {#1907
          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 {#2391 …}
        +nested: Doctrine\ORM\PersistentCollection {#2369 …}
        +votes: Doctrine\ORM\PersistentCollection {#2392 …}
        +reports: Doctrine\ORM\PersistentCollection {#2395 …}
        +favourites: Doctrine\ORM\PersistentCollection {#1384 …}
        +notifications: Doctrine\ORM\PersistentCollection {#1383 …}
        -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 {#1908
          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 {#1424
      date: 2023-10-14 01:14:01.0 +02:00
    }
  }
  +isSingle: false
  +showShortSentence: true
  +showBody: false
  +showMagazineName: true
  +canSeeTrash: false
  +newComments: 0
}
user_inline App\Twig\Components\UserInlineComponent 14.0 MiB 0.20 ms
Input props
[
  "user" => App\Entity\User {#260
    +avatar: Proxies\__CG__\App\Entity\Image {#240 …}
    +cover: null
    +email: "danielquinn@lemmy.ca"
    +username: "@danielquinn@lemmy.ca"
    +roles: []
    +followersCount: 0
    +homepage: "front"
    +about: "Canadian software engineer living in Europe."
    +lastActive: DateTime @1727577650 {#273
      date: 2024-09-29 04:40:50.0 +02:00
    }
    +markedForDeletionAt: null
    +fields: null
    +oauthGithubId: null
    +oauthGoogleId: null
    +oauthFacebookId: null
    +oauthKeycloakId: null
    +hideAdult: true
    +showSubscribedUsers: true
    +showSubscribedMagazines: true
    +showSubscribedDomains: true
    +preferredLanguages: []
    +featuredMagazines: null
    +showProfileSubscriptions: false
    +showProfileFollowings: true
    +markNewComments: false
    +notifyOnNewEntry: false
    +notifyOnNewEntryReply: true
    +notifyOnNewEntryCommentReply: true
    +notifyOnNewPost: false
    +notifyOnNewPostReply: true
    +notifyOnNewPostCommentReply: true
    +addMentionsEntries: false
    +addMentionsPosts: true
    +isBanned: false
    +isVerified: false
    +isDeleted: false
    +isBot: false
    +spamProtection: true
    +customCss: null
    +ignoreMagazinesCustomCss: false
    +moderatorTokens: Doctrine\ORM\PersistentCollection {#231 …}
    +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#227 …}
    +moderatorRequests: Doctrine\ORM\PersistentCollection {#216 …}
    +entries: Doctrine\ORM\PersistentCollection {#174 …}
    +entryVotes: Doctrine\ORM\PersistentCollection {#146 …}
    +entryComments: Doctrine\ORM\PersistentCollection {#119 …}
    +entryCommentVotes: Doctrine\ORM\PersistentCollection {#89 …}
    +posts: Doctrine\ORM\PersistentCollection {#62 …}
    +postVotes: Doctrine\ORM\PersistentCollection {#77 …}
    +postComments: Doctrine\ORM\PersistentCollection {#2405 …}
    +postCommentVotes: Doctrine\ORM\PersistentCollection {#1607 …}
    +subscriptions: Doctrine\ORM\PersistentCollection {#1768 …}
    +subscribedDomains: Doctrine\ORM\PersistentCollection {#2445 …}
    +follows: Doctrine\ORM\PersistentCollection {#1849 …}
    +followers: Doctrine\ORM\PersistentCollection {#1810 …}
    +blocks: Doctrine\ORM\PersistentCollection {#1794 …}
    +blockers: Doctrine\ORM\PersistentCollection {#2415 …}
    +blockedMagazines: Doctrine\ORM\PersistentCollection {#2421 …}
    +blockedDomains: Doctrine\ORM\PersistentCollection {#2418 …}
    +reports: Doctrine\ORM\PersistentCollection {#2398 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1918 …}
    +violations: Doctrine\ORM\PersistentCollection {#1834 …}
    +notifications: Doctrine\ORM\PersistentCollection {#1878 …}
    +awards: Doctrine\ORM\PersistentCollection {#1886 …}
    +subscribedCategories: Doctrine\ORM\PersistentCollection {#1899 …}
    +categories: Doctrine\ORM\PersistentCollection {#1954 …}
    -id: 57593
    -password: "$2y$13$/L0PmovM1H9sjmzmYDFDJ./Rjx6mWwKcBTi6vz7ViURzIQuLk35WK"
    -totpSecret: null
    -totpBackupCodes: []
    -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1978 …}
    +apId: "danielquinn@lemmy.ca"
    +apProfileId: "https://lemmy.ca/u/danielquinn"
    +apPublicUrl: "https://lemmy.ca/u/danielquinn"
    +apFollowersUrl: null
    +apInboxUrl: "https://lemmy.ca/inbox"
    +apDomain: "lemmy.ca"
    +apPreferredUsername: "danielquinn"
    +apDiscoverable: true
    +apManuallyApprovesFollowers: false
    +privateKey: null
    +publicKey: null
    +apFetchedAt: DateTime @1729106992 {#276
      date: 2024-10-16 21:29:52.0 +02:00
    }
    +apDeletedAt: null
    +apTimeoutAt: null
    +visibility: "visible             "
    +createdAt: DateTimeImmutable @1697197941 {#272
      date: 2023-10-13 13:52:21.0 +02:00
    }
  }
  "showAvatar" => false
]
Attributes
[]
Component
App\Twig\Components\UserInlineComponent {#3144
  +user: App\Entity\User {#260
    +avatar: Proxies\__CG__\App\Entity\Image {#240 …}
    +cover: null
    +email: "danielquinn@lemmy.ca"
    +username: "@danielquinn@lemmy.ca"
    +roles: []
    +followersCount: 0
    +homepage: "front"
    +about: "Canadian software engineer living in Europe."
    +lastActive: DateTime @1727577650 {#273
      date: 2024-09-29 04:40:50.0 +02:00
    }
    +markedForDeletionAt: null
    +fields: null
    +oauthGithubId: null
    +oauthGoogleId: null
    +oauthFacebookId: null
    +oauthKeycloakId: null
    +hideAdult: true
    +showSubscribedUsers: true
    +showSubscribedMagazines: true
    +showSubscribedDomains: true
    +preferredLanguages: []
    +featuredMagazines: null
    +showProfileSubscriptions: false
    +showProfileFollowings: true
    +markNewComments: false
    +notifyOnNewEntry: false
    +notifyOnNewEntryReply: true
    +notifyOnNewEntryCommentReply: true
    +notifyOnNewPost: false
    +notifyOnNewPostReply: true
    +notifyOnNewPostCommentReply: true
    +addMentionsEntries: false
    +addMentionsPosts: true
    +isBanned: false
    +isVerified: false
    +isDeleted: false
    +isBot: false
    +spamProtection: true
    +customCss: null
    +ignoreMagazinesCustomCss: false
    +moderatorTokens: Doctrine\ORM\PersistentCollection {#231 …}
    +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#227 …}
    +moderatorRequests: Doctrine\ORM\PersistentCollection {#216 …}
    +entries: Doctrine\ORM\PersistentCollection {#174 …}
    +entryVotes: Doctrine\ORM\PersistentCollection {#146 …}
    +entryComments: Doctrine\ORM\PersistentCollection {#119 …}
    +entryCommentVotes: Doctrine\ORM\PersistentCollection {#89 …}
    +posts: Doctrine\ORM\PersistentCollection {#62 …}
    +postVotes: Doctrine\ORM\PersistentCollection {#77 …}
    +postComments: Doctrine\ORM\PersistentCollection {#2405 …}
    +postCommentVotes: Doctrine\ORM\PersistentCollection {#1607 …}
    +subscriptions: Doctrine\ORM\PersistentCollection {#1768 …}
    +subscribedDomains: Doctrine\ORM\PersistentCollection {#2445 …}
    +follows: Doctrine\ORM\PersistentCollection {#1849 …}
    +followers: Doctrine\ORM\PersistentCollection {#1810 …}
    +blocks: Doctrine\ORM\PersistentCollection {#1794 …}
    +blockers: Doctrine\ORM\PersistentCollection {#2415 …}
    +blockedMagazines: Doctrine\ORM\PersistentCollection {#2421 …}
    +blockedDomains: Doctrine\ORM\PersistentCollection {#2418 …}
    +reports: Doctrine\ORM\PersistentCollection {#2398 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1918 …}
    +violations: Doctrine\ORM\PersistentCollection {#1834 …}
    +notifications: Doctrine\ORM\PersistentCollection {#1878 …}
    +awards: Doctrine\ORM\PersistentCollection {#1886 …}
    +subscribedCategories: Doctrine\ORM\PersistentCollection {#1899 …}
    +categories: Doctrine\ORM\PersistentCollection {#1954 …}
    -id: 57593
    -password: "$2y$13$/L0PmovM1H9sjmzmYDFDJ./Rjx6mWwKcBTi6vz7ViURzIQuLk35WK"
    -totpSecret: null
    -totpBackupCodes: []
    -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1978 …}
    +apId: "danielquinn@lemmy.ca"
    +apProfileId: "https://lemmy.ca/u/danielquinn"
    +apPublicUrl: "https://lemmy.ca/u/danielquinn"
    +apFollowersUrl: null
    +apInboxUrl: "https://lemmy.ca/inbox"
    +apDomain: "lemmy.ca"
    +apPreferredUsername: "danielquinn"
    +apDiscoverable: true
    +apManuallyApprovesFollowers: false
    +privateKey: null
    +publicKey: null
    +apFetchedAt: DateTime @1729106992 {#276
      date: 2024-10-16 21:29:52.0 +02:00
    }
    +apDeletedAt: null
    +apTimeoutAt: null
    +visibility: "visible             "
    +createdAt: DateTimeImmutable @1697197941 {#272
      date: 2023-10-13 13:52:21.0 +02:00
    }
  }
  +showAvatar: false
}
date App\Twig\Components\DateComponent 14.0 MiB 0.21 ms
Input props
[
  "date" => DateTimeImmutable @1697238841 {#1424
    date: 2023-10-14 01:14:01.0 +02:00
  }
]
Attributes
[]
Component
App\Twig\Components\DateComponent {#3209
  +date: DateTimeImmutable @1697238841 {#1424
    date: 2023-10-14 01:14:01.0 +02:00
  }
}
date_edited App\Twig\Components\DateEditedComponent 14.0 MiB 0.14 ms
Input props
[
  "createdAt" => DateTimeImmutable @1697238841 {#1424
    date: 2023-10-14 01:14:01.0 +02:00
  }
  "editedAt" => null
]
Attributes
[]
Component
App\Twig\Components\DateEditedComponent {#3273
  +createdAt: DateTimeImmutable @1697238841 {#1424
    date: 2023-10-14 01:14:01.0 +02:00
  }
  +editedAt: null
}
magazine_inline App\Twig\Components\MagazineInlineComponent 14.0 MiB 0.17 ms
Input props
[
  "magazine" => Proxies\__CG__\App\Entity\Magazine {#1584
    +icon: Proxies\__CG__\App\Entity\Image {#3026 …}
    +name: "piracy@lemmy.dbzer0.com"
    +title: "piracy"
    +description: """
      ##### ⚓ Community devoted to in-depth debate on topics concerning digital piracy, ethical problems, and legal advancements.\n
      \n
      ---\n
      \n
      ### Rules • [Full Version](https://rentry.co/piracy-rules)\n
      \n
      **1**. Posts must be related to the discussion of digital piracy\n
      \n
      **2**. Don’t request invites, trade, sell, or self-promote\n
      \n
      **3**. Don’t request or link to specific pirated titles, including DMs\n
      \n
      **4**. Don’t submit low-quality posts, be entitled, or harass others\n
      \n
      **5**. Don’t post questions already answered. READ THE [WIKI](https://lemmy.dbzer0.com/post/10901)\n
      \n
      ---\n
      \n
      [![](https://a.imagem.app/oZoQ1v.png)](https://lemmy.dbzer0.com/post/10901)\n
      ---------------------------------------------------------------------------\n
      \n
      ### Loot, Pillage, & Plunder\n
      \n
      - [📜 Megathread](https://rentry.co/megathread)\n
      - [🪶 FAQ](https://rentry.co/piracy-faq)\n
      - [🪶 ISP Complaints](https://rentry.co/piracy-isp-complaints)\n
      - [🪶 Rules](https://rentry.co/piracy-rules)\n
      \n
      ---\n
      \n
      💰 Please help cover server costs.\n
      \n
      [![Ko-Fi](https://lemmy.dbzer0.com/pictrs/image/4a2f073a-3dd8-492a-942d-72bd929c9f1d.png)](https://ko-fi.com/dbzer0)[![Liberapay](https://lemmy.dbzer0.com/pictrs/image/eec4659d-39be-4fc9-bc9e-66a96285ea2c.png)](https://liberapay.com/db0/)\n
      \n
      ---
      """
    +rules: null
    +subscriptionsCount: 1
    +entryCount: 866
    +entryCommentCount: 20194
    +postCount: 7
    +postCommentCount: 149
    +isAdult: false
    +customCss: null
    +lastActive: DateTime @1729581369 {#3023
      date: 2024-10-22 09:16:09.0 +02:00
    }
    +markedForDeletionAt: null
    +tags: null
    +moderators: Doctrine\ORM\PersistentCollection {#3027 …}
    +ownershipRequests: Doctrine\ORM\PersistentCollection {#3029 …}
    +moderatorRequests: Doctrine\ORM\PersistentCollection {#3031 …}
    +entries: Doctrine\ORM\PersistentCollection {#3033 …}
    +posts: Doctrine\ORM\PersistentCollection {#3035 …}
    +subscriptions: Doctrine\ORM\PersistentCollection {#3037 …}
    +bans: Doctrine\ORM\PersistentCollection {#3043 …}
    +reports: Doctrine\ORM\PersistentCollection {#3051 …}
    +badges: Doctrine\ORM\PersistentCollection {#3064 …}
    +logs: Doctrine\ORM\PersistentCollection {#3074 …}
    +awards: Doctrine\ORM\PersistentCollection {#3056 …}
    +categories: Doctrine\ORM\PersistentCollection {#3080 …}
    -id: 51
    +apId: "piracy@lemmy.dbzer0.com"
    +apProfileId: "https://lemmy.dbzer0.com/c/piracy"
    +apPublicUrl: "https://lemmy.dbzer0.com/c/piracy"
    +apFollowersUrl: "https://lemmy.dbzer0.com/c/piracy/followers"
    +apInboxUrl: "https://lemmy.dbzer0.com/inbox"
    +apDomain: "lemmy.dbzer0.com"
    +apPreferredUsername: "piracy"
    +apDiscoverable: true
    +apManuallyApprovesFollowers: null
    +privateKey: null
    +publicKey: null
    +apFetchedAt: DateTime @1708748229 {#3024
      date: 2024-02-24 05:17:09.0 +01:00
    }
    +apDeletedAt: null
    +apTimeoutAt: null
    +visibility: "visible             "
    +createdAt: DateTimeImmutable @1697197339 {#3025
      date: 2023-10-13 13:42:19.0 +02:00
    }
    +__isInitialized__: true
     …2
  }
  "showAvatar" => false
]
Attributes
[]
Component
App\Twig\Components\MagazineInlineComponent {#3338
  +magazine: Proxies\__CG__\App\Entity\Magazine {#1584
    +icon: Proxies\__CG__\App\Entity\Image {#3026 …}
    +name: "piracy@lemmy.dbzer0.com"
    +title: "piracy"
    +description: """
      ##### ⚓ Community devoted to in-depth debate on topics concerning digital piracy, ethical problems, and legal advancements.\n
      \n
      ---\n
      \n
      ### Rules • [Full Version](https://rentry.co/piracy-rules)\n
      \n
      **1**. Posts must be related to the discussion of digital piracy\n
      \n
      **2**. Don’t request invites, trade, sell, or self-promote\n
      \n
      **3**. Don’t request or link to specific pirated titles, including DMs\n
      \n
      **4**. Don’t submit low-quality posts, be entitled, or harass others\n
      \n
      **5**. Don’t post questions already answered. READ THE [WIKI](https://lemmy.dbzer0.com/post/10901)\n
      \n
      ---\n
      \n
      [![](https://a.imagem.app/oZoQ1v.png)](https://lemmy.dbzer0.com/post/10901)\n
      ---------------------------------------------------------------------------\n
      \n
      ### Loot, Pillage, & Plunder\n
      \n
      - [📜 Megathread](https://rentry.co/megathread)\n
      - [🪶 FAQ](https://rentry.co/piracy-faq)\n
      - [🪶 ISP Complaints](https://rentry.co/piracy-isp-complaints)\n
      - [🪶 Rules](https://rentry.co/piracy-rules)\n
      \n
      ---\n
      \n
      💰 Please help cover server costs.\n
      \n
      [![Ko-Fi](https://lemmy.dbzer0.com/pictrs/image/4a2f073a-3dd8-492a-942d-72bd929c9f1d.png)](https://ko-fi.com/dbzer0)[![Liberapay](https://lemmy.dbzer0.com/pictrs/image/eec4659d-39be-4fc9-bc9e-66a96285ea2c.png)](https://liberapay.com/db0/)\n
      \n
      ---
      """
    +rules: null
    +subscriptionsCount: 1
    +entryCount: 866
    +entryCommentCount: 20194
    +postCount: 7
    +postCommentCount: 149
    +isAdult: false
    +customCss: null
    +lastActive: DateTime @1729581369 {#3023
      date: 2024-10-22 09:16:09.0 +02:00
    }
    +markedForDeletionAt: null
    +tags: null
    +moderators: Doctrine\ORM\PersistentCollection {#3027 …}
    +ownershipRequests: Doctrine\ORM\PersistentCollection {#3029 …}
    +moderatorRequests: Doctrine\ORM\PersistentCollection {#3031 …}
    +entries: Doctrine\ORM\PersistentCollection {#3033 …}
    +posts: Doctrine\ORM\PersistentCollection {#3035 …}
    +subscriptions: Doctrine\ORM\PersistentCollection {#3037 …}
    +bans: Doctrine\ORM\PersistentCollection {#3043 …}
    +reports: Doctrine\ORM\PersistentCollection {#3051 …}
    +badges: Doctrine\ORM\PersistentCollection {#3064 …}
    +logs: Doctrine\ORM\PersistentCollection {#3074 …}
    +awards: Doctrine\ORM\PersistentCollection {#3056 …}
    +categories: Doctrine\ORM\PersistentCollection {#3080 …}
    -id: 51
    +apId: "piracy@lemmy.dbzer0.com"
    +apProfileId: "https://lemmy.dbzer0.com/c/piracy"
    +apPublicUrl: "https://lemmy.dbzer0.com/c/piracy"
    +apFollowersUrl: "https://lemmy.dbzer0.com/c/piracy/followers"
    +apInboxUrl: "https://lemmy.dbzer0.com/inbox"
    +apDomain: "lemmy.dbzer0.com"
    +apPreferredUsername: "piracy"
    +apDiscoverable: true
    +apManuallyApprovesFollowers: null
    +privateKey: null
    +publicKey: null
    +apFetchedAt: DateTime @1708748229 {#3024
      date: 2024-02-24 05:17:09.0 +01:00
    }
    +apDeletedAt: null
    +apTimeoutAt: null
    +visibility: "visible             "
    +createdAt: DateTimeImmutable @1697197339 {#3025
      date: 2023-10-13 13:42:19.0 +02:00
    }
    +__isInitialized__: true
     …2
  }
  +showTitle: true
  +fullName: false
  +stretchedLink: false
  +showAvatar: false
}
vote App\Twig\Components\VoteComponent 14.0 MiB 0.57 ms
Input props
[
  "subject" => App\Entity\Entry {#1609
    +user: App\Entity\User {#260
      +avatar: Proxies\__CG__\App\Entity\Image {#240 …}
      +cover: null
      +email: "danielquinn@lemmy.ca"
      +username: "@danielquinn@lemmy.ca"
      +roles: []
      +followersCount: 0
      +homepage: "front"
      +about: "Canadian software engineer living in Europe."
      +lastActive: DateTime @1727577650 {#273
        date: 2024-09-29 04:40:50.0 +02:00
      }
      +markedForDeletionAt: null
      +fields: null
      +oauthGithubId: null
      +oauthGoogleId: null
      +oauthFacebookId: null
      +oauthKeycloakId: null
      +hideAdult: true
      +showSubscribedUsers: true
      +showSubscribedMagazines: true
      +showSubscribedDomains: true
      +preferredLanguages: []
      +featuredMagazines: null
      +showProfileSubscriptions: false
      +showProfileFollowings: true
      +markNewComments: false
      +notifyOnNewEntry: false
      +notifyOnNewEntryReply: true
      +notifyOnNewEntryCommentReply: true
      +notifyOnNewPost: false
      +notifyOnNewPostReply: true
      +notifyOnNewPostCommentReply: true
      +addMentionsEntries: false
      +addMentionsPosts: true
      +isBanned: false
      +isVerified: false
      +isDeleted: false
      +isBot: false
      +spamProtection: true
      +customCss: null
      +ignoreMagazinesCustomCss: false
      +moderatorTokens: Doctrine\ORM\PersistentCollection {#231 …}
      +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#227 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#216 …}
      +entries: Doctrine\ORM\PersistentCollection {#174 …}
      +entryVotes: Doctrine\ORM\PersistentCollection {#146 …}
      +entryComments: Doctrine\ORM\PersistentCollection {#119 …}
      +entryCommentVotes: Doctrine\ORM\PersistentCollection {#89 …}
      +posts: Doctrine\ORM\PersistentCollection {#62 …}
      +postVotes: Doctrine\ORM\PersistentCollection {#77 …}
      +postComments: Doctrine\ORM\PersistentCollection {#2405 …}
      +postCommentVotes: Doctrine\ORM\PersistentCollection {#1607 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#1768 …}
      +subscribedDomains: Doctrine\ORM\PersistentCollection {#2445 …}
      +follows: Doctrine\ORM\PersistentCollection {#1849 …}
      +followers: Doctrine\ORM\PersistentCollection {#1810 …}
      +blocks: Doctrine\ORM\PersistentCollection {#1794 …}
      +blockers: Doctrine\ORM\PersistentCollection {#2415 …}
      +blockedMagazines: Doctrine\ORM\PersistentCollection {#2421 …}
      +blockedDomains: Doctrine\ORM\PersistentCollection {#2418 …}
      +reports: Doctrine\ORM\PersistentCollection {#2398 …}
      +favourites: Doctrine\ORM\PersistentCollection {#1918 …}
      +violations: Doctrine\ORM\PersistentCollection {#1834 …}
      +notifications: Doctrine\ORM\PersistentCollection {#1878 …}
      +awards: Doctrine\ORM\PersistentCollection {#1886 …}
      +subscribedCategories: Doctrine\ORM\PersistentCollection {#1899 …}
      +categories: Doctrine\ORM\PersistentCollection {#1954 …}
      -id: 57593
      -password: "$2y$13$/L0PmovM1H9sjmzmYDFDJ./Rjx6mWwKcBTi6vz7ViURzIQuLk35WK"
      -totpSecret: null
      -totpBackupCodes: []
      -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1978 …}
      +apId: "danielquinn@lemmy.ca"
      +apProfileId: "https://lemmy.ca/u/danielquinn"
      +apPublicUrl: "https://lemmy.ca/u/danielquinn"
      +apFollowersUrl: null
      +apInboxUrl: "https://lemmy.ca/inbox"
      +apDomain: "lemmy.ca"
      +apPreferredUsername: "danielquinn"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: false
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729106992 {#276
        date: 2024-10-16 21:29:52.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1697197941 {#272
        date: 2023-10-13 13:52:21.0 +02:00
      }
    }
    +magazine: Proxies\__CG__\App\Entity\Magazine {#1584
      +icon: Proxies\__CG__\App\Entity\Image {#3026 …}
      +name: "piracy@lemmy.dbzer0.com"
      +title: "piracy"
      +description: """
        ##### ⚓ Community devoted to in-depth debate on topics concerning digital piracy, ethical problems, and legal advancements.\n
        \n
        ---\n
        \n
        ### Rules • [Full Version](https://rentry.co/piracy-rules)\n
        \n
        **1**. Posts must be related to the discussion of digital piracy\n
        \n
        **2**. Don’t request invites, trade, sell, or self-promote\n
        \n
        **3**. Don’t request or link to specific pirated titles, including DMs\n
        \n
        **4**. Don’t submit low-quality posts, be entitled, or harass others\n
        \n
        **5**. Don’t post questions already answered. READ THE [WIKI](https://lemmy.dbzer0.com/post/10901)\n
        \n
        ---\n
        \n
        [![](https://a.imagem.app/oZoQ1v.png)](https://lemmy.dbzer0.com/post/10901)\n
        ---------------------------------------------------------------------------\n
        \n
        ### Loot, Pillage, & Plunder\n
        \n
        - [📜 Megathread](https://rentry.co/megathread)\n
        - [🪶 FAQ](https://rentry.co/piracy-faq)\n
        - [🪶 ISP Complaints](https://rentry.co/piracy-isp-complaints)\n
        - [🪶 Rules](https://rentry.co/piracy-rules)\n
        \n
        ---\n
        \n
        💰 Please help cover server costs.\n
        \n
        [![Ko-Fi](https://lemmy.dbzer0.com/pictrs/image/4a2f073a-3dd8-492a-942d-72bd929c9f1d.png)](https://ko-fi.com/dbzer0)[![Liberapay](https://lemmy.dbzer0.com/pictrs/image/eec4659d-39be-4fc9-bc9e-66a96285ea2c.png)](https://liberapay.com/db0/)\n
        \n
        ---
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 866
      +entryCommentCount: 20194
      +postCount: 7
      +postCommentCount: 149
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729581369 {#3023
        date: 2024-10-22 09:16:09.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#3027 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#3029 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#3031 …}
      +entries: Doctrine\ORM\PersistentCollection {#3033 …}
      +posts: Doctrine\ORM\PersistentCollection {#3035 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#3037 …}
      +bans: Doctrine\ORM\PersistentCollection {#3043 …}
      +reports: Doctrine\ORM\PersistentCollection {#3051 …}
      +badges: Doctrine\ORM\PersistentCollection {#3064 …}
      +logs: Doctrine\ORM\PersistentCollection {#3074 …}
      +awards: Doctrine\ORM\PersistentCollection {#3056 …}
      +categories: Doctrine\ORM\PersistentCollection {#3080 …}
      -id: 51
      +apId: "piracy@lemmy.dbzer0.com"
      +apProfileId: "https://lemmy.dbzer0.com/c/piracy"
      +apPublicUrl: "https://lemmy.dbzer0.com/c/piracy"
      +apFollowersUrl: "https://lemmy.dbzer0.com/c/piracy/followers"
      +apInboxUrl: "https://lemmy.dbzer0.com/inbox"
      +apDomain: "lemmy.dbzer0.com"
      +apPreferredUsername: "piracy"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1708748229 {#3024
        date: 2024-02-24 05:17:09.0 +01:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1697197339 {#3025
        date: 2023-10-13 13:42:19.0 +02:00
      }
      +__isInitialized__: true
       …2
    }
    +image: Proxies\__CG__\App\Entity\Image {#1579 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1679 …}
    +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 {#1421
      date: 2024-02-10 10:33:02.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1650 …}
    +votes: Doctrine\ORM\PersistentCollection {#1652 …}
    +reports: Doctrine\ORM\PersistentCollection {#1651 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1527 …}
    +notifications: Doctrine\ORM\PersistentCollection {#1560 …}
    +badges: Doctrine\ORM\PersistentCollection {#1558 …}
    +children: [
      3 => App\Entity\EntryComment {#1611
        +user: App\Entity\User {#260}
        +entry: App\Entity\Entry {#1609}
        +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
        +image: null
        +parent: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
        +root: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
        +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 {#1596
          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 {#2464 …}
        +nested: Doctrine\ORM\PersistentCollection {#1740 …}
        +votes: Doctrine\ORM\PersistentCollection {#1739 …}
        +reports: Doctrine\ORM\PersistentCollection {#1716 …}
        +favourites: Doctrine\ORM\PersistentCollection {#2461 …}
        +notifications: Doctrine\ORM\PersistentCollection {#2447 …}
        -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 {#1555
          date: 2023-10-14 09:20:07.0 +02:00
        }
        +"title": 48003
      }
      2 => App\Entity\EntryComment {#2467
        +user: App\Entity\User {#260}
        +entry: App\Entity\Entry {#1609}
        +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
        +image: null
        +parent: Proxies\__CG__\App\Entity\EntryComment {#2470 …}
        +root: Proxies\__CG__\App\Entity\EntryComment {#2470 …}
        +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 {#1731
          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 {#2455 …}
        +nested: Doctrine\ORM\PersistentCollection {#2471 …}
        +votes: Doctrine\ORM\PersistentCollection {#2363 …}
        +reports: Doctrine\ORM\PersistentCollection {#2377 …}
        +favourites: Doctrine\ORM\PersistentCollection {#2359 …}
        +notifications: Doctrine\ORM\PersistentCollection {#2364 …}
        -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 {#2469
          date: 2023-10-14 09:26:17.0 +02:00
        }
        +"title": 48009
      }
      1 => App\Entity\EntryComment {#2382
        +user: App\Entity\User {#260}
        +entry: App\Entity\Entry {#1609}
        +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
        +image: null
        +parent: Proxies\__CG__\App\Entity\EntryComment {#2385 …}
        +root: Proxies\__CG__\App\Entity\EntryComment {#2385 …}
        +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 {#2380
          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 {#2384 …}
        +nested: Doctrine\ORM\PersistentCollection {#2379 …}
        +votes: Doctrine\ORM\PersistentCollection {#2383 …}
        +reports: Doctrine\ORM\PersistentCollection {#1906 …}
        +favourites: Doctrine\ORM\PersistentCollection {#1708 …}
        +notifications: Doctrine\ORM\PersistentCollection {#1410 …}
        -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 {#2386
          date: 2023-10-14 15:04:09.0 +02:00
        }
        +"title": 48431
      }
      0 => App\Entity\EntryComment {#1407
        +user: App\Entity\User {#260}
        +entry: App\Entity\Entry {#1609}
        +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
        +image: null
        +parent: Proxies\__CG__\App\Entity\EntryComment {#1883 …}
        +root: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
        +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 {#1907
          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 {#2391 …}
        +nested: Doctrine\ORM\PersistentCollection {#2369 …}
        +votes: Doctrine\ORM\PersistentCollection {#2392 …}
        +reports: Doctrine\ORM\PersistentCollection {#2395 …}
        +favourites: Doctrine\ORM\PersistentCollection {#1384 …}
        +notifications: Doctrine\ORM\PersistentCollection {#1383 …}
        -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 {#1908
          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 {#1424
      date: 2023-10-14 01:14:01.0 +02:00
    }
  }
]
Attributes
[]
Component
App\Twig\Components\VoteComponent {#3414
  +subject: App\Entity\Entry {#1609
    +user: App\Entity\User {#260
      +avatar: Proxies\__CG__\App\Entity\Image {#240 …}
      +cover: null
      +email: "danielquinn@lemmy.ca"
      +username: "@danielquinn@lemmy.ca"
      +roles: []
      +followersCount: 0
      +homepage: "front"
      +about: "Canadian software engineer living in Europe."
      +lastActive: DateTime @1727577650 {#273
        date: 2024-09-29 04:40:50.0 +02:00
      }
      +markedForDeletionAt: null
      +fields: null
      +oauthGithubId: null
      +oauthGoogleId: null
      +oauthFacebookId: null
      +oauthKeycloakId: null
      +hideAdult: true
      +showSubscribedUsers: true
      +showSubscribedMagazines: true
      +showSubscribedDomains: true
      +preferredLanguages: []
      +featuredMagazines: null
      +showProfileSubscriptions: false
      +showProfileFollowings: true
      +markNewComments: false
      +notifyOnNewEntry: false
      +notifyOnNewEntryReply: true
      +notifyOnNewEntryCommentReply: true
      +notifyOnNewPost: false
      +notifyOnNewPostReply: true
      +notifyOnNewPostCommentReply: true
      +addMentionsEntries: false
      +addMentionsPosts: true
      +isBanned: false
      +isVerified: false
      +isDeleted: false
      +isBot: false
      +spamProtection: true
      +customCss: null
      +ignoreMagazinesCustomCss: false
      +moderatorTokens: Doctrine\ORM\PersistentCollection {#231 …}
      +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#227 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#216 …}
      +entries: Doctrine\ORM\PersistentCollection {#174 …}
      +entryVotes: Doctrine\ORM\PersistentCollection {#146 …}
      +entryComments: Doctrine\ORM\PersistentCollection {#119 …}
      +entryCommentVotes: Doctrine\ORM\PersistentCollection {#89 …}
      +posts: Doctrine\ORM\PersistentCollection {#62 …}
      +postVotes: Doctrine\ORM\PersistentCollection {#77 …}
      +postComments: Doctrine\ORM\PersistentCollection {#2405 …}
      +postCommentVotes: Doctrine\ORM\PersistentCollection {#1607 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#1768 …}
      +subscribedDomains: Doctrine\ORM\PersistentCollection {#2445 …}
      +follows: Doctrine\ORM\PersistentCollection {#1849 …}
      +followers: Doctrine\ORM\PersistentCollection {#1810 …}
      +blocks: Doctrine\ORM\PersistentCollection {#1794 …}
      +blockers: Doctrine\ORM\PersistentCollection {#2415 …}
      +blockedMagazines: Doctrine\ORM\PersistentCollection {#2421 …}
      +blockedDomains: Doctrine\ORM\PersistentCollection {#2418 …}
      +reports: Doctrine\ORM\PersistentCollection {#2398 …}
      +favourites: Doctrine\ORM\PersistentCollection {#1918 …}
      +violations: Doctrine\ORM\PersistentCollection {#1834 …}
      +notifications: Doctrine\ORM\PersistentCollection {#1878 …}
      +awards: Doctrine\ORM\PersistentCollection {#1886 …}
      +subscribedCategories: Doctrine\ORM\PersistentCollection {#1899 …}
      +categories: Doctrine\ORM\PersistentCollection {#1954 …}
      -id: 57593
      -password: "$2y$13$/L0PmovM1H9sjmzmYDFDJ./Rjx6mWwKcBTi6vz7ViURzIQuLk35WK"
      -totpSecret: null
      -totpBackupCodes: []
      -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1978 …}
      +apId: "danielquinn@lemmy.ca"
      +apProfileId: "https://lemmy.ca/u/danielquinn"
      +apPublicUrl: "https://lemmy.ca/u/danielquinn"
      +apFollowersUrl: null
      +apInboxUrl: "https://lemmy.ca/inbox"
      +apDomain: "lemmy.ca"
      +apPreferredUsername: "danielquinn"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: false
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729106992 {#276
        date: 2024-10-16 21:29:52.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1697197941 {#272
        date: 2023-10-13 13:52:21.0 +02:00
      }
    }
    +magazine: Proxies\__CG__\App\Entity\Magazine {#1584
      +icon: Proxies\__CG__\App\Entity\Image {#3026 …}
      +name: "piracy@lemmy.dbzer0.com"
      +title: "piracy"
      +description: """
        ##### ⚓ Community devoted to in-depth debate on topics concerning digital piracy, ethical problems, and legal advancements.\n
        \n
        ---\n
        \n
        ### Rules • [Full Version](https://rentry.co/piracy-rules)\n
        \n
        **1**. Posts must be related to the discussion of digital piracy\n
        \n
        **2**. Don’t request invites, trade, sell, or self-promote\n
        \n
        **3**. Don’t request or link to specific pirated titles, including DMs\n
        \n
        **4**. Don’t submit low-quality posts, be entitled, or harass others\n
        \n
        **5**. Don’t post questions already answered. READ THE [WIKI](https://lemmy.dbzer0.com/post/10901)\n
        \n
        ---\n
        \n
        [![](https://a.imagem.app/oZoQ1v.png)](https://lemmy.dbzer0.com/post/10901)\n
        ---------------------------------------------------------------------------\n
        \n
        ### Loot, Pillage, & Plunder\n
        \n
        - [📜 Megathread](https://rentry.co/megathread)\n
        - [🪶 FAQ](https://rentry.co/piracy-faq)\n
        - [🪶 ISP Complaints](https://rentry.co/piracy-isp-complaints)\n
        - [🪶 Rules](https://rentry.co/piracy-rules)\n
        \n
        ---\n
        \n
        💰 Please help cover server costs.\n
        \n
        [![Ko-Fi](https://lemmy.dbzer0.com/pictrs/image/4a2f073a-3dd8-492a-942d-72bd929c9f1d.png)](https://ko-fi.com/dbzer0)[![Liberapay](https://lemmy.dbzer0.com/pictrs/image/eec4659d-39be-4fc9-bc9e-66a96285ea2c.png)](https://liberapay.com/db0/)\n
        \n
        ---
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 866
      +entryCommentCount: 20194
      +postCount: 7
      +postCommentCount: 149
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729581369 {#3023
        date: 2024-10-22 09:16:09.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#3027 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#3029 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#3031 …}
      +entries: Doctrine\ORM\PersistentCollection {#3033 …}
      +posts: Doctrine\ORM\PersistentCollection {#3035 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#3037 …}
      +bans: Doctrine\ORM\PersistentCollection {#3043 …}
      +reports: Doctrine\ORM\PersistentCollection {#3051 …}
      +badges: Doctrine\ORM\PersistentCollection {#3064 …}
      +logs: Doctrine\ORM\PersistentCollection {#3074 …}
      +awards: Doctrine\ORM\PersistentCollection {#3056 …}
      +categories: Doctrine\ORM\PersistentCollection {#3080 …}
      -id: 51
      +apId: "piracy@lemmy.dbzer0.com"
      +apProfileId: "https://lemmy.dbzer0.com/c/piracy"
      +apPublicUrl: "https://lemmy.dbzer0.com/c/piracy"
      +apFollowersUrl: "https://lemmy.dbzer0.com/c/piracy/followers"
      +apInboxUrl: "https://lemmy.dbzer0.com/inbox"
      +apDomain: "lemmy.dbzer0.com"
      +apPreferredUsername: "piracy"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1708748229 {#3024
        date: 2024-02-24 05:17:09.0 +01:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1697197339 {#3025
        date: 2023-10-13 13:42:19.0 +02:00
      }
      +__isInitialized__: true
       …2
    }
    +image: Proxies\__CG__\App\Entity\Image {#1579 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1679 …}
    +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 {#1421
      date: 2024-02-10 10:33:02.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1650 …}
    +votes: Doctrine\ORM\PersistentCollection {#1652 …}
    +reports: Doctrine\ORM\PersistentCollection {#1651 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1527 …}
    +notifications: Doctrine\ORM\PersistentCollection {#1560 …}
    +badges: Doctrine\ORM\PersistentCollection {#1558 …}
    +children: [
      3 => App\Entity\EntryComment {#1611
        +user: App\Entity\User {#260}
        +entry: App\Entity\Entry {#1609}
        +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
        +image: null
        +parent: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
        +root: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
        +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 {#1596
          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 {#2464 …}
        +nested: Doctrine\ORM\PersistentCollection {#1740 …}
        +votes: Doctrine\ORM\PersistentCollection {#1739 …}
        +reports: Doctrine\ORM\PersistentCollection {#1716 …}
        +favourites: Doctrine\ORM\PersistentCollection {#2461 …}
        +notifications: Doctrine\ORM\PersistentCollection {#2447 …}
        -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 {#1555
          date: 2023-10-14 09:20:07.0 +02:00
        }
        +"title": 48003
      }
      2 => App\Entity\EntryComment {#2467
        +user: App\Entity\User {#260}
        +entry: App\Entity\Entry {#1609}
        +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
        +image: null
        +parent: Proxies\__CG__\App\Entity\EntryComment {#2470 …}
        +root: Proxies\__CG__\App\Entity\EntryComment {#2470 …}
        +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 {#1731
          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 {#2455 …}
        +nested: Doctrine\ORM\PersistentCollection {#2471 …}
        +votes: Doctrine\ORM\PersistentCollection {#2363 …}
        +reports: Doctrine\ORM\PersistentCollection {#2377 …}
        +favourites: Doctrine\ORM\PersistentCollection {#2359 …}
        +notifications: Doctrine\ORM\PersistentCollection {#2364 …}
        -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 {#2469
          date: 2023-10-14 09:26:17.0 +02:00
        }
        +"title": 48009
      }
      1 => App\Entity\EntryComment {#2382
        +user: App\Entity\User {#260}
        +entry: App\Entity\Entry {#1609}
        +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
        +image: null
        +parent: Proxies\__CG__\App\Entity\EntryComment {#2385 …}
        +root: Proxies\__CG__\App\Entity\EntryComment {#2385 …}
        +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 {#2380
          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 {#2384 …}
        +nested: Doctrine\ORM\PersistentCollection {#2379 …}
        +votes: Doctrine\ORM\PersistentCollection {#2383 …}
        +reports: Doctrine\ORM\PersistentCollection {#1906 …}
        +favourites: Doctrine\ORM\PersistentCollection {#1708 …}
        +notifications: Doctrine\ORM\PersistentCollection {#1410 …}
        -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 {#2386
          date: 2023-10-14 15:04:09.0 +02:00
        }
        +"title": 48431
      }
      0 => App\Entity\EntryComment {#1407
        +user: App\Entity\User {#260}
        +entry: App\Entity\Entry {#1609}
        +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
        +image: null
        +parent: Proxies\__CG__\App\Entity\EntryComment {#1883 …}
        +root: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
        +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 {#1907
          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 {#2391 …}
        +nested: Doctrine\ORM\PersistentCollection {#2369 …}
        +votes: Doctrine\ORM\PersistentCollection {#2392 …}
        +reports: Doctrine\ORM\PersistentCollection {#2395 …}
        +favourites: Doctrine\ORM\PersistentCollection {#1384 …}
        +notifications: Doctrine\ORM\PersistentCollection {#1383 …}
        -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 {#1908
          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 {#1424
      date: 2023-10-14 01:14:01.0 +02:00
    }
  }
  +formDest: "entry"
  +showDownvote: true
  -cache: Symfony\Component\Cache\Adapter\TraceableTagAwareAdapter {#600 …}
}
boost App\Twig\Components\BoostComponent 14.0 MiB 1.42 ms
Input props
[
  "subject" => App\Entity\Entry {#1609
    +user: App\Entity\User {#260
      +avatar: Proxies\__CG__\App\Entity\Image {#240 …}
      +cover: null
      +email: "danielquinn@lemmy.ca"
      +username: "@danielquinn@lemmy.ca"
      +roles: []
      +followersCount: 0
      +homepage: "front"
      +about: "Canadian software engineer living in Europe."
      +lastActive: DateTime @1727577650 {#273
        date: 2024-09-29 04:40:50.0 +02:00
      }
      +markedForDeletionAt: null
      +fields: null
      +oauthGithubId: null
      +oauthGoogleId: null
      +oauthFacebookId: null
      +oauthKeycloakId: null
      +hideAdult: true
      +showSubscribedUsers: true
      +showSubscribedMagazines: true
      +showSubscribedDomains: true
      +preferredLanguages: []
      +featuredMagazines: null
      +showProfileSubscriptions: false
      +showProfileFollowings: true
      +markNewComments: false
      +notifyOnNewEntry: false
      +notifyOnNewEntryReply: true
      +notifyOnNewEntryCommentReply: true
      +notifyOnNewPost: false
      +notifyOnNewPostReply: true
      +notifyOnNewPostCommentReply: true
      +addMentionsEntries: false
      +addMentionsPosts: true
      +isBanned: false
      +isVerified: false
      +isDeleted: false
      +isBot: false
      +spamProtection: true
      +customCss: null
      +ignoreMagazinesCustomCss: false
      +moderatorTokens: Doctrine\ORM\PersistentCollection {#231 …}
      +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#227 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#216 …}
      +entries: Doctrine\ORM\PersistentCollection {#174 …}
      +entryVotes: Doctrine\ORM\PersistentCollection {#146 …}
      +entryComments: Doctrine\ORM\PersistentCollection {#119 …}
      +entryCommentVotes: Doctrine\ORM\PersistentCollection {#89 …}
      +posts: Doctrine\ORM\PersistentCollection {#62 …}
      +postVotes: Doctrine\ORM\PersistentCollection {#77 …}
      +postComments: Doctrine\ORM\PersistentCollection {#2405 …}
      +postCommentVotes: Doctrine\ORM\PersistentCollection {#1607 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#1768 …}
      +subscribedDomains: Doctrine\ORM\PersistentCollection {#2445 …}
      +follows: Doctrine\ORM\PersistentCollection {#1849 …}
      +followers: Doctrine\ORM\PersistentCollection {#1810 …}
      +blocks: Doctrine\ORM\PersistentCollection {#1794 …}
      +blockers: Doctrine\ORM\PersistentCollection {#2415 …}
      +blockedMagazines: Doctrine\ORM\PersistentCollection {#2421 …}
      +blockedDomains: Doctrine\ORM\PersistentCollection {#2418 …}
      +reports: Doctrine\ORM\PersistentCollection {#2398 …}
      +favourites: Doctrine\ORM\PersistentCollection {#1918 …}
      +violations: Doctrine\ORM\PersistentCollection {#1834 …}
      +notifications: Doctrine\ORM\PersistentCollection {#1878 …}
      +awards: Doctrine\ORM\PersistentCollection {#1886 …}
      +subscribedCategories: Doctrine\ORM\PersistentCollection {#1899 …}
      +categories: Doctrine\ORM\PersistentCollection {#1954 …}
      -id: 57593
      -password: "$2y$13$/L0PmovM1H9sjmzmYDFDJ./Rjx6mWwKcBTi6vz7ViURzIQuLk35WK"
      -totpSecret: null
      -totpBackupCodes: []
      -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1978 …}
      +apId: "danielquinn@lemmy.ca"
      +apProfileId: "https://lemmy.ca/u/danielquinn"
      +apPublicUrl: "https://lemmy.ca/u/danielquinn"
      +apFollowersUrl: null
      +apInboxUrl: "https://lemmy.ca/inbox"
      +apDomain: "lemmy.ca"
      +apPreferredUsername: "danielquinn"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: false
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729106992 {#276
        date: 2024-10-16 21:29:52.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1697197941 {#272
        date: 2023-10-13 13:52:21.0 +02:00
      }
    }
    +magazine: Proxies\__CG__\App\Entity\Magazine {#1584
      +icon: Proxies\__CG__\App\Entity\Image {#3026 …}
      +name: "piracy@lemmy.dbzer0.com"
      +title: "piracy"
      +description: """
        ##### ⚓ Community devoted to in-depth debate on topics concerning digital piracy, ethical problems, and legal advancements.\n
        \n
        ---\n
        \n
        ### Rules • [Full Version](https://rentry.co/piracy-rules)\n
        \n
        **1**. Posts must be related to the discussion of digital piracy\n
        \n
        **2**. Don’t request invites, trade, sell, or self-promote\n
        \n
        **3**. Don’t request or link to specific pirated titles, including DMs\n
        \n
        **4**. Don’t submit low-quality posts, be entitled, or harass others\n
        \n
        **5**. Don’t post questions already answered. READ THE [WIKI](https://lemmy.dbzer0.com/post/10901)\n
        \n
        ---\n
        \n
        [![](https://a.imagem.app/oZoQ1v.png)](https://lemmy.dbzer0.com/post/10901)\n
        ---------------------------------------------------------------------------\n
        \n
        ### Loot, Pillage, & Plunder\n
        \n
        - [📜 Megathread](https://rentry.co/megathread)\n
        - [🪶 FAQ](https://rentry.co/piracy-faq)\n
        - [🪶 ISP Complaints](https://rentry.co/piracy-isp-complaints)\n
        - [🪶 Rules](https://rentry.co/piracy-rules)\n
        \n
        ---\n
        \n
        💰 Please help cover server costs.\n
        \n
        [![Ko-Fi](https://lemmy.dbzer0.com/pictrs/image/4a2f073a-3dd8-492a-942d-72bd929c9f1d.png)](https://ko-fi.com/dbzer0)[![Liberapay](https://lemmy.dbzer0.com/pictrs/image/eec4659d-39be-4fc9-bc9e-66a96285ea2c.png)](https://liberapay.com/db0/)\n
        \n
        ---
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 866
      +entryCommentCount: 20194
      +postCount: 7
      +postCommentCount: 149
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729581369 {#3023
        date: 2024-10-22 09:16:09.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#3027 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#3029 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#3031 …}
      +entries: Doctrine\ORM\PersistentCollection {#3033 …}
      +posts: Doctrine\ORM\PersistentCollection {#3035 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#3037 …}
      +bans: Doctrine\ORM\PersistentCollection {#3043 …}
      +reports: Doctrine\ORM\PersistentCollection {#3051 …}
      +badges: Doctrine\ORM\PersistentCollection {#3064 …}
      +logs: Doctrine\ORM\PersistentCollection {#3074 …}
      +awards: Doctrine\ORM\PersistentCollection {#3056 …}
      +categories: Doctrine\ORM\PersistentCollection {#3080 …}
      -id: 51
      +apId: "piracy@lemmy.dbzer0.com"
      +apProfileId: "https://lemmy.dbzer0.com/c/piracy"
      +apPublicUrl: "https://lemmy.dbzer0.com/c/piracy"
      +apFollowersUrl: "https://lemmy.dbzer0.com/c/piracy/followers"
      +apInboxUrl: "https://lemmy.dbzer0.com/inbox"
      +apDomain: "lemmy.dbzer0.com"
      +apPreferredUsername: "piracy"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1708748229 {#3024
        date: 2024-02-24 05:17:09.0 +01:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1697197339 {#3025
        date: 2023-10-13 13:42:19.0 +02:00
      }
      +__isInitialized__: true
       …2
    }
    +image: Proxies\__CG__\App\Entity\Image {#1579 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1679 …}
    +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 {#1421
      date: 2024-02-10 10:33:02.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1650 …}
    +votes: Doctrine\ORM\PersistentCollection {#1652 …}
    +reports: Doctrine\ORM\PersistentCollection {#1651 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1527 …}
    +notifications: Doctrine\ORM\PersistentCollection {#1560 …}
    +badges: Doctrine\ORM\PersistentCollection {#1558 …}
    +children: [
      3 => App\Entity\EntryComment {#1611
        +user: App\Entity\User {#260}
        +entry: App\Entity\Entry {#1609}
        +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
        +image: null
        +parent: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
        +root: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
        +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 {#1596
          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 {#2464 …}
        +nested: Doctrine\ORM\PersistentCollection {#1740 …}
        +votes: Doctrine\ORM\PersistentCollection {#1739 …}
        +reports: Doctrine\ORM\PersistentCollection {#1716 …}
        +favourites: Doctrine\ORM\PersistentCollection {#2461 …}
        +notifications: Doctrine\ORM\PersistentCollection {#2447 …}
        -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 {#1555
          date: 2023-10-14 09:20:07.0 +02:00
        }
        +"title": 48003
      }
      2 => App\Entity\EntryComment {#2467
        +user: App\Entity\User {#260}
        +entry: App\Entity\Entry {#1609}
        +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
        +image: null
        +parent: Proxies\__CG__\App\Entity\EntryComment {#2470 …}
        +root: Proxies\__CG__\App\Entity\EntryComment {#2470 …}
        +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 {#1731
          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 {#2455 …}
        +nested: Doctrine\ORM\PersistentCollection {#2471 …}
        +votes: Doctrine\ORM\PersistentCollection {#2363 …}
        +reports: Doctrine\ORM\PersistentCollection {#2377 …}
        +favourites: Doctrine\ORM\PersistentCollection {#2359 …}
        +notifications: Doctrine\ORM\PersistentCollection {#2364 …}
        -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 {#2469
          date: 2023-10-14 09:26:17.0 +02:00
        }
        +"title": 48009
      }
      1 => App\Entity\EntryComment {#2382
        +user: App\Entity\User {#260}
        +entry: App\Entity\Entry {#1609}
        +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
        +image: null
        +parent: Proxies\__CG__\App\Entity\EntryComment {#2385 …}
        +root: Proxies\__CG__\App\Entity\EntryComment {#2385 …}
        +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 {#2380
          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 {#2384 …}
        +nested: Doctrine\ORM\PersistentCollection {#2379 …}
        +votes: Doctrine\ORM\PersistentCollection {#2383 …}
        +reports: Doctrine\ORM\PersistentCollection {#1906 …}
        +favourites: Doctrine\ORM\PersistentCollection {#1708 …}
        +notifications: Doctrine\ORM\PersistentCollection {#1410 …}
        -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 {#2386
          date: 2023-10-14 15:04:09.0 +02:00
        }
        +"title": 48431
      }
      0 => App\Entity\EntryComment {#1407
        +user: App\Entity\User {#260}
        +entry: App\Entity\Entry {#1609}
        +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
        +image: null
        +parent: Proxies\__CG__\App\Entity\EntryComment {#1883 …}
        +root: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
        +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 {#1907
          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 {#2391 …}
        +nested: Doctrine\ORM\PersistentCollection {#2369 …}
        +votes: Doctrine\ORM\PersistentCollection {#2392 …}
        +reports: Doctrine\ORM\PersistentCollection {#2395 …}
        +favourites: Doctrine\ORM\PersistentCollection {#1384 …}
        +notifications: Doctrine\ORM\PersistentCollection {#1383 …}
        -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 {#1908
          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 {#1424
      date: 2023-10-14 01:14:01.0 +02:00
    }
  }
]
Attributes
[]
Component
App\Twig\Components\BoostComponent {#3479
  +formDest: "entry"
  +subject: App\Entity\Entry {#1609
    +user: App\Entity\User {#260
      +avatar: Proxies\__CG__\App\Entity\Image {#240 …}
      +cover: null
      +email: "danielquinn@lemmy.ca"
      +username: "@danielquinn@lemmy.ca"
      +roles: []
      +followersCount: 0
      +homepage: "front"
      +about: "Canadian software engineer living in Europe."
      +lastActive: DateTime @1727577650 {#273
        date: 2024-09-29 04:40:50.0 +02:00
      }
      +markedForDeletionAt: null
      +fields: null
      +oauthGithubId: null
      +oauthGoogleId: null
      +oauthFacebookId: null
      +oauthKeycloakId: null
      +hideAdult: true
      +showSubscribedUsers: true
      +showSubscribedMagazines: true
      +showSubscribedDomains: true
      +preferredLanguages: []
      +featuredMagazines: null
      +showProfileSubscriptions: false
      +showProfileFollowings: true
      +markNewComments: false
      +notifyOnNewEntry: false
      +notifyOnNewEntryReply: true
      +notifyOnNewEntryCommentReply: true
      +notifyOnNewPost: false
      +notifyOnNewPostReply: true
      +notifyOnNewPostCommentReply: true
      +addMentionsEntries: false
      +addMentionsPosts: true
      +isBanned: false
      +isVerified: false
      +isDeleted: false
      +isBot: false
      +spamProtection: true
      +customCss: null
      +ignoreMagazinesCustomCss: false
      +moderatorTokens: Doctrine\ORM\PersistentCollection {#231 …}
      +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#227 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#216 …}
      +entries: Doctrine\ORM\PersistentCollection {#174 …}
      +entryVotes: Doctrine\ORM\PersistentCollection {#146 …}
      +entryComments: Doctrine\ORM\PersistentCollection {#119 …}
      +entryCommentVotes: Doctrine\ORM\PersistentCollection {#89 …}
      +posts: Doctrine\ORM\PersistentCollection {#62 …}
      +postVotes: Doctrine\ORM\PersistentCollection {#77 …}
      +postComments: Doctrine\ORM\PersistentCollection {#2405 …}
      +postCommentVotes: Doctrine\ORM\PersistentCollection {#1607 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#1768 …}
      +subscribedDomains: Doctrine\ORM\PersistentCollection {#2445 …}
      +follows: Doctrine\ORM\PersistentCollection {#1849 …}
      +followers: Doctrine\ORM\PersistentCollection {#1810 …}
      +blocks: Doctrine\ORM\PersistentCollection {#1794 …}
      +blockers: Doctrine\ORM\PersistentCollection {#2415 …}
      +blockedMagazines: Doctrine\ORM\PersistentCollection {#2421 …}
      +blockedDomains: Doctrine\ORM\PersistentCollection {#2418 …}
      +reports: Doctrine\ORM\PersistentCollection {#2398 …}
      +favourites: Doctrine\ORM\PersistentCollection {#1918 …}
      +violations: Doctrine\ORM\PersistentCollection {#1834 …}
      +notifications: Doctrine\ORM\PersistentCollection {#1878 …}
      +awards: Doctrine\ORM\PersistentCollection {#1886 …}
      +subscribedCategories: Doctrine\ORM\PersistentCollection {#1899 …}
      +categories: Doctrine\ORM\PersistentCollection {#1954 …}
      -id: 57593
      -password: "$2y$13$/L0PmovM1H9sjmzmYDFDJ./Rjx6mWwKcBTi6vz7ViURzIQuLk35WK"
      -totpSecret: null
      -totpBackupCodes: []
      -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1978 …}
      +apId: "danielquinn@lemmy.ca"
      +apProfileId: "https://lemmy.ca/u/danielquinn"
      +apPublicUrl: "https://lemmy.ca/u/danielquinn"
      +apFollowersUrl: null
      +apInboxUrl: "https://lemmy.ca/inbox"
      +apDomain: "lemmy.ca"
      +apPreferredUsername: "danielquinn"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: false
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729106992 {#276
        date: 2024-10-16 21:29:52.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1697197941 {#272
        date: 2023-10-13 13:52:21.0 +02:00
      }
    }
    +magazine: Proxies\__CG__\App\Entity\Magazine {#1584
      +icon: Proxies\__CG__\App\Entity\Image {#3026 …}
      +name: "piracy@lemmy.dbzer0.com"
      +title: "piracy"
      +description: """
        ##### ⚓ Community devoted to in-depth debate on topics concerning digital piracy, ethical problems, and legal advancements.\n
        \n
        ---\n
        \n
        ### Rules • [Full Version](https://rentry.co/piracy-rules)\n
        \n
        **1**. Posts must be related to the discussion of digital piracy\n
        \n
        **2**. Don’t request invites, trade, sell, or self-promote\n
        \n
        **3**. Don’t request or link to specific pirated titles, including DMs\n
        \n
        **4**. Don’t submit low-quality posts, be entitled, or harass others\n
        \n
        **5**. Don’t post questions already answered. READ THE [WIKI](https://lemmy.dbzer0.com/post/10901)\n
        \n
        ---\n
        \n
        [![](https://a.imagem.app/oZoQ1v.png)](https://lemmy.dbzer0.com/post/10901)\n
        ---------------------------------------------------------------------------\n
        \n
        ### Loot, Pillage, & Plunder\n
        \n
        - [📜 Megathread](https://rentry.co/megathread)\n
        - [🪶 FAQ](https://rentry.co/piracy-faq)\n
        - [🪶 ISP Complaints](https://rentry.co/piracy-isp-complaints)\n
        - [🪶 Rules](https://rentry.co/piracy-rules)\n
        \n
        ---\n
        \n
        💰 Please help cover server costs.\n
        \n
        [![Ko-Fi](https://lemmy.dbzer0.com/pictrs/image/4a2f073a-3dd8-492a-942d-72bd929c9f1d.png)](https://ko-fi.com/dbzer0)[![Liberapay](https://lemmy.dbzer0.com/pictrs/image/eec4659d-39be-4fc9-bc9e-66a96285ea2c.png)](https://liberapay.com/db0/)\n
        \n
        ---
        """
      +rules: null
      +subscriptionsCount: 1
      +entryCount: 866
      +entryCommentCount: 20194
      +postCount: 7
      +postCommentCount: 149
      +isAdult: false
      +customCss: null
      +lastActive: DateTime @1729581369 {#3023
        date: 2024-10-22 09:16:09.0 +02:00
      }
      +markedForDeletionAt: null
      +tags: null
      +moderators: Doctrine\ORM\PersistentCollection {#3027 …}
      +ownershipRequests: Doctrine\ORM\PersistentCollection {#3029 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#3031 …}
      +entries: Doctrine\ORM\PersistentCollection {#3033 …}
      +posts: Doctrine\ORM\PersistentCollection {#3035 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#3037 …}
      +bans: Doctrine\ORM\PersistentCollection {#3043 …}
      +reports: Doctrine\ORM\PersistentCollection {#3051 …}
      +badges: Doctrine\ORM\PersistentCollection {#3064 …}
      +logs: Doctrine\ORM\PersistentCollection {#3074 …}
      +awards: Doctrine\ORM\PersistentCollection {#3056 …}
      +categories: Doctrine\ORM\PersistentCollection {#3080 …}
      -id: 51
      +apId: "piracy@lemmy.dbzer0.com"
      +apProfileId: "https://lemmy.dbzer0.com/c/piracy"
      +apPublicUrl: "https://lemmy.dbzer0.com/c/piracy"
      +apFollowersUrl: "https://lemmy.dbzer0.com/c/piracy/followers"
      +apInboxUrl: "https://lemmy.dbzer0.com/inbox"
      +apDomain: "lemmy.dbzer0.com"
      +apPreferredUsername: "piracy"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: null
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1708748229 {#3024
        date: 2024-02-24 05:17:09.0 +01:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1697197339 {#3025
        date: 2023-10-13 13:42:19.0 +02:00
      }
      +__isInitialized__: true
       …2
    }
    +image: Proxies\__CG__\App\Entity\Image {#1579 …}
    +domain: Proxies\__CG__\App\Entity\Domain {#1679 …}
    +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 {#1421
      date: 2024-02-10 10:33:02.0 +01:00
    }
    +ip: null
    +adaAmount: 0
    +tags: null
    +mentions: null
    +comments: Doctrine\ORM\PersistentCollection {#1650 …}
    +votes: Doctrine\ORM\PersistentCollection {#1652 …}
    +reports: Doctrine\ORM\PersistentCollection {#1651 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1527 …}
    +notifications: Doctrine\ORM\PersistentCollection {#1560 …}
    +badges: Doctrine\ORM\PersistentCollection {#1558 …}
    +children: [
      3 => App\Entity\EntryComment {#1611
        +user: App\Entity\User {#260}
        +entry: App\Entity\Entry {#1609}
        +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
        +image: null
        +parent: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
        +root: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
        +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 {#1596
          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 {#2464 …}
        +nested: Doctrine\ORM\PersistentCollection {#1740 …}
        +votes: Doctrine\ORM\PersistentCollection {#1739 …}
        +reports: Doctrine\ORM\PersistentCollection {#1716 …}
        +favourites: Doctrine\ORM\PersistentCollection {#2461 …}
        +notifications: Doctrine\ORM\PersistentCollection {#2447 …}
        -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 {#1555
          date: 2023-10-14 09:20:07.0 +02:00
        }
        +"title": 48003
      }
      2 => App\Entity\EntryComment {#2467
        +user: App\Entity\User {#260}
        +entry: App\Entity\Entry {#1609}
        +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
        +image: null
        +parent: Proxies\__CG__\App\Entity\EntryComment {#2470 …}
        +root: Proxies\__CG__\App\Entity\EntryComment {#2470 …}
        +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 {#1731
          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 {#2455 …}
        +nested: Doctrine\ORM\PersistentCollection {#2471 …}
        +votes: Doctrine\ORM\PersistentCollection {#2363 …}
        +reports: Doctrine\ORM\PersistentCollection {#2377 …}
        +favourites: Doctrine\ORM\PersistentCollection {#2359 …}
        +notifications: Doctrine\ORM\PersistentCollection {#2364 …}
        -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 {#2469
          date: 2023-10-14 09:26:17.0 +02:00
        }
        +"title": 48009
      }
      1 => App\Entity\EntryComment {#2382
        +user: App\Entity\User {#260}
        +entry: App\Entity\Entry {#1609}
        +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
        +image: null
        +parent: Proxies\__CG__\App\Entity\EntryComment {#2385 …}
        +root: Proxies\__CG__\App\Entity\EntryComment {#2385 …}
        +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 {#2380
          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 {#2384 …}
        +nested: Doctrine\ORM\PersistentCollection {#2379 …}
        +votes: Doctrine\ORM\PersistentCollection {#2383 …}
        +reports: Doctrine\ORM\PersistentCollection {#1906 …}
        +favourites: Doctrine\ORM\PersistentCollection {#1708 …}
        +notifications: Doctrine\ORM\PersistentCollection {#1410 …}
        -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 {#2386
          date: 2023-10-14 15:04:09.0 +02:00
        }
        +"title": 48431
      }
      0 => App\Entity\EntryComment {#1407
        +user: App\Entity\User {#260}
        +entry: App\Entity\Entry {#1609}
        +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
        +image: null
        +parent: Proxies\__CG__\App\Entity\EntryComment {#1883 …}
        +root: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
        +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 {#1907
          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 {#2391 …}
        +nested: Doctrine\ORM\PersistentCollection {#2369 …}
        +votes: Doctrine\ORM\PersistentCollection {#2392 …}
        +reports: Doctrine\ORM\PersistentCollection {#2395 …}
        +favourites: Doctrine\ORM\PersistentCollection {#1384 …}
        +notifications: Doctrine\ORM\PersistentCollection {#1383 …}
        -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 {#1908
          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 {#1424
      date: 2023-10-14 01:14:01.0 +02:00
    }
  }
  -cache: Symfony\Component\Cache\Adapter\TraceableTagAwareAdapter {#600 …}
}
entry_comment App\Twig\Components\EntryCommentComponent 14.0 MiB 13.42 ms
Input props
[
  "comment" => App\Entity\EntryComment {#1611
    +user: App\Entity\User {#260
      +avatar: Proxies\__CG__\App\Entity\Image {#240 …}
      +cover: null
      +email: "danielquinn@lemmy.ca"
      +username: "@danielquinn@lemmy.ca"
      +roles: []
      +followersCount: 0
      +homepage: "front"
      +about: "Canadian software engineer living in Europe."
      +lastActive: DateTime @1727577650 {#273
        date: 2024-09-29 04:40:50.0 +02:00
      }
      +markedForDeletionAt: null
      +fields: null
      +oauthGithubId: null
      +oauthGoogleId: null
      +oauthFacebookId: null
      +oauthKeycloakId: null
      +hideAdult: true
      +showSubscribedUsers: true
      +showSubscribedMagazines: true
      +showSubscribedDomains: true
      +preferredLanguages: []
      +featuredMagazines: null
      +showProfileSubscriptions: false
      +showProfileFollowings: true
      +markNewComments: false
      +notifyOnNewEntry: false
      +notifyOnNewEntryReply: true
      +notifyOnNewEntryCommentReply: true
      +notifyOnNewPost: false
      +notifyOnNewPostReply: true
      +notifyOnNewPostCommentReply: true
      +addMentionsEntries: false
      +addMentionsPosts: true
      +isBanned: false
      +isVerified: false
      +isDeleted: false
      +isBot: false
      +spamProtection: true
      +customCss: null
      +ignoreMagazinesCustomCss: false
      +moderatorTokens: Doctrine\ORM\PersistentCollection {#231 …}
      +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#227 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#216 …}
      +entries: Doctrine\ORM\PersistentCollection {#174 …}
      +entryVotes: Doctrine\ORM\PersistentCollection {#146 …}
      +entryComments: Doctrine\ORM\PersistentCollection {#119 …}
      +entryCommentVotes: Doctrine\ORM\PersistentCollection {#89 …}
      +posts: Doctrine\ORM\PersistentCollection {#62 …}
      +postVotes: Doctrine\ORM\PersistentCollection {#77 …}
      +postComments: Doctrine\ORM\PersistentCollection {#2405 …}
      +postCommentVotes: Doctrine\ORM\PersistentCollection {#1607 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#1768 …}
      +subscribedDomains: Doctrine\ORM\PersistentCollection {#2445 …}
      +follows: Doctrine\ORM\PersistentCollection {#1849 …}
      +followers: Doctrine\ORM\PersistentCollection {#1810 …}
      +blocks: Doctrine\ORM\PersistentCollection {#1794 …}
      +blockers: Doctrine\ORM\PersistentCollection {#2415 …}
      +blockedMagazines: Doctrine\ORM\PersistentCollection {#2421 …}
      +blockedDomains: Doctrine\ORM\PersistentCollection {#2418 …}
      +reports: Doctrine\ORM\PersistentCollection {#2398 …}
      +favourites: Doctrine\ORM\PersistentCollection {#1918 …}
      +violations: Doctrine\ORM\PersistentCollection {#1834 …}
      +notifications: Doctrine\ORM\PersistentCollection {#1878 …}
      +awards: Doctrine\ORM\PersistentCollection {#1886 …}
      +subscribedCategories: Doctrine\ORM\PersistentCollection {#1899 …}
      +categories: Doctrine\ORM\PersistentCollection {#1954 …}
      -id: 57593
      -password: "$2y$13$/L0PmovM1H9sjmzmYDFDJ./Rjx6mWwKcBTi6vz7ViURzIQuLk35WK"
      -totpSecret: null
      -totpBackupCodes: []
      -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1978 …}
      +apId: "danielquinn@lemmy.ca"
      +apProfileId: "https://lemmy.ca/u/danielquinn"
      +apPublicUrl: "https://lemmy.ca/u/danielquinn"
      +apFollowersUrl: null
      +apInboxUrl: "https://lemmy.ca/inbox"
      +apDomain: "lemmy.ca"
      +apPreferredUsername: "danielquinn"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: false
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729106992 {#276
        date: 2024-10-16 21:29:52.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1697197941 {#272
        date: 2023-10-13 13:52:21.0 +02:00
      }
    }
    +entry: App\Entity\Entry {#1609
      +user: App\Entity\User {#260}
      +magazine: Proxies\__CG__\App\Entity\Magazine {#1584
        +icon: Proxies\__CG__\App\Entity\Image {#3026 …}
        +name: "piracy@lemmy.dbzer0.com"
        +title: "piracy"
        +description: """
          ##### ⚓ Community devoted to in-depth debate on topics concerning digital piracy, ethical problems, and legal advancements.\n
          \n
          ---\n
          \n
          ### Rules • [Full Version](https://rentry.co/piracy-rules)\n
          \n
          **1**. Posts must be related to the discussion of digital piracy\n
          \n
          **2**. Don’t request invites, trade, sell, or self-promote\n
          \n
          **3**. Don’t request or link to specific pirated titles, including DMs\n
          \n
          **4**. Don’t submit low-quality posts, be entitled, or harass others\n
          \n
          **5**. Don’t post questions already answered. READ THE [WIKI](https://lemmy.dbzer0.com/post/10901)\n
          \n
          ---\n
          \n
          [![](https://a.imagem.app/oZoQ1v.png)](https://lemmy.dbzer0.com/post/10901)\n
          ---------------------------------------------------------------------------\n
          \n
          ### Loot, Pillage, & Plunder\n
          \n
          - [📜 Megathread](https://rentry.co/megathread)\n
          - [🪶 FAQ](https://rentry.co/piracy-faq)\n
          - [🪶 ISP Complaints](https://rentry.co/piracy-isp-complaints)\n
          - [🪶 Rules](https://rentry.co/piracy-rules)\n
          \n
          ---\n
          \n
          💰 Please help cover server costs.\n
          \n
          [![Ko-Fi](https://lemmy.dbzer0.com/pictrs/image/4a2f073a-3dd8-492a-942d-72bd929c9f1d.png)](https://ko-fi.com/dbzer0)[![Liberapay](https://lemmy.dbzer0.com/pictrs/image/eec4659d-39be-4fc9-bc9e-66a96285ea2c.png)](https://liberapay.com/db0/)\n
          \n
          ---
          """
        +rules: null
        +subscriptionsCount: 1
        +entryCount: 866
        +entryCommentCount: 20194
        +postCount: 7
        +postCommentCount: 149
        +isAdult: false
        +customCss: null
        +lastActive: DateTime @1729581369 {#3023
          date: 2024-10-22 09:16:09.0 +02:00
        }
        +markedForDeletionAt: null
        +tags: null
        +moderators: Doctrine\ORM\PersistentCollection {#3027 …}
        +ownershipRequests: Doctrine\ORM\PersistentCollection {#3029 …}
        +moderatorRequests: Doctrine\ORM\PersistentCollection {#3031 …}
        +entries: Doctrine\ORM\PersistentCollection {#3033 …}
        +posts: Doctrine\ORM\PersistentCollection {#3035 …}
        +subscriptions: Doctrine\ORM\PersistentCollection {#3037 …}
        +bans: Doctrine\ORM\PersistentCollection {#3043 …}
        +reports: Doctrine\ORM\PersistentCollection {#3051 …}
        +badges: Doctrine\ORM\PersistentCollection {#3064 …}
        +logs: Doctrine\ORM\PersistentCollection {#3074 …}
        +awards: Doctrine\ORM\PersistentCollection {#3056 …}
        +categories: Doctrine\ORM\PersistentCollection {#3080 …}
        -id: 51
        +apId: "piracy@lemmy.dbzer0.com"
        +apProfileId: "https://lemmy.dbzer0.com/c/piracy"
        +apPublicUrl: "https://lemmy.dbzer0.com/c/piracy"
        +apFollowersUrl: "https://lemmy.dbzer0.com/c/piracy/followers"
        +apInboxUrl: "https://lemmy.dbzer0.com/inbox"
        +apDomain: "lemmy.dbzer0.com"
        +apPreferredUsername: "piracy"
        +apDiscoverable: true
        +apManuallyApprovesFollowers: null
        +privateKey: null
        +publicKey: null
        +apFetchedAt: DateTime @1708748229 {#3024
          date: 2024-02-24 05:17:09.0 +01:00
        }
        +apDeletedAt: null
        +apTimeoutAt: null
        +visibility: "visible             "
        +createdAt: DateTimeImmutable @1697197339 {#3025
          date: 2023-10-13 13:42:19.0 +02:00
        }
        +__isInitialized__: true
         …2
      }
      +image: Proxies\__CG__\App\Entity\Image {#1579 …}
      +domain: Proxies\__CG__\App\Entity\Domain {#1679 …}
      +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 {#1421
        date: 2024-02-10 10:33:02.0 +01:00
      }
      +ip: null
      +adaAmount: 0
      +tags: null
      +mentions: null
      +comments: Doctrine\ORM\PersistentCollection {#1650 …}
      +votes: Doctrine\ORM\PersistentCollection {#1652 …}
      +reports: Doctrine\ORM\PersistentCollection {#1651 …}
      +favourites: Doctrine\ORM\PersistentCollection {#1527 …}
      +notifications: Doctrine\ORM\PersistentCollection {#1560 …}
      +badges: Doctrine\ORM\PersistentCollection {#1558 …}
      +children: [
        3 => App\Entity\EntryComment {#1611}
        2 => App\Entity\EntryComment {#2467
          +user: App\Entity\User {#260}
          +entry: App\Entity\Entry {#1609}
          +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
          +image: null
          +parent: Proxies\__CG__\App\Entity\EntryComment {#2470 …}
          +root: Proxies\__CG__\App\Entity\EntryComment {#2470 …}
          +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 {#1731
            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 {#2455 …}
          +nested: Doctrine\ORM\PersistentCollection {#2471 …}
          +votes: Doctrine\ORM\PersistentCollection {#2363 …}
          +reports: Doctrine\ORM\PersistentCollection {#2377 …}
          +favourites: Doctrine\ORM\PersistentCollection {#2359 …}
          +notifications: Doctrine\ORM\PersistentCollection {#2364 …}
          -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 {#2469
            date: 2023-10-14 09:26:17.0 +02:00
          }
          +"title": 48009
        }
        1 => App\Entity\EntryComment {#2382
          +user: App\Entity\User {#260}
          +entry: App\Entity\Entry {#1609}
          +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
          +image: null
          +parent: Proxies\__CG__\App\Entity\EntryComment {#2385 …}
          +root: Proxies\__CG__\App\Entity\EntryComment {#2385 …}
          +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 {#2380
            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 {#2384 …}
          +nested: Doctrine\ORM\PersistentCollection {#2379 …}
          +votes: Doctrine\ORM\PersistentCollection {#2383 …}
          +reports: Doctrine\ORM\PersistentCollection {#1906 …}
          +favourites: Doctrine\ORM\PersistentCollection {#1708 …}
          +notifications: Doctrine\ORM\PersistentCollection {#1410 …}
          -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 {#2386
            date: 2023-10-14 15:04:09.0 +02:00
          }
          +"title": 48431
        }
        0 => App\Entity\EntryComment {#1407
          +user: App\Entity\User {#260}
          +entry: App\Entity\Entry {#1609}
          +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
          +image: null
          +parent: Proxies\__CG__\App\Entity\EntryComment {#1883 …}
          +root: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
          +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 {#1907
            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 {#2391 …}
          +nested: Doctrine\ORM\PersistentCollection {#2369 …}
          +votes: Doctrine\ORM\PersistentCollection {#2392 …}
          +reports: Doctrine\ORM\PersistentCollection {#2395 …}
          +favourites: Doctrine\ORM\PersistentCollection {#1384 …}
          +notifications: Doctrine\ORM\PersistentCollection {#1383 …}
          -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 {#1908
            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 {#1424
        date: 2023-10-14 01:14:01.0 +02:00
      }
    }
    +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
    +image: null
    +parent: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
    +root: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
    +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 {#1596
      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 {#2464 …}
    +nested: Doctrine\ORM\PersistentCollection {#1740 …}
    +votes: Doctrine\ORM\PersistentCollection {#1739 …}
    +reports: Doctrine\ORM\PersistentCollection {#1716 …}
    +favourites: Doctrine\ORM\PersistentCollection {#2461 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2447 …}
    -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 {#1555
      date: 2023-10-14 09:20:07.0 +02:00
    }
    +"title": 48003
  }
  "showEntryTitle" => false
  "dateAsUrl" => true
  "showMagazineName" => false
]
Attributes
[]
Component
App\Twig\Components\EntryCommentComponent {#3795
  +comment: App\Entity\EntryComment {#1611
    +user: App\Entity\User {#260
      +avatar: Proxies\__CG__\App\Entity\Image {#240 …}
      +cover: null
      +email: "danielquinn@lemmy.ca"
      +username: "@danielquinn@lemmy.ca"
      +roles: []
      +followersCount: 0
      +homepage: "front"
      +about: "Canadian software engineer living in Europe."
      +lastActive: DateTime @1727577650 {#273
        date: 2024-09-29 04:40:50.0 +02:00
      }
      +markedForDeletionAt: null
      +fields: null
      +oauthGithubId: null
      +oauthGoogleId: null
      +oauthFacebookId: null
      +oauthKeycloakId: null
      +hideAdult: true
      +showSubscribedUsers: true
      +showSubscribedMagazines: true
      +showSubscribedDomains: true
      +preferredLanguages: []
      +featuredMagazines: null
      +showProfileSubscriptions: false
      +showProfileFollowings: true
      +markNewComments: false
      +notifyOnNewEntry: false
      +notifyOnNewEntryReply: true
      +notifyOnNewEntryCommentReply: true
      +notifyOnNewPost: false
      +notifyOnNewPostReply: true
      +notifyOnNewPostCommentReply: true
      +addMentionsEntries: false
      +addMentionsPosts: true
      +isBanned: false
      +isVerified: false
      +isDeleted: false
      +isBot: false
      +spamProtection: true
      +customCss: null
      +ignoreMagazinesCustomCss: false
      +moderatorTokens: Doctrine\ORM\PersistentCollection {#231 …}
      +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#227 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#216 …}
      +entries: Doctrine\ORM\PersistentCollection {#174 …}
      +entryVotes: Doctrine\ORM\PersistentCollection {#146 …}
      +entryComments: Doctrine\ORM\PersistentCollection {#119 …}
      +entryCommentVotes: Doctrine\ORM\PersistentCollection {#89 …}
      +posts: Doctrine\ORM\PersistentCollection {#62 …}
      +postVotes: Doctrine\ORM\PersistentCollection {#77 …}
      +postComments: Doctrine\ORM\PersistentCollection {#2405 …}
      +postCommentVotes: Doctrine\ORM\PersistentCollection {#1607 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#1768 …}
      +subscribedDomains: Doctrine\ORM\PersistentCollection {#2445 …}
      +follows: Doctrine\ORM\PersistentCollection {#1849 …}
      +followers: Doctrine\ORM\PersistentCollection {#1810 …}
      +blocks: Doctrine\ORM\PersistentCollection {#1794 …}
      +blockers: Doctrine\ORM\PersistentCollection {#2415 …}
      +blockedMagazines: Doctrine\ORM\PersistentCollection {#2421 …}
      +blockedDomains: Doctrine\ORM\PersistentCollection {#2418 …}
      +reports: Doctrine\ORM\PersistentCollection {#2398 …}
      +favourites: Doctrine\ORM\PersistentCollection {#1918 …}
      +violations: Doctrine\ORM\PersistentCollection {#1834 …}
      +notifications: Doctrine\ORM\PersistentCollection {#1878 …}
      +awards: Doctrine\ORM\PersistentCollection {#1886 …}
      +subscribedCategories: Doctrine\ORM\PersistentCollection {#1899 …}
      +categories: Doctrine\ORM\PersistentCollection {#1954 …}
      -id: 57593
      -password: "$2y$13$/L0PmovM1H9sjmzmYDFDJ./Rjx6mWwKcBTi6vz7ViURzIQuLk35WK"
      -totpSecret: null
      -totpBackupCodes: []
      -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1978 …}
      +apId: "danielquinn@lemmy.ca"
      +apProfileId: "https://lemmy.ca/u/danielquinn"
      +apPublicUrl: "https://lemmy.ca/u/danielquinn"
      +apFollowersUrl: null
      +apInboxUrl: "https://lemmy.ca/inbox"
      +apDomain: "lemmy.ca"
      +apPreferredUsername: "danielquinn"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: false
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729106992 {#276
        date: 2024-10-16 21:29:52.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1697197941 {#272
        date: 2023-10-13 13:52:21.0 +02:00
      }
    }
    +entry: App\Entity\Entry {#1609
      +user: App\Entity\User {#260}
      +magazine: Proxies\__CG__\App\Entity\Magazine {#1584
        +icon: Proxies\__CG__\App\Entity\Image {#3026 …}
        +name: "piracy@lemmy.dbzer0.com"
        +title: "piracy"
        +description: """
          ##### ⚓ Community devoted to in-depth debate on topics concerning digital piracy, ethical problems, and legal advancements.\n
          \n
          ---\n
          \n
          ### Rules • [Full Version](https://rentry.co/piracy-rules)\n
          \n
          **1**. Posts must be related to the discussion of digital piracy\n
          \n
          **2**. Don’t request invites, trade, sell, or self-promote\n
          \n
          **3**. Don’t request or link to specific pirated titles, including DMs\n
          \n
          **4**. Don’t submit low-quality posts, be entitled, or harass others\n
          \n
          **5**. Don’t post questions already answered. READ THE [WIKI](https://lemmy.dbzer0.com/post/10901)\n
          \n
          ---\n
          \n
          [![](https://a.imagem.app/oZoQ1v.png)](https://lemmy.dbzer0.com/post/10901)\n
          ---------------------------------------------------------------------------\n
          \n
          ### Loot, Pillage, & Plunder\n
          \n
          - [📜 Megathread](https://rentry.co/megathread)\n
          - [🪶 FAQ](https://rentry.co/piracy-faq)\n
          - [🪶 ISP Complaints](https://rentry.co/piracy-isp-complaints)\n
          - [🪶 Rules](https://rentry.co/piracy-rules)\n
          \n
          ---\n
          \n
          💰 Please help cover server costs.\n
          \n
          [![Ko-Fi](https://lemmy.dbzer0.com/pictrs/image/4a2f073a-3dd8-492a-942d-72bd929c9f1d.png)](https://ko-fi.com/dbzer0)[![Liberapay](https://lemmy.dbzer0.com/pictrs/image/eec4659d-39be-4fc9-bc9e-66a96285ea2c.png)](https://liberapay.com/db0/)\n
          \n
          ---
          """
        +rules: null
        +subscriptionsCount: 1
        +entryCount: 866
        +entryCommentCount: 20194
        +postCount: 7
        +postCommentCount: 149
        +isAdult: false
        +customCss: null
        +lastActive: DateTime @1729581369 {#3023
          date: 2024-10-22 09:16:09.0 +02:00
        }
        +markedForDeletionAt: null
        +tags: null
        +moderators: Doctrine\ORM\PersistentCollection {#3027 …}
        +ownershipRequests: Doctrine\ORM\PersistentCollection {#3029 …}
        +moderatorRequests: Doctrine\ORM\PersistentCollection {#3031 …}
        +entries: Doctrine\ORM\PersistentCollection {#3033 …}
        +posts: Doctrine\ORM\PersistentCollection {#3035 …}
        +subscriptions: Doctrine\ORM\PersistentCollection {#3037 …}
        +bans: Doctrine\ORM\PersistentCollection {#3043 …}
        +reports: Doctrine\ORM\PersistentCollection {#3051 …}
        +badges: Doctrine\ORM\PersistentCollection {#3064 …}
        +logs: Doctrine\ORM\PersistentCollection {#3074 …}
        +awards: Doctrine\ORM\PersistentCollection {#3056 …}
        +categories: Doctrine\ORM\PersistentCollection {#3080 …}
        -id: 51
        +apId: "piracy@lemmy.dbzer0.com"
        +apProfileId: "https://lemmy.dbzer0.com/c/piracy"
        +apPublicUrl: "https://lemmy.dbzer0.com/c/piracy"
        +apFollowersUrl: "https://lemmy.dbzer0.com/c/piracy/followers"
        +apInboxUrl: "https://lemmy.dbzer0.com/inbox"
        +apDomain: "lemmy.dbzer0.com"
        +apPreferredUsername: "piracy"
        +apDiscoverable: true
        +apManuallyApprovesFollowers: null
        +privateKey: null
        +publicKey: null
        +apFetchedAt: DateTime @1708748229 {#3024
          date: 2024-02-24 05:17:09.0 +01:00
        }
        +apDeletedAt: null
        +apTimeoutAt: null
        +visibility: "visible             "
        +createdAt: DateTimeImmutable @1697197339 {#3025
          date: 2023-10-13 13:42:19.0 +02:00
        }
        +__isInitialized__: true
         …2
      }
      +image: Proxies\__CG__\App\Entity\Image {#1579 …}
      +domain: Proxies\__CG__\App\Entity\Domain {#1679 …}
      +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 {#1421
        date: 2024-02-10 10:33:02.0 +01:00
      }
      +ip: null
      +adaAmount: 0
      +tags: null
      +mentions: null
      +comments: Doctrine\ORM\PersistentCollection {#1650 …}
      +votes: Doctrine\ORM\PersistentCollection {#1652 …}
      +reports: Doctrine\ORM\PersistentCollection {#1651 …}
      +favourites: Doctrine\ORM\PersistentCollection {#1527 …}
      +notifications: Doctrine\ORM\PersistentCollection {#1560 …}
      +badges: Doctrine\ORM\PersistentCollection {#1558 …}
      +children: [
        3 => App\Entity\EntryComment {#1611}
        2 => App\Entity\EntryComment {#2467
          +user: App\Entity\User {#260}
          +entry: App\Entity\Entry {#1609}
          +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
          +image: null
          +parent: Proxies\__CG__\App\Entity\EntryComment {#2470 …}
          +root: Proxies\__CG__\App\Entity\EntryComment {#2470 …}
          +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 {#1731
            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 {#2455 …}
          +nested: Doctrine\ORM\PersistentCollection {#2471 …}
          +votes: Doctrine\ORM\PersistentCollection {#2363 …}
          +reports: Doctrine\ORM\PersistentCollection {#2377 …}
          +favourites: Doctrine\ORM\PersistentCollection {#2359 …}
          +notifications: Doctrine\ORM\PersistentCollection {#2364 …}
          -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 {#2469
            date: 2023-10-14 09:26:17.0 +02:00
          }
          +"title": 48009
        }
        1 => App\Entity\EntryComment {#2382
          +user: App\Entity\User {#260}
          +entry: App\Entity\Entry {#1609}
          +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
          +image: null
          +parent: Proxies\__CG__\App\Entity\EntryComment {#2385 …}
          +root: Proxies\__CG__\App\Entity\EntryComment {#2385 …}
          +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 {#2380
            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 {#2384 …}
          +nested: Doctrine\ORM\PersistentCollection {#2379 …}
          +votes: Doctrine\ORM\PersistentCollection {#2383 …}
          +reports: Doctrine\ORM\PersistentCollection {#1906 …}
          +favourites: Doctrine\ORM\PersistentCollection {#1708 …}
          +notifications: Doctrine\ORM\PersistentCollection {#1410 …}
          -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 {#2386
            date: 2023-10-14 15:04:09.0 +02:00
          }
          +"title": 48431
        }
        0 => App\Entity\EntryComment {#1407
          +user: App\Entity\User {#260}
          +entry: App\Entity\Entry {#1609}
          +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
          +image: null
          +parent: Proxies\__CG__\App\Entity\EntryComment {#1883 …}
          +root: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
          +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 {#1907
            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 {#2391 …}
          +nested: Doctrine\ORM\PersistentCollection {#2369 …}
          +votes: Doctrine\ORM\PersistentCollection {#2392 …}
          +reports: Doctrine\ORM\PersistentCollection {#2395 …}
          +favourites: Doctrine\ORM\PersistentCollection {#1384 …}
          +notifications: Doctrine\ORM\PersistentCollection {#1383 …}
          -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 {#1908
            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 {#1424
        date: 2023-10-14 01:14:01.0 +02:00
      }
    }
    +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
    +image: null
    +parent: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
    +root: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
    +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 {#1596
      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 {#2464 …}
    +nested: Doctrine\ORM\PersistentCollection {#1740 …}
    +votes: Doctrine\ORM\PersistentCollection {#1739 …}
    +reports: Doctrine\ORM\PersistentCollection {#1716 …}
    +favourites: Doctrine\ORM\PersistentCollection {#2461 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2447 …}
    -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 {#1555
      date: 2023-10-14 09:20:07.0 +02:00
    }
    +"title": 48003
  }
  +showMagazineName: false
  +showEntryTitle: false
  +showNested: false
  +level: 1
  +canSeeTrash: false
  +dateAsUrl: true
  -requestStack: Symfony\Component\HttpFoundation\RequestStack {#1328 …}
  -authorizationChecker: Symfony\Component\Security\Core\Authorization\AuthorizationChecker {#931 …}
}
user_inline App\Twig\Components\UserInlineComponent 14.0 MiB 0.13 ms
Input props
[
  "user" => App\Entity\User {#260
    +avatar: Proxies\__CG__\App\Entity\Image {#240 …}
    +cover: null
    +email: "danielquinn@lemmy.ca"
    +username: "@danielquinn@lemmy.ca"
    +roles: []
    +followersCount: 0
    +homepage: "front"
    +about: "Canadian software engineer living in Europe."
    +lastActive: DateTime @1727577650 {#273
      date: 2024-09-29 04:40:50.0 +02:00
    }
    +markedForDeletionAt: null
    +fields: null
    +oauthGithubId: null
    +oauthGoogleId: null
    +oauthFacebookId: null
    +oauthKeycloakId: null
    +hideAdult: true
    +showSubscribedUsers: true
    +showSubscribedMagazines: true
    +showSubscribedDomains: true
    +preferredLanguages: []
    +featuredMagazines: null
    +showProfileSubscriptions: false
    +showProfileFollowings: true
    +markNewComments: false
    +notifyOnNewEntry: false
    +notifyOnNewEntryReply: true
    +notifyOnNewEntryCommentReply: true
    +notifyOnNewPost: false
    +notifyOnNewPostReply: true
    +notifyOnNewPostCommentReply: true
    +addMentionsEntries: false
    +addMentionsPosts: true
    +isBanned: false
    +isVerified: false
    +isDeleted: false
    +isBot: false
    +spamProtection: true
    +customCss: null
    +ignoreMagazinesCustomCss: false
    +moderatorTokens: Doctrine\ORM\PersistentCollection {#231 …}
    +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#227 …}
    +moderatorRequests: Doctrine\ORM\PersistentCollection {#216 …}
    +entries: Doctrine\ORM\PersistentCollection {#174 …}
    +entryVotes: Doctrine\ORM\PersistentCollection {#146 …}
    +entryComments: Doctrine\ORM\PersistentCollection {#119 …}
    +entryCommentVotes: Doctrine\ORM\PersistentCollection {#89 …}
    +posts: Doctrine\ORM\PersistentCollection {#62 …}
    +postVotes: Doctrine\ORM\PersistentCollection {#77 …}
    +postComments: Doctrine\ORM\PersistentCollection {#2405 …}
    +postCommentVotes: Doctrine\ORM\PersistentCollection {#1607 …}
    +subscriptions: Doctrine\ORM\PersistentCollection {#1768 …}
    +subscribedDomains: Doctrine\ORM\PersistentCollection {#2445 …}
    +follows: Doctrine\ORM\PersistentCollection {#1849 …}
    +followers: Doctrine\ORM\PersistentCollection {#1810 …}
    +blocks: Doctrine\ORM\PersistentCollection {#1794 …}
    +blockers: Doctrine\ORM\PersistentCollection {#2415 …}
    +blockedMagazines: Doctrine\ORM\PersistentCollection {#2421 …}
    +blockedDomains: Doctrine\ORM\PersistentCollection {#2418 …}
    +reports: Doctrine\ORM\PersistentCollection {#2398 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1918 …}
    +violations: Doctrine\ORM\PersistentCollection {#1834 …}
    +notifications: Doctrine\ORM\PersistentCollection {#1878 …}
    +awards: Doctrine\ORM\PersistentCollection {#1886 …}
    +subscribedCategories: Doctrine\ORM\PersistentCollection {#1899 …}
    +categories: Doctrine\ORM\PersistentCollection {#1954 …}
    -id: 57593
    -password: "$2y$13$/L0PmovM1H9sjmzmYDFDJ./Rjx6mWwKcBTi6vz7ViURzIQuLk35WK"
    -totpSecret: null
    -totpBackupCodes: []
    -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1978 …}
    +apId: "danielquinn@lemmy.ca"
    +apProfileId: "https://lemmy.ca/u/danielquinn"
    +apPublicUrl: "https://lemmy.ca/u/danielquinn"
    +apFollowersUrl: null
    +apInboxUrl: "https://lemmy.ca/inbox"
    +apDomain: "lemmy.ca"
    +apPreferredUsername: "danielquinn"
    +apDiscoverable: true
    +apManuallyApprovesFollowers: false
    +privateKey: null
    +publicKey: null
    +apFetchedAt: DateTime @1729106992 {#276
      date: 2024-10-16 21:29:52.0 +02:00
    }
    +apDeletedAt: null
    +apTimeoutAt: null
    +visibility: "visible             "
    +createdAt: DateTimeImmutable @1697197941 {#272
      date: 2023-10-13 13:52:21.0 +02:00
    }
  }
  "showAvatar" => false
]
Attributes
[]
Component
App\Twig\Components\UserInlineComponent {#3854
  +user: App\Entity\User {#260
    +avatar: Proxies\__CG__\App\Entity\Image {#240 …}
    +cover: null
    +email: "danielquinn@lemmy.ca"
    +username: "@danielquinn@lemmy.ca"
    +roles: []
    +followersCount: 0
    +homepage: "front"
    +about: "Canadian software engineer living in Europe."
    +lastActive: DateTime @1727577650 {#273
      date: 2024-09-29 04:40:50.0 +02:00
    }
    +markedForDeletionAt: null
    +fields: null
    +oauthGithubId: null
    +oauthGoogleId: null
    +oauthFacebookId: null
    +oauthKeycloakId: null
    +hideAdult: true
    +showSubscribedUsers: true
    +showSubscribedMagazines: true
    +showSubscribedDomains: true
    +preferredLanguages: []
    +featuredMagazines: null
    +showProfileSubscriptions: false
    +showProfileFollowings: true
    +markNewComments: false
    +notifyOnNewEntry: false
    +notifyOnNewEntryReply: true
    +notifyOnNewEntryCommentReply: true
    +notifyOnNewPost: false
    +notifyOnNewPostReply: true
    +notifyOnNewPostCommentReply: true
    +addMentionsEntries: false
    +addMentionsPosts: true
    +isBanned: false
    +isVerified: false
    +isDeleted: false
    +isBot: false
    +spamProtection: true
    +customCss: null
    +ignoreMagazinesCustomCss: false
    +moderatorTokens: Doctrine\ORM\PersistentCollection {#231 …}
    +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#227 …}
    +moderatorRequests: Doctrine\ORM\PersistentCollection {#216 …}
    +entries: Doctrine\ORM\PersistentCollection {#174 …}
    +entryVotes: Doctrine\ORM\PersistentCollection {#146 …}
    +entryComments: Doctrine\ORM\PersistentCollection {#119 …}
    +entryCommentVotes: Doctrine\ORM\PersistentCollection {#89 …}
    +posts: Doctrine\ORM\PersistentCollection {#62 …}
    +postVotes: Doctrine\ORM\PersistentCollection {#77 …}
    +postComments: Doctrine\ORM\PersistentCollection {#2405 …}
    +postCommentVotes: Doctrine\ORM\PersistentCollection {#1607 …}
    +subscriptions: Doctrine\ORM\PersistentCollection {#1768 …}
    +subscribedDomains: Doctrine\ORM\PersistentCollection {#2445 …}
    +follows: Doctrine\ORM\PersistentCollection {#1849 …}
    +followers: Doctrine\ORM\PersistentCollection {#1810 …}
    +blocks: Doctrine\ORM\PersistentCollection {#1794 …}
    +blockers: Doctrine\ORM\PersistentCollection {#2415 …}
    +blockedMagazines: Doctrine\ORM\PersistentCollection {#2421 …}
    +blockedDomains: Doctrine\ORM\PersistentCollection {#2418 …}
    +reports: Doctrine\ORM\PersistentCollection {#2398 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1918 …}
    +violations: Doctrine\ORM\PersistentCollection {#1834 …}
    +notifications: Doctrine\ORM\PersistentCollection {#1878 …}
    +awards: Doctrine\ORM\PersistentCollection {#1886 …}
    +subscribedCategories: Doctrine\ORM\PersistentCollection {#1899 …}
    +categories: Doctrine\ORM\PersistentCollection {#1954 …}
    -id: 57593
    -password: "$2y$13$/L0PmovM1H9sjmzmYDFDJ./Rjx6mWwKcBTi6vz7ViURzIQuLk35WK"
    -totpSecret: null
    -totpBackupCodes: []
    -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1978 …}
    +apId: "danielquinn@lemmy.ca"
    +apProfileId: "https://lemmy.ca/u/danielquinn"
    +apPublicUrl: "https://lemmy.ca/u/danielquinn"
    +apFollowersUrl: null
    +apInboxUrl: "https://lemmy.ca/inbox"
    +apDomain: "lemmy.ca"
    +apPreferredUsername: "danielquinn"
    +apDiscoverable: true
    +apManuallyApprovesFollowers: false
    +privateKey: null
    +publicKey: null
    +apFetchedAt: DateTime @1729106992 {#276
      date: 2024-10-16 21:29:52.0 +02:00
    }
    +apDeletedAt: null
    +apTimeoutAt: null
    +visibility: "visible             "
    +createdAt: DateTimeImmutable @1697197941 {#272
      date: 2023-10-13 13:52:21.0 +02:00
    }
  }
  +showAvatar: false
}
date App\Twig\Components\DateComponent 14.0 MiB 0.14 ms
Input props
[
  "date" => DateTimeImmutable @1697268007 {#1555
    date: 2023-10-14 09:20:07.0 +02:00
  }
]
Attributes
[]
Component
App\Twig\Components\DateComponent {#3910
  +date: DateTimeImmutable @1697268007 {#1555
    date: 2023-10-14 09:20:07.0 +02:00
  }
}
date_edited App\Twig\Components\DateEditedComponent 14.0 MiB 0.09 ms
Input props
[
  "createdAt" => DateTimeImmutable @1697268007 {#1555
    date: 2023-10-14 09:20:07.0 +02:00
  }
  "editedAt" => null
]
Attributes
[]
Component
App\Twig\Components\DateEditedComponent {#3964
  +createdAt: DateTimeImmutable @1697268007 {#1555
    date: 2023-10-14 09:20:07.0 +02:00
  }
  +editedAt: null
}
user_avatar App\Twig\Components\UserAvatarComponent 14.0 MiB 0.27 ms
Input props
[
  "user" => App\Entity\User {#260
    +avatar: Proxies\__CG__\App\Entity\Image {#240 …}
    +cover: null
    +email: "danielquinn@lemmy.ca"
    +username: "@danielquinn@lemmy.ca"
    +roles: []
    +followersCount: 0
    +homepage: "front"
    +about: "Canadian software engineer living in Europe."
    +lastActive: DateTime @1727577650 {#273
      date: 2024-09-29 04:40:50.0 +02:00
    }
    +markedForDeletionAt: null
    +fields: null
    +oauthGithubId: null
    +oauthGoogleId: null
    +oauthFacebookId: null
    +oauthKeycloakId: null
    +hideAdult: true
    +showSubscribedUsers: true
    +showSubscribedMagazines: true
    +showSubscribedDomains: true
    +preferredLanguages: []
    +featuredMagazines: null
    +showProfileSubscriptions: false
    +showProfileFollowings: true
    +markNewComments: false
    +notifyOnNewEntry: false
    +notifyOnNewEntryReply: true
    +notifyOnNewEntryCommentReply: true
    +notifyOnNewPost: false
    +notifyOnNewPostReply: true
    +notifyOnNewPostCommentReply: true
    +addMentionsEntries: false
    +addMentionsPosts: true
    +isBanned: false
    +isVerified: false
    +isDeleted: false
    +isBot: false
    +spamProtection: true
    +customCss: null
    +ignoreMagazinesCustomCss: false
    +moderatorTokens: Doctrine\ORM\PersistentCollection {#231 …}
    +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#227 …}
    +moderatorRequests: Doctrine\ORM\PersistentCollection {#216 …}
    +entries: Doctrine\ORM\PersistentCollection {#174 …}
    +entryVotes: Doctrine\ORM\PersistentCollection {#146 …}
    +entryComments: Doctrine\ORM\PersistentCollection {#119 …}
    +entryCommentVotes: Doctrine\ORM\PersistentCollection {#89 …}
    +posts: Doctrine\ORM\PersistentCollection {#62 …}
    +postVotes: Doctrine\ORM\PersistentCollection {#77 …}
    +postComments: Doctrine\ORM\PersistentCollection {#2405 …}
    +postCommentVotes: Doctrine\ORM\PersistentCollection {#1607 …}
    +subscriptions: Doctrine\ORM\PersistentCollection {#1768 …}
    +subscribedDomains: Doctrine\ORM\PersistentCollection {#2445 …}
    +follows: Doctrine\ORM\PersistentCollection {#1849 …}
    +followers: Doctrine\ORM\PersistentCollection {#1810 …}
    +blocks: Doctrine\ORM\PersistentCollection {#1794 …}
    +blockers: Doctrine\ORM\PersistentCollection {#2415 …}
    +blockedMagazines: Doctrine\ORM\PersistentCollection {#2421 …}
    +blockedDomains: Doctrine\ORM\PersistentCollection {#2418 …}
    +reports: Doctrine\ORM\PersistentCollection {#2398 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1918 …}
    +violations: Doctrine\ORM\PersistentCollection {#1834 …}
    +notifications: Doctrine\ORM\PersistentCollection {#1878 …}
    +awards: Doctrine\ORM\PersistentCollection {#1886 …}
    +subscribedCategories: Doctrine\ORM\PersistentCollection {#1899 …}
    +categories: Doctrine\ORM\PersistentCollection {#1954 …}
    -id: 57593
    -password: "$2y$13$/L0PmovM1H9sjmzmYDFDJ./Rjx6mWwKcBTi6vz7ViURzIQuLk35WK"
    -totpSecret: null
    -totpBackupCodes: []
    -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1978 …}
    +apId: "danielquinn@lemmy.ca"
    +apProfileId: "https://lemmy.ca/u/danielquinn"
    +apPublicUrl: "https://lemmy.ca/u/danielquinn"
    +apFollowersUrl: null
    +apInboxUrl: "https://lemmy.ca/inbox"
    +apDomain: "lemmy.ca"
    +apPreferredUsername: "danielquinn"
    +apDiscoverable: true
    +apManuallyApprovesFollowers: false
    +privateKey: null
    +publicKey: null
    +apFetchedAt: DateTime @1729106992 {#276
      date: 2024-10-16 21:29:52.0 +02:00
    }
    +apDeletedAt: null
    +apTimeoutAt: null
    +visibility: "visible             "
    +createdAt: DateTimeImmutable @1697197941 {#272
      date: 2023-10-13 13:52:21.0 +02:00
    }
  }
  "width" => 40
  "height" => 40
  "asLink" => true
]
Attributes
[]
Component
App\Twig\Components\UserAvatarComponent {#4018
  +width: 40
  +height: 40
  +user: App\Entity\User {#260
    +avatar: Proxies\__CG__\App\Entity\Image {#240 …}
    +cover: null
    +email: "danielquinn@lemmy.ca"
    +username: "@danielquinn@lemmy.ca"
    +roles: []
    +followersCount: 0
    +homepage: "front"
    +about: "Canadian software engineer living in Europe."
    +lastActive: DateTime @1727577650 {#273
      date: 2024-09-29 04:40:50.0 +02:00
    }
    +markedForDeletionAt: null
    +fields: null
    +oauthGithubId: null
    +oauthGoogleId: null
    +oauthFacebookId: null
    +oauthKeycloakId: null
    +hideAdult: true
    +showSubscribedUsers: true
    +showSubscribedMagazines: true
    +showSubscribedDomains: true
    +preferredLanguages: []
    +featuredMagazines: null
    +showProfileSubscriptions: false
    +showProfileFollowings: true
    +markNewComments: false
    +notifyOnNewEntry: false
    +notifyOnNewEntryReply: true
    +notifyOnNewEntryCommentReply: true
    +notifyOnNewPost: false
    +notifyOnNewPostReply: true
    +notifyOnNewPostCommentReply: true
    +addMentionsEntries: false
    +addMentionsPosts: true
    +isBanned: false
    +isVerified: false
    +isDeleted: false
    +isBot: false
    +spamProtection: true
    +customCss: null
    +ignoreMagazinesCustomCss: false
    +moderatorTokens: Doctrine\ORM\PersistentCollection {#231 …}
    +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#227 …}
    +moderatorRequests: Doctrine\ORM\PersistentCollection {#216 …}
    +entries: Doctrine\ORM\PersistentCollection {#174 …}
    +entryVotes: Doctrine\ORM\PersistentCollection {#146 …}
    +entryComments: Doctrine\ORM\PersistentCollection {#119 …}
    +entryCommentVotes: Doctrine\ORM\PersistentCollection {#89 …}
    +posts: Doctrine\ORM\PersistentCollection {#62 …}
    +postVotes: Doctrine\ORM\PersistentCollection {#77 …}
    +postComments: Doctrine\ORM\PersistentCollection {#2405 …}
    +postCommentVotes: Doctrine\ORM\PersistentCollection {#1607 …}
    +subscriptions: Doctrine\ORM\PersistentCollection {#1768 …}
    +subscribedDomains: Doctrine\ORM\PersistentCollection {#2445 …}
    +follows: Doctrine\ORM\PersistentCollection {#1849 …}
    +followers: Doctrine\ORM\PersistentCollection {#1810 …}
    +blocks: Doctrine\ORM\PersistentCollection {#1794 …}
    +blockers: Doctrine\ORM\PersistentCollection {#2415 …}
    +blockedMagazines: Doctrine\ORM\PersistentCollection {#2421 …}
    +blockedDomains: Doctrine\ORM\PersistentCollection {#2418 …}
    +reports: Doctrine\ORM\PersistentCollection {#2398 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1918 …}
    +violations: Doctrine\ORM\PersistentCollection {#1834 …}
    +notifications: Doctrine\ORM\PersistentCollection {#1878 …}
    +awards: Doctrine\ORM\PersistentCollection {#1886 …}
    +subscribedCategories: Doctrine\ORM\PersistentCollection {#1899 …}
    +categories: Doctrine\ORM\PersistentCollection {#1954 …}
    -id: 57593
    -password: "$2y$13$/L0PmovM1H9sjmzmYDFDJ./Rjx6mWwKcBTi6vz7ViURzIQuLk35WK"
    -totpSecret: null
    -totpBackupCodes: []
    -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1978 …}
    +apId: "danielquinn@lemmy.ca"
    +apProfileId: "https://lemmy.ca/u/danielquinn"
    +apPublicUrl: "https://lemmy.ca/u/danielquinn"
    +apFollowersUrl: null
    +apInboxUrl: "https://lemmy.ca/inbox"
    +apDomain: "lemmy.ca"
    +apPreferredUsername: "danielquinn"
    +apDiscoverable: true
    +apManuallyApprovesFollowers: false
    +privateKey: null
    +publicKey: null
    +apFetchedAt: DateTime @1729106992 {#276
      date: 2024-10-16 21:29:52.0 +02:00
    }
    +apDeletedAt: null
    +apTimeoutAt: null
    +visibility: "visible             "
    +createdAt: DateTimeImmutable @1697197941 {#272
      date: 2023-10-13 13:52:21.0 +02:00
    }
  }
  +asLink: true
}
vote App\Twig\Components\VoteComponent 14.0 MiB 0.53 ms
Input props
[
  "subject" => App\Entity\EntryComment {#1611
    +user: App\Entity\User {#260
      +avatar: Proxies\__CG__\App\Entity\Image {#240 …}
      +cover: null
      +email: "danielquinn@lemmy.ca"
      +username: "@danielquinn@lemmy.ca"
      +roles: []
      +followersCount: 0
      +homepage: "front"
      +about: "Canadian software engineer living in Europe."
      +lastActive: DateTime @1727577650 {#273
        date: 2024-09-29 04:40:50.0 +02:00
      }
      +markedForDeletionAt: null
      +fields: null
      +oauthGithubId: null
      +oauthGoogleId: null
      +oauthFacebookId: null
      +oauthKeycloakId: null
      +hideAdult: true
      +showSubscribedUsers: true
      +showSubscribedMagazines: true
      +showSubscribedDomains: true
      +preferredLanguages: []
      +featuredMagazines: null
      +showProfileSubscriptions: false
      +showProfileFollowings: true
      +markNewComments: false
      +notifyOnNewEntry: false
      +notifyOnNewEntryReply: true
      +notifyOnNewEntryCommentReply: true
      +notifyOnNewPost: false
      +notifyOnNewPostReply: true
      +notifyOnNewPostCommentReply: true
      +addMentionsEntries: false
      +addMentionsPosts: true
      +isBanned: false
      +isVerified: false
      +isDeleted: false
      +isBot: false
      +spamProtection: true
      +customCss: null
      +ignoreMagazinesCustomCss: false
      +moderatorTokens: Doctrine\ORM\PersistentCollection {#231 …}
      +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#227 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#216 …}
      +entries: Doctrine\ORM\PersistentCollection {#174 …}
      +entryVotes: Doctrine\ORM\PersistentCollection {#146 …}
      +entryComments: Doctrine\ORM\PersistentCollection {#119 …}
      +entryCommentVotes: Doctrine\ORM\PersistentCollection {#89 …}
      +posts: Doctrine\ORM\PersistentCollection {#62 …}
      +postVotes: Doctrine\ORM\PersistentCollection {#77 …}
      +postComments: Doctrine\ORM\PersistentCollection {#2405 …}
      +postCommentVotes: Doctrine\ORM\PersistentCollection {#1607 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#1768 …}
      +subscribedDomains: Doctrine\ORM\PersistentCollection {#2445 …}
      +follows: Doctrine\ORM\PersistentCollection {#1849 …}
      +followers: Doctrine\ORM\PersistentCollection {#1810 …}
      +blocks: Doctrine\ORM\PersistentCollection {#1794 …}
      +blockers: Doctrine\ORM\PersistentCollection {#2415 …}
      +blockedMagazines: Doctrine\ORM\PersistentCollection {#2421 …}
      +blockedDomains: Doctrine\ORM\PersistentCollection {#2418 …}
      +reports: Doctrine\ORM\PersistentCollection {#2398 …}
      +favourites: Doctrine\ORM\PersistentCollection {#1918 …}
      +violations: Doctrine\ORM\PersistentCollection {#1834 …}
      +notifications: Doctrine\ORM\PersistentCollection {#1878 …}
      +awards: Doctrine\ORM\PersistentCollection {#1886 …}
      +subscribedCategories: Doctrine\ORM\PersistentCollection {#1899 …}
      +categories: Doctrine\ORM\PersistentCollection {#1954 …}
      -id: 57593
      -password: "$2y$13$/L0PmovM1H9sjmzmYDFDJ./Rjx6mWwKcBTi6vz7ViURzIQuLk35WK"
      -totpSecret: null
      -totpBackupCodes: []
      -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1978 …}
      +apId: "danielquinn@lemmy.ca"
      +apProfileId: "https://lemmy.ca/u/danielquinn"
      +apPublicUrl: "https://lemmy.ca/u/danielquinn"
      +apFollowersUrl: null
      +apInboxUrl: "https://lemmy.ca/inbox"
      +apDomain: "lemmy.ca"
      +apPreferredUsername: "danielquinn"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: false
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729106992 {#276
        date: 2024-10-16 21:29:52.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1697197941 {#272
        date: 2023-10-13 13:52:21.0 +02:00
      }
    }
    +entry: App\Entity\Entry {#1609
      +user: App\Entity\User {#260}
      +magazine: Proxies\__CG__\App\Entity\Magazine {#1584
        +icon: Proxies\__CG__\App\Entity\Image {#3026 …}
        +name: "piracy@lemmy.dbzer0.com"
        +title: "piracy"
        +description: """
          ##### ⚓ Community devoted to in-depth debate on topics concerning digital piracy, ethical problems, and legal advancements.\n
          \n
          ---\n
          \n
          ### Rules • [Full Version](https://rentry.co/piracy-rules)\n
          \n
          **1**. Posts must be related to the discussion of digital piracy\n
          \n
          **2**. Don’t request invites, trade, sell, or self-promote\n
          \n
          **3**. Don’t request or link to specific pirated titles, including DMs\n
          \n
          **4**. Don’t submit low-quality posts, be entitled, or harass others\n
          \n
          **5**. Don’t post questions already answered. READ THE [WIKI](https://lemmy.dbzer0.com/post/10901)\n
          \n
          ---\n
          \n
          [![](https://a.imagem.app/oZoQ1v.png)](https://lemmy.dbzer0.com/post/10901)\n
          ---------------------------------------------------------------------------\n
          \n
          ### Loot, Pillage, & Plunder\n
          \n
          - [📜 Megathread](https://rentry.co/megathread)\n
          - [🪶 FAQ](https://rentry.co/piracy-faq)\n
          - [🪶 ISP Complaints](https://rentry.co/piracy-isp-complaints)\n
          - [🪶 Rules](https://rentry.co/piracy-rules)\n
          \n
          ---\n
          \n
          💰 Please help cover server costs.\n
          \n
          [![Ko-Fi](https://lemmy.dbzer0.com/pictrs/image/4a2f073a-3dd8-492a-942d-72bd929c9f1d.png)](https://ko-fi.com/dbzer0)[![Liberapay](https://lemmy.dbzer0.com/pictrs/image/eec4659d-39be-4fc9-bc9e-66a96285ea2c.png)](https://liberapay.com/db0/)\n
          \n
          ---
          """
        +rules: null
        +subscriptionsCount: 1
        +entryCount: 866
        +entryCommentCount: 20194
        +postCount: 7
        +postCommentCount: 149
        +isAdult: false
        +customCss: null
        +lastActive: DateTime @1729581369 {#3023
          date: 2024-10-22 09:16:09.0 +02:00
        }
        +markedForDeletionAt: null
        +tags: null
        +moderators: Doctrine\ORM\PersistentCollection {#3027 …}
        +ownershipRequests: Doctrine\ORM\PersistentCollection {#3029 …}
        +moderatorRequests: Doctrine\ORM\PersistentCollection {#3031 …}
        +entries: Doctrine\ORM\PersistentCollection {#3033 …}
        +posts: Doctrine\ORM\PersistentCollection {#3035 …}
        +subscriptions: Doctrine\ORM\PersistentCollection {#3037 …}
        +bans: Doctrine\ORM\PersistentCollection {#3043 …}
        +reports: Doctrine\ORM\PersistentCollection {#3051 …}
        +badges: Doctrine\ORM\PersistentCollection {#3064 …}
        +logs: Doctrine\ORM\PersistentCollection {#3074 …}
        +awards: Doctrine\ORM\PersistentCollection {#3056 …}
        +categories: Doctrine\ORM\PersistentCollection {#3080 …}
        -id: 51
        +apId: "piracy@lemmy.dbzer0.com"
        +apProfileId: "https://lemmy.dbzer0.com/c/piracy"
        +apPublicUrl: "https://lemmy.dbzer0.com/c/piracy"
        +apFollowersUrl: "https://lemmy.dbzer0.com/c/piracy/followers"
        +apInboxUrl: "https://lemmy.dbzer0.com/inbox"
        +apDomain: "lemmy.dbzer0.com"
        +apPreferredUsername: "piracy"
        +apDiscoverable: true
        +apManuallyApprovesFollowers: null
        +privateKey: null
        +publicKey: null
        +apFetchedAt: DateTime @1708748229 {#3024
          date: 2024-02-24 05:17:09.0 +01:00
        }
        +apDeletedAt: null
        +apTimeoutAt: null
        +visibility: "visible             "
        +createdAt: DateTimeImmutable @1697197339 {#3025
          date: 2023-10-13 13:42:19.0 +02:00
        }
        +__isInitialized__: true
         …2
      }
      +image: Proxies\__CG__\App\Entity\Image {#1579 …}
      +domain: Proxies\__CG__\App\Entity\Domain {#1679 …}
      +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 {#1421
        date: 2024-02-10 10:33:02.0 +01:00
      }
      +ip: null
      +adaAmount: 0
      +tags: null
      +mentions: null
      +comments: Doctrine\ORM\PersistentCollection {#1650 …}
      +votes: Doctrine\ORM\PersistentCollection {#1652 …}
      +reports: Doctrine\ORM\PersistentCollection {#1651 …}
      +favourites: Doctrine\ORM\PersistentCollection {#1527 …}
      +notifications: Doctrine\ORM\PersistentCollection {#1560 …}
      +badges: Doctrine\ORM\PersistentCollection {#1558 …}
      +children: [
        3 => App\Entity\EntryComment {#1611}
        2 => App\Entity\EntryComment {#2467
          +user: App\Entity\User {#260}
          +entry: App\Entity\Entry {#1609}
          +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
          +image: null
          +parent: Proxies\__CG__\App\Entity\EntryComment {#2470 …}
          +root: Proxies\__CG__\App\Entity\EntryComment {#2470 …}
          +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 {#1731
            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 {#2455 …}
          +nested: Doctrine\ORM\PersistentCollection {#2471 …}
          +votes: Doctrine\ORM\PersistentCollection {#2363 …}
          +reports: Doctrine\ORM\PersistentCollection {#2377 …}
          +favourites: Doctrine\ORM\PersistentCollection {#2359 …}
          +notifications: Doctrine\ORM\PersistentCollection {#2364 …}
          -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 {#2469
            date: 2023-10-14 09:26:17.0 +02:00
          }
          +"title": 48009
        }
        1 => App\Entity\EntryComment {#2382
          +user: App\Entity\User {#260}
          +entry: App\Entity\Entry {#1609}
          +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
          +image: null
          +parent: Proxies\__CG__\App\Entity\EntryComment {#2385 …}
          +root: Proxies\__CG__\App\Entity\EntryComment {#2385 …}
          +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 {#2380
            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 {#2384 …}
          +nested: Doctrine\ORM\PersistentCollection {#2379 …}
          +votes: Doctrine\ORM\PersistentCollection {#2383 …}
          +reports: Doctrine\ORM\PersistentCollection {#1906 …}
          +favourites: Doctrine\ORM\PersistentCollection {#1708 …}
          +notifications: Doctrine\ORM\PersistentCollection {#1410 …}
          -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 {#2386
            date: 2023-10-14 15:04:09.0 +02:00
          }
          +"title": 48431
        }
        0 => App\Entity\EntryComment {#1407
          +user: App\Entity\User {#260}
          +entry: App\Entity\Entry {#1609}
          +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
          +image: null
          +parent: Proxies\__CG__\App\Entity\EntryComment {#1883 …}
          +root: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
          +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 {#1907
            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 {#2391 …}
          +nested: Doctrine\ORM\PersistentCollection {#2369 …}
          +votes: Doctrine\ORM\PersistentCollection {#2392 …}
          +reports: Doctrine\ORM\PersistentCollection {#2395 …}
          +favourites: Doctrine\ORM\PersistentCollection {#1384 …}
          +notifications: Doctrine\ORM\PersistentCollection {#1383 …}
          -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 {#1908
            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 {#1424
        date: 2023-10-14 01:14:01.0 +02:00
      }
    }
    +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
    +image: null
    +parent: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
    +root: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
    +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 {#1596
      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 {#2464 …}
    +nested: Doctrine\ORM\PersistentCollection {#1740 …}
    +votes: Doctrine\ORM\PersistentCollection {#1739 …}
    +reports: Doctrine\ORM\PersistentCollection {#1716 …}
    +favourites: Doctrine\ORM\PersistentCollection {#2461 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2447 …}
    -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 {#1555
      date: 2023-10-14 09:20:07.0 +02:00
    }
    +"title": 48003
  }
]
Attributes
[]
Component
App\Twig\Components\VoteComponent {#4091
  +subject: App\Entity\EntryComment {#1611
    +user: App\Entity\User {#260
      +avatar: Proxies\__CG__\App\Entity\Image {#240 …}
      +cover: null
      +email: "danielquinn@lemmy.ca"
      +username: "@danielquinn@lemmy.ca"
      +roles: []
      +followersCount: 0
      +homepage: "front"
      +about: "Canadian software engineer living in Europe."
      +lastActive: DateTime @1727577650 {#273
        date: 2024-09-29 04:40:50.0 +02:00
      }
      +markedForDeletionAt: null
      +fields: null
      +oauthGithubId: null
      +oauthGoogleId: null
      +oauthFacebookId: null
      +oauthKeycloakId: null
      +hideAdult: true
      +showSubscribedUsers: true
      +showSubscribedMagazines: true
      +showSubscribedDomains: true
      +preferredLanguages: []
      +featuredMagazines: null
      +showProfileSubscriptions: false
      +showProfileFollowings: true
      +markNewComments: false
      +notifyOnNewEntry: false
      +notifyOnNewEntryReply: true
      +notifyOnNewEntryCommentReply: true
      +notifyOnNewPost: false
      +notifyOnNewPostReply: true
      +notifyOnNewPostCommentReply: true
      +addMentionsEntries: false
      +addMentionsPosts: true
      +isBanned: false
      +isVerified: false
      +isDeleted: false
      +isBot: false
      +spamProtection: true
      +customCss: null
      +ignoreMagazinesCustomCss: false
      +moderatorTokens: Doctrine\ORM\PersistentCollection {#231 …}
      +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#227 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#216 …}
      +entries: Doctrine\ORM\PersistentCollection {#174 …}
      +entryVotes: Doctrine\ORM\PersistentCollection {#146 …}
      +entryComments: Doctrine\ORM\PersistentCollection {#119 …}
      +entryCommentVotes: Doctrine\ORM\PersistentCollection {#89 …}
      +posts: Doctrine\ORM\PersistentCollection {#62 …}
      +postVotes: Doctrine\ORM\PersistentCollection {#77 …}
      +postComments: Doctrine\ORM\PersistentCollection {#2405 …}
      +postCommentVotes: Doctrine\ORM\PersistentCollection {#1607 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#1768 …}
      +subscribedDomains: Doctrine\ORM\PersistentCollection {#2445 …}
      +follows: Doctrine\ORM\PersistentCollection {#1849 …}
      +followers: Doctrine\ORM\PersistentCollection {#1810 …}
      +blocks: Doctrine\ORM\PersistentCollection {#1794 …}
      +blockers: Doctrine\ORM\PersistentCollection {#2415 …}
      +blockedMagazines: Doctrine\ORM\PersistentCollection {#2421 …}
      +blockedDomains: Doctrine\ORM\PersistentCollection {#2418 …}
      +reports: Doctrine\ORM\PersistentCollection {#2398 …}
      +favourites: Doctrine\ORM\PersistentCollection {#1918 …}
      +violations: Doctrine\ORM\PersistentCollection {#1834 …}
      +notifications: Doctrine\ORM\PersistentCollection {#1878 …}
      +awards: Doctrine\ORM\PersistentCollection {#1886 …}
      +subscribedCategories: Doctrine\ORM\PersistentCollection {#1899 …}
      +categories: Doctrine\ORM\PersistentCollection {#1954 …}
      -id: 57593
      -password: "$2y$13$/L0PmovM1H9sjmzmYDFDJ./Rjx6mWwKcBTi6vz7ViURzIQuLk35WK"
      -totpSecret: null
      -totpBackupCodes: []
      -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1978 …}
      +apId: "danielquinn@lemmy.ca"
      +apProfileId: "https://lemmy.ca/u/danielquinn"
      +apPublicUrl: "https://lemmy.ca/u/danielquinn"
      +apFollowersUrl: null
      +apInboxUrl: "https://lemmy.ca/inbox"
      +apDomain: "lemmy.ca"
      +apPreferredUsername: "danielquinn"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: false
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729106992 {#276
        date: 2024-10-16 21:29:52.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1697197941 {#272
        date: 2023-10-13 13:52:21.0 +02:00
      }
    }
    +entry: App\Entity\Entry {#1609
      +user: App\Entity\User {#260}
      +magazine: Proxies\__CG__\App\Entity\Magazine {#1584
        +icon: Proxies\__CG__\App\Entity\Image {#3026 …}
        +name: "piracy@lemmy.dbzer0.com"
        +title: "piracy"
        +description: """
          ##### ⚓ Community devoted to in-depth debate on topics concerning digital piracy, ethical problems, and legal advancements.\n
          \n
          ---\n
          \n
          ### Rules • [Full Version](https://rentry.co/piracy-rules)\n
          \n
          **1**. Posts must be related to the discussion of digital piracy\n
          \n
          **2**. Don’t request invites, trade, sell, or self-promote\n
          \n
          **3**. Don’t request or link to specific pirated titles, including DMs\n
          \n
          **4**. Don’t submit low-quality posts, be entitled, or harass others\n
          \n
          **5**. Don’t post questions already answered. READ THE [WIKI](https://lemmy.dbzer0.com/post/10901)\n
          \n
          ---\n
          \n
          [![](https://a.imagem.app/oZoQ1v.png)](https://lemmy.dbzer0.com/post/10901)\n
          ---------------------------------------------------------------------------\n
          \n
          ### Loot, Pillage, & Plunder\n
          \n
          - [📜 Megathread](https://rentry.co/megathread)\n
          - [🪶 FAQ](https://rentry.co/piracy-faq)\n
          - [🪶 ISP Complaints](https://rentry.co/piracy-isp-complaints)\n
          - [🪶 Rules](https://rentry.co/piracy-rules)\n
          \n
          ---\n
          \n
          💰 Please help cover server costs.\n
          \n
          [![Ko-Fi](https://lemmy.dbzer0.com/pictrs/image/4a2f073a-3dd8-492a-942d-72bd929c9f1d.png)](https://ko-fi.com/dbzer0)[![Liberapay](https://lemmy.dbzer0.com/pictrs/image/eec4659d-39be-4fc9-bc9e-66a96285ea2c.png)](https://liberapay.com/db0/)\n
          \n
          ---
          """
        +rules: null
        +subscriptionsCount: 1
        +entryCount: 866
        +entryCommentCount: 20194
        +postCount: 7
        +postCommentCount: 149
        +isAdult: false
        +customCss: null
        +lastActive: DateTime @1729581369 {#3023
          date: 2024-10-22 09:16:09.0 +02:00
        }
        +markedForDeletionAt: null
        +tags: null
        +moderators: Doctrine\ORM\PersistentCollection {#3027 …}
        +ownershipRequests: Doctrine\ORM\PersistentCollection {#3029 …}
        +moderatorRequests: Doctrine\ORM\PersistentCollection {#3031 …}
        +entries: Doctrine\ORM\PersistentCollection {#3033 …}
        +posts: Doctrine\ORM\PersistentCollection {#3035 …}
        +subscriptions: Doctrine\ORM\PersistentCollection {#3037 …}
        +bans: Doctrine\ORM\PersistentCollection {#3043 …}
        +reports: Doctrine\ORM\PersistentCollection {#3051 …}
        +badges: Doctrine\ORM\PersistentCollection {#3064 …}
        +logs: Doctrine\ORM\PersistentCollection {#3074 …}
        +awards: Doctrine\ORM\PersistentCollection {#3056 …}
        +categories: Doctrine\ORM\PersistentCollection {#3080 …}
        -id: 51
        +apId: "piracy@lemmy.dbzer0.com"
        +apProfileId: "https://lemmy.dbzer0.com/c/piracy"
        +apPublicUrl: "https://lemmy.dbzer0.com/c/piracy"
        +apFollowersUrl: "https://lemmy.dbzer0.com/c/piracy/followers"
        +apInboxUrl: "https://lemmy.dbzer0.com/inbox"
        +apDomain: "lemmy.dbzer0.com"
        +apPreferredUsername: "piracy"
        +apDiscoverable: true
        +apManuallyApprovesFollowers: null
        +privateKey: null
        +publicKey: null
        +apFetchedAt: DateTime @1708748229 {#3024
          date: 2024-02-24 05:17:09.0 +01:00
        }
        +apDeletedAt: null
        +apTimeoutAt: null
        +visibility: "visible             "
        +createdAt: DateTimeImmutable @1697197339 {#3025
          date: 2023-10-13 13:42:19.0 +02:00
        }
        +__isInitialized__: true
         …2
      }
      +image: Proxies\__CG__\App\Entity\Image {#1579 …}
      +domain: Proxies\__CG__\App\Entity\Domain {#1679 …}
      +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 {#1421
        date: 2024-02-10 10:33:02.0 +01:00
      }
      +ip: null
      +adaAmount: 0
      +tags: null
      +mentions: null
      +comments: Doctrine\ORM\PersistentCollection {#1650 …}
      +votes: Doctrine\ORM\PersistentCollection {#1652 …}
      +reports: Doctrine\ORM\PersistentCollection {#1651 …}
      +favourites: Doctrine\ORM\PersistentCollection {#1527 …}
      +notifications: Doctrine\ORM\PersistentCollection {#1560 …}
      +badges: Doctrine\ORM\PersistentCollection {#1558 …}
      +children: [
        3 => App\Entity\EntryComment {#1611}
        2 => App\Entity\EntryComment {#2467
          +user: App\Entity\User {#260}
          +entry: App\Entity\Entry {#1609}
          +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
          +image: null
          +parent: Proxies\__CG__\App\Entity\EntryComment {#2470 …}
          +root: Proxies\__CG__\App\Entity\EntryComment {#2470 …}
          +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 {#1731
            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 {#2455 …}
          +nested: Doctrine\ORM\PersistentCollection {#2471 …}
          +votes: Doctrine\ORM\PersistentCollection {#2363 …}
          +reports: Doctrine\ORM\PersistentCollection {#2377 …}
          +favourites: Doctrine\ORM\PersistentCollection {#2359 …}
          +notifications: Doctrine\ORM\PersistentCollection {#2364 …}
          -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 {#2469
            date: 2023-10-14 09:26:17.0 +02:00
          }
          +"title": 48009
        }
        1 => App\Entity\EntryComment {#2382
          +user: App\Entity\User {#260}
          +entry: App\Entity\Entry {#1609}
          +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
          +image: null
          +parent: Proxies\__CG__\App\Entity\EntryComment {#2385 …}
          +root: Proxies\__CG__\App\Entity\EntryComment {#2385 …}
          +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 {#2380
            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 {#2384 …}
          +nested: Doctrine\ORM\PersistentCollection {#2379 …}
          +votes: Doctrine\ORM\PersistentCollection {#2383 …}
          +reports: Doctrine\ORM\PersistentCollection {#1906 …}
          +favourites: Doctrine\ORM\PersistentCollection {#1708 …}
          +notifications: Doctrine\ORM\PersistentCollection {#1410 …}
          -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 {#2386
            date: 2023-10-14 15:04:09.0 +02:00
          }
          +"title": 48431
        }
        0 => App\Entity\EntryComment {#1407
          +user: App\Entity\User {#260}
          +entry: App\Entity\Entry {#1609}
          +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
          +image: null
          +parent: Proxies\__CG__\App\Entity\EntryComment {#1883 …}
          +root: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
          +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 {#1907
            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 {#2391 …}
          +nested: Doctrine\ORM\PersistentCollection {#2369 …}
          +votes: Doctrine\ORM\PersistentCollection {#2392 …}
          +reports: Doctrine\ORM\PersistentCollection {#2395 …}
          +favourites: Doctrine\ORM\PersistentCollection {#1384 …}
          +notifications: Doctrine\ORM\PersistentCollection {#1383 …}
          -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 {#1908
            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 {#1424
        date: 2023-10-14 01:14:01.0 +02:00
      }
    }
    +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
    +image: null
    +parent: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
    +root: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
    +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 {#1596
      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 {#2464 …}
    +nested: Doctrine\ORM\PersistentCollection {#1740 …}
    +votes: Doctrine\ORM\PersistentCollection {#1739 …}
    +reports: Doctrine\ORM\PersistentCollection {#1716 …}
    +favourites: Doctrine\ORM\PersistentCollection {#2461 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2447 …}
    -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 {#1555
      date: 2023-10-14 09:20:07.0 +02:00
    }
    +"title": 48003
  }
  +formDest: "entry_comment"
  +showDownvote: true
  -cache: Symfony\Component\Cache\Adapter\TraceableTagAwareAdapter {#600 …}
}
boost App\Twig\Components\BoostComponent 14.0 MiB 1.00 ms
Input props
[
  "subject" => App\Entity\EntryComment {#1611
    +user: App\Entity\User {#260
      +avatar: Proxies\__CG__\App\Entity\Image {#240 …}
      +cover: null
      +email: "danielquinn@lemmy.ca"
      +username: "@danielquinn@lemmy.ca"
      +roles: []
      +followersCount: 0
      +homepage: "front"
      +about: "Canadian software engineer living in Europe."
      +lastActive: DateTime @1727577650 {#273
        date: 2024-09-29 04:40:50.0 +02:00
      }
      +markedForDeletionAt: null
      +fields: null
      +oauthGithubId: null
      +oauthGoogleId: null
      +oauthFacebookId: null
      +oauthKeycloakId: null
      +hideAdult: true
      +showSubscribedUsers: true
      +showSubscribedMagazines: true
      +showSubscribedDomains: true
      +preferredLanguages: []
      +featuredMagazines: null
      +showProfileSubscriptions: false
      +showProfileFollowings: true
      +markNewComments: false
      +notifyOnNewEntry: false
      +notifyOnNewEntryReply: true
      +notifyOnNewEntryCommentReply: true
      +notifyOnNewPost: false
      +notifyOnNewPostReply: true
      +notifyOnNewPostCommentReply: true
      +addMentionsEntries: false
      +addMentionsPosts: true
      +isBanned: false
      +isVerified: false
      +isDeleted: false
      +isBot: false
      +spamProtection: true
      +customCss: null
      +ignoreMagazinesCustomCss: false
      +moderatorTokens: Doctrine\ORM\PersistentCollection {#231 …}
      +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#227 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#216 …}
      +entries: Doctrine\ORM\PersistentCollection {#174 …}
      +entryVotes: Doctrine\ORM\PersistentCollection {#146 …}
      +entryComments: Doctrine\ORM\PersistentCollection {#119 …}
      +entryCommentVotes: Doctrine\ORM\PersistentCollection {#89 …}
      +posts: Doctrine\ORM\PersistentCollection {#62 …}
      +postVotes: Doctrine\ORM\PersistentCollection {#77 …}
      +postComments: Doctrine\ORM\PersistentCollection {#2405 …}
      +postCommentVotes: Doctrine\ORM\PersistentCollection {#1607 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#1768 …}
      +subscribedDomains: Doctrine\ORM\PersistentCollection {#2445 …}
      +follows: Doctrine\ORM\PersistentCollection {#1849 …}
      +followers: Doctrine\ORM\PersistentCollection {#1810 …}
      +blocks: Doctrine\ORM\PersistentCollection {#1794 …}
      +blockers: Doctrine\ORM\PersistentCollection {#2415 …}
      +blockedMagazines: Doctrine\ORM\PersistentCollection {#2421 …}
      +blockedDomains: Doctrine\ORM\PersistentCollection {#2418 …}
      +reports: Doctrine\ORM\PersistentCollection {#2398 …}
      +favourites: Doctrine\ORM\PersistentCollection {#1918 …}
      +violations: Doctrine\ORM\PersistentCollection {#1834 …}
      +notifications: Doctrine\ORM\PersistentCollection {#1878 …}
      +awards: Doctrine\ORM\PersistentCollection {#1886 …}
      +subscribedCategories: Doctrine\ORM\PersistentCollection {#1899 …}
      +categories: Doctrine\ORM\PersistentCollection {#1954 …}
      -id: 57593
      -password: "$2y$13$/L0PmovM1H9sjmzmYDFDJ./Rjx6mWwKcBTi6vz7ViURzIQuLk35WK"
      -totpSecret: null
      -totpBackupCodes: []
      -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1978 …}
      +apId: "danielquinn@lemmy.ca"
      +apProfileId: "https://lemmy.ca/u/danielquinn"
      +apPublicUrl: "https://lemmy.ca/u/danielquinn"
      +apFollowersUrl: null
      +apInboxUrl: "https://lemmy.ca/inbox"
      +apDomain: "lemmy.ca"
      +apPreferredUsername: "danielquinn"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: false
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729106992 {#276
        date: 2024-10-16 21:29:52.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1697197941 {#272
        date: 2023-10-13 13:52:21.0 +02:00
      }
    }
    +entry: App\Entity\Entry {#1609
      +user: App\Entity\User {#260}
      +magazine: Proxies\__CG__\App\Entity\Magazine {#1584
        +icon: Proxies\__CG__\App\Entity\Image {#3026 …}
        +name: "piracy@lemmy.dbzer0.com"
        +title: "piracy"
        +description: """
          ##### ⚓ Community devoted to in-depth debate on topics concerning digital piracy, ethical problems, and legal advancements.\n
          \n
          ---\n
          \n
          ### Rules • [Full Version](https://rentry.co/piracy-rules)\n
          \n
          **1**. Posts must be related to the discussion of digital piracy\n
          \n
          **2**. Don’t request invites, trade, sell, or self-promote\n
          \n
          **3**. Don’t request or link to specific pirated titles, including DMs\n
          \n
          **4**. Don’t submit low-quality posts, be entitled, or harass others\n
          \n
          **5**. Don’t post questions already answered. READ THE [WIKI](https://lemmy.dbzer0.com/post/10901)\n
          \n
          ---\n
          \n
          [![](https://a.imagem.app/oZoQ1v.png)](https://lemmy.dbzer0.com/post/10901)\n
          ---------------------------------------------------------------------------\n
          \n
          ### Loot, Pillage, & Plunder\n
          \n
          - [📜 Megathread](https://rentry.co/megathread)\n
          - [🪶 FAQ](https://rentry.co/piracy-faq)\n
          - [🪶 ISP Complaints](https://rentry.co/piracy-isp-complaints)\n
          - [🪶 Rules](https://rentry.co/piracy-rules)\n
          \n
          ---\n
          \n
          💰 Please help cover server costs.\n
          \n
          [![Ko-Fi](https://lemmy.dbzer0.com/pictrs/image/4a2f073a-3dd8-492a-942d-72bd929c9f1d.png)](https://ko-fi.com/dbzer0)[![Liberapay](https://lemmy.dbzer0.com/pictrs/image/eec4659d-39be-4fc9-bc9e-66a96285ea2c.png)](https://liberapay.com/db0/)\n
          \n
          ---
          """
        +rules: null
        +subscriptionsCount: 1
        +entryCount: 866
        +entryCommentCount: 20194
        +postCount: 7
        +postCommentCount: 149
        +isAdult: false
        +customCss: null
        +lastActive: DateTime @1729581369 {#3023
          date: 2024-10-22 09:16:09.0 +02:00
        }
        +markedForDeletionAt: null
        +tags: null
        +moderators: Doctrine\ORM\PersistentCollection {#3027 …}
        +ownershipRequests: Doctrine\ORM\PersistentCollection {#3029 …}
        +moderatorRequests: Doctrine\ORM\PersistentCollection {#3031 …}
        +entries: Doctrine\ORM\PersistentCollection {#3033 …}
        +posts: Doctrine\ORM\PersistentCollection {#3035 …}
        +subscriptions: Doctrine\ORM\PersistentCollection {#3037 …}
        +bans: Doctrine\ORM\PersistentCollection {#3043 …}
        +reports: Doctrine\ORM\PersistentCollection {#3051 …}
        +badges: Doctrine\ORM\PersistentCollection {#3064 …}
        +logs: Doctrine\ORM\PersistentCollection {#3074 …}
        +awards: Doctrine\ORM\PersistentCollection {#3056 …}
        +categories: Doctrine\ORM\PersistentCollection {#3080 …}
        -id: 51
        +apId: "piracy@lemmy.dbzer0.com"
        +apProfileId: "https://lemmy.dbzer0.com/c/piracy"
        +apPublicUrl: "https://lemmy.dbzer0.com/c/piracy"
        +apFollowersUrl: "https://lemmy.dbzer0.com/c/piracy/followers"
        +apInboxUrl: "https://lemmy.dbzer0.com/inbox"
        +apDomain: "lemmy.dbzer0.com"
        +apPreferredUsername: "piracy"
        +apDiscoverable: true
        +apManuallyApprovesFollowers: null
        +privateKey: null
        +publicKey: null
        +apFetchedAt: DateTime @1708748229 {#3024
          date: 2024-02-24 05:17:09.0 +01:00
        }
        +apDeletedAt: null
        +apTimeoutAt: null
        +visibility: "visible             "
        +createdAt: DateTimeImmutable @1697197339 {#3025
          date: 2023-10-13 13:42:19.0 +02:00
        }
        +__isInitialized__: true
         …2
      }
      +image: Proxies\__CG__\App\Entity\Image {#1579 …}
      +domain: Proxies\__CG__\App\Entity\Domain {#1679 …}
      +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 {#1421
        date: 2024-02-10 10:33:02.0 +01:00
      }
      +ip: null
      +adaAmount: 0
      +tags: null
      +mentions: null
      +comments: Doctrine\ORM\PersistentCollection {#1650 …}
      +votes: Doctrine\ORM\PersistentCollection {#1652 …}
      +reports: Doctrine\ORM\PersistentCollection {#1651 …}
      +favourites: Doctrine\ORM\PersistentCollection {#1527 …}
      +notifications: Doctrine\ORM\PersistentCollection {#1560 …}
      +badges: Doctrine\ORM\PersistentCollection {#1558 …}
      +children: [
        3 => App\Entity\EntryComment {#1611}
        2 => App\Entity\EntryComment {#2467
          +user: App\Entity\User {#260}
          +entry: App\Entity\Entry {#1609}
          +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
          +image: null
          +parent: Proxies\__CG__\App\Entity\EntryComment {#2470 …}
          +root: Proxies\__CG__\App\Entity\EntryComment {#2470 …}
          +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 {#1731
            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 {#2455 …}
          +nested: Doctrine\ORM\PersistentCollection {#2471 …}
          +votes: Doctrine\ORM\PersistentCollection {#2363 …}
          +reports: Doctrine\ORM\PersistentCollection {#2377 …}
          +favourites: Doctrine\ORM\PersistentCollection {#2359 …}
          +notifications: Doctrine\ORM\PersistentCollection {#2364 …}
          -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 {#2469
            date: 2023-10-14 09:26:17.0 +02:00
          }
          +"title": 48009
        }
        1 => App\Entity\EntryComment {#2382
          +user: App\Entity\User {#260}
          +entry: App\Entity\Entry {#1609}
          +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
          +image: null
          +parent: Proxies\__CG__\App\Entity\EntryComment {#2385 …}
          +root: Proxies\__CG__\App\Entity\EntryComment {#2385 …}
          +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 {#2380
            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 {#2384 …}
          +nested: Doctrine\ORM\PersistentCollection {#2379 …}
          +votes: Doctrine\ORM\PersistentCollection {#2383 …}
          +reports: Doctrine\ORM\PersistentCollection {#1906 …}
          +favourites: Doctrine\ORM\PersistentCollection {#1708 …}
          +notifications: Doctrine\ORM\PersistentCollection {#1410 …}
          -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 {#2386
            date: 2023-10-14 15:04:09.0 +02:00
          }
          +"title": 48431
        }
        0 => App\Entity\EntryComment {#1407
          +user: App\Entity\User {#260}
          +entry: App\Entity\Entry {#1609}
          +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
          +image: null
          +parent: Proxies\__CG__\App\Entity\EntryComment {#1883 …}
          +root: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
          +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 {#1907
            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 {#2391 …}
          +nested: Doctrine\ORM\PersistentCollection {#2369 …}
          +votes: Doctrine\ORM\PersistentCollection {#2392 …}
          +reports: Doctrine\ORM\PersistentCollection {#2395 …}
          +favourites: Doctrine\ORM\PersistentCollection {#1384 …}
          +notifications: Doctrine\ORM\PersistentCollection {#1383 …}
          -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 {#1908
            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 {#1424
        date: 2023-10-14 01:14:01.0 +02:00
      }
    }
    +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
    +image: null
    +parent: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
    +root: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
    +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 {#1596
      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 {#2464 …}
    +nested: Doctrine\ORM\PersistentCollection {#1740 …}
    +votes: Doctrine\ORM\PersistentCollection {#1739 …}
    +reports: Doctrine\ORM\PersistentCollection {#1716 …}
    +favourites: Doctrine\ORM\PersistentCollection {#2461 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2447 …}
    -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 {#1555
      date: 2023-10-14 09:20:07.0 +02:00
    }
    +"title": 48003
  }
]
Attributes
[]
Component
App\Twig\Components\BoostComponent {#4148
  +formDest: "entry_comment"
  +subject: App\Entity\EntryComment {#1611
    +user: App\Entity\User {#260
      +avatar: Proxies\__CG__\App\Entity\Image {#240 …}
      +cover: null
      +email: "danielquinn@lemmy.ca"
      +username: "@danielquinn@lemmy.ca"
      +roles: []
      +followersCount: 0
      +homepage: "front"
      +about: "Canadian software engineer living in Europe."
      +lastActive: DateTime @1727577650 {#273
        date: 2024-09-29 04:40:50.0 +02:00
      }
      +markedForDeletionAt: null
      +fields: null
      +oauthGithubId: null
      +oauthGoogleId: null
      +oauthFacebookId: null
      +oauthKeycloakId: null
      +hideAdult: true
      +showSubscribedUsers: true
      +showSubscribedMagazines: true
      +showSubscribedDomains: true
      +preferredLanguages: []
      +featuredMagazines: null
      +showProfileSubscriptions: false
      +showProfileFollowings: true
      +markNewComments: false
      +notifyOnNewEntry: false
      +notifyOnNewEntryReply: true
      +notifyOnNewEntryCommentReply: true
      +notifyOnNewPost: false
      +notifyOnNewPostReply: true
      +notifyOnNewPostCommentReply: true
      +addMentionsEntries: false
      +addMentionsPosts: true
      +isBanned: false
      +isVerified: false
      +isDeleted: false
      +isBot: false
      +spamProtection: true
      +customCss: null
      +ignoreMagazinesCustomCss: false
      +moderatorTokens: Doctrine\ORM\PersistentCollection {#231 …}
      +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#227 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#216 …}
      +entries: Doctrine\ORM\PersistentCollection {#174 …}
      +entryVotes: Doctrine\ORM\PersistentCollection {#146 …}
      +entryComments: Doctrine\ORM\PersistentCollection {#119 …}
      +entryCommentVotes: Doctrine\ORM\PersistentCollection {#89 …}
      +posts: Doctrine\ORM\PersistentCollection {#62 …}
      +postVotes: Doctrine\ORM\PersistentCollection {#77 …}
      +postComments: Doctrine\ORM\PersistentCollection {#2405 …}
      +postCommentVotes: Doctrine\ORM\PersistentCollection {#1607 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#1768 …}
      +subscribedDomains: Doctrine\ORM\PersistentCollection {#2445 …}
      +follows: Doctrine\ORM\PersistentCollection {#1849 …}
      +followers: Doctrine\ORM\PersistentCollection {#1810 …}
      +blocks: Doctrine\ORM\PersistentCollection {#1794 …}
      +blockers: Doctrine\ORM\PersistentCollection {#2415 …}
      +blockedMagazines: Doctrine\ORM\PersistentCollection {#2421 …}
      +blockedDomains: Doctrine\ORM\PersistentCollection {#2418 …}
      +reports: Doctrine\ORM\PersistentCollection {#2398 …}
      +favourites: Doctrine\ORM\PersistentCollection {#1918 …}
      +violations: Doctrine\ORM\PersistentCollection {#1834 …}
      +notifications: Doctrine\ORM\PersistentCollection {#1878 …}
      +awards: Doctrine\ORM\PersistentCollection {#1886 …}
      +subscribedCategories: Doctrine\ORM\PersistentCollection {#1899 …}
      +categories: Doctrine\ORM\PersistentCollection {#1954 …}
      -id: 57593
      -password: "$2y$13$/L0PmovM1H9sjmzmYDFDJ./Rjx6mWwKcBTi6vz7ViURzIQuLk35WK"
      -totpSecret: null
      -totpBackupCodes: []
      -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1978 …}
      +apId: "danielquinn@lemmy.ca"
      +apProfileId: "https://lemmy.ca/u/danielquinn"
      +apPublicUrl: "https://lemmy.ca/u/danielquinn"
      +apFollowersUrl: null
      +apInboxUrl: "https://lemmy.ca/inbox"
      +apDomain: "lemmy.ca"
      +apPreferredUsername: "danielquinn"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: false
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729106992 {#276
        date: 2024-10-16 21:29:52.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1697197941 {#272
        date: 2023-10-13 13:52:21.0 +02:00
      }
    }
    +entry: App\Entity\Entry {#1609
      +user: App\Entity\User {#260}
      +magazine: Proxies\__CG__\App\Entity\Magazine {#1584
        +icon: Proxies\__CG__\App\Entity\Image {#3026 …}
        +name: "piracy@lemmy.dbzer0.com"
        +title: "piracy"
        +description: """
          ##### ⚓ Community devoted to in-depth debate on topics concerning digital piracy, ethical problems, and legal advancements.\n
          \n
          ---\n
          \n
          ### Rules • [Full Version](https://rentry.co/piracy-rules)\n
          \n
          **1**. Posts must be related to the discussion of digital piracy\n
          \n
          **2**. Don’t request invites, trade, sell, or self-promote\n
          \n
          **3**. Don’t request or link to specific pirated titles, including DMs\n
          \n
          **4**. Don’t submit low-quality posts, be entitled, or harass others\n
          \n
          **5**. Don’t post questions already answered. READ THE [WIKI](https://lemmy.dbzer0.com/post/10901)\n
          \n
          ---\n
          \n
          [![](https://a.imagem.app/oZoQ1v.png)](https://lemmy.dbzer0.com/post/10901)\n
          ---------------------------------------------------------------------------\n
          \n
          ### Loot, Pillage, & Plunder\n
          \n
          - [📜 Megathread](https://rentry.co/megathread)\n
          - [🪶 FAQ](https://rentry.co/piracy-faq)\n
          - [🪶 ISP Complaints](https://rentry.co/piracy-isp-complaints)\n
          - [🪶 Rules](https://rentry.co/piracy-rules)\n
          \n
          ---\n
          \n
          💰 Please help cover server costs.\n
          \n
          [![Ko-Fi](https://lemmy.dbzer0.com/pictrs/image/4a2f073a-3dd8-492a-942d-72bd929c9f1d.png)](https://ko-fi.com/dbzer0)[![Liberapay](https://lemmy.dbzer0.com/pictrs/image/eec4659d-39be-4fc9-bc9e-66a96285ea2c.png)](https://liberapay.com/db0/)\n
          \n
          ---
          """
        +rules: null
        +subscriptionsCount: 1
        +entryCount: 866
        +entryCommentCount: 20194
        +postCount: 7
        +postCommentCount: 149
        +isAdult: false
        +customCss: null
        +lastActive: DateTime @1729581369 {#3023
          date: 2024-10-22 09:16:09.0 +02:00
        }
        +markedForDeletionAt: null
        +tags: null
        +moderators: Doctrine\ORM\PersistentCollection {#3027 …}
        +ownershipRequests: Doctrine\ORM\PersistentCollection {#3029 …}
        +moderatorRequests: Doctrine\ORM\PersistentCollection {#3031 …}
        +entries: Doctrine\ORM\PersistentCollection {#3033 …}
        +posts: Doctrine\ORM\PersistentCollection {#3035 …}
        +subscriptions: Doctrine\ORM\PersistentCollection {#3037 …}
        +bans: Doctrine\ORM\PersistentCollection {#3043 …}
        +reports: Doctrine\ORM\PersistentCollection {#3051 …}
        +badges: Doctrine\ORM\PersistentCollection {#3064 …}
        +logs: Doctrine\ORM\PersistentCollection {#3074 …}
        +awards: Doctrine\ORM\PersistentCollection {#3056 …}
        +categories: Doctrine\ORM\PersistentCollection {#3080 …}
        -id: 51
        +apId: "piracy@lemmy.dbzer0.com"
        +apProfileId: "https://lemmy.dbzer0.com/c/piracy"
        +apPublicUrl: "https://lemmy.dbzer0.com/c/piracy"
        +apFollowersUrl: "https://lemmy.dbzer0.com/c/piracy/followers"
        +apInboxUrl: "https://lemmy.dbzer0.com/inbox"
        +apDomain: "lemmy.dbzer0.com"
        +apPreferredUsername: "piracy"
        +apDiscoverable: true
        +apManuallyApprovesFollowers: null
        +privateKey: null
        +publicKey: null
        +apFetchedAt: DateTime @1708748229 {#3024
          date: 2024-02-24 05:17:09.0 +01:00
        }
        +apDeletedAt: null
        +apTimeoutAt: null
        +visibility: "visible             "
        +createdAt: DateTimeImmutable @1697197339 {#3025
          date: 2023-10-13 13:42:19.0 +02:00
        }
        +__isInitialized__: true
         …2
      }
      +image: Proxies\__CG__\App\Entity\Image {#1579 …}
      +domain: Proxies\__CG__\App\Entity\Domain {#1679 …}
      +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 {#1421
        date: 2024-02-10 10:33:02.0 +01:00
      }
      +ip: null
      +adaAmount: 0
      +tags: null
      +mentions: null
      +comments: Doctrine\ORM\PersistentCollection {#1650 …}
      +votes: Doctrine\ORM\PersistentCollection {#1652 …}
      +reports: Doctrine\ORM\PersistentCollection {#1651 …}
      +favourites: Doctrine\ORM\PersistentCollection {#1527 …}
      +notifications: Doctrine\ORM\PersistentCollection {#1560 …}
      +badges: Doctrine\ORM\PersistentCollection {#1558 …}
      +children: [
        3 => App\Entity\EntryComment {#1611}
        2 => App\Entity\EntryComment {#2467
          +user: App\Entity\User {#260}
          +entry: App\Entity\Entry {#1609}
          +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
          +image: null
          +parent: Proxies\__CG__\App\Entity\EntryComment {#2470 …}
          +root: Proxies\__CG__\App\Entity\EntryComment {#2470 …}
          +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 {#1731
            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 {#2455 …}
          +nested: Doctrine\ORM\PersistentCollection {#2471 …}
          +votes: Doctrine\ORM\PersistentCollection {#2363 …}
          +reports: Doctrine\ORM\PersistentCollection {#2377 …}
          +favourites: Doctrine\ORM\PersistentCollection {#2359 …}
          +notifications: Doctrine\ORM\PersistentCollection {#2364 …}
          -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 {#2469
            date: 2023-10-14 09:26:17.0 +02:00
          }
          +"title": 48009
        }
        1 => App\Entity\EntryComment {#2382
          +user: App\Entity\User {#260}
          +entry: App\Entity\Entry {#1609}
          +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
          +image: null
          +parent: Proxies\__CG__\App\Entity\EntryComment {#2385 …}
          +root: Proxies\__CG__\App\Entity\EntryComment {#2385 …}
          +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 {#2380
            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 {#2384 …}
          +nested: Doctrine\ORM\PersistentCollection {#2379 …}
          +votes: Doctrine\ORM\PersistentCollection {#2383 …}
          +reports: Doctrine\ORM\PersistentCollection {#1906 …}
          +favourites: Doctrine\ORM\PersistentCollection {#1708 …}
          +notifications: Doctrine\ORM\PersistentCollection {#1410 …}
          -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 {#2386
            date: 2023-10-14 15:04:09.0 +02:00
          }
          +"title": 48431
        }
        0 => App\Entity\EntryComment {#1407
          +user: App\Entity\User {#260}
          +entry: App\Entity\Entry {#1609}
          +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
          +image: null
          +parent: Proxies\__CG__\App\Entity\EntryComment {#1883 …}
          +root: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
          +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 {#1907
            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 {#2391 …}
          +nested: Doctrine\ORM\PersistentCollection {#2369 …}
          +votes: Doctrine\ORM\PersistentCollection {#2392 …}
          +reports: Doctrine\ORM\PersistentCollection {#2395 …}
          +favourites: Doctrine\ORM\PersistentCollection {#1384 …}
          +notifications: Doctrine\ORM\PersistentCollection {#1383 …}
          -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 {#1908
            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 {#1424
        date: 2023-10-14 01:14:01.0 +02:00
      }
    }
    +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
    +image: null
    +parent: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
    +root: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
    +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 {#1596
      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 {#2464 …}
    +nested: Doctrine\ORM\PersistentCollection {#1740 …}
    +votes: Doctrine\ORM\PersistentCollection {#1739 …}
    +reports: Doctrine\ORM\PersistentCollection {#1716 …}
    +favourites: Doctrine\ORM\PersistentCollection {#2461 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2447 …}
    -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 {#1555
      date: 2023-10-14 09:20:07.0 +02:00
    }
    +"title": 48003
  }
  -cache: Symfony\Component\Cache\Adapter\TraceableTagAwareAdapter {#600 …}
}
entry_comment App\Twig\Components\EntryCommentComponent 14.0 MiB 18.92 ms
Input props
[
  "comment" => App\Entity\EntryComment {#2467
    +user: App\Entity\User {#260
      +avatar: Proxies\__CG__\App\Entity\Image {#240 …}
      +cover: null
      +email: "danielquinn@lemmy.ca"
      +username: "@danielquinn@lemmy.ca"
      +roles: []
      +followersCount: 0
      +homepage: "front"
      +about: "Canadian software engineer living in Europe."
      +lastActive: DateTime @1727577650 {#273
        date: 2024-09-29 04:40:50.0 +02:00
      }
      +markedForDeletionAt: null
      +fields: null
      +oauthGithubId: null
      +oauthGoogleId: null
      +oauthFacebookId: null
      +oauthKeycloakId: null
      +hideAdult: true
      +showSubscribedUsers: true
      +showSubscribedMagazines: true
      +showSubscribedDomains: true
      +preferredLanguages: []
      +featuredMagazines: null
      +showProfileSubscriptions: false
      +showProfileFollowings: true
      +markNewComments: false
      +notifyOnNewEntry: false
      +notifyOnNewEntryReply: true
      +notifyOnNewEntryCommentReply: true
      +notifyOnNewPost: false
      +notifyOnNewPostReply: true
      +notifyOnNewPostCommentReply: true
      +addMentionsEntries: false
      +addMentionsPosts: true
      +isBanned: false
      +isVerified: false
      +isDeleted: false
      +isBot: false
      +spamProtection: true
      +customCss: null
      +ignoreMagazinesCustomCss: false
      +moderatorTokens: Doctrine\ORM\PersistentCollection {#231 …}
      +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#227 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#216 …}
      +entries: Doctrine\ORM\PersistentCollection {#174 …}
      +entryVotes: Doctrine\ORM\PersistentCollection {#146 …}
      +entryComments: Doctrine\ORM\PersistentCollection {#119 …}
      +entryCommentVotes: Doctrine\ORM\PersistentCollection {#89 …}
      +posts: Doctrine\ORM\PersistentCollection {#62 …}
      +postVotes: Doctrine\ORM\PersistentCollection {#77 …}
      +postComments: Doctrine\ORM\PersistentCollection {#2405 …}
      +postCommentVotes: Doctrine\ORM\PersistentCollection {#1607 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#1768 …}
      +subscribedDomains: Doctrine\ORM\PersistentCollection {#2445 …}
      +follows: Doctrine\ORM\PersistentCollection {#1849 …}
      +followers: Doctrine\ORM\PersistentCollection {#1810 …}
      +blocks: Doctrine\ORM\PersistentCollection {#1794 …}
      +blockers: Doctrine\ORM\PersistentCollection {#2415 …}
      +blockedMagazines: Doctrine\ORM\PersistentCollection {#2421 …}
      +blockedDomains: Doctrine\ORM\PersistentCollection {#2418 …}
      +reports: Doctrine\ORM\PersistentCollection {#2398 …}
      +favourites: Doctrine\ORM\PersistentCollection {#1918 …}
      +violations: Doctrine\ORM\PersistentCollection {#1834 …}
      +notifications: Doctrine\ORM\PersistentCollection {#1878 …}
      +awards: Doctrine\ORM\PersistentCollection {#1886 …}
      +subscribedCategories: Doctrine\ORM\PersistentCollection {#1899 …}
      +categories: Doctrine\ORM\PersistentCollection {#1954 …}
      -id: 57593
      -password: "$2y$13$/L0PmovM1H9sjmzmYDFDJ./Rjx6mWwKcBTi6vz7ViURzIQuLk35WK"
      -totpSecret: null
      -totpBackupCodes: []
      -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1978 …}
      +apId: "danielquinn@lemmy.ca"
      +apProfileId: "https://lemmy.ca/u/danielquinn"
      +apPublicUrl: "https://lemmy.ca/u/danielquinn"
      +apFollowersUrl: null
      +apInboxUrl: "https://lemmy.ca/inbox"
      +apDomain: "lemmy.ca"
      +apPreferredUsername: "danielquinn"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: false
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729106992 {#276
        date: 2024-10-16 21:29:52.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1697197941 {#272
        date: 2023-10-13 13:52:21.0 +02:00
      }
    }
    +entry: App\Entity\Entry {#1609
      +user: App\Entity\User {#260}
      +magazine: Proxies\__CG__\App\Entity\Magazine {#1584
        +icon: Proxies\__CG__\App\Entity\Image {#3026 …}
        +name: "piracy@lemmy.dbzer0.com"
        +title: "piracy"
        +description: """
          ##### ⚓ Community devoted to in-depth debate on topics concerning digital piracy, ethical problems, and legal advancements.\n
          \n
          ---\n
          \n
          ### Rules • [Full Version](https://rentry.co/piracy-rules)\n
          \n
          **1**. Posts must be related to the discussion of digital piracy\n
          \n
          **2**. Don’t request invites, trade, sell, or self-promote\n
          \n
          **3**. Don’t request or link to specific pirated titles, including DMs\n
          \n
          **4**. Don’t submit low-quality posts, be entitled, or harass others\n
          \n
          **5**. Don’t post questions already answered. READ THE [WIKI](https://lemmy.dbzer0.com/post/10901)\n
          \n
          ---\n
          \n
          [![](https://a.imagem.app/oZoQ1v.png)](https://lemmy.dbzer0.com/post/10901)\n
          ---------------------------------------------------------------------------\n
          \n
          ### Loot, Pillage, & Plunder\n
          \n
          - [📜 Megathread](https://rentry.co/megathread)\n
          - [🪶 FAQ](https://rentry.co/piracy-faq)\n
          - [🪶 ISP Complaints](https://rentry.co/piracy-isp-complaints)\n
          - [🪶 Rules](https://rentry.co/piracy-rules)\n
          \n
          ---\n
          \n
          💰 Please help cover server costs.\n
          \n
          [![Ko-Fi](https://lemmy.dbzer0.com/pictrs/image/4a2f073a-3dd8-492a-942d-72bd929c9f1d.png)](https://ko-fi.com/dbzer0)[![Liberapay](https://lemmy.dbzer0.com/pictrs/image/eec4659d-39be-4fc9-bc9e-66a96285ea2c.png)](https://liberapay.com/db0/)\n
          \n
          ---
          """
        +rules: null
        +subscriptionsCount: 1
        +entryCount: 866
        +entryCommentCount: 20194
        +postCount: 7
        +postCommentCount: 149
        +isAdult: false
        +customCss: null
        +lastActive: DateTime @1729581369 {#3023
          date: 2024-10-22 09:16:09.0 +02:00
        }
        +markedForDeletionAt: null
        +tags: null
        +moderators: Doctrine\ORM\PersistentCollection {#3027 …}
        +ownershipRequests: Doctrine\ORM\PersistentCollection {#3029 …}
        +moderatorRequests: Doctrine\ORM\PersistentCollection {#3031 …}
        +entries: Doctrine\ORM\PersistentCollection {#3033 …}
        +posts: Doctrine\ORM\PersistentCollection {#3035 …}
        +subscriptions: Doctrine\ORM\PersistentCollection {#3037 …}
        +bans: Doctrine\ORM\PersistentCollection {#3043 …}
        +reports: Doctrine\ORM\PersistentCollection {#3051 …}
        +badges: Doctrine\ORM\PersistentCollection {#3064 …}
        +logs: Doctrine\ORM\PersistentCollection {#3074 …}
        +awards: Doctrine\ORM\PersistentCollection {#3056 …}
        +categories: Doctrine\ORM\PersistentCollection {#3080 …}
        -id: 51
        +apId: "piracy@lemmy.dbzer0.com"
        +apProfileId: "https://lemmy.dbzer0.com/c/piracy"
        +apPublicUrl: "https://lemmy.dbzer0.com/c/piracy"
        +apFollowersUrl: "https://lemmy.dbzer0.com/c/piracy/followers"
        +apInboxUrl: "https://lemmy.dbzer0.com/inbox"
        +apDomain: "lemmy.dbzer0.com"
        +apPreferredUsername: "piracy"
        +apDiscoverable: true
        +apManuallyApprovesFollowers: null
        +privateKey: null
        +publicKey: null
        +apFetchedAt: DateTime @1708748229 {#3024
          date: 2024-02-24 05:17:09.0 +01:00
        }
        +apDeletedAt: null
        +apTimeoutAt: null
        +visibility: "visible             "
        +createdAt: DateTimeImmutable @1697197339 {#3025
          date: 2023-10-13 13:42:19.0 +02:00
        }
        +__isInitialized__: true
         …2
      }
      +image: Proxies\__CG__\App\Entity\Image {#1579 …}
      +domain: Proxies\__CG__\App\Entity\Domain {#1679 …}
      +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 {#1421
        date: 2024-02-10 10:33:02.0 +01:00
      }
      +ip: null
      +adaAmount: 0
      +tags: null
      +mentions: null
      +comments: Doctrine\ORM\PersistentCollection {#1650 …}
      +votes: Doctrine\ORM\PersistentCollection {#1652 …}
      +reports: Doctrine\ORM\PersistentCollection {#1651 …}
      +favourites: Doctrine\ORM\PersistentCollection {#1527 …}
      +notifications: Doctrine\ORM\PersistentCollection {#1560 …}
      +badges: Doctrine\ORM\PersistentCollection {#1558 …}
      +children: [
        3 => App\Entity\EntryComment {#1611
          +user: App\Entity\User {#260}
          +entry: App\Entity\Entry {#1609}
          +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
          +image: null
          +parent: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
          +root: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
          +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 {#1596
            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 {#2464 …}
          +nested: Doctrine\ORM\PersistentCollection {#1740 …}
          +votes: Doctrine\ORM\PersistentCollection {#1739 …}
          +reports: Doctrine\ORM\PersistentCollection {#1716 …}
          +favourites: Doctrine\ORM\PersistentCollection {#2461 …}
          +notifications: Doctrine\ORM\PersistentCollection {#2447 …}
          -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 {#1555
            date: 2023-10-14 09:20:07.0 +02:00
          }
          +"title": 48003
        }
        2 => App\Entity\EntryComment {#2467}
        1 => App\Entity\EntryComment {#2382
          +user: App\Entity\User {#260}
          +entry: App\Entity\Entry {#1609}
          +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
          +image: null
          +parent: Proxies\__CG__\App\Entity\EntryComment {#2385 …}
          +root: Proxies\__CG__\App\Entity\EntryComment {#2385 …}
          +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 {#2380
            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 {#2384 …}
          +nested: Doctrine\ORM\PersistentCollection {#2379 …}
          +votes: Doctrine\ORM\PersistentCollection {#2383 …}
          +reports: Doctrine\ORM\PersistentCollection {#1906 …}
          +favourites: Doctrine\ORM\PersistentCollection {#1708 …}
          +notifications: Doctrine\ORM\PersistentCollection {#1410 …}
          -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 {#2386
            date: 2023-10-14 15:04:09.0 +02:00
          }
          +"title": 48431
        }
        0 => App\Entity\EntryComment {#1407
          +user: App\Entity\User {#260}
          +entry: App\Entity\Entry {#1609}
          +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
          +image: null
          +parent: Proxies\__CG__\App\Entity\EntryComment {#1883 …}
          +root: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
          +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 {#1907
            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 {#2391 …}
          +nested: Doctrine\ORM\PersistentCollection {#2369 …}
          +votes: Doctrine\ORM\PersistentCollection {#2392 …}
          +reports: Doctrine\ORM\PersistentCollection {#2395 …}
          +favourites: Doctrine\ORM\PersistentCollection {#1384 …}
          +notifications: Doctrine\ORM\PersistentCollection {#1383 …}
          -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 {#1908
            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 {#1424
        date: 2023-10-14 01:14:01.0 +02:00
      }
    }
    +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
    +image: null
    +parent: Proxies\__CG__\App\Entity\EntryComment {#2470 …}
    +root: Proxies\__CG__\App\Entity\EntryComment {#2470 …}
    +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 {#1731
      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 {#2455 …}
    +nested: Doctrine\ORM\PersistentCollection {#2471 …}
    +votes: Doctrine\ORM\PersistentCollection {#2363 …}
    +reports: Doctrine\ORM\PersistentCollection {#2377 …}
    +favourites: Doctrine\ORM\PersistentCollection {#2359 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2364 …}
    -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 {#2469
      date: 2023-10-14 09:26:17.0 +02:00
    }
    +"title": 48009
  }
  "showEntryTitle" => false
  "dateAsUrl" => true
  "showMagazineName" => false
]
Attributes
[]
Component
App\Twig\Components\EntryCommentComponent {#4402
  +comment: App\Entity\EntryComment {#2467
    +user: App\Entity\User {#260
      +avatar: Proxies\__CG__\App\Entity\Image {#240 …}
      +cover: null
      +email: "danielquinn@lemmy.ca"
      +username: "@danielquinn@lemmy.ca"
      +roles: []
      +followersCount: 0
      +homepage: "front"
      +about: "Canadian software engineer living in Europe."
      +lastActive: DateTime @1727577650 {#273
        date: 2024-09-29 04:40:50.0 +02:00
      }
      +markedForDeletionAt: null
      +fields: null
      +oauthGithubId: null
      +oauthGoogleId: null
      +oauthFacebookId: null
      +oauthKeycloakId: null
      +hideAdult: true
      +showSubscribedUsers: true
      +showSubscribedMagazines: true
      +showSubscribedDomains: true
      +preferredLanguages: []
      +featuredMagazines: null
      +showProfileSubscriptions: false
      +showProfileFollowings: true
      +markNewComments: false
      +notifyOnNewEntry: false
      +notifyOnNewEntryReply: true
      +notifyOnNewEntryCommentReply: true
      +notifyOnNewPost: false
      +notifyOnNewPostReply: true
      +notifyOnNewPostCommentReply: true
      +addMentionsEntries: false
      +addMentionsPosts: true
      +isBanned: false
      +isVerified: false
      +isDeleted: false
      +isBot: false
      +spamProtection: true
      +customCss: null
      +ignoreMagazinesCustomCss: false
      +moderatorTokens: Doctrine\ORM\PersistentCollection {#231 …}
      +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#227 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#216 …}
      +entries: Doctrine\ORM\PersistentCollection {#174 …}
      +entryVotes: Doctrine\ORM\PersistentCollection {#146 …}
      +entryComments: Doctrine\ORM\PersistentCollection {#119 …}
      +entryCommentVotes: Doctrine\ORM\PersistentCollection {#89 …}
      +posts: Doctrine\ORM\PersistentCollection {#62 …}
      +postVotes: Doctrine\ORM\PersistentCollection {#77 …}
      +postComments: Doctrine\ORM\PersistentCollection {#2405 …}
      +postCommentVotes: Doctrine\ORM\PersistentCollection {#1607 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#1768 …}
      +subscribedDomains: Doctrine\ORM\PersistentCollection {#2445 …}
      +follows: Doctrine\ORM\PersistentCollection {#1849 …}
      +followers: Doctrine\ORM\PersistentCollection {#1810 …}
      +blocks: Doctrine\ORM\PersistentCollection {#1794 …}
      +blockers: Doctrine\ORM\PersistentCollection {#2415 …}
      +blockedMagazines: Doctrine\ORM\PersistentCollection {#2421 …}
      +blockedDomains: Doctrine\ORM\PersistentCollection {#2418 …}
      +reports: Doctrine\ORM\PersistentCollection {#2398 …}
      +favourites: Doctrine\ORM\PersistentCollection {#1918 …}
      +violations: Doctrine\ORM\PersistentCollection {#1834 …}
      +notifications: Doctrine\ORM\PersistentCollection {#1878 …}
      +awards: Doctrine\ORM\PersistentCollection {#1886 …}
      +subscribedCategories: Doctrine\ORM\PersistentCollection {#1899 …}
      +categories: Doctrine\ORM\PersistentCollection {#1954 …}
      -id: 57593
      -password: "$2y$13$/L0PmovM1H9sjmzmYDFDJ./Rjx6mWwKcBTi6vz7ViURzIQuLk35WK"
      -totpSecret: null
      -totpBackupCodes: []
      -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1978 …}
      +apId: "danielquinn@lemmy.ca"
      +apProfileId: "https://lemmy.ca/u/danielquinn"
      +apPublicUrl: "https://lemmy.ca/u/danielquinn"
      +apFollowersUrl: null
      +apInboxUrl: "https://lemmy.ca/inbox"
      +apDomain: "lemmy.ca"
      +apPreferredUsername: "danielquinn"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: false
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729106992 {#276
        date: 2024-10-16 21:29:52.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1697197941 {#272
        date: 2023-10-13 13:52:21.0 +02:00
      }
    }
    +entry: App\Entity\Entry {#1609
      +user: App\Entity\User {#260}
      +magazine: Proxies\__CG__\App\Entity\Magazine {#1584
        +icon: Proxies\__CG__\App\Entity\Image {#3026 …}
        +name: "piracy@lemmy.dbzer0.com"
        +title: "piracy"
        +description: """
          ##### ⚓ Community devoted to in-depth debate on topics concerning digital piracy, ethical problems, and legal advancements.\n
          \n
          ---\n
          \n
          ### Rules • [Full Version](https://rentry.co/piracy-rules)\n
          \n
          **1**. Posts must be related to the discussion of digital piracy\n
          \n
          **2**. Don’t request invites, trade, sell, or self-promote\n
          \n
          **3**. Don’t request or link to specific pirated titles, including DMs\n
          \n
          **4**. Don’t submit low-quality posts, be entitled, or harass others\n
          \n
          **5**. Don’t post questions already answered. READ THE [WIKI](https://lemmy.dbzer0.com/post/10901)\n
          \n
          ---\n
          \n
          [![](https://a.imagem.app/oZoQ1v.png)](https://lemmy.dbzer0.com/post/10901)\n
          ---------------------------------------------------------------------------\n
          \n
          ### Loot, Pillage, & Plunder\n
          \n
          - [📜 Megathread](https://rentry.co/megathread)\n
          - [🪶 FAQ](https://rentry.co/piracy-faq)\n
          - [🪶 ISP Complaints](https://rentry.co/piracy-isp-complaints)\n
          - [🪶 Rules](https://rentry.co/piracy-rules)\n
          \n
          ---\n
          \n
          💰 Please help cover server costs.\n
          \n
          [![Ko-Fi](https://lemmy.dbzer0.com/pictrs/image/4a2f073a-3dd8-492a-942d-72bd929c9f1d.png)](https://ko-fi.com/dbzer0)[![Liberapay](https://lemmy.dbzer0.com/pictrs/image/eec4659d-39be-4fc9-bc9e-66a96285ea2c.png)](https://liberapay.com/db0/)\n
          \n
          ---
          """
        +rules: null
        +subscriptionsCount: 1
        +entryCount: 866
        +entryCommentCount: 20194
        +postCount: 7
        +postCommentCount: 149
        +isAdult: false
        +customCss: null
        +lastActive: DateTime @1729581369 {#3023
          date: 2024-10-22 09:16:09.0 +02:00
        }
        +markedForDeletionAt: null
        +tags: null
        +moderators: Doctrine\ORM\PersistentCollection {#3027 …}
        +ownershipRequests: Doctrine\ORM\PersistentCollection {#3029 …}
        +moderatorRequests: Doctrine\ORM\PersistentCollection {#3031 …}
        +entries: Doctrine\ORM\PersistentCollection {#3033 …}
        +posts: Doctrine\ORM\PersistentCollection {#3035 …}
        +subscriptions: Doctrine\ORM\PersistentCollection {#3037 …}
        +bans: Doctrine\ORM\PersistentCollection {#3043 …}
        +reports: Doctrine\ORM\PersistentCollection {#3051 …}
        +badges: Doctrine\ORM\PersistentCollection {#3064 …}
        +logs: Doctrine\ORM\PersistentCollection {#3074 …}
        +awards: Doctrine\ORM\PersistentCollection {#3056 …}
        +categories: Doctrine\ORM\PersistentCollection {#3080 …}
        -id: 51
        +apId: "piracy@lemmy.dbzer0.com"
        +apProfileId: "https://lemmy.dbzer0.com/c/piracy"
        +apPublicUrl: "https://lemmy.dbzer0.com/c/piracy"
        +apFollowersUrl: "https://lemmy.dbzer0.com/c/piracy/followers"
        +apInboxUrl: "https://lemmy.dbzer0.com/inbox"
        +apDomain: "lemmy.dbzer0.com"
        +apPreferredUsername: "piracy"
        +apDiscoverable: true
        +apManuallyApprovesFollowers: null
        +privateKey: null
        +publicKey: null
        +apFetchedAt: DateTime @1708748229 {#3024
          date: 2024-02-24 05:17:09.0 +01:00
        }
        +apDeletedAt: null
        +apTimeoutAt: null
        +visibility: "visible             "
        +createdAt: DateTimeImmutable @1697197339 {#3025
          date: 2023-10-13 13:42:19.0 +02:00
        }
        +__isInitialized__: true
         …2
      }
      +image: Proxies\__CG__\App\Entity\Image {#1579 …}
      +domain: Proxies\__CG__\App\Entity\Domain {#1679 …}
      +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 {#1421
        date: 2024-02-10 10:33:02.0 +01:00
      }
      +ip: null
      +adaAmount: 0
      +tags: null
      +mentions: null
      +comments: Doctrine\ORM\PersistentCollection {#1650 …}
      +votes: Doctrine\ORM\PersistentCollection {#1652 …}
      +reports: Doctrine\ORM\PersistentCollection {#1651 …}
      +favourites: Doctrine\ORM\PersistentCollection {#1527 …}
      +notifications: Doctrine\ORM\PersistentCollection {#1560 …}
      +badges: Doctrine\ORM\PersistentCollection {#1558 …}
      +children: [
        3 => App\Entity\EntryComment {#1611
          +user: App\Entity\User {#260}
          +entry: App\Entity\Entry {#1609}
          +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
          +image: null
          +parent: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
          +root: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
          +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 {#1596
            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 {#2464 …}
          +nested: Doctrine\ORM\PersistentCollection {#1740 …}
          +votes: Doctrine\ORM\PersistentCollection {#1739 …}
          +reports: Doctrine\ORM\PersistentCollection {#1716 …}
          +favourites: Doctrine\ORM\PersistentCollection {#2461 …}
          +notifications: Doctrine\ORM\PersistentCollection {#2447 …}
          -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 {#1555
            date: 2023-10-14 09:20:07.0 +02:00
          }
          +"title": 48003
        }
        2 => App\Entity\EntryComment {#2467}
        1 => App\Entity\EntryComment {#2382
          +user: App\Entity\User {#260}
          +entry: App\Entity\Entry {#1609}
          +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
          +image: null
          +parent: Proxies\__CG__\App\Entity\EntryComment {#2385 …}
          +root: Proxies\__CG__\App\Entity\EntryComment {#2385 …}
          +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 {#2380
            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 {#2384 …}
          +nested: Doctrine\ORM\PersistentCollection {#2379 …}
          +votes: Doctrine\ORM\PersistentCollection {#2383 …}
          +reports: Doctrine\ORM\PersistentCollection {#1906 …}
          +favourites: Doctrine\ORM\PersistentCollection {#1708 …}
          +notifications: Doctrine\ORM\PersistentCollection {#1410 …}
          -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 {#2386
            date: 2023-10-14 15:04:09.0 +02:00
          }
          +"title": 48431
        }
        0 => App\Entity\EntryComment {#1407
          +user: App\Entity\User {#260}
          +entry: App\Entity\Entry {#1609}
          +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
          +image: null
          +parent: Proxies\__CG__\App\Entity\EntryComment {#1883 …}
          +root: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
          +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 {#1907
            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 {#2391 …}
          +nested: Doctrine\ORM\PersistentCollection {#2369 …}
          +votes: Doctrine\ORM\PersistentCollection {#2392 …}
          +reports: Doctrine\ORM\PersistentCollection {#2395 …}
          +favourites: Doctrine\ORM\PersistentCollection {#1384 …}
          +notifications: Doctrine\ORM\PersistentCollection {#1383 …}
          -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 {#1908
            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 {#1424
        date: 2023-10-14 01:14:01.0 +02:00
      }
    }
    +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
    +image: null
    +parent: Proxies\__CG__\App\Entity\EntryComment {#2470 …}
    +root: Proxies\__CG__\App\Entity\EntryComment {#2470 …}
    +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 {#1731
      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 {#2455 …}
    +nested: Doctrine\ORM\PersistentCollection {#2471 …}
    +votes: Doctrine\ORM\PersistentCollection {#2363 …}
    +reports: Doctrine\ORM\PersistentCollection {#2377 …}
    +favourites: Doctrine\ORM\PersistentCollection {#2359 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2364 …}
    -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 {#2469
      date: 2023-10-14 09:26:17.0 +02:00
    }
    +"title": 48009
  }
  +showMagazineName: false
  +showEntryTitle: false
  +showNested: false
  +level: 1
  +canSeeTrash: false
  +dateAsUrl: true
  -requestStack: Symfony\Component\HttpFoundation\RequestStack {#1328 …}
  -authorizationChecker: Symfony\Component\Security\Core\Authorization\AuthorizationChecker {#931 …}
}
user_inline App\Twig\Components\UserInlineComponent 14.0 MiB 0.17 ms
Input props
[
  "user" => App\Entity\User {#260
    +avatar: Proxies\__CG__\App\Entity\Image {#240 …}
    +cover: null
    +email: "danielquinn@lemmy.ca"
    +username: "@danielquinn@lemmy.ca"
    +roles: []
    +followersCount: 0
    +homepage: "front"
    +about: "Canadian software engineer living in Europe."
    +lastActive: DateTime @1727577650 {#273
      date: 2024-09-29 04:40:50.0 +02:00
    }
    +markedForDeletionAt: null
    +fields: null
    +oauthGithubId: null
    +oauthGoogleId: null
    +oauthFacebookId: null
    +oauthKeycloakId: null
    +hideAdult: true
    +showSubscribedUsers: true
    +showSubscribedMagazines: true
    +showSubscribedDomains: true
    +preferredLanguages: []
    +featuredMagazines: null
    +showProfileSubscriptions: false
    +showProfileFollowings: true
    +markNewComments: false
    +notifyOnNewEntry: false
    +notifyOnNewEntryReply: true
    +notifyOnNewEntryCommentReply: true
    +notifyOnNewPost: false
    +notifyOnNewPostReply: true
    +notifyOnNewPostCommentReply: true
    +addMentionsEntries: false
    +addMentionsPosts: true
    +isBanned: false
    +isVerified: false
    +isDeleted: false
    +isBot: false
    +spamProtection: true
    +customCss: null
    +ignoreMagazinesCustomCss: false
    +moderatorTokens: Doctrine\ORM\PersistentCollection {#231 …}
    +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#227 …}
    +moderatorRequests: Doctrine\ORM\PersistentCollection {#216 …}
    +entries: Doctrine\ORM\PersistentCollection {#174 …}
    +entryVotes: Doctrine\ORM\PersistentCollection {#146 …}
    +entryComments: Doctrine\ORM\PersistentCollection {#119 …}
    +entryCommentVotes: Doctrine\ORM\PersistentCollection {#89 …}
    +posts: Doctrine\ORM\PersistentCollection {#62 …}
    +postVotes: Doctrine\ORM\PersistentCollection {#77 …}
    +postComments: Doctrine\ORM\PersistentCollection {#2405 …}
    +postCommentVotes: Doctrine\ORM\PersistentCollection {#1607 …}
    +subscriptions: Doctrine\ORM\PersistentCollection {#1768 …}
    +subscribedDomains: Doctrine\ORM\PersistentCollection {#2445 …}
    +follows: Doctrine\ORM\PersistentCollection {#1849 …}
    +followers: Doctrine\ORM\PersistentCollection {#1810 …}
    +blocks: Doctrine\ORM\PersistentCollection {#1794 …}
    +blockers: Doctrine\ORM\PersistentCollection {#2415 …}
    +blockedMagazines: Doctrine\ORM\PersistentCollection {#2421 …}
    +blockedDomains: Doctrine\ORM\PersistentCollection {#2418 …}
    +reports: Doctrine\ORM\PersistentCollection {#2398 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1918 …}
    +violations: Doctrine\ORM\PersistentCollection {#1834 …}
    +notifications: Doctrine\ORM\PersistentCollection {#1878 …}
    +awards: Doctrine\ORM\PersistentCollection {#1886 …}
    +subscribedCategories: Doctrine\ORM\PersistentCollection {#1899 …}
    +categories: Doctrine\ORM\PersistentCollection {#1954 …}
    -id: 57593
    -password: "$2y$13$/L0PmovM1H9sjmzmYDFDJ./Rjx6mWwKcBTi6vz7ViURzIQuLk35WK"
    -totpSecret: null
    -totpBackupCodes: []
    -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1978 …}
    +apId: "danielquinn@lemmy.ca"
    +apProfileId: "https://lemmy.ca/u/danielquinn"
    +apPublicUrl: "https://lemmy.ca/u/danielquinn"
    +apFollowersUrl: null
    +apInboxUrl: "https://lemmy.ca/inbox"
    +apDomain: "lemmy.ca"
    +apPreferredUsername: "danielquinn"
    +apDiscoverable: true
    +apManuallyApprovesFollowers: false
    +privateKey: null
    +publicKey: null
    +apFetchedAt: DateTime @1729106992 {#276
      date: 2024-10-16 21:29:52.0 +02:00
    }
    +apDeletedAt: null
    +apTimeoutAt: null
    +visibility: "visible             "
    +createdAt: DateTimeImmutable @1697197941 {#272
      date: 2023-10-13 13:52:21.0 +02:00
    }
  }
  "showAvatar" => false
]
Attributes
[]
Component
App\Twig\Components\UserInlineComponent {#4447
  +user: App\Entity\User {#260
    +avatar: Proxies\__CG__\App\Entity\Image {#240 …}
    +cover: null
    +email: "danielquinn@lemmy.ca"
    +username: "@danielquinn@lemmy.ca"
    +roles: []
    +followersCount: 0
    +homepage: "front"
    +about: "Canadian software engineer living in Europe."
    +lastActive: DateTime @1727577650 {#273
      date: 2024-09-29 04:40:50.0 +02:00
    }
    +markedForDeletionAt: null
    +fields: null
    +oauthGithubId: null
    +oauthGoogleId: null
    +oauthFacebookId: null
    +oauthKeycloakId: null
    +hideAdult: true
    +showSubscribedUsers: true
    +showSubscribedMagazines: true
    +showSubscribedDomains: true
    +preferredLanguages: []
    +featuredMagazines: null
    +showProfileSubscriptions: false
    +showProfileFollowings: true
    +markNewComments: false
    +notifyOnNewEntry: false
    +notifyOnNewEntryReply: true
    +notifyOnNewEntryCommentReply: true
    +notifyOnNewPost: false
    +notifyOnNewPostReply: true
    +notifyOnNewPostCommentReply: true
    +addMentionsEntries: false
    +addMentionsPosts: true
    +isBanned: false
    +isVerified: false
    +isDeleted: false
    +isBot: false
    +spamProtection: true
    +customCss: null
    +ignoreMagazinesCustomCss: false
    +moderatorTokens: Doctrine\ORM\PersistentCollection {#231 …}
    +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#227 …}
    +moderatorRequests: Doctrine\ORM\PersistentCollection {#216 …}
    +entries: Doctrine\ORM\PersistentCollection {#174 …}
    +entryVotes: Doctrine\ORM\PersistentCollection {#146 …}
    +entryComments: Doctrine\ORM\PersistentCollection {#119 …}
    +entryCommentVotes: Doctrine\ORM\PersistentCollection {#89 …}
    +posts: Doctrine\ORM\PersistentCollection {#62 …}
    +postVotes: Doctrine\ORM\PersistentCollection {#77 …}
    +postComments: Doctrine\ORM\PersistentCollection {#2405 …}
    +postCommentVotes: Doctrine\ORM\PersistentCollection {#1607 …}
    +subscriptions: Doctrine\ORM\PersistentCollection {#1768 …}
    +subscribedDomains: Doctrine\ORM\PersistentCollection {#2445 …}
    +follows: Doctrine\ORM\PersistentCollection {#1849 …}
    +followers: Doctrine\ORM\PersistentCollection {#1810 …}
    +blocks: Doctrine\ORM\PersistentCollection {#1794 …}
    +blockers: Doctrine\ORM\PersistentCollection {#2415 …}
    +blockedMagazines: Doctrine\ORM\PersistentCollection {#2421 …}
    +blockedDomains: Doctrine\ORM\PersistentCollection {#2418 …}
    +reports: Doctrine\ORM\PersistentCollection {#2398 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1918 …}
    +violations: Doctrine\ORM\PersistentCollection {#1834 …}
    +notifications: Doctrine\ORM\PersistentCollection {#1878 …}
    +awards: Doctrine\ORM\PersistentCollection {#1886 …}
    +subscribedCategories: Doctrine\ORM\PersistentCollection {#1899 …}
    +categories: Doctrine\ORM\PersistentCollection {#1954 …}
    -id: 57593
    -password: "$2y$13$/L0PmovM1H9sjmzmYDFDJ./Rjx6mWwKcBTi6vz7ViURzIQuLk35WK"
    -totpSecret: null
    -totpBackupCodes: []
    -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1978 …}
    +apId: "danielquinn@lemmy.ca"
    +apProfileId: "https://lemmy.ca/u/danielquinn"
    +apPublicUrl: "https://lemmy.ca/u/danielquinn"
    +apFollowersUrl: null
    +apInboxUrl: "https://lemmy.ca/inbox"
    +apDomain: "lemmy.ca"
    +apPreferredUsername: "danielquinn"
    +apDiscoverable: true
    +apManuallyApprovesFollowers: false
    +privateKey: null
    +publicKey: null
    +apFetchedAt: DateTime @1729106992 {#276
      date: 2024-10-16 21:29:52.0 +02:00
    }
    +apDeletedAt: null
    +apTimeoutAt: null
    +visibility: "visible             "
    +createdAt: DateTimeImmutable @1697197941 {#272
      date: 2023-10-13 13:52:21.0 +02:00
    }
  }
  +showAvatar: false
}
date App\Twig\Components\DateComponent 14.0 MiB 0.14 ms
Input props
[
  "date" => DateTimeImmutable @1697268377 {#2469
    date: 2023-10-14 09:26:17.0 +02:00
  }
]
Attributes
[]
Component
App\Twig\Components\DateComponent {#4503
  +date: DateTimeImmutable @1697268377 {#2469
    date: 2023-10-14 09:26:17.0 +02:00
  }
}
date_edited App\Twig\Components\DateEditedComponent 14.0 MiB 0.15 ms
Input props
[
  "createdAt" => DateTimeImmutable @1697268377 {#2469
    date: 2023-10-14 09:26:17.0 +02:00
  }
  "editedAt" => null
]
Attributes
[]
Component
App\Twig\Components\DateEditedComponent {#4557
  +createdAt: DateTimeImmutable @1697268377 {#2469
    date: 2023-10-14 09:26:17.0 +02:00
  }
  +editedAt: null
}
user_avatar App\Twig\Components\UserAvatarComponent 14.0 MiB 0.20 ms
Input props
[
  "user" => App\Entity\User {#260
    +avatar: Proxies\__CG__\App\Entity\Image {#240 …}
    +cover: null
    +email: "danielquinn@lemmy.ca"
    +username: "@danielquinn@lemmy.ca"
    +roles: []
    +followersCount: 0
    +homepage: "front"
    +about: "Canadian software engineer living in Europe."
    +lastActive: DateTime @1727577650 {#273
      date: 2024-09-29 04:40:50.0 +02:00
    }
    +markedForDeletionAt: null
    +fields: null
    +oauthGithubId: null
    +oauthGoogleId: null
    +oauthFacebookId: null
    +oauthKeycloakId: null
    +hideAdult: true
    +showSubscribedUsers: true
    +showSubscribedMagazines: true
    +showSubscribedDomains: true
    +preferredLanguages: []
    +featuredMagazines: null
    +showProfileSubscriptions: false
    +showProfileFollowings: true
    +markNewComments: false
    +notifyOnNewEntry: false
    +notifyOnNewEntryReply: true
    +notifyOnNewEntryCommentReply: true
    +notifyOnNewPost: false
    +notifyOnNewPostReply: true
    +notifyOnNewPostCommentReply: true
    +addMentionsEntries: false
    +addMentionsPosts: true
    +isBanned: false
    +isVerified: false
    +isDeleted: false
    +isBot: false
    +spamProtection: true
    +customCss: null
    +ignoreMagazinesCustomCss: false
    +moderatorTokens: Doctrine\ORM\PersistentCollection {#231 …}
    +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#227 …}
    +moderatorRequests: Doctrine\ORM\PersistentCollection {#216 …}
    +entries: Doctrine\ORM\PersistentCollection {#174 …}
    +entryVotes: Doctrine\ORM\PersistentCollection {#146 …}
    +entryComments: Doctrine\ORM\PersistentCollection {#119 …}
    +entryCommentVotes: Doctrine\ORM\PersistentCollection {#89 …}
    +posts: Doctrine\ORM\PersistentCollection {#62 …}
    +postVotes: Doctrine\ORM\PersistentCollection {#77 …}
    +postComments: Doctrine\ORM\PersistentCollection {#2405 …}
    +postCommentVotes: Doctrine\ORM\PersistentCollection {#1607 …}
    +subscriptions: Doctrine\ORM\PersistentCollection {#1768 …}
    +subscribedDomains: Doctrine\ORM\PersistentCollection {#2445 …}
    +follows: Doctrine\ORM\PersistentCollection {#1849 …}
    +followers: Doctrine\ORM\PersistentCollection {#1810 …}
    +blocks: Doctrine\ORM\PersistentCollection {#1794 …}
    +blockers: Doctrine\ORM\PersistentCollection {#2415 …}
    +blockedMagazines: Doctrine\ORM\PersistentCollection {#2421 …}
    +blockedDomains: Doctrine\ORM\PersistentCollection {#2418 …}
    +reports: Doctrine\ORM\PersistentCollection {#2398 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1918 …}
    +violations: Doctrine\ORM\PersistentCollection {#1834 …}
    +notifications: Doctrine\ORM\PersistentCollection {#1878 …}
    +awards: Doctrine\ORM\PersistentCollection {#1886 …}
    +subscribedCategories: Doctrine\ORM\PersistentCollection {#1899 …}
    +categories: Doctrine\ORM\PersistentCollection {#1954 …}
    -id: 57593
    -password: "$2y$13$/L0PmovM1H9sjmzmYDFDJ./Rjx6mWwKcBTi6vz7ViURzIQuLk35WK"
    -totpSecret: null
    -totpBackupCodes: []
    -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1978 …}
    +apId: "danielquinn@lemmy.ca"
    +apProfileId: "https://lemmy.ca/u/danielquinn"
    +apPublicUrl: "https://lemmy.ca/u/danielquinn"
    +apFollowersUrl: null
    +apInboxUrl: "https://lemmy.ca/inbox"
    +apDomain: "lemmy.ca"
    +apPreferredUsername: "danielquinn"
    +apDiscoverable: true
    +apManuallyApprovesFollowers: false
    +privateKey: null
    +publicKey: null
    +apFetchedAt: DateTime @1729106992 {#276
      date: 2024-10-16 21:29:52.0 +02:00
    }
    +apDeletedAt: null
    +apTimeoutAt: null
    +visibility: "visible             "
    +createdAt: DateTimeImmutable @1697197941 {#272
      date: 2023-10-13 13:52:21.0 +02:00
    }
  }
  "width" => 40
  "height" => 40
  "asLink" => true
]
Attributes
[]
Component
App\Twig\Components\UserAvatarComponent {#4611
  +width: 40
  +height: 40
  +user: App\Entity\User {#260
    +avatar: Proxies\__CG__\App\Entity\Image {#240 …}
    +cover: null
    +email: "danielquinn@lemmy.ca"
    +username: "@danielquinn@lemmy.ca"
    +roles: []
    +followersCount: 0
    +homepage: "front"
    +about: "Canadian software engineer living in Europe."
    +lastActive: DateTime @1727577650 {#273
      date: 2024-09-29 04:40:50.0 +02:00
    }
    +markedForDeletionAt: null
    +fields: null
    +oauthGithubId: null
    +oauthGoogleId: null
    +oauthFacebookId: null
    +oauthKeycloakId: null
    +hideAdult: true
    +showSubscribedUsers: true
    +showSubscribedMagazines: true
    +showSubscribedDomains: true
    +preferredLanguages: []
    +featuredMagazines: null
    +showProfileSubscriptions: false
    +showProfileFollowings: true
    +markNewComments: false
    +notifyOnNewEntry: false
    +notifyOnNewEntryReply: true
    +notifyOnNewEntryCommentReply: true
    +notifyOnNewPost: false
    +notifyOnNewPostReply: true
    +notifyOnNewPostCommentReply: true
    +addMentionsEntries: false
    +addMentionsPosts: true
    +isBanned: false
    +isVerified: false
    +isDeleted: false
    +isBot: false
    +spamProtection: true
    +customCss: null
    +ignoreMagazinesCustomCss: false
    +moderatorTokens: Doctrine\ORM\PersistentCollection {#231 …}
    +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#227 …}
    +moderatorRequests: Doctrine\ORM\PersistentCollection {#216 …}
    +entries: Doctrine\ORM\PersistentCollection {#174 …}
    +entryVotes: Doctrine\ORM\PersistentCollection {#146 …}
    +entryComments: Doctrine\ORM\PersistentCollection {#119 …}
    +entryCommentVotes: Doctrine\ORM\PersistentCollection {#89 …}
    +posts: Doctrine\ORM\PersistentCollection {#62 …}
    +postVotes: Doctrine\ORM\PersistentCollection {#77 …}
    +postComments: Doctrine\ORM\PersistentCollection {#2405 …}
    +postCommentVotes: Doctrine\ORM\PersistentCollection {#1607 …}
    +subscriptions: Doctrine\ORM\PersistentCollection {#1768 …}
    +subscribedDomains: Doctrine\ORM\PersistentCollection {#2445 …}
    +follows: Doctrine\ORM\PersistentCollection {#1849 …}
    +followers: Doctrine\ORM\PersistentCollection {#1810 …}
    +blocks: Doctrine\ORM\PersistentCollection {#1794 …}
    +blockers: Doctrine\ORM\PersistentCollection {#2415 …}
    +blockedMagazines: Doctrine\ORM\PersistentCollection {#2421 …}
    +blockedDomains: Doctrine\ORM\PersistentCollection {#2418 …}
    +reports: Doctrine\ORM\PersistentCollection {#2398 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1918 …}
    +violations: Doctrine\ORM\PersistentCollection {#1834 …}
    +notifications: Doctrine\ORM\PersistentCollection {#1878 …}
    +awards: Doctrine\ORM\PersistentCollection {#1886 …}
    +subscribedCategories: Doctrine\ORM\PersistentCollection {#1899 …}
    +categories: Doctrine\ORM\PersistentCollection {#1954 …}
    -id: 57593
    -password: "$2y$13$/L0PmovM1H9sjmzmYDFDJ./Rjx6mWwKcBTi6vz7ViURzIQuLk35WK"
    -totpSecret: null
    -totpBackupCodes: []
    -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1978 …}
    +apId: "danielquinn@lemmy.ca"
    +apProfileId: "https://lemmy.ca/u/danielquinn"
    +apPublicUrl: "https://lemmy.ca/u/danielquinn"
    +apFollowersUrl: null
    +apInboxUrl: "https://lemmy.ca/inbox"
    +apDomain: "lemmy.ca"
    +apPreferredUsername: "danielquinn"
    +apDiscoverable: true
    +apManuallyApprovesFollowers: false
    +privateKey: null
    +publicKey: null
    +apFetchedAt: DateTime @1729106992 {#276
      date: 2024-10-16 21:29:52.0 +02:00
    }
    +apDeletedAt: null
    +apTimeoutAt: null
    +visibility: "visible             "
    +createdAt: DateTimeImmutable @1697197941 {#272
      date: 2023-10-13 13:52:21.0 +02:00
    }
  }
  +asLink: true
}
vote App\Twig\Components\VoteComponent 14.0 MiB 0.41 ms
Input props
[
  "subject" => App\Entity\EntryComment {#2467
    +user: App\Entity\User {#260
      +avatar: Proxies\__CG__\App\Entity\Image {#240 …}
      +cover: null
      +email: "danielquinn@lemmy.ca"
      +username: "@danielquinn@lemmy.ca"
      +roles: []
      +followersCount: 0
      +homepage: "front"
      +about: "Canadian software engineer living in Europe."
      +lastActive: DateTime @1727577650 {#273
        date: 2024-09-29 04:40:50.0 +02:00
      }
      +markedForDeletionAt: null
      +fields: null
      +oauthGithubId: null
      +oauthGoogleId: null
      +oauthFacebookId: null
      +oauthKeycloakId: null
      +hideAdult: true
      +showSubscribedUsers: true
      +showSubscribedMagazines: true
      +showSubscribedDomains: true
      +preferredLanguages: []
      +featuredMagazines: null
      +showProfileSubscriptions: false
      +showProfileFollowings: true
      +markNewComments: false
      +notifyOnNewEntry: false
      +notifyOnNewEntryReply: true
      +notifyOnNewEntryCommentReply: true
      +notifyOnNewPost: false
      +notifyOnNewPostReply: true
      +notifyOnNewPostCommentReply: true
      +addMentionsEntries: false
      +addMentionsPosts: true
      +isBanned: false
      +isVerified: false
      +isDeleted: false
      +isBot: false
      +spamProtection: true
      +customCss: null
      +ignoreMagazinesCustomCss: false
      +moderatorTokens: Doctrine\ORM\PersistentCollection {#231 …}
      +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#227 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#216 …}
      +entries: Doctrine\ORM\PersistentCollection {#174 …}
      +entryVotes: Doctrine\ORM\PersistentCollection {#146 …}
      +entryComments: Doctrine\ORM\PersistentCollection {#119 …}
      +entryCommentVotes: Doctrine\ORM\PersistentCollection {#89 …}
      +posts: Doctrine\ORM\PersistentCollection {#62 …}
      +postVotes: Doctrine\ORM\PersistentCollection {#77 …}
      +postComments: Doctrine\ORM\PersistentCollection {#2405 …}
      +postCommentVotes: Doctrine\ORM\PersistentCollection {#1607 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#1768 …}
      +subscribedDomains: Doctrine\ORM\PersistentCollection {#2445 …}
      +follows: Doctrine\ORM\PersistentCollection {#1849 …}
      +followers: Doctrine\ORM\PersistentCollection {#1810 …}
      +blocks: Doctrine\ORM\PersistentCollection {#1794 …}
      +blockers: Doctrine\ORM\PersistentCollection {#2415 …}
      +blockedMagazines: Doctrine\ORM\PersistentCollection {#2421 …}
      +blockedDomains: Doctrine\ORM\PersistentCollection {#2418 …}
      +reports: Doctrine\ORM\PersistentCollection {#2398 …}
      +favourites: Doctrine\ORM\PersistentCollection {#1918 …}
      +violations: Doctrine\ORM\PersistentCollection {#1834 …}
      +notifications: Doctrine\ORM\PersistentCollection {#1878 …}
      +awards: Doctrine\ORM\PersistentCollection {#1886 …}
      +subscribedCategories: Doctrine\ORM\PersistentCollection {#1899 …}
      +categories: Doctrine\ORM\PersistentCollection {#1954 …}
      -id: 57593
      -password: "$2y$13$/L0PmovM1H9sjmzmYDFDJ./Rjx6mWwKcBTi6vz7ViURzIQuLk35WK"
      -totpSecret: null
      -totpBackupCodes: []
      -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1978 …}
      +apId: "danielquinn@lemmy.ca"
      +apProfileId: "https://lemmy.ca/u/danielquinn"
      +apPublicUrl: "https://lemmy.ca/u/danielquinn"
      +apFollowersUrl: null
      +apInboxUrl: "https://lemmy.ca/inbox"
      +apDomain: "lemmy.ca"
      +apPreferredUsername: "danielquinn"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: false
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729106992 {#276
        date: 2024-10-16 21:29:52.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1697197941 {#272
        date: 2023-10-13 13:52:21.0 +02:00
      }
    }
    +entry: App\Entity\Entry {#1609
      +user: App\Entity\User {#260}
      +magazine: Proxies\__CG__\App\Entity\Magazine {#1584
        +icon: Proxies\__CG__\App\Entity\Image {#3026 …}
        +name: "piracy@lemmy.dbzer0.com"
        +title: "piracy"
        +description: """
          ##### ⚓ Community devoted to in-depth debate on topics concerning digital piracy, ethical problems, and legal advancements.\n
          \n
          ---\n
          \n
          ### Rules • [Full Version](https://rentry.co/piracy-rules)\n
          \n
          **1**. Posts must be related to the discussion of digital piracy\n
          \n
          **2**. Don’t request invites, trade, sell, or self-promote\n
          \n
          **3**. Don’t request or link to specific pirated titles, including DMs\n
          \n
          **4**. Don’t submit low-quality posts, be entitled, or harass others\n
          \n
          **5**. Don’t post questions already answered. READ THE [WIKI](https://lemmy.dbzer0.com/post/10901)\n
          \n
          ---\n
          \n
          [![](https://a.imagem.app/oZoQ1v.png)](https://lemmy.dbzer0.com/post/10901)\n
          ---------------------------------------------------------------------------\n
          \n
          ### Loot, Pillage, & Plunder\n
          \n
          - [📜 Megathread](https://rentry.co/megathread)\n
          - [🪶 FAQ](https://rentry.co/piracy-faq)\n
          - [🪶 ISP Complaints](https://rentry.co/piracy-isp-complaints)\n
          - [🪶 Rules](https://rentry.co/piracy-rules)\n
          \n
          ---\n
          \n
          💰 Please help cover server costs.\n
          \n
          [![Ko-Fi](https://lemmy.dbzer0.com/pictrs/image/4a2f073a-3dd8-492a-942d-72bd929c9f1d.png)](https://ko-fi.com/dbzer0)[![Liberapay](https://lemmy.dbzer0.com/pictrs/image/eec4659d-39be-4fc9-bc9e-66a96285ea2c.png)](https://liberapay.com/db0/)\n
          \n
          ---
          """
        +rules: null
        +subscriptionsCount: 1
        +entryCount: 866
        +entryCommentCount: 20194
        +postCount: 7
        +postCommentCount: 149
        +isAdult: false
        +customCss: null
        +lastActive: DateTime @1729581369 {#3023
          date: 2024-10-22 09:16:09.0 +02:00
        }
        +markedForDeletionAt: null
        +tags: null
        +moderators: Doctrine\ORM\PersistentCollection {#3027 …}
        +ownershipRequests: Doctrine\ORM\PersistentCollection {#3029 …}
        +moderatorRequests: Doctrine\ORM\PersistentCollection {#3031 …}
        +entries: Doctrine\ORM\PersistentCollection {#3033 …}
        +posts: Doctrine\ORM\PersistentCollection {#3035 …}
        +subscriptions: Doctrine\ORM\PersistentCollection {#3037 …}
        +bans: Doctrine\ORM\PersistentCollection {#3043 …}
        +reports: Doctrine\ORM\PersistentCollection {#3051 …}
        +badges: Doctrine\ORM\PersistentCollection {#3064 …}
        +logs: Doctrine\ORM\PersistentCollection {#3074 …}
        +awards: Doctrine\ORM\PersistentCollection {#3056 …}
        +categories: Doctrine\ORM\PersistentCollection {#3080 …}
        -id: 51
        +apId: "piracy@lemmy.dbzer0.com"
        +apProfileId: "https://lemmy.dbzer0.com/c/piracy"
        +apPublicUrl: "https://lemmy.dbzer0.com/c/piracy"
        +apFollowersUrl: "https://lemmy.dbzer0.com/c/piracy/followers"
        +apInboxUrl: "https://lemmy.dbzer0.com/inbox"
        +apDomain: "lemmy.dbzer0.com"
        +apPreferredUsername: "piracy"
        +apDiscoverable: true
        +apManuallyApprovesFollowers: null
        +privateKey: null
        +publicKey: null
        +apFetchedAt: DateTime @1708748229 {#3024
          date: 2024-02-24 05:17:09.0 +01:00
        }
        +apDeletedAt: null
        +apTimeoutAt: null
        +visibility: "visible             "
        +createdAt: DateTimeImmutable @1697197339 {#3025
          date: 2023-10-13 13:42:19.0 +02:00
        }
        +__isInitialized__: true
         …2
      }
      +image: Proxies\__CG__\App\Entity\Image {#1579 …}
      +domain: Proxies\__CG__\App\Entity\Domain {#1679 …}
      +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 {#1421
        date: 2024-02-10 10:33:02.0 +01:00
      }
      +ip: null
      +adaAmount: 0
      +tags: null
      +mentions: null
      +comments: Doctrine\ORM\PersistentCollection {#1650 …}
      +votes: Doctrine\ORM\PersistentCollection {#1652 …}
      +reports: Doctrine\ORM\PersistentCollection {#1651 …}
      +favourites: Doctrine\ORM\PersistentCollection {#1527 …}
      +notifications: Doctrine\ORM\PersistentCollection {#1560 …}
      +badges: Doctrine\ORM\PersistentCollection {#1558 …}
      +children: [
        3 => App\Entity\EntryComment {#1611
          +user: App\Entity\User {#260}
          +entry: App\Entity\Entry {#1609}
          +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
          +image: null
          +parent: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
          +root: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
          +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 {#1596
            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 {#2464 …}
          +nested: Doctrine\ORM\PersistentCollection {#1740 …}
          +votes: Doctrine\ORM\PersistentCollection {#1739 …}
          +reports: Doctrine\ORM\PersistentCollection {#1716 …}
          +favourites: Doctrine\ORM\PersistentCollection {#2461 …}
          +notifications: Doctrine\ORM\PersistentCollection {#2447 …}
          -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 {#1555
            date: 2023-10-14 09:20:07.0 +02:00
          }
          +"title": 48003
        }
        2 => App\Entity\EntryComment {#2467}
        1 => App\Entity\EntryComment {#2382
          +user: App\Entity\User {#260}
          +entry: App\Entity\Entry {#1609}
          +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
          +image: null
          +parent: Proxies\__CG__\App\Entity\EntryComment {#2385 …}
          +root: Proxies\__CG__\App\Entity\EntryComment {#2385 …}
          +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 {#2380
            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 {#2384 …}
          +nested: Doctrine\ORM\PersistentCollection {#2379 …}
          +votes: Doctrine\ORM\PersistentCollection {#2383 …}
          +reports: Doctrine\ORM\PersistentCollection {#1906 …}
          +favourites: Doctrine\ORM\PersistentCollection {#1708 …}
          +notifications: Doctrine\ORM\PersistentCollection {#1410 …}
          -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 {#2386
            date: 2023-10-14 15:04:09.0 +02:00
          }
          +"title": 48431
        }
        0 => App\Entity\EntryComment {#1407
          +user: App\Entity\User {#260}
          +entry: App\Entity\Entry {#1609}
          +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
          +image: null
          +parent: Proxies\__CG__\App\Entity\EntryComment {#1883 …}
          +root: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
          +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 {#1907
            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 {#2391 …}
          +nested: Doctrine\ORM\PersistentCollection {#2369 …}
          +votes: Doctrine\ORM\PersistentCollection {#2392 …}
          +reports: Doctrine\ORM\PersistentCollection {#2395 …}
          +favourites: Doctrine\ORM\PersistentCollection {#1384 …}
          +notifications: Doctrine\ORM\PersistentCollection {#1383 …}
          -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 {#1908
            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 {#1424
        date: 2023-10-14 01:14:01.0 +02:00
      }
    }
    +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
    +image: null
    +parent: Proxies\__CG__\App\Entity\EntryComment {#2470 …}
    +root: Proxies\__CG__\App\Entity\EntryComment {#2470 …}
    +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 {#1731
      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 {#2455 …}
    +nested: Doctrine\ORM\PersistentCollection {#2471 …}
    +votes: Doctrine\ORM\PersistentCollection {#2363 …}
    +reports: Doctrine\ORM\PersistentCollection {#2377 …}
    +favourites: Doctrine\ORM\PersistentCollection {#2359 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2364 …}
    -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 {#2469
      date: 2023-10-14 09:26:17.0 +02:00
    }
    +"title": 48009
  }
]
Attributes
[]
Component
App\Twig\Components\VoteComponent {#4693
  +subject: App\Entity\EntryComment {#2467
    +user: App\Entity\User {#260
      +avatar: Proxies\__CG__\App\Entity\Image {#240 …}
      +cover: null
      +email: "danielquinn@lemmy.ca"
      +username: "@danielquinn@lemmy.ca"
      +roles: []
      +followersCount: 0
      +homepage: "front"
      +about: "Canadian software engineer living in Europe."
      +lastActive: DateTime @1727577650 {#273
        date: 2024-09-29 04:40:50.0 +02:00
      }
      +markedForDeletionAt: null
      +fields: null
      +oauthGithubId: null
      +oauthGoogleId: null
      +oauthFacebookId: null
      +oauthKeycloakId: null
      +hideAdult: true
      +showSubscribedUsers: true
      +showSubscribedMagazines: true
      +showSubscribedDomains: true
      +preferredLanguages: []
      +featuredMagazines: null
      +showProfileSubscriptions: false
      +showProfileFollowings: true
      +markNewComments: false
      +notifyOnNewEntry: false
      +notifyOnNewEntryReply: true
      +notifyOnNewEntryCommentReply: true
      +notifyOnNewPost: false
      +notifyOnNewPostReply: true
      +notifyOnNewPostCommentReply: true
      +addMentionsEntries: false
      +addMentionsPosts: true
      +isBanned: false
      +isVerified: false
      +isDeleted: false
      +isBot: false
      +spamProtection: true
      +customCss: null
      +ignoreMagazinesCustomCss: false
      +moderatorTokens: Doctrine\ORM\PersistentCollection {#231 …}
      +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#227 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#216 …}
      +entries: Doctrine\ORM\PersistentCollection {#174 …}
      +entryVotes: Doctrine\ORM\PersistentCollection {#146 …}
      +entryComments: Doctrine\ORM\PersistentCollection {#119 …}
      +entryCommentVotes: Doctrine\ORM\PersistentCollection {#89 …}
      +posts: Doctrine\ORM\PersistentCollection {#62 …}
      +postVotes: Doctrine\ORM\PersistentCollection {#77 …}
      +postComments: Doctrine\ORM\PersistentCollection {#2405 …}
      +postCommentVotes: Doctrine\ORM\PersistentCollection {#1607 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#1768 …}
      +subscribedDomains: Doctrine\ORM\PersistentCollection {#2445 …}
      +follows: Doctrine\ORM\PersistentCollection {#1849 …}
      +followers: Doctrine\ORM\PersistentCollection {#1810 …}
      +blocks: Doctrine\ORM\PersistentCollection {#1794 …}
      +blockers: Doctrine\ORM\PersistentCollection {#2415 …}
      +blockedMagazines: Doctrine\ORM\PersistentCollection {#2421 …}
      +blockedDomains: Doctrine\ORM\PersistentCollection {#2418 …}
      +reports: Doctrine\ORM\PersistentCollection {#2398 …}
      +favourites: Doctrine\ORM\PersistentCollection {#1918 …}
      +violations: Doctrine\ORM\PersistentCollection {#1834 …}
      +notifications: Doctrine\ORM\PersistentCollection {#1878 …}
      +awards: Doctrine\ORM\PersistentCollection {#1886 …}
      +subscribedCategories: Doctrine\ORM\PersistentCollection {#1899 …}
      +categories: Doctrine\ORM\PersistentCollection {#1954 …}
      -id: 57593
      -password: "$2y$13$/L0PmovM1H9sjmzmYDFDJ./Rjx6mWwKcBTi6vz7ViURzIQuLk35WK"
      -totpSecret: null
      -totpBackupCodes: []
      -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1978 …}
      +apId: "danielquinn@lemmy.ca"
      +apProfileId: "https://lemmy.ca/u/danielquinn"
      +apPublicUrl: "https://lemmy.ca/u/danielquinn"
      +apFollowersUrl: null
      +apInboxUrl: "https://lemmy.ca/inbox"
      +apDomain: "lemmy.ca"
      +apPreferredUsername: "danielquinn"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: false
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729106992 {#276
        date: 2024-10-16 21:29:52.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1697197941 {#272
        date: 2023-10-13 13:52:21.0 +02:00
      }
    }
    +entry: App\Entity\Entry {#1609
      +user: App\Entity\User {#260}
      +magazine: Proxies\__CG__\App\Entity\Magazine {#1584
        +icon: Proxies\__CG__\App\Entity\Image {#3026 …}
        +name: "piracy@lemmy.dbzer0.com"
        +title: "piracy"
        +description: """
          ##### ⚓ Community devoted to in-depth debate on topics concerning digital piracy, ethical problems, and legal advancements.\n
          \n
          ---\n
          \n
          ### Rules • [Full Version](https://rentry.co/piracy-rules)\n
          \n
          **1**. Posts must be related to the discussion of digital piracy\n
          \n
          **2**. Don’t request invites, trade, sell, or self-promote\n
          \n
          **3**. Don’t request or link to specific pirated titles, including DMs\n
          \n
          **4**. Don’t submit low-quality posts, be entitled, or harass others\n
          \n
          **5**. Don’t post questions already answered. READ THE [WIKI](https://lemmy.dbzer0.com/post/10901)\n
          \n
          ---\n
          \n
          [![](https://a.imagem.app/oZoQ1v.png)](https://lemmy.dbzer0.com/post/10901)\n
          ---------------------------------------------------------------------------\n
          \n
          ### Loot, Pillage, & Plunder\n
          \n
          - [📜 Megathread](https://rentry.co/megathread)\n
          - [🪶 FAQ](https://rentry.co/piracy-faq)\n
          - [🪶 ISP Complaints](https://rentry.co/piracy-isp-complaints)\n
          - [🪶 Rules](https://rentry.co/piracy-rules)\n
          \n
          ---\n
          \n
          💰 Please help cover server costs.\n
          \n
          [![Ko-Fi](https://lemmy.dbzer0.com/pictrs/image/4a2f073a-3dd8-492a-942d-72bd929c9f1d.png)](https://ko-fi.com/dbzer0)[![Liberapay](https://lemmy.dbzer0.com/pictrs/image/eec4659d-39be-4fc9-bc9e-66a96285ea2c.png)](https://liberapay.com/db0/)\n
          \n
          ---
          """
        +rules: null
        +subscriptionsCount: 1
        +entryCount: 866
        +entryCommentCount: 20194
        +postCount: 7
        +postCommentCount: 149
        +isAdult: false
        +customCss: null
        +lastActive: DateTime @1729581369 {#3023
          date: 2024-10-22 09:16:09.0 +02:00
        }
        +markedForDeletionAt: null
        +tags: null
        +moderators: Doctrine\ORM\PersistentCollection {#3027 …}
        +ownershipRequests: Doctrine\ORM\PersistentCollection {#3029 …}
        +moderatorRequests: Doctrine\ORM\PersistentCollection {#3031 …}
        +entries: Doctrine\ORM\PersistentCollection {#3033 …}
        +posts: Doctrine\ORM\PersistentCollection {#3035 …}
        +subscriptions: Doctrine\ORM\PersistentCollection {#3037 …}
        +bans: Doctrine\ORM\PersistentCollection {#3043 …}
        +reports: Doctrine\ORM\PersistentCollection {#3051 …}
        +badges: Doctrine\ORM\PersistentCollection {#3064 …}
        +logs: Doctrine\ORM\PersistentCollection {#3074 …}
        +awards: Doctrine\ORM\PersistentCollection {#3056 …}
        +categories: Doctrine\ORM\PersistentCollection {#3080 …}
        -id: 51
        +apId: "piracy@lemmy.dbzer0.com"
        +apProfileId: "https://lemmy.dbzer0.com/c/piracy"
        +apPublicUrl: "https://lemmy.dbzer0.com/c/piracy"
        +apFollowersUrl: "https://lemmy.dbzer0.com/c/piracy/followers"
        +apInboxUrl: "https://lemmy.dbzer0.com/inbox"
        +apDomain: "lemmy.dbzer0.com"
        +apPreferredUsername: "piracy"
        +apDiscoverable: true
        +apManuallyApprovesFollowers: null
        +privateKey: null
        +publicKey: null
        +apFetchedAt: DateTime @1708748229 {#3024
          date: 2024-02-24 05:17:09.0 +01:00
        }
        +apDeletedAt: null
        +apTimeoutAt: null
        +visibility: "visible             "
        +createdAt: DateTimeImmutable @1697197339 {#3025
          date: 2023-10-13 13:42:19.0 +02:00
        }
        +__isInitialized__: true
         …2
      }
      +image: Proxies\__CG__\App\Entity\Image {#1579 …}
      +domain: Proxies\__CG__\App\Entity\Domain {#1679 …}
      +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 {#1421
        date: 2024-02-10 10:33:02.0 +01:00
      }
      +ip: null
      +adaAmount: 0
      +tags: null
      +mentions: null
      +comments: Doctrine\ORM\PersistentCollection {#1650 …}
      +votes: Doctrine\ORM\PersistentCollection {#1652 …}
      +reports: Doctrine\ORM\PersistentCollection {#1651 …}
      +favourites: Doctrine\ORM\PersistentCollection {#1527 …}
      +notifications: Doctrine\ORM\PersistentCollection {#1560 …}
      +badges: Doctrine\ORM\PersistentCollection {#1558 …}
      +children: [
        3 => App\Entity\EntryComment {#1611
          +user: App\Entity\User {#260}
          +entry: App\Entity\Entry {#1609}
          +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
          +image: null
          +parent: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
          +root: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
          +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 {#1596
            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 {#2464 …}
          +nested: Doctrine\ORM\PersistentCollection {#1740 …}
          +votes: Doctrine\ORM\PersistentCollection {#1739 …}
          +reports: Doctrine\ORM\PersistentCollection {#1716 …}
          +favourites: Doctrine\ORM\PersistentCollection {#2461 …}
          +notifications: Doctrine\ORM\PersistentCollection {#2447 …}
          -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 {#1555
            date: 2023-10-14 09:20:07.0 +02:00
          }
          +"title": 48003
        }
        2 => App\Entity\EntryComment {#2467}
        1 => App\Entity\EntryComment {#2382
          +user: App\Entity\User {#260}
          +entry: App\Entity\Entry {#1609}
          +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
          +image: null
          +parent: Proxies\__CG__\App\Entity\EntryComment {#2385 …}
          +root: Proxies\__CG__\App\Entity\EntryComment {#2385 …}
          +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 {#2380
            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 {#2384 …}
          +nested: Doctrine\ORM\PersistentCollection {#2379 …}
          +votes: Doctrine\ORM\PersistentCollection {#2383 …}
          +reports: Doctrine\ORM\PersistentCollection {#1906 …}
          +favourites: Doctrine\ORM\PersistentCollection {#1708 …}
          +notifications: Doctrine\ORM\PersistentCollection {#1410 …}
          -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 {#2386
            date: 2023-10-14 15:04:09.0 +02:00
          }
          +"title": 48431
        }
        0 => App\Entity\EntryComment {#1407
          +user: App\Entity\User {#260}
          +entry: App\Entity\Entry {#1609}
          +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
          +image: null
          +parent: Proxies\__CG__\App\Entity\EntryComment {#1883 …}
          +root: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
          +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 {#1907
            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 {#2391 …}
          +nested: Doctrine\ORM\PersistentCollection {#2369 …}
          +votes: Doctrine\ORM\PersistentCollection {#2392 …}
          +reports: Doctrine\ORM\PersistentCollection {#2395 …}
          +favourites: Doctrine\ORM\PersistentCollection {#1384 …}
          +notifications: Doctrine\ORM\PersistentCollection {#1383 …}
          -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 {#1908
            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 {#1424
        date: 2023-10-14 01:14:01.0 +02:00
      }
    }
    +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
    +image: null
    +parent: Proxies\__CG__\App\Entity\EntryComment {#2470 …}
    +root: Proxies\__CG__\App\Entity\EntryComment {#2470 …}
    +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 {#1731
      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 {#2455 …}
    +nested: Doctrine\ORM\PersistentCollection {#2471 …}
    +votes: Doctrine\ORM\PersistentCollection {#2363 …}
    +reports: Doctrine\ORM\PersistentCollection {#2377 …}
    +favourites: Doctrine\ORM\PersistentCollection {#2359 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2364 …}
    -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 {#2469
      date: 2023-10-14 09:26:17.0 +02:00
    }
    +"title": 48009
  }
  +formDest: "entry_comment"
  +showDownvote: true
  -cache: Symfony\Component\Cache\Adapter\TraceableTagAwareAdapter {#600 …}
}
boost App\Twig\Components\BoostComponent 14.0 MiB 0.92 ms
Input props
[
  "subject" => App\Entity\EntryComment {#2467
    +user: App\Entity\User {#260
      +avatar: Proxies\__CG__\App\Entity\Image {#240 …}
      +cover: null
      +email: "danielquinn@lemmy.ca"
      +username: "@danielquinn@lemmy.ca"
      +roles: []
      +followersCount: 0
      +homepage: "front"
      +about: "Canadian software engineer living in Europe."
      +lastActive: DateTime @1727577650 {#273
        date: 2024-09-29 04:40:50.0 +02:00
      }
      +markedForDeletionAt: null
      +fields: null
      +oauthGithubId: null
      +oauthGoogleId: null
      +oauthFacebookId: null
      +oauthKeycloakId: null
      +hideAdult: true
      +showSubscribedUsers: true
      +showSubscribedMagazines: true
      +showSubscribedDomains: true
      +preferredLanguages: []
      +featuredMagazines: null
      +showProfileSubscriptions: false
      +showProfileFollowings: true
      +markNewComments: false
      +notifyOnNewEntry: false
      +notifyOnNewEntryReply: true
      +notifyOnNewEntryCommentReply: true
      +notifyOnNewPost: false
      +notifyOnNewPostReply: true
      +notifyOnNewPostCommentReply: true
      +addMentionsEntries: false
      +addMentionsPosts: true
      +isBanned: false
      +isVerified: false
      +isDeleted: false
      +isBot: false
      +spamProtection: true
      +customCss: null
      +ignoreMagazinesCustomCss: false
      +moderatorTokens: Doctrine\ORM\PersistentCollection {#231 …}
      +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#227 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#216 …}
      +entries: Doctrine\ORM\PersistentCollection {#174 …}
      +entryVotes: Doctrine\ORM\PersistentCollection {#146 …}
      +entryComments: Doctrine\ORM\PersistentCollection {#119 …}
      +entryCommentVotes: Doctrine\ORM\PersistentCollection {#89 …}
      +posts: Doctrine\ORM\PersistentCollection {#62 …}
      +postVotes: Doctrine\ORM\PersistentCollection {#77 …}
      +postComments: Doctrine\ORM\PersistentCollection {#2405 …}
      +postCommentVotes: Doctrine\ORM\PersistentCollection {#1607 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#1768 …}
      +subscribedDomains: Doctrine\ORM\PersistentCollection {#2445 …}
      +follows: Doctrine\ORM\PersistentCollection {#1849 …}
      +followers: Doctrine\ORM\PersistentCollection {#1810 …}
      +blocks: Doctrine\ORM\PersistentCollection {#1794 …}
      +blockers: Doctrine\ORM\PersistentCollection {#2415 …}
      +blockedMagazines: Doctrine\ORM\PersistentCollection {#2421 …}
      +blockedDomains: Doctrine\ORM\PersistentCollection {#2418 …}
      +reports: Doctrine\ORM\PersistentCollection {#2398 …}
      +favourites: Doctrine\ORM\PersistentCollection {#1918 …}
      +violations: Doctrine\ORM\PersistentCollection {#1834 …}
      +notifications: Doctrine\ORM\PersistentCollection {#1878 …}
      +awards: Doctrine\ORM\PersistentCollection {#1886 …}
      +subscribedCategories: Doctrine\ORM\PersistentCollection {#1899 …}
      +categories: Doctrine\ORM\PersistentCollection {#1954 …}
      -id: 57593
      -password: "$2y$13$/L0PmovM1H9sjmzmYDFDJ./Rjx6mWwKcBTi6vz7ViURzIQuLk35WK"
      -totpSecret: null
      -totpBackupCodes: []
      -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1978 …}
      +apId: "danielquinn@lemmy.ca"
      +apProfileId: "https://lemmy.ca/u/danielquinn"
      +apPublicUrl: "https://lemmy.ca/u/danielquinn"
      +apFollowersUrl: null
      +apInboxUrl: "https://lemmy.ca/inbox"
      +apDomain: "lemmy.ca"
      +apPreferredUsername: "danielquinn"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: false
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729106992 {#276
        date: 2024-10-16 21:29:52.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1697197941 {#272
        date: 2023-10-13 13:52:21.0 +02:00
      }
    }
    +entry: App\Entity\Entry {#1609
      +user: App\Entity\User {#260}
      +magazine: Proxies\__CG__\App\Entity\Magazine {#1584
        +icon: Proxies\__CG__\App\Entity\Image {#3026 …}
        +name: "piracy@lemmy.dbzer0.com"
        +title: "piracy"
        +description: """
          ##### ⚓ Community devoted to in-depth debate on topics concerning digital piracy, ethical problems, and legal advancements.\n
          \n
          ---\n
          \n
          ### Rules • [Full Version](https://rentry.co/piracy-rules)\n
          \n
          **1**. Posts must be related to the discussion of digital piracy\n
          \n
          **2**. Don’t request invites, trade, sell, or self-promote\n
          \n
          **3**. Don’t request or link to specific pirated titles, including DMs\n
          \n
          **4**. Don’t submit low-quality posts, be entitled, or harass others\n
          \n
          **5**. Don’t post questions already answered. READ THE [WIKI](https://lemmy.dbzer0.com/post/10901)\n
          \n
          ---\n
          \n
          [![](https://a.imagem.app/oZoQ1v.png)](https://lemmy.dbzer0.com/post/10901)\n
          ---------------------------------------------------------------------------\n
          \n
          ### Loot, Pillage, & Plunder\n
          \n
          - [📜 Megathread](https://rentry.co/megathread)\n
          - [🪶 FAQ](https://rentry.co/piracy-faq)\n
          - [🪶 ISP Complaints](https://rentry.co/piracy-isp-complaints)\n
          - [🪶 Rules](https://rentry.co/piracy-rules)\n
          \n
          ---\n
          \n
          💰 Please help cover server costs.\n
          \n
          [![Ko-Fi](https://lemmy.dbzer0.com/pictrs/image/4a2f073a-3dd8-492a-942d-72bd929c9f1d.png)](https://ko-fi.com/dbzer0)[![Liberapay](https://lemmy.dbzer0.com/pictrs/image/eec4659d-39be-4fc9-bc9e-66a96285ea2c.png)](https://liberapay.com/db0/)\n
          \n
          ---
          """
        +rules: null
        +subscriptionsCount: 1
        +entryCount: 866
        +entryCommentCount: 20194
        +postCount: 7
        +postCommentCount: 149
        +isAdult: false
        +customCss: null
        +lastActive: DateTime @1729581369 {#3023
          date: 2024-10-22 09:16:09.0 +02:00
        }
        +markedForDeletionAt: null
        +tags: null
        +moderators: Doctrine\ORM\PersistentCollection {#3027 …}
        +ownershipRequests: Doctrine\ORM\PersistentCollection {#3029 …}
        +moderatorRequests: Doctrine\ORM\PersistentCollection {#3031 …}
        +entries: Doctrine\ORM\PersistentCollection {#3033 …}
        +posts: Doctrine\ORM\PersistentCollection {#3035 …}
        +subscriptions: Doctrine\ORM\PersistentCollection {#3037 …}
        +bans: Doctrine\ORM\PersistentCollection {#3043 …}
        +reports: Doctrine\ORM\PersistentCollection {#3051 …}
        +badges: Doctrine\ORM\PersistentCollection {#3064 …}
        +logs: Doctrine\ORM\PersistentCollection {#3074 …}
        +awards: Doctrine\ORM\PersistentCollection {#3056 …}
        +categories: Doctrine\ORM\PersistentCollection {#3080 …}
        -id: 51
        +apId: "piracy@lemmy.dbzer0.com"
        +apProfileId: "https://lemmy.dbzer0.com/c/piracy"
        +apPublicUrl: "https://lemmy.dbzer0.com/c/piracy"
        +apFollowersUrl: "https://lemmy.dbzer0.com/c/piracy/followers"
        +apInboxUrl: "https://lemmy.dbzer0.com/inbox"
        +apDomain: "lemmy.dbzer0.com"
        +apPreferredUsername: "piracy"
        +apDiscoverable: true
        +apManuallyApprovesFollowers: null
        +privateKey: null
        +publicKey: null
        +apFetchedAt: DateTime @1708748229 {#3024
          date: 2024-02-24 05:17:09.0 +01:00
        }
        +apDeletedAt: null
        +apTimeoutAt: null
        +visibility: "visible             "
        +createdAt: DateTimeImmutable @1697197339 {#3025
          date: 2023-10-13 13:42:19.0 +02:00
        }
        +__isInitialized__: true
         …2
      }
      +image: Proxies\__CG__\App\Entity\Image {#1579 …}
      +domain: Proxies\__CG__\App\Entity\Domain {#1679 …}
      +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 {#1421
        date: 2024-02-10 10:33:02.0 +01:00
      }
      +ip: null
      +adaAmount: 0
      +tags: null
      +mentions: null
      +comments: Doctrine\ORM\PersistentCollection {#1650 …}
      +votes: Doctrine\ORM\PersistentCollection {#1652 …}
      +reports: Doctrine\ORM\PersistentCollection {#1651 …}
      +favourites: Doctrine\ORM\PersistentCollection {#1527 …}
      +notifications: Doctrine\ORM\PersistentCollection {#1560 …}
      +badges: Doctrine\ORM\PersistentCollection {#1558 …}
      +children: [
        3 => App\Entity\EntryComment {#1611
          +user: App\Entity\User {#260}
          +entry: App\Entity\Entry {#1609}
          +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
          +image: null
          +parent: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
          +root: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
          +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 {#1596
            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 {#2464 …}
          +nested: Doctrine\ORM\PersistentCollection {#1740 …}
          +votes: Doctrine\ORM\PersistentCollection {#1739 …}
          +reports: Doctrine\ORM\PersistentCollection {#1716 …}
          +favourites: Doctrine\ORM\PersistentCollection {#2461 …}
          +notifications: Doctrine\ORM\PersistentCollection {#2447 …}
          -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 {#1555
            date: 2023-10-14 09:20:07.0 +02:00
          }
          +"title": 48003
        }
        2 => App\Entity\EntryComment {#2467}
        1 => App\Entity\EntryComment {#2382
          +user: App\Entity\User {#260}
          +entry: App\Entity\Entry {#1609}
          +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
          +image: null
          +parent: Proxies\__CG__\App\Entity\EntryComment {#2385 …}
          +root: Proxies\__CG__\App\Entity\EntryComment {#2385 …}
          +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 {#2380
            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 {#2384 …}
          +nested: Doctrine\ORM\PersistentCollection {#2379 …}
          +votes: Doctrine\ORM\PersistentCollection {#2383 …}
          +reports: Doctrine\ORM\PersistentCollection {#1906 …}
          +favourites: Doctrine\ORM\PersistentCollection {#1708 …}
          +notifications: Doctrine\ORM\PersistentCollection {#1410 …}
          -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 {#2386
            date: 2023-10-14 15:04:09.0 +02:00
          }
          +"title": 48431
        }
        0 => App\Entity\EntryComment {#1407
          +user: App\Entity\User {#260}
          +entry: App\Entity\Entry {#1609}
          +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
          +image: null
          +parent: Proxies\__CG__\App\Entity\EntryComment {#1883 …}
          +root: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
          +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 {#1907
            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 {#2391 …}
          +nested: Doctrine\ORM\PersistentCollection {#2369 …}
          +votes: Doctrine\ORM\PersistentCollection {#2392 …}
          +reports: Doctrine\ORM\PersistentCollection {#2395 …}
          +favourites: Doctrine\ORM\PersistentCollection {#1384 …}
          +notifications: Doctrine\ORM\PersistentCollection {#1383 …}
          -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 {#1908
            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 {#1424
        date: 2023-10-14 01:14:01.0 +02:00
      }
    }
    +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
    +image: null
    +parent: Proxies\__CG__\App\Entity\EntryComment {#2470 …}
    +root: Proxies\__CG__\App\Entity\EntryComment {#2470 …}
    +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 {#1731
      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 {#2455 …}
    +nested: Doctrine\ORM\PersistentCollection {#2471 …}
    +votes: Doctrine\ORM\PersistentCollection {#2363 …}
    +reports: Doctrine\ORM\PersistentCollection {#2377 …}
    +favourites: Doctrine\ORM\PersistentCollection {#2359 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2364 …}
    -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 {#2469
      date: 2023-10-14 09:26:17.0 +02:00
    }
    +"title": 48009
  }
]
Attributes
[]
Component
App\Twig\Components\BoostComponent {#4750
  +formDest: "entry_comment"
  +subject: App\Entity\EntryComment {#2467
    +user: App\Entity\User {#260
      +avatar: Proxies\__CG__\App\Entity\Image {#240 …}
      +cover: null
      +email: "danielquinn@lemmy.ca"
      +username: "@danielquinn@lemmy.ca"
      +roles: []
      +followersCount: 0
      +homepage: "front"
      +about: "Canadian software engineer living in Europe."
      +lastActive: DateTime @1727577650 {#273
        date: 2024-09-29 04:40:50.0 +02:00
      }
      +markedForDeletionAt: null
      +fields: null
      +oauthGithubId: null
      +oauthGoogleId: null
      +oauthFacebookId: null
      +oauthKeycloakId: null
      +hideAdult: true
      +showSubscribedUsers: true
      +showSubscribedMagazines: true
      +showSubscribedDomains: true
      +preferredLanguages: []
      +featuredMagazines: null
      +showProfileSubscriptions: false
      +showProfileFollowings: true
      +markNewComments: false
      +notifyOnNewEntry: false
      +notifyOnNewEntryReply: true
      +notifyOnNewEntryCommentReply: true
      +notifyOnNewPost: false
      +notifyOnNewPostReply: true
      +notifyOnNewPostCommentReply: true
      +addMentionsEntries: false
      +addMentionsPosts: true
      +isBanned: false
      +isVerified: false
      +isDeleted: false
      +isBot: false
      +spamProtection: true
      +customCss: null
      +ignoreMagazinesCustomCss: false
      +moderatorTokens: Doctrine\ORM\PersistentCollection {#231 …}
      +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#227 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#216 …}
      +entries: Doctrine\ORM\PersistentCollection {#174 …}
      +entryVotes: Doctrine\ORM\PersistentCollection {#146 …}
      +entryComments: Doctrine\ORM\PersistentCollection {#119 …}
      +entryCommentVotes: Doctrine\ORM\PersistentCollection {#89 …}
      +posts: Doctrine\ORM\PersistentCollection {#62 …}
      +postVotes: Doctrine\ORM\PersistentCollection {#77 …}
      +postComments: Doctrine\ORM\PersistentCollection {#2405 …}
      +postCommentVotes: Doctrine\ORM\PersistentCollection {#1607 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#1768 …}
      +subscribedDomains: Doctrine\ORM\PersistentCollection {#2445 …}
      +follows: Doctrine\ORM\PersistentCollection {#1849 …}
      +followers: Doctrine\ORM\PersistentCollection {#1810 …}
      +blocks: Doctrine\ORM\PersistentCollection {#1794 …}
      +blockers: Doctrine\ORM\PersistentCollection {#2415 …}
      +blockedMagazines: Doctrine\ORM\PersistentCollection {#2421 …}
      +blockedDomains: Doctrine\ORM\PersistentCollection {#2418 …}
      +reports: Doctrine\ORM\PersistentCollection {#2398 …}
      +favourites: Doctrine\ORM\PersistentCollection {#1918 …}
      +violations: Doctrine\ORM\PersistentCollection {#1834 …}
      +notifications: Doctrine\ORM\PersistentCollection {#1878 …}
      +awards: Doctrine\ORM\PersistentCollection {#1886 …}
      +subscribedCategories: Doctrine\ORM\PersistentCollection {#1899 …}
      +categories: Doctrine\ORM\PersistentCollection {#1954 …}
      -id: 57593
      -password: "$2y$13$/L0PmovM1H9sjmzmYDFDJ./Rjx6mWwKcBTi6vz7ViURzIQuLk35WK"
      -totpSecret: null
      -totpBackupCodes: []
      -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1978 …}
      +apId: "danielquinn@lemmy.ca"
      +apProfileId: "https://lemmy.ca/u/danielquinn"
      +apPublicUrl: "https://lemmy.ca/u/danielquinn"
      +apFollowersUrl: null
      +apInboxUrl: "https://lemmy.ca/inbox"
      +apDomain: "lemmy.ca"
      +apPreferredUsername: "danielquinn"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: false
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729106992 {#276
        date: 2024-10-16 21:29:52.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1697197941 {#272
        date: 2023-10-13 13:52:21.0 +02:00
      }
    }
    +entry: App\Entity\Entry {#1609
      +user: App\Entity\User {#260}
      +magazine: Proxies\__CG__\App\Entity\Magazine {#1584
        +icon: Proxies\__CG__\App\Entity\Image {#3026 …}
        +name: "piracy@lemmy.dbzer0.com"
        +title: "piracy"
        +description: """
          ##### ⚓ Community devoted to in-depth debate on topics concerning digital piracy, ethical problems, and legal advancements.\n
          \n
          ---\n
          \n
          ### Rules • [Full Version](https://rentry.co/piracy-rules)\n
          \n
          **1**. Posts must be related to the discussion of digital piracy\n
          \n
          **2**. Don’t request invites, trade, sell, or self-promote\n
          \n
          **3**. Don’t request or link to specific pirated titles, including DMs\n
          \n
          **4**. Don’t submit low-quality posts, be entitled, or harass others\n
          \n
          **5**. Don’t post questions already answered. READ THE [WIKI](https://lemmy.dbzer0.com/post/10901)\n
          \n
          ---\n
          \n
          [![](https://a.imagem.app/oZoQ1v.png)](https://lemmy.dbzer0.com/post/10901)\n
          ---------------------------------------------------------------------------\n
          \n
          ### Loot, Pillage, & Plunder\n
          \n
          - [📜 Megathread](https://rentry.co/megathread)\n
          - [🪶 FAQ](https://rentry.co/piracy-faq)\n
          - [🪶 ISP Complaints](https://rentry.co/piracy-isp-complaints)\n
          - [🪶 Rules](https://rentry.co/piracy-rules)\n
          \n
          ---\n
          \n
          💰 Please help cover server costs.\n
          \n
          [![Ko-Fi](https://lemmy.dbzer0.com/pictrs/image/4a2f073a-3dd8-492a-942d-72bd929c9f1d.png)](https://ko-fi.com/dbzer0)[![Liberapay](https://lemmy.dbzer0.com/pictrs/image/eec4659d-39be-4fc9-bc9e-66a96285ea2c.png)](https://liberapay.com/db0/)\n
          \n
          ---
          """
        +rules: null
        +subscriptionsCount: 1
        +entryCount: 866
        +entryCommentCount: 20194
        +postCount: 7
        +postCommentCount: 149
        +isAdult: false
        +customCss: null
        +lastActive: DateTime @1729581369 {#3023
          date: 2024-10-22 09:16:09.0 +02:00
        }
        +markedForDeletionAt: null
        +tags: null
        +moderators: Doctrine\ORM\PersistentCollection {#3027 …}
        +ownershipRequests: Doctrine\ORM\PersistentCollection {#3029 …}
        +moderatorRequests: Doctrine\ORM\PersistentCollection {#3031 …}
        +entries: Doctrine\ORM\PersistentCollection {#3033 …}
        +posts: Doctrine\ORM\PersistentCollection {#3035 …}
        +subscriptions: Doctrine\ORM\PersistentCollection {#3037 …}
        +bans: Doctrine\ORM\PersistentCollection {#3043 …}
        +reports: Doctrine\ORM\PersistentCollection {#3051 …}
        +badges: Doctrine\ORM\PersistentCollection {#3064 …}
        +logs: Doctrine\ORM\PersistentCollection {#3074 …}
        +awards: Doctrine\ORM\PersistentCollection {#3056 …}
        +categories: Doctrine\ORM\PersistentCollection {#3080 …}
        -id: 51
        +apId: "piracy@lemmy.dbzer0.com"
        +apProfileId: "https://lemmy.dbzer0.com/c/piracy"
        +apPublicUrl: "https://lemmy.dbzer0.com/c/piracy"
        +apFollowersUrl: "https://lemmy.dbzer0.com/c/piracy/followers"
        +apInboxUrl: "https://lemmy.dbzer0.com/inbox"
        +apDomain: "lemmy.dbzer0.com"
        +apPreferredUsername: "piracy"
        +apDiscoverable: true
        +apManuallyApprovesFollowers: null
        +privateKey: null
        +publicKey: null
        +apFetchedAt: DateTime @1708748229 {#3024
          date: 2024-02-24 05:17:09.0 +01:00
        }
        +apDeletedAt: null
        +apTimeoutAt: null
        +visibility: "visible             "
        +createdAt: DateTimeImmutable @1697197339 {#3025
          date: 2023-10-13 13:42:19.0 +02:00
        }
        +__isInitialized__: true
         …2
      }
      +image: Proxies\__CG__\App\Entity\Image {#1579 …}
      +domain: Proxies\__CG__\App\Entity\Domain {#1679 …}
      +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 {#1421
        date: 2024-02-10 10:33:02.0 +01:00
      }
      +ip: null
      +adaAmount: 0
      +tags: null
      +mentions: null
      +comments: Doctrine\ORM\PersistentCollection {#1650 …}
      +votes: Doctrine\ORM\PersistentCollection {#1652 …}
      +reports: Doctrine\ORM\PersistentCollection {#1651 …}
      +favourites: Doctrine\ORM\PersistentCollection {#1527 …}
      +notifications: Doctrine\ORM\PersistentCollection {#1560 …}
      +badges: Doctrine\ORM\PersistentCollection {#1558 …}
      +children: [
        3 => App\Entity\EntryComment {#1611
          +user: App\Entity\User {#260}
          +entry: App\Entity\Entry {#1609}
          +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
          +image: null
          +parent: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
          +root: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
          +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 {#1596
            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 {#2464 …}
          +nested: Doctrine\ORM\PersistentCollection {#1740 …}
          +votes: Doctrine\ORM\PersistentCollection {#1739 …}
          +reports: Doctrine\ORM\PersistentCollection {#1716 …}
          +favourites: Doctrine\ORM\PersistentCollection {#2461 …}
          +notifications: Doctrine\ORM\PersistentCollection {#2447 …}
          -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 {#1555
            date: 2023-10-14 09:20:07.0 +02:00
          }
          +"title": 48003
        }
        2 => App\Entity\EntryComment {#2467}
        1 => App\Entity\EntryComment {#2382
          +user: App\Entity\User {#260}
          +entry: App\Entity\Entry {#1609}
          +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
          +image: null
          +parent: Proxies\__CG__\App\Entity\EntryComment {#2385 …}
          +root: Proxies\__CG__\App\Entity\EntryComment {#2385 …}
          +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 {#2380
            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 {#2384 …}
          +nested: Doctrine\ORM\PersistentCollection {#2379 …}
          +votes: Doctrine\ORM\PersistentCollection {#2383 …}
          +reports: Doctrine\ORM\PersistentCollection {#1906 …}
          +favourites: Doctrine\ORM\PersistentCollection {#1708 …}
          +notifications: Doctrine\ORM\PersistentCollection {#1410 …}
          -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 {#2386
            date: 2023-10-14 15:04:09.0 +02:00
          }
          +"title": 48431
        }
        0 => App\Entity\EntryComment {#1407
          +user: App\Entity\User {#260}
          +entry: App\Entity\Entry {#1609}
          +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
          +image: null
          +parent: Proxies\__CG__\App\Entity\EntryComment {#1883 …}
          +root: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
          +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 {#1907
            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 {#2391 …}
          +nested: Doctrine\ORM\PersistentCollection {#2369 …}
          +votes: Doctrine\ORM\PersistentCollection {#2392 …}
          +reports: Doctrine\ORM\PersistentCollection {#2395 …}
          +favourites: Doctrine\ORM\PersistentCollection {#1384 …}
          +notifications: Doctrine\ORM\PersistentCollection {#1383 …}
          -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 {#1908
            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 {#1424
        date: 2023-10-14 01:14:01.0 +02:00
      }
    }
    +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
    +image: null
    +parent: Proxies\__CG__\App\Entity\EntryComment {#2470 …}
    +root: Proxies\__CG__\App\Entity\EntryComment {#2470 …}
    +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 {#1731
      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 {#2455 …}
    +nested: Doctrine\ORM\PersistentCollection {#2471 …}
    +votes: Doctrine\ORM\PersistentCollection {#2363 …}
    +reports: Doctrine\ORM\PersistentCollection {#2377 …}
    +favourites: Doctrine\ORM\PersistentCollection {#2359 …}
    +notifications: Doctrine\ORM\PersistentCollection {#2364 …}
    -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 {#2469
      date: 2023-10-14 09:26:17.0 +02:00
    }
    +"title": 48009
  }
  -cache: Symfony\Component\Cache\Adapter\TraceableTagAwareAdapter {#600 …}
}
entry_comment App\Twig\Components\EntryCommentComponent 14.0 MiB 9.48 ms
Input props
[
  "comment" => App\Entity\EntryComment {#2382
    +user: App\Entity\User {#260
      +avatar: Proxies\__CG__\App\Entity\Image {#240 …}
      +cover: null
      +email: "danielquinn@lemmy.ca"
      +username: "@danielquinn@lemmy.ca"
      +roles: []
      +followersCount: 0
      +homepage: "front"
      +about: "Canadian software engineer living in Europe."
      +lastActive: DateTime @1727577650 {#273
        date: 2024-09-29 04:40:50.0 +02:00
      }
      +markedForDeletionAt: null
      +fields: null
      +oauthGithubId: null
      +oauthGoogleId: null
      +oauthFacebookId: null
      +oauthKeycloakId: null
      +hideAdult: true
      +showSubscribedUsers: true
      +showSubscribedMagazines: true
      +showSubscribedDomains: true
      +preferredLanguages: []
      +featuredMagazines: null
      +showProfileSubscriptions: false
      +showProfileFollowings: true
      +markNewComments: false
      +notifyOnNewEntry: false
      +notifyOnNewEntryReply: true
      +notifyOnNewEntryCommentReply: true
      +notifyOnNewPost: false
      +notifyOnNewPostReply: true
      +notifyOnNewPostCommentReply: true
      +addMentionsEntries: false
      +addMentionsPosts: true
      +isBanned: false
      +isVerified: false
      +isDeleted: false
      +isBot: false
      +spamProtection: true
      +customCss: null
      +ignoreMagazinesCustomCss: false
      +moderatorTokens: Doctrine\ORM\PersistentCollection {#231 …}
      +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#227 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#216 …}
      +entries: Doctrine\ORM\PersistentCollection {#174 …}
      +entryVotes: Doctrine\ORM\PersistentCollection {#146 …}
      +entryComments: Doctrine\ORM\PersistentCollection {#119 …}
      +entryCommentVotes: Doctrine\ORM\PersistentCollection {#89 …}
      +posts: Doctrine\ORM\PersistentCollection {#62 …}
      +postVotes: Doctrine\ORM\PersistentCollection {#77 …}
      +postComments: Doctrine\ORM\PersistentCollection {#2405 …}
      +postCommentVotes: Doctrine\ORM\PersistentCollection {#1607 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#1768 …}
      +subscribedDomains: Doctrine\ORM\PersistentCollection {#2445 …}
      +follows: Doctrine\ORM\PersistentCollection {#1849 …}
      +followers: Doctrine\ORM\PersistentCollection {#1810 …}
      +blocks: Doctrine\ORM\PersistentCollection {#1794 …}
      +blockers: Doctrine\ORM\PersistentCollection {#2415 …}
      +blockedMagazines: Doctrine\ORM\PersistentCollection {#2421 …}
      +blockedDomains: Doctrine\ORM\PersistentCollection {#2418 …}
      +reports: Doctrine\ORM\PersistentCollection {#2398 …}
      +favourites: Doctrine\ORM\PersistentCollection {#1918 …}
      +violations: Doctrine\ORM\PersistentCollection {#1834 …}
      +notifications: Doctrine\ORM\PersistentCollection {#1878 …}
      +awards: Doctrine\ORM\PersistentCollection {#1886 …}
      +subscribedCategories: Doctrine\ORM\PersistentCollection {#1899 …}
      +categories: Doctrine\ORM\PersistentCollection {#1954 …}
      -id: 57593
      -password: "$2y$13$/L0PmovM1H9sjmzmYDFDJ./Rjx6mWwKcBTi6vz7ViURzIQuLk35WK"
      -totpSecret: null
      -totpBackupCodes: []
      -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1978 …}
      +apId: "danielquinn@lemmy.ca"
      +apProfileId: "https://lemmy.ca/u/danielquinn"
      +apPublicUrl: "https://lemmy.ca/u/danielquinn"
      +apFollowersUrl: null
      +apInboxUrl: "https://lemmy.ca/inbox"
      +apDomain: "lemmy.ca"
      +apPreferredUsername: "danielquinn"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: false
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729106992 {#276
        date: 2024-10-16 21:29:52.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1697197941 {#272
        date: 2023-10-13 13:52:21.0 +02:00
      }
    }
    +entry: App\Entity\Entry {#1609
      +user: App\Entity\User {#260}
      +magazine: Proxies\__CG__\App\Entity\Magazine {#1584
        +icon: Proxies\__CG__\App\Entity\Image {#3026 …}
        +name: "piracy@lemmy.dbzer0.com"
        +title: "piracy"
        +description: """
          ##### ⚓ Community devoted to in-depth debate on topics concerning digital piracy, ethical problems, and legal advancements.\n
          \n
          ---\n
          \n
          ### Rules • [Full Version](https://rentry.co/piracy-rules)\n
          \n
          **1**. Posts must be related to the discussion of digital piracy\n
          \n
          **2**. Don’t request invites, trade, sell, or self-promote\n
          \n
          **3**. Don’t request or link to specific pirated titles, including DMs\n
          \n
          **4**. Don’t submit low-quality posts, be entitled, or harass others\n
          \n
          **5**. Don’t post questions already answered. READ THE [WIKI](https://lemmy.dbzer0.com/post/10901)\n
          \n
          ---\n
          \n
          [![](https://a.imagem.app/oZoQ1v.png)](https://lemmy.dbzer0.com/post/10901)\n
          ---------------------------------------------------------------------------\n
          \n
          ### Loot, Pillage, & Plunder\n
          \n
          - [📜 Megathread](https://rentry.co/megathread)\n
          - [🪶 FAQ](https://rentry.co/piracy-faq)\n
          - [🪶 ISP Complaints](https://rentry.co/piracy-isp-complaints)\n
          - [🪶 Rules](https://rentry.co/piracy-rules)\n
          \n
          ---\n
          \n
          💰 Please help cover server costs.\n
          \n
          [![Ko-Fi](https://lemmy.dbzer0.com/pictrs/image/4a2f073a-3dd8-492a-942d-72bd929c9f1d.png)](https://ko-fi.com/dbzer0)[![Liberapay](https://lemmy.dbzer0.com/pictrs/image/eec4659d-39be-4fc9-bc9e-66a96285ea2c.png)](https://liberapay.com/db0/)\n
          \n
          ---
          """
        +rules: null
        +subscriptionsCount: 1
        +entryCount: 866
        +entryCommentCount: 20194
        +postCount: 7
        +postCommentCount: 149
        +isAdult: false
        +customCss: null
        +lastActive: DateTime @1729581369 {#3023
          date: 2024-10-22 09:16:09.0 +02:00
        }
        +markedForDeletionAt: null
        +tags: null
        +moderators: Doctrine\ORM\PersistentCollection {#3027 …}
        +ownershipRequests: Doctrine\ORM\PersistentCollection {#3029 …}
        +moderatorRequests: Doctrine\ORM\PersistentCollection {#3031 …}
        +entries: Doctrine\ORM\PersistentCollection {#3033 …}
        +posts: Doctrine\ORM\PersistentCollection {#3035 …}
        +subscriptions: Doctrine\ORM\PersistentCollection {#3037 …}
        +bans: Doctrine\ORM\PersistentCollection {#3043 …}
        +reports: Doctrine\ORM\PersistentCollection {#3051 …}
        +badges: Doctrine\ORM\PersistentCollection {#3064 …}
        +logs: Doctrine\ORM\PersistentCollection {#3074 …}
        +awards: Doctrine\ORM\PersistentCollection {#3056 …}
        +categories: Doctrine\ORM\PersistentCollection {#3080 …}
        -id: 51
        +apId: "piracy@lemmy.dbzer0.com"
        +apProfileId: "https://lemmy.dbzer0.com/c/piracy"
        +apPublicUrl: "https://lemmy.dbzer0.com/c/piracy"
        +apFollowersUrl: "https://lemmy.dbzer0.com/c/piracy/followers"
        +apInboxUrl: "https://lemmy.dbzer0.com/inbox"
        +apDomain: "lemmy.dbzer0.com"
        +apPreferredUsername: "piracy"
        +apDiscoverable: true
        +apManuallyApprovesFollowers: null
        +privateKey: null
        +publicKey: null
        +apFetchedAt: DateTime @1708748229 {#3024
          date: 2024-02-24 05:17:09.0 +01:00
        }
        +apDeletedAt: null
        +apTimeoutAt: null
        +visibility: "visible             "
        +createdAt: DateTimeImmutable @1697197339 {#3025
          date: 2023-10-13 13:42:19.0 +02:00
        }
        +__isInitialized__: true
         …2
      }
      +image: Proxies\__CG__\App\Entity\Image {#1579 …}
      +domain: Proxies\__CG__\App\Entity\Domain {#1679 …}
      +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 {#1421
        date: 2024-02-10 10:33:02.0 +01:00
      }
      +ip: null
      +adaAmount: 0
      +tags: null
      +mentions: null
      +comments: Doctrine\ORM\PersistentCollection {#1650 …}
      +votes: Doctrine\ORM\PersistentCollection {#1652 …}
      +reports: Doctrine\ORM\PersistentCollection {#1651 …}
      +favourites: Doctrine\ORM\PersistentCollection {#1527 …}
      +notifications: Doctrine\ORM\PersistentCollection {#1560 …}
      +badges: Doctrine\ORM\PersistentCollection {#1558 …}
      +children: [
        3 => App\Entity\EntryComment {#1611
          +user: App\Entity\User {#260}
          +entry: App\Entity\Entry {#1609}
          +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
          +image: null
          +parent: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
          +root: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
          +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 {#1596
            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 {#2464 …}
          +nested: Doctrine\ORM\PersistentCollection {#1740 …}
          +votes: Doctrine\ORM\PersistentCollection {#1739 …}
          +reports: Doctrine\ORM\PersistentCollection {#1716 …}
          +favourites: Doctrine\ORM\PersistentCollection {#2461 …}
          +notifications: Doctrine\ORM\PersistentCollection {#2447 …}
          -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 {#1555
            date: 2023-10-14 09:20:07.0 +02:00
          }
          +"title": 48003
        }
        2 => App\Entity\EntryComment {#2467
          +user: App\Entity\User {#260}
          +entry: App\Entity\Entry {#1609}
          +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
          +image: null
          +parent: Proxies\__CG__\App\Entity\EntryComment {#2470 …}
          +root: Proxies\__CG__\App\Entity\EntryComment {#2470 …}
          +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 {#1731
            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 {#2455 …}
          +nested: Doctrine\ORM\PersistentCollection {#2471 …}
          +votes: Doctrine\ORM\PersistentCollection {#2363 …}
          +reports: Doctrine\ORM\PersistentCollection {#2377 …}
          +favourites: Doctrine\ORM\PersistentCollection {#2359 …}
          +notifications: Doctrine\ORM\PersistentCollection {#2364 …}
          -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 {#2469
            date: 2023-10-14 09:26:17.0 +02:00
          }
          +"title": 48009
        }
        1 => App\Entity\EntryComment {#2382}
        0 => App\Entity\EntryComment {#1407
          +user: App\Entity\User {#260}
          +entry: App\Entity\Entry {#1609}
          +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
          +image: null
          +parent: Proxies\__CG__\App\Entity\EntryComment {#1883 …}
          +root: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
          +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 {#1907
            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 {#2391 …}
          +nested: Doctrine\ORM\PersistentCollection {#2369 …}
          +votes: Doctrine\ORM\PersistentCollection {#2392 …}
          +reports: Doctrine\ORM\PersistentCollection {#2395 …}
          +favourites: Doctrine\ORM\PersistentCollection {#1384 …}
          +notifications: Doctrine\ORM\PersistentCollection {#1383 …}
          -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 {#1908
            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 {#1424
        date: 2023-10-14 01:14:01.0 +02:00
      }
    }
    +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
    +image: null
    +parent: Proxies\__CG__\App\Entity\EntryComment {#2385 …}
    +root: Proxies\__CG__\App\Entity\EntryComment {#2385 …}
    +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 {#2380
      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 {#2384 …}
    +nested: Doctrine\ORM\PersistentCollection {#2379 …}
    +votes: Doctrine\ORM\PersistentCollection {#2383 …}
    +reports: Doctrine\ORM\PersistentCollection {#1906 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1708 …}
    +notifications: Doctrine\ORM\PersistentCollection {#1410 …}
    -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 {#2386
      date: 2023-10-14 15:04:09.0 +02:00
    }
    +"title": 48431
  }
  "showEntryTitle" => false
  "dateAsUrl" => true
  "showMagazineName" => false
]
Attributes
[]
Component
App\Twig\Components\EntryCommentComponent {#5001
  +comment: App\Entity\EntryComment {#2382
    +user: App\Entity\User {#260
      +avatar: Proxies\__CG__\App\Entity\Image {#240 …}
      +cover: null
      +email: "danielquinn@lemmy.ca"
      +username: "@danielquinn@lemmy.ca"
      +roles: []
      +followersCount: 0
      +homepage: "front"
      +about: "Canadian software engineer living in Europe."
      +lastActive: DateTime @1727577650 {#273
        date: 2024-09-29 04:40:50.0 +02:00
      }
      +markedForDeletionAt: null
      +fields: null
      +oauthGithubId: null
      +oauthGoogleId: null
      +oauthFacebookId: null
      +oauthKeycloakId: null
      +hideAdult: true
      +showSubscribedUsers: true
      +showSubscribedMagazines: true
      +showSubscribedDomains: true
      +preferredLanguages: []
      +featuredMagazines: null
      +showProfileSubscriptions: false
      +showProfileFollowings: true
      +markNewComments: false
      +notifyOnNewEntry: false
      +notifyOnNewEntryReply: true
      +notifyOnNewEntryCommentReply: true
      +notifyOnNewPost: false
      +notifyOnNewPostReply: true
      +notifyOnNewPostCommentReply: true
      +addMentionsEntries: false
      +addMentionsPosts: true
      +isBanned: false
      +isVerified: false
      +isDeleted: false
      +isBot: false
      +spamProtection: true
      +customCss: null
      +ignoreMagazinesCustomCss: false
      +moderatorTokens: Doctrine\ORM\PersistentCollection {#231 …}
      +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#227 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#216 …}
      +entries: Doctrine\ORM\PersistentCollection {#174 …}
      +entryVotes: Doctrine\ORM\PersistentCollection {#146 …}
      +entryComments: Doctrine\ORM\PersistentCollection {#119 …}
      +entryCommentVotes: Doctrine\ORM\PersistentCollection {#89 …}
      +posts: Doctrine\ORM\PersistentCollection {#62 …}
      +postVotes: Doctrine\ORM\PersistentCollection {#77 …}
      +postComments: Doctrine\ORM\PersistentCollection {#2405 …}
      +postCommentVotes: Doctrine\ORM\PersistentCollection {#1607 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#1768 …}
      +subscribedDomains: Doctrine\ORM\PersistentCollection {#2445 …}
      +follows: Doctrine\ORM\PersistentCollection {#1849 …}
      +followers: Doctrine\ORM\PersistentCollection {#1810 …}
      +blocks: Doctrine\ORM\PersistentCollection {#1794 …}
      +blockers: Doctrine\ORM\PersistentCollection {#2415 …}
      +blockedMagazines: Doctrine\ORM\PersistentCollection {#2421 …}
      +blockedDomains: Doctrine\ORM\PersistentCollection {#2418 …}
      +reports: Doctrine\ORM\PersistentCollection {#2398 …}
      +favourites: Doctrine\ORM\PersistentCollection {#1918 …}
      +violations: Doctrine\ORM\PersistentCollection {#1834 …}
      +notifications: Doctrine\ORM\PersistentCollection {#1878 …}
      +awards: Doctrine\ORM\PersistentCollection {#1886 …}
      +subscribedCategories: Doctrine\ORM\PersistentCollection {#1899 …}
      +categories: Doctrine\ORM\PersistentCollection {#1954 …}
      -id: 57593
      -password: "$2y$13$/L0PmovM1H9sjmzmYDFDJ./Rjx6mWwKcBTi6vz7ViURzIQuLk35WK"
      -totpSecret: null
      -totpBackupCodes: []
      -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1978 …}
      +apId: "danielquinn@lemmy.ca"
      +apProfileId: "https://lemmy.ca/u/danielquinn"
      +apPublicUrl: "https://lemmy.ca/u/danielquinn"
      +apFollowersUrl: null
      +apInboxUrl: "https://lemmy.ca/inbox"
      +apDomain: "lemmy.ca"
      +apPreferredUsername: "danielquinn"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: false
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729106992 {#276
        date: 2024-10-16 21:29:52.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1697197941 {#272
        date: 2023-10-13 13:52:21.0 +02:00
      }
    }
    +entry: App\Entity\Entry {#1609
      +user: App\Entity\User {#260}
      +magazine: Proxies\__CG__\App\Entity\Magazine {#1584
        +icon: Proxies\__CG__\App\Entity\Image {#3026 …}
        +name: "piracy@lemmy.dbzer0.com"
        +title: "piracy"
        +description: """
          ##### ⚓ Community devoted to in-depth debate on topics concerning digital piracy, ethical problems, and legal advancements.\n
          \n
          ---\n
          \n
          ### Rules • [Full Version](https://rentry.co/piracy-rules)\n
          \n
          **1**. Posts must be related to the discussion of digital piracy\n
          \n
          **2**. Don’t request invites, trade, sell, or self-promote\n
          \n
          **3**. Don’t request or link to specific pirated titles, including DMs\n
          \n
          **4**. Don’t submit low-quality posts, be entitled, or harass others\n
          \n
          **5**. Don’t post questions already answered. READ THE [WIKI](https://lemmy.dbzer0.com/post/10901)\n
          \n
          ---\n
          \n
          [![](https://a.imagem.app/oZoQ1v.png)](https://lemmy.dbzer0.com/post/10901)\n
          ---------------------------------------------------------------------------\n
          \n
          ### Loot, Pillage, & Plunder\n
          \n
          - [📜 Megathread](https://rentry.co/megathread)\n
          - [🪶 FAQ](https://rentry.co/piracy-faq)\n
          - [🪶 ISP Complaints](https://rentry.co/piracy-isp-complaints)\n
          - [🪶 Rules](https://rentry.co/piracy-rules)\n
          \n
          ---\n
          \n
          💰 Please help cover server costs.\n
          \n
          [![Ko-Fi](https://lemmy.dbzer0.com/pictrs/image/4a2f073a-3dd8-492a-942d-72bd929c9f1d.png)](https://ko-fi.com/dbzer0)[![Liberapay](https://lemmy.dbzer0.com/pictrs/image/eec4659d-39be-4fc9-bc9e-66a96285ea2c.png)](https://liberapay.com/db0/)\n
          \n
          ---
          """
        +rules: null
        +subscriptionsCount: 1
        +entryCount: 866
        +entryCommentCount: 20194
        +postCount: 7
        +postCommentCount: 149
        +isAdult: false
        +customCss: null
        +lastActive: DateTime @1729581369 {#3023
          date: 2024-10-22 09:16:09.0 +02:00
        }
        +markedForDeletionAt: null
        +tags: null
        +moderators: Doctrine\ORM\PersistentCollection {#3027 …}
        +ownershipRequests: Doctrine\ORM\PersistentCollection {#3029 …}
        +moderatorRequests: Doctrine\ORM\PersistentCollection {#3031 …}
        +entries: Doctrine\ORM\PersistentCollection {#3033 …}
        +posts: Doctrine\ORM\PersistentCollection {#3035 …}
        +subscriptions: Doctrine\ORM\PersistentCollection {#3037 …}
        +bans: Doctrine\ORM\PersistentCollection {#3043 …}
        +reports: Doctrine\ORM\PersistentCollection {#3051 …}
        +badges: Doctrine\ORM\PersistentCollection {#3064 …}
        +logs: Doctrine\ORM\PersistentCollection {#3074 …}
        +awards: Doctrine\ORM\PersistentCollection {#3056 …}
        +categories: Doctrine\ORM\PersistentCollection {#3080 …}
        -id: 51
        +apId: "piracy@lemmy.dbzer0.com"
        +apProfileId: "https://lemmy.dbzer0.com/c/piracy"
        +apPublicUrl: "https://lemmy.dbzer0.com/c/piracy"
        +apFollowersUrl: "https://lemmy.dbzer0.com/c/piracy/followers"
        +apInboxUrl: "https://lemmy.dbzer0.com/inbox"
        +apDomain: "lemmy.dbzer0.com"
        +apPreferredUsername: "piracy"
        +apDiscoverable: true
        +apManuallyApprovesFollowers: null
        +privateKey: null
        +publicKey: null
        +apFetchedAt: DateTime @1708748229 {#3024
          date: 2024-02-24 05:17:09.0 +01:00
        }
        +apDeletedAt: null
        +apTimeoutAt: null
        +visibility: "visible             "
        +createdAt: DateTimeImmutable @1697197339 {#3025
          date: 2023-10-13 13:42:19.0 +02:00
        }
        +__isInitialized__: true
         …2
      }
      +image: Proxies\__CG__\App\Entity\Image {#1579 …}
      +domain: Proxies\__CG__\App\Entity\Domain {#1679 …}
      +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 {#1421
        date: 2024-02-10 10:33:02.0 +01:00
      }
      +ip: null
      +adaAmount: 0
      +tags: null
      +mentions: null
      +comments: Doctrine\ORM\PersistentCollection {#1650 …}
      +votes: Doctrine\ORM\PersistentCollection {#1652 …}
      +reports: Doctrine\ORM\PersistentCollection {#1651 …}
      +favourites: Doctrine\ORM\PersistentCollection {#1527 …}
      +notifications: Doctrine\ORM\PersistentCollection {#1560 …}
      +badges: Doctrine\ORM\PersistentCollection {#1558 …}
      +children: [
        3 => App\Entity\EntryComment {#1611
          +user: App\Entity\User {#260}
          +entry: App\Entity\Entry {#1609}
          +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
          +image: null
          +parent: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
          +root: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
          +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 {#1596
            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 {#2464 …}
          +nested: Doctrine\ORM\PersistentCollection {#1740 …}
          +votes: Doctrine\ORM\PersistentCollection {#1739 …}
          +reports: Doctrine\ORM\PersistentCollection {#1716 …}
          +favourites: Doctrine\ORM\PersistentCollection {#2461 …}
          +notifications: Doctrine\ORM\PersistentCollection {#2447 …}
          -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 {#1555
            date: 2023-10-14 09:20:07.0 +02:00
          }
          +"title": 48003
        }
        2 => App\Entity\EntryComment {#2467
          +user: App\Entity\User {#260}
          +entry: App\Entity\Entry {#1609}
          +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
          +image: null
          +parent: Proxies\__CG__\App\Entity\EntryComment {#2470 …}
          +root: Proxies\__CG__\App\Entity\EntryComment {#2470 …}
          +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 {#1731
            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 {#2455 …}
          +nested: Doctrine\ORM\PersistentCollection {#2471 …}
          +votes: Doctrine\ORM\PersistentCollection {#2363 …}
          +reports: Doctrine\ORM\PersistentCollection {#2377 …}
          +favourites: Doctrine\ORM\PersistentCollection {#2359 …}
          +notifications: Doctrine\ORM\PersistentCollection {#2364 …}
          -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 {#2469
            date: 2023-10-14 09:26:17.0 +02:00
          }
          +"title": 48009
        }
        1 => App\Entity\EntryComment {#2382}
        0 => App\Entity\EntryComment {#1407
          +user: App\Entity\User {#260}
          +entry: App\Entity\Entry {#1609}
          +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
          +image: null
          +parent: Proxies\__CG__\App\Entity\EntryComment {#1883 …}
          +root: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
          +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 {#1907
            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 {#2391 …}
          +nested: Doctrine\ORM\PersistentCollection {#2369 …}
          +votes: Doctrine\ORM\PersistentCollection {#2392 …}
          +reports: Doctrine\ORM\PersistentCollection {#2395 …}
          +favourites: Doctrine\ORM\PersistentCollection {#1384 …}
          +notifications: Doctrine\ORM\PersistentCollection {#1383 …}
          -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 {#1908
            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 {#1424
        date: 2023-10-14 01:14:01.0 +02:00
      }
    }
    +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
    +image: null
    +parent: Proxies\__CG__\App\Entity\EntryComment {#2385 …}
    +root: Proxies\__CG__\App\Entity\EntryComment {#2385 …}
    +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 {#2380
      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 {#2384 …}
    +nested: Doctrine\ORM\PersistentCollection {#2379 …}
    +votes: Doctrine\ORM\PersistentCollection {#2383 …}
    +reports: Doctrine\ORM\PersistentCollection {#1906 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1708 …}
    +notifications: Doctrine\ORM\PersistentCollection {#1410 …}
    -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 {#2386
      date: 2023-10-14 15:04:09.0 +02:00
    }
    +"title": 48431
  }
  +showMagazineName: false
  +showEntryTitle: false
  +showNested: false
  +level: 1
  +canSeeTrash: false
  +dateAsUrl: true
  -requestStack: Symfony\Component\HttpFoundation\RequestStack {#1328 …}
  -authorizationChecker: Symfony\Component\Security\Core\Authorization\AuthorizationChecker {#931 …}
}
user_inline App\Twig\Components\UserInlineComponent 14.0 MiB 0.12 ms
Input props
[
  "user" => App\Entity\User {#260
    +avatar: Proxies\__CG__\App\Entity\Image {#240 …}
    +cover: null
    +email: "danielquinn@lemmy.ca"
    +username: "@danielquinn@lemmy.ca"
    +roles: []
    +followersCount: 0
    +homepage: "front"
    +about: "Canadian software engineer living in Europe."
    +lastActive: DateTime @1727577650 {#273
      date: 2024-09-29 04:40:50.0 +02:00
    }
    +markedForDeletionAt: null
    +fields: null
    +oauthGithubId: null
    +oauthGoogleId: null
    +oauthFacebookId: null
    +oauthKeycloakId: null
    +hideAdult: true
    +showSubscribedUsers: true
    +showSubscribedMagazines: true
    +showSubscribedDomains: true
    +preferredLanguages: []
    +featuredMagazines: null
    +showProfileSubscriptions: false
    +showProfileFollowings: true
    +markNewComments: false
    +notifyOnNewEntry: false
    +notifyOnNewEntryReply: true
    +notifyOnNewEntryCommentReply: true
    +notifyOnNewPost: false
    +notifyOnNewPostReply: true
    +notifyOnNewPostCommentReply: true
    +addMentionsEntries: false
    +addMentionsPosts: true
    +isBanned: false
    +isVerified: false
    +isDeleted: false
    +isBot: false
    +spamProtection: true
    +customCss: null
    +ignoreMagazinesCustomCss: false
    +moderatorTokens: Doctrine\ORM\PersistentCollection {#231 …}
    +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#227 …}
    +moderatorRequests: Doctrine\ORM\PersistentCollection {#216 …}
    +entries: Doctrine\ORM\PersistentCollection {#174 …}
    +entryVotes: Doctrine\ORM\PersistentCollection {#146 …}
    +entryComments: Doctrine\ORM\PersistentCollection {#119 …}
    +entryCommentVotes: Doctrine\ORM\PersistentCollection {#89 …}
    +posts: Doctrine\ORM\PersistentCollection {#62 …}
    +postVotes: Doctrine\ORM\PersistentCollection {#77 …}
    +postComments: Doctrine\ORM\PersistentCollection {#2405 …}
    +postCommentVotes: Doctrine\ORM\PersistentCollection {#1607 …}
    +subscriptions: Doctrine\ORM\PersistentCollection {#1768 …}
    +subscribedDomains: Doctrine\ORM\PersistentCollection {#2445 …}
    +follows: Doctrine\ORM\PersistentCollection {#1849 …}
    +followers: Doctrine\ORM\PersistentCollection {#1810 …}
    +blocks: Doctrine\ORM\PersistentCollection {#1794 …}
    +blockers: Doctrine\ORM\PersistentCollection {#2415 …}
    +blockedMagazines: Doctrine\ORM\PersistentCollection {#2421 …}
    +blockedDomains: Doctrine\ORM\PersistentCollection {#2418 …}
    +reports: Doctrine\ORM\PersistentCollection {#2398 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1918 …}
    +violations: Doctrine\ORM\PersistentCollection {#1834 …}
    +notifications: Doctrine\ORM\PersistentCollection {#1878 …}
    +awards: Doctrine\ORM\PersistentCollection {#1886 …}
    +subscribedCategories: Doctrine\ORM\PersistentCollection {#1899 …}
    +categories: Doctrine\ORM\PersistentCollection {#1954 …}
    -id: 57593
    -password: "$2y$13$/L0PmovM1H9sjmzmYDFDJ./Rjx6mWwKcBTi6vz7ViURzIQuLk35WK"
    -totpSecret: null
    -totpBackupCodes: []
    -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1978 …}
    +apId: "danielquinn@lemmy.ca"
    +apProfileId: "https://lemmy.ca/u/danielquinn"
    +apPublicUrl: "https://lemmy.ca/u/danielquinn"
    +apFollowersUrl: null
    +apInboxUrl: "https://lemmy.ca/inbox"
    +apDomain: "lemmy.ca"
    +apPreferredUsername: "danielquinn"
    +apDiscoverable: true
    +apManuallyApprovesFollowers: false
    +privateKey: null
    +publicKey: null
    +apFetchedAt: DateTime @1729106992 {#276
      date: 2024-10-16 21:29:52.0 +02:00
    }
    +apDeletedAt: null
    +apTimeoutAt: null
    +visibility: "visible             "
    +createdAt: DateTimeImmutable @1697197941 {#272
      date: 2023-10-13 13:52:21.0 +02:00
    }
  }
  "showAvatar" => false
]
Attributes
[]
Component
App\Twig\Components\UserInlineComponent {#5046
  +user: App\Entity\User {#260
    +avatar: Proxies\__CG__\App\Entity\Image {#240 …}
    +cover: null
    +email: "danielquinn@lemmy.ca"
    +username: "@danielquinn@lemmy.ca"
    +roles: []
    +followersCount: 0
    +homepage: "front"
    +about: "Canadian software engineer living in Europe."
    +lastActive: DateTime @1727577650 {#273
      date: 2024-09-29 04:40:50.0 +02:00
    }
    +markedForDeletionAt: null
    +fields: null
    +oauthGithubId: null
    +oauthGoogleId: null
    +oauthFacebookId: null
    +oauthKeycloakId: null
    +hideAdult: true
    +showSubscribedUsers: true
    +showSubscribedMagazines: true
    +showSubscribedDomains: true
    +preferredLanguages: []
    +featuredMagazines: null
    +showProfileSubscriptions: false
    +showProfileFollowings: true
    +markNewComments: false
    +notifyOnNewEntry: false
    +notifyOnNewEntryReply: true
    +notifyOnNewEntryCommentReply: true
    +notifyOnNewPost: false
    +notifyOnNewPostReply: true
    +notifyOnNewPostCommentReply: true
    +addMentionsEntries: false
    +addMentionsPosts: true
    +isBanned: false
    +isVerified: false
    +isDeleted: false
    +isBot: false
    +spamProtection: true
    +customCss: null
    +ignoreMagazinesCustomCss: false
    +moderatorTokens: Doctrine\ORM\PersistentCollection {#231 …}
    +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#227 …}
    +moderatorRequests: Doctrine\ORM\PersistentCollection {#216 …}
    +entries: Doctrine\ORM\PersistentCollection {#174 …}
    +entryVotes: Doctrine\ORM\PersistentCollection {#146 …}
    +entryComments: Doctrine\ORM\PersistentCollection {#119 …}
    +entryCommentVotes: Doctrine\ORM\PersistentCollection {#89 …}
    +posts: Doctrine\ORM\PersistentCollection {#62 …}
    +postVotes: Doctrine\ORM\PersistentCollection {#77 …}
    +postComments: Doctrine\ORM\PersistentCollection {#2405 …}
    +postCommentVotes: Doctrine\ORM\PersistentCollection {#1607 …}
    +subscriptions: Doctrine\ORM\PersistentCollection {#1768 …}
    +subscribedDomains: Doctrine\ORM\PersistentCollection {#2445 …}
    +follows: Doctrine\ORM\PersistentCollection {#1849 …}
    +followers: Doctrine\ORM\PersistentCollection {#1810 …}
    +blocks: Doctrine\ORM\PersistentCollection {#1794 …}
    +blockers: Doctrine\ORM\PersistentCollection {#2415 …}
    +blockedMagazines: Doctrine\ORM\PersistentCollection {#2421 …}
    +blockedDomains: Doctrine\ORM\PersistentCollection {#2418 …}
    +reports: Doctrine\ORM\PersistentCollection {#2398 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1918 …}
    +violations: Doctrine\ORM\PersistentCollection {#1834 …}
    +notifications: Doctrine\ORM\PersistentCollection {#1878 …}
    +awards: Doctrine\ORM\PersistentCollection {#1886 …}
    +subscribedCategories: Doctrine\ORM\PersistentCollection {#1899 …}
    +categories: Doctrine\ORM\PersistentCollection {#1954 …}
    -id: 57593
    -password: "$2y$13$/L0PmovM1H9sjmzmYDFDJ./Rjx6mWwKcBTi6vz7ViURzIQuLk35WK"
    -totpSecret: null
    -totpBackupCodes: []
    -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1978 …}
    +apId: "danielquinn@lemmy.ca"
    +apProfileId: "https://lemmy.ca/u/danielquinn"
    +apPublicUrl: "https://lemmy.ca/u/danielquinn"
    +apFollowersUrl: null
    +apInboxUrl: "https://lemmy.ca/inbox"
    +apDomain: "lemmy.ca"
    +apPreferredUsername: "danielquinn"
    +apDiscoverable: true
    +apManuallyApprovesFollowers: false
    +privateKey: null
    +publicKey: null
    +apFetchedAt: DateTime @1729106992 {#276
      date: 2024-10-16 21:29:52.0 +02:00
    }
    +apDeletedAt: null
    +apTimeoutAt: null
    +visibility: "visible             "
    +createdAt: DateTimeImmutable @1697197941 {#272
      date: 2023-10-13 13:52:21.0 +02:00
    }
  }
  +showAvatar: false
}
date App\Twig\Components\DateComponent 14.0 MiB 0.14 ms
Input props
[
  "date" => DateTimeImmutable @1697288649 {#2386
    date: 2023-10-14 15:04:09.0 +02:00
  }
]
Attributes
[]
Component
App\Twig\Components\DateComponent {#5102
  +date: DateTimeImmutable @1697288649 {#2386
    date: 2023-10-14 15:04:09.0 +02:00
  }
}
date_edited App\Twig\Components\DateEditedComponent 14.0 MiB 0.09 ms
Input props
[
  "createdAt" => DateTimeImmutable @1697288649 {#2386
    date: 2023-10-14 15:04:09.0 +02:00
  }
  "editedAt" => null
]
Attributes
[]
Component
App\Twig\Components\DateEditedComponent {#5156
  +createdAt: DateTimeImmutable @1697288649 {#2386
    date: 2023-10-14 15:04:09.0 +02:00
  }
  +editedAt: null
}
user_avatar App\Twig\Components\UserAvatarComponent 14.0 MiB 0.17 ms
Input props
[
  "user" => App\Entity\User {#260
    +avatar: Proxies\__CG__\App\Entity\Image {#240 …}
    +cover: null
    +email: "danielquinn@lemmy.ca"
    +username: "@danielquinn@lemmy.ca"
    +roles: []
    +followersCount: 0
    +homepage: "front"
    +about: "Canadian software engineer living in Europe."
    +lastActive: DateTime @1727577650 {#273
      date: 2024-09-29 04:40:50.0 +02:00
    }
    +markedForDeletionAt: null
    +fields: null
    +oauthGithubId: null
    +oauthGoogleId: null
    +oauthFacebookId: null
    +oauthKeycloakId: null
    +hideAdult: true
    +showSubscribedUsers: true
    +showSubscribedMagazines: true
    +showSubscribedDomains: true
    +preferredLanguages: []
    +featuredMagazines: null
    +showProfileSubscriptions: false
    +showProfileFollowings: true
    +markNewComments: false
    +notifyOnNewEntry: false
    +notifyOnNewEntryReply: true
    +notifyOnNewEntryCommentReply: true
    +notifyOnNewPost: false
    +notifyOnNewPostReply: true
    +notifyOnNewPostCommentReply: true
    +addMentionsEntries: false
    +addMentionsPosts: true
    +isBanned: false
    +isVerified: false
    +isDeleted: false
    +isBot: false
    +spamProtection: true
    +customCss: null
    +ignoreMagazinesCustomCss: false
    +moderatorTokens: Doctrine\ORM\PersistentCollection {#231 …}
    +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#227 …}
    +moderatorRequests: Doctrine\ORM\PersistentCollection {#216 …}
    +entries: Doctrine\ORM\PersistentCollection {#174 …}
    +entryVotes: Doctrine\ORM\PersistentCollection {#146 …}
    +entryComments: Doctrine\ORM\PersistentCollection {#119 …}
    +entryCommentVotes: Doctrine\ORM\PersistentCollection {#89 …}
    +posts: Doctrine\ORM\PersistentCollection {#62 …}
    +postVotes: Doctrine\ORM\PersistentCollection {#77 …}
    +postComments: Doctrine\ORM\PersistentCollection {#2405 …}
    +postCommentVotes: Doctrine\ORM\PersistentCollection {#1607 …}
    +subscriptions: Doctrine\ORM\PersistentCollection {#1768 …}
    +subscribedDomains: Doctrine\ORM\PersistentCollection {#2445 …}
    +follows: Doctrine\ORM\PersistentCollection {#1849 …}
    +followers: Doctrine\ORM\PersistentCollection {#1810 …}
    +blocks: Doctrine\ORM\PersistentCollection {#1794 …}
    +blockers: Doctrine\ORM\PersistentCollection {#2415 …}
    +blockedMagazines: Doctrine\ORM\PersistentCollection {#2421 …}
    +blockedDomains: Doctrine\ORM\PersistentCollection {#2418 …}
    +reports: Doctrine\ORM\PersistentCollection {#2398 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1918 …}
    +violations: Doctrine\ORM\PersistentCollection {#1834 …}
    +notifications: Doctrine\ORM\PersistentCollection {#1878 …}
    +awards: Doctrine\ORM\PersistentCollection {#1886 …}
    +subscribedCategories: Doctrine\ORM\PersistentCollection {#1899 …}
    +categories: Doctrine\ORM\PersistentCollection {#1954 …}
    -id: 57593
    -password: "$2y$13$/L0PmovM1H9sjmzmYDFDJ./Rjx6mWwKcBTi6vz7ViURzIQuLk35WK"
    -totpSecret: null
    -totpBackupCodes: []
    -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1978 …}
    +apId: "danielquinn@lemmy.ca"
    +apProfileId: "https://lemmy.ca/u/danielquinn"
    +apPublicUrl: "https://lemmy.ca/u/danielquinn"
    +apFollowersUrl: null
    +apInboxUrl: "https://lemmy.ca/inbox"
    +apDomain: "lemmy.ca"
    +apPreferredUsername: "danielquinn"
    +apDiscoverable: true
    +apManuallyApprovesFollowers: false
    +privateKey: null
    +publicKey: null
    +apFetchedAt: DateTime @1729106992 {#276
      date: 2024-10-16 21:29:52.0 +02:00
    }
    +apDeletedAt: null
    +apTimeoutAt: null
    +visibility: "visible             "
    +createdAt: DateTimeImmutable @1697197941 {#272
      date: 2023-10-13 13:52:21.0 +02:00
    }
  }
  "width" => 40
  "height" => 40
  "asLink" => true
]
Attributes
[]
Component
App\Twig\Components\UserAvatarComponent {#5210
  +width: 40
  +height: 40
  +user: App\Entity\User {#260
    +avatar: Proxies\__CG__\App\Entity\Image {#240 …}
    +cover: null
    +email: "danielquinn@lemmy.ca"
    +username: "@danielquinn@lemmy.ca"
    +roles: []
    +followersCount: 0
    +homepage: "front"
    +about: "Canadian software engineer living in Europe."
    +lastActive: DateTime @1727577650 {#273
      date: 2024-09-29 04:40:50.0 +02:00
    }
    +markedForDeletionAt: null
    +fields: null
    +oauthGithubId: null
    +oauthGoogleId: null
    +oauthFacebookId: null
    +oauthKeycloakId: null
    +hideAdult: true
    +showSubscribedUsers: true
    +showSubscribedMagazines: true
    +showSubscribedDomains: true
    +preferredLanguages: []
    +featuredMagazines: null
    +showProfileSubscriptions: false
    +showProfileFollowings: true
    +markNewComments: false
    +notifyOnNewEntry: false
    +notifyOnNewEntryReply: true
    +notifyOnNewEntryCommentReply: true
    +notifyOnNewPost: false
    +notifyOnNewPostReply: true
    +notifyOnNewPostCommentReply: true
    +addMentionsEntries: false
    +addMentionsPosts: true
    +isBanned: false
    +isVerified: false
    +isDeleted: false
    +isBot: false
    +spamProtection: true
    +customCss: null
    +ignoreMagazinesCustomCss: false
    +moderatorTokens: Doctrine\ORM\PersistentCollection {#231 …}
    +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#227 …}
    +moderatorRequests: Doctrine\ORM\PersistentCollection {#216 …}
    +entries: Doctrine\ORM\PersistentCollection {#174 …}
    +entryVotes: Doctrine\ORM\PersistentCollection {#146 …}
    +entryComments: Doctrine\ORM\PersistentCollection {#119 …}
    +entryCommentVotes: Doctrine\ORM\PersistentCollection {#89 …}
    +posts: Doctrine\ORM\PersistentCollection {#62 …}
    +postVotes: Doctrine\ORM\PersistentCollection {#77 …}
    +postComments: Doctrine\ORM\PersistentCollection {#2405 …}
    +postCommentVotes: Doctrine\ORM\PersistentCollection {#1607 …}
    +subscriptions: Doctrine\ORM\PersistentCollection {#1768 …}
    +subscribedDomains: Doctrine\ORM\PersistentCollection {#2445 …}
    +follows: Doctrine\ORM\PersistentCollection {#1849 …}
    +followers: Doctrine\ORM\PersistentCollection {#1810 …}
    +blocks: Doctrine\ORM\PersistentCollection {#1794 …}
    +blockers: Doctrine\ORM\PersistentCollection {#2415 …}
    +blockedMagazines: Doctrine\ORM\PersistentCollection {#2421 …}
    +blockedDomains: Doctrine\ORM\PersistentCollection {#2418 …}
    +reports: Doctrine\ORM\PersistentCollection {#2398 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1918 …}
    +violations: Doctrine\ORM\PersistentCollection {#1834 …}
    +notifications: Doctrine\ORM\PersistentCollection {#1878 …}
    +awards: Doctrine\ORM\PersistentCollection {#1886 …}
    +subscribedCategories: Doctrine\ORM\PersistentCollection {#1899 …}
    +categories: Doctrine\ORM\PersistentCollection {#1954 …}
    -id: 57593
    -password: "$2y$13$/L0PmovM1H9sjmzmYDFDJ./Rjx6mWwKcBTi6vz7ViURzIQuLk35WK"
    -totpSecret: null
    -totpBackupCodes: []
    -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1978 …}
    +apId: "danielquinn@lemmy.ca"
    +apProfileId: "https://lemmy.ca/u/danielquinn"
    +apPublicUrl: "https://lemmy.ca/u/danielquinn"
    +apFollowersUrl: null
    +apInboxUrl: "https://lemmy.ca/inbox"
    +apDomain: "lemmy.ca"
    +apPreferredUsername: "danielquinn"
    +apDiscoverable: true
    +apManuallyApprovesFollowers: false
    +privateKey: null
    +publicKey: null
    +apFetchedAt: DateTime @1729106992 {#276
      date: 2024-10-16 21:29:52.0 +02:00
    }
    +apDeletedAt: null
    +apTimeoutAt: null
    +visibility: "visible             "
    +createdAt: DateTimeImmutable @1697197941 {#272
      date: 2023-10-13 13:52:21.0 +02:00
    }
  }
  +asLink: true
}
vote App\Twig\Components\VoteComponent 14.0 MiB 0.40 ms
Input props
[
  "subject" => App\Entity\EntryComment {#2382
    +user: App\Entity\User {#260
      +avatar: Proxies\__CG__\App\Entity\Image {#240 …}
      +cover: null
      +email: "danielquinn@lemmy.ca"
      +username: "@danielquinn@lemmy.ca"
      +roles: []
      +followersCount: 0
      +homepage: "front"
      +about: "Canadian software engineer living in Europe."
      +lastActive: DateTime @1727577650 {#273
        date: 2024-09-29 04:40:50.0 +02:00
      }
      +markedForDeletionAt: null
      +fields: null
      +oauthGithubId: null
      +oauthGoogleId: null
      +oauthFacebookId: null
      +oauthKeycloakId: null
      +hideAdult: true
      +showSubscribedUsers: true
      +showSubscribedMagazines: true
      +showSubscribedDomains: true
      +preferredLanguages: []
      +featuredMagazines: null
      +showProfileSubscriptions: false
      +showProfileFollowings: true
      +markNewComments: false
      +notifyOnNewEntry: false
      +notifyOnNewEntryReply: true
      +notifyOnNewEntryCommentReply: true
      +notifyOnNewPost: false
      +notifyOnNewPostReply: true
      +notifyOnNewPostCommentReply: true
      +addMentionsEntries: false
      +addMentionsPosts: true
      +isBanned: false
      +isVerified: false
      +isDeleted: false
      +isBot: false
      +spamProtection: true
      +customCss: null
      +ignoreMagazinesCustomCss: false
      +moderatorTokens: Doctrine\ORM\PersistentCollection {#231 …}
      +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#227 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#216 …}
      +entries: Doctrine\ORM\PersistentCollection {#174 …}
      +entryVotes: Doctrine\ORM\PersistentCollection {#146 …}
      +entryComments: Doctrine\ORM\PersistentCollection {#119 …}
      +entryCommentVotes: Doctrine\ORM\PersistentCollection {#89 …}
      +posts: Doctrine\ORM\PersistentCollection {#62 …}
      +postVotes: Doctrine\ORM\PersistentCollection {#77 …}
      +postComments: Doctrine\ORM\PersistentCollection {#2405 …}
      +postCommentVotes: Doctrine\ORM\PersistentCollection {#1607 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#1768 …}
      +subscribedDomains: Doctrine\ORM\PersistentCollection {#2445 …}
      +follows: Doctrine\ORM\PersistentCollection {#1849 …}
      +followers: Doctrine\ORM\PersistentCollection {#1810 …}
      +blocks: Doctrine\ORM\PersistentCollection {#1794 …}
      +blockers: Doctrine\ORM\PersistentCollection {#2415 …}
      +blockedMagazines: Doctrine\ORM\PersistentCollection {#2421 …}
      +blockedDomains: Doctrine\ORM\PersistentCollection {#2418 …}
      +reports: Doctrine\ORM\PersistentCollection {#2398 …}
      +favourites: Doctrine\ORM\PersistentCollection {#1918 …}
      +violations: Doctrine\ORM\PersistentCollection {#1834 …}
      +notifications: Doctrine\ORM\PersistentCollection {#1878 …}
      +awards: Doctrine\ORM\PersistentCollection {#1886 …}
      +subscribedCategories: Doctrine\ORM\PersistentCollection {#1899 …}
      +categories: Doctrine\ORM\PersistentCollection {#1954 …}
      -id: 57593
      -password: "$2y$13$/L0PmovM1H9sjmzmYDFDJ./Rjx6mWwKcBTi6vz7ViURzIQuLk35WK"
      -totpSecret: null
      -totpBackupCodes: []
      -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1978 …}
      +apId: "danielquinn@lemmy.ca"
      +apProfileId: "https://lemmy.ca/u/danielquinn"
      +apPublicUrl: "https://lemmy.ca/u/danielquinn"
      +apFollowersUrl: null
      +apInboxUrl: "https://lemmy.ca/inbox"
      +apDomain: "lemmy.ca"
      +apPreferredUsername: "danielquinn"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: false
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729106992 {#276
        date: 2024-10-16 21:29:52.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1697197941 {#272
        date: 2023-10-13 13:52:21.0 +02:00
      }
    }
    +entry: App\Entity\Entry {#1609
      +user: App\Entity\User {#260}
      +magazine: Proxies\__CG__\App\Entity\Magazine {#1584
        +icon: Proxies\__CG__\App\Entity\Image {#3026 …}
        +name: "piracy@lemmy.dbzer0.com"
        +title: "piracy"
        +description: """
          ##### ⚓ Community devoted to in-depth debate on topics concerning digital piracy, ethical problems, and legal advancements.\n
          \n
          ---\n
          \n
          ### Rules • [Full Version](https://rentry.co/piracy-rules)\n
          \n
          **1**. Posts must be related to the discussion of digital piracy\n
          \n
          **2**. Don’t request invites, trade, sell, or self-promote\n
          \n
          **3**. Don’t request or link to specific pirated titles, including DMs\n
          \n
          **4**. Don’t submit low-quality posts, be entitled, or harass others\n
          \n
          **5**. Don’t post questions already answered. READ THE [WIKI](https://lemmy.dbzer0.com/post/10901)\n
          \n
          ---\n
          \n
          [![](https://a.imagem.app/oZoQ1v.png)](https://lemmy.dbzer0.com/post/10901)\n
          ---------------------------------------------------------------------------\n
          \n
          ### Loot, Pillage, & Plunder\n
          \n
          - [📜 Megathread](https://rentry.co/megathread)\n
          - [🪶 FAQ](https://rentry.co/piracy-faq)\n
          - [🪶 ISP Complaints](https://rentry.co/piracy-isp-complaints)\n
          - [🪶 Rules](https://rentry.co/piracy-rules)\n
          \n
          ---\n
          \n
          💰 Please help cover server costs.\n
          \n
          [![Ko-Fi](https://lemmy.dbzer0.com/pictrs/image/4a2f073a-3dd8-492a-942d-72bd929c9f1d.png)](https://ko-fi.com/dbzer0)[![Liberapay](https://lemmy.dbzer0.com/pictrs/image/eec4659d-39be-4fc9-bc9e-66a96285ea2c.png)](https://liberapay.com/db0/)\n
          \n
          ---
          """
        +rules: null
        +subscriptionsCount: 1
        +entryCount: 866
        +entryCommentCount: 20194
        +postCount: 7
        +postCommentCount: 149
        +isAdult: false
        +customCss: null
        +lastActive: DateTime @1729581369 {#3023
          date: 2024-10-22 09:16:09.0 +02:00
        }
        +markedForDeletionAt: null
        +tags: null
        +moderators: Doctrine\ORM\PersistentCollection {#3027 …}
        +ownershipRequests: Doctrine\ORM\PersistentCollection {#3029 …}
        +moderatorRequests: Doctrine\ORM\PersistentCollection {#3031 …}
        +entries: Doctrine\ORM\PersistentCollection {#3033 …}
        +posts: Doctrine\ORM\PersistentCollection {#3035 …}
        +subscriptions: Doctrine\ORM\PersistentCollection {#3037 …}
        +bans: Doctrine\ORM\PersistentCollection {#3043 …}
        +reports: Doctrine\ORM\PersistentCollection {#3051 …}
        +badges: Doctrine\ORM\PersistentCollection {#3064 …}
        +logs: Doctrine\ORM\PersistentCollection {#3074 …}
        +awards: Doctrine\ORM\PersistentCollection {#3056 …}
        +categories: Doctrine\ORM\PersistentCollection {#3080 …}
        -id: 51
        +apId: "piracy@lemmy.dbzer0.com"
        +apProfileId: "https://lemmy.dbzer0.com/c/piracy"
        +apPublicUrl: "https://lemmy.dbzer0.com/c/piracy"
        +apFollowersUrl: "https://lemmy.dbzer0.com/c/piracy/followers"
        +apInboxUrl: "https://lemmy.dbzer0.com/inbox"
        +apDomain: "lemmy.dbzer0.com"
        +apPreferredUsername: "piracy"
        +apDiscoverable: true
        +apManuallyApprovesFollowers: null
        +privateKey: null
        +publicKey: null
        +apFetchedAt: DateTime @1708748229 {#3024
          date: 2024-02-24 05:17:09.0 +01:00
        }
        +apDeletedAt: null
        +apTimeoutAt: null
        +visibility: "visible             "
        +createdAt: DateTimeImmutable @1697197339 {#3025
          date: 2023-10-13 13:42:19.0 +02:00
        }
        +__isInitialized__: true
         …2
      }
      +image: Proxies\__CG__\App\Entity\Image {#1579 …}
      +domain: Proxies\__CG__\App\Entity\Domain {#1679 …}
      +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 {#1421
        date: 2024-02-10 10:33:02.0 +01:00
      }
      +ip: null
      +adaAmount: 0
      +tags: null
      +mentions: null
      +comments: Doctrine\ORM\PersistentCollection {#1650 …}
      +votes: Doctrine\ORM\PersistentCollection {#1652 …}
      +reports: Doctrine\ORM\PersistentCollection {#1651 …}
      +favourites: Doctrine\ORM\PersistentCollection {#1527 …}
      +notifications: Doctrine\ORM\PersistentCollection {#1560 …}
      +badges: Doctrine\ORM\PersistentCollection {#1558 …}
      +children: [
        3 => App\Entity\EntryComment {#1611
          +user: App\Entity\User {#260}
          +entry: App\Entity\Entry {#1609}
          +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
          +image: null
          +parent: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
          +root: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
          +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 {#1596
            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 {#2464 …}
          +nested: Doctrine\ORM\PersistentCollection {#1740 …}
          +votes: Doctrine\ORM\PersistentCollection {#1739 …}
          +reports: Doctrine\ORM\PersistentCollection {#1716 …}
          +favourites: Doctrine\ORM\PersistentCollection {#2461 …}
          +notifications: Doctrine\ORM\PersistentCollection {#2447 …}
          -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 {#1555
            date: 2023-10-14 09:20:07.0 +02:00
          }
          +"title": 48003
        }
        2 => App\Entity\EntryComment {#2467
          +user: App\Entity\User {#260}
          +entry: App\Entity\Entry {#1609}
          +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
          +image: null
          +parent: Proxies\__CG__\App\Entity\EntryComment {#2470 …}
          +root: Proxies\__CG__\App\Entity\EntryComment {#2470 …}
          +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 {#1731
            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 {#2455 …}
          +nested: Doctrine\ORM\PersistentCollection {#2471 …}
          +votes: Doctrine\ORM\PersistentCollection {#2363 …}
          +reports: Doctrine\ORM\PersistentCollection {#2377 …}
          +favourites: Doctrine\ORM\PersistentCollection {#2359 …}
          +notifications: Doctrine\ORM\PersistentCollection {#2364 …}
          -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 {#2469
            date: 2023-10-14 09:26:17.0 +02:00
          }
          +"title": 48009
        }
        1 => App\Entity\EntryComment {#2382}
        0 => App\Entity\EntryComment {#1407
          +user: App\Entity\User {#260}
          +entry: App\Entity\Entry {#1609}
          +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
          +image: null
          +parent: Proxies\__CG__\App\Entity\EntryComment {#1883 …}
          +root: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
          +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 {#1907
            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 {#2391 …}
          +nested: Doctrine\ORM\PersistentCollection {#2369 …}
          +votes: Doctrine\ORM\PersistentCollection {#2392 …}
          +reports: Doctrine\ORM\PersistentCollection {#2395 …}
          +favourites: Doctrine\ORM\PersistentCollection {#1384 …}
          +notifications: Doctrine\ORM\PersistentCollection {#1383 …}
          -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 {#1908
            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 {#1424
        date: 2023-10-14 01:14:01.0 +02:00
      }
    }
    +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
    +image: null
    +parent: Proxies\__CG__\App\Entity\EntryComment {#2385 …}
    +root: Proxies\__CG__\App\Entity\EntryComment {#2385 …}
    +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 {#2380
      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 {#2384 …}
    +nested: Doctrine\ORM\PersistentCollection {#2379 …}
    +votes: Doctrine\ORM\PersistentCollection {#2383 …}
    +reports: Doctrine\ORM\PersistentCollection {#1906 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1708 …}
    +notifications: Doctrine\ORM\PersistentCollection {#1410 …}
    -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 {#2386
      date: 2023-10-14 15:04:09.0 +02:00
    }
    +"title": 48431
  }
]
Attributes
[]
Component
App\Twig\Components\VoteComponent {#5290
  +subject: App\Entity\EntryComment {#2382
    +user: App\Entity\User {#260
      +avatar: Proxies\__CG__\App\Entity\Image {#240 …}
      +cover: null
      +email: "danielquinn@lemmy.ca"
      +username: "@danielquinn@lemmy.ca"
      +roles: []
      +followersCount: 0
      +homepage: "front"
      +about: "Canadian software engineer living in Europe."
      +lastActive: DateTime @1727577650 {#273
        date: 2024-09-29 04:40:50.0 +02:00
      }
      +markedForDeletionAt: null
      +fields: null
      +oauthGithubId: null
      +oauthGoogleId: null
      +oauthFacebookId: null
      +oauthKeycloakId: null
      +hideAdult: true
      +showSubscribedUsers: true
      +showSubscribedMagazines: true
      +showSubscribedDomains: true
      +preferredLanguages: []
      +featuredMagazines: null
      +showProfileSubscriptions: false
      +showProfileFollowings: true
      +markNewComments: false
      +notifyOnNewEntry: false
      +notifyOnNewEntryReply: true
      +notifyOnNewEntryCommentReply: true
      +notifyOnNewPost: false
      +notifyOnNewPostReply: true
      +notifyOnNewPostCommentReply: true
      +addMentionsEntries: false
      +addMentionsPosts: true
      +isBanned: false
      +isVerified: false
      +isDeleted: false
      +isBot: false
      +spamProtection: true
      +customCss: null
      +ignoreMagazinesCustomCss: false
      +moderatorTokens: Doctrine\ORM\PersistentCollection {#231 …}
      +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#227 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#216 …}
      +entries: Doctrine\ORM\PersistentCollection {#174 …}
      +entryVotes: Doctrine\ORM\PersistentCollection {#146 …}
      +entryComments: Doctrine\ORM\PersistentCollection {#119 …}
      +entryCommentVotes: Doctrine\ORM\PersistentCollection {#89 …}
      +posts: Doctrine\ORM\PersistentCollection {#62 …}
      +postVotes: Doctrine\ORM\PersistentCollection {#77 …}
      +postComments: Doctrine\ORM\PersistentCollection {#2405 …}
      +postCommentVotes: Doctrine\ORM\PersistentCollection {#1607 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#1768 …}
      +subscribedDomains: Doctrine\ORM\PersistentCollection {#2445 …}
      +follows: Doctrine\ORM\PersistentCollection {#1849 …}
      +followers: Doctrine\ORM\PersistentCollection {#1810 …}
      +blocks: Doctrine\ORM\PersistentCollection {#1794 …}
      +blockers: Doctrine\ORM\PersistentCollection {#2415 …}
      +blockedMagazines: Doctrine\ORM\PersistentCollection {#2421 …}
      +blockedDomains: Doctrine\ORM\PersistentCollection {#2418 …}
      +reports: Doctrine\ORM\PersistentCollection {#2398 …}
      +favourites: Doctrine\ORM\PersistentCollection {#1918 …}
      +violations: Doctrine\ORM\PersistentCollection {#1834 …}
      +notifications: Doctrine\ORM\PersistentCollection {#1878 …}
      +awards: Doctrine\ORM\PersistentCollection {#1886 …}
      +subscribedCategories: Doctrine\ORM\PersistentCollection {#1899 …}
      +categories: Doctrine\ORM\PersistentCollection {#1954 …}
      -id: 57593
      -password: "$2y$13$/L0PmovM1H9sjmzmYDFDJ./Rjx6mWwKcBTi6vz7ViURzIQuLk35WK"
      -totpSecret: null
      -totpBackupCodes: []
      -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1978 …}
      +apId: "danielquinn@lemmy.ca"
      +apProfileId: "https://lemmy.ca/u/danielquinn"
      +apPublicUrl: "https://lemmy.ca/u/danielquinn"
      +apFollowersUrl: null
      +apInboxUrl: "https://lemmy.ca/inbox"
      +apDomain: "lemmy.ca"
      +apPreferredUsername: "danielquinn"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: false
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729106992 {#276
        date: 2024-10-16 21:29:52.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1697197941 {#272
        date: 2023-10-13 13:52:21.0 +02:00
      }
    }
    +entry: App\Entity\Entry {#1609
      +user: App\Entity\User {#260}
      +magazine: Proxies\__CG__\App\Entity\Magazine {#1584
        +icon: Proxies\__CG__\App\Entity\Image {#3026 …}
        +name: "piracy@lemmy.dbzer0.com"
        +title: "piracy"
        +description: """
          ##### ⚓ Community devoted to in-depth debate on topics concerning digital piracy, ethical problems, and legal advancements.\n
          \n
          ---\n
          \n
          ### Rules • [Full Version](https://rentry.co/piracy-rules)\n
          \n
          **1**. Posts must be related to the discussion of digital piracy\n
          \n
          **2**. Don’t request invites, trade, sell, or self-promote\n
          \n
          **3**. Don’t request or link to specific pirated titles, including DMs\n
          \n
          **4**. Don’t submit low-quality posts, be entitled, or harass others\n
          \n
          **5**. Don’t post questions already answered. READ THE [WIKI](https://lemmy.dbzer0.com/post/10901)\n
          \n
          ---\n
          \n
          [![](https://a.imagem.app/oZoQ1v.png)](https://lemmy.dbzer0.com/post/10901)\n
          ---------------------------------------------------------------------------\n
          \n
          ### Loot, Pillage, & Plunder\n
          \n
          - [📜 Megathread](https://rentry.co/megathread)\n
          - [🪶 FAQ](https://rentry.co/piracy-faq)\n
          - [🪶 ISP Complaints](https://rentry.co/piracy-isp-complaints)\n
          - [🪶 Rules](https://rentry.co/piracy-rules)\n
          \n
          ---\n
          \n
          💰 Please help cover server costs.\n
          \n
          [![Ko-Fi](https://lemmy.dbzer0.com/pictrs/image/4a2f073a-3dd8-492a-942d-72bd929c9f1d.png)](https://ko-fi.com/dbzer0)[![Liberapay](https://lemmy.dbzer0.com/pictrs/image/eec4659d-39be-4fc9-bc9e-66a96285ea2c.png)](https://liberapay.com/db0/)\n
          \n
          ---
          """
        +rules: null
        +subscriptionsCount: 1
        +entryCount: 866
        +entryCommentCount: 20194
        +postCount: 7
        +postCommentCount: 149
        +isAdult: false
        +customCss: null
        +lastActive: DateTime @1729581369 {#3023
          date: 2024-10-22 09:16:09.0 +02:00
        }
        +markedForDeletionAt: null
        +tags: null
        +moderators: Doctrine\ORM\PersistentCollection {#3027 …}
        +ownershipRequests: Doctrine\ORM\PersistentCollection {#3029 …}
        +moderatorRequests: Doctrine\ORM\PersistentCollection {#3031 …}
        +entries: Doctrine\ORM\PersistentCollection {#3033 …}
        +posts: Doctrine\ORM\PersistentCollection {#3035 …}
        +subscriptions: Doctrine\ORM\PersistentCollection {#3037 …}
        +bans: Doctrine\ORM\PersistentCollection {#3043 …}
        +reports: Doctrine\ORM\PersistentCollection {#3051 …}
        +badges: Doctrine\ORM\PersistentCollection {#3064 …}
        +logs: Doctrine\ORM\PersistentCollection {#3074 …}
        +awards: Doctrine\ORM\PersistentCollection {#3056 …}
        +categories: Doctrine\ORM\PersistentCollection {#3080 …}
        -id: 51
        +apId: "piracy@lemmy.dbzer0.com"
        +apProfileId: "https://lemmy.dbzer0.com/c/piracy"
        +apPublicUrl: "https://lemmy.dbzer0.com/c/piracy"
        +apFollowersUrl: "https://lemmy.dbzer0.com/c/piracy/followers"
        +apInboxUrl: "https://lemmy.dbzer0.com/inbox"
        +apDomain: "lemmy.dbzer0.com"
        +apPreferredUsername: "piracy"
        +apDiscoverable: true
        +apManuallyApprovesFollowers: null
        +privateKey: null
        +publicKey: null
        +apFetchedAt: DateTime @1708748229 {#3024
          date: 2024-02-24 05:17:09.0 +01:00
        }
        +apDeletedAt: null
        +apTimeoutAt: null
        +visibility: "visible             "
        +createdAt: DateTimeImmutable @1697197339 {#3025
          date: 2023-10-13 13:42:19.0 +02:00
        }
        +__isInitialized__: true
         …2
      }
      +image: Proxies\__CG__\App\Entity\Image {#1579 …}
      +domain: Proxies\__CG__\App\Entity\Domain {#1679 …}
      +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 {#1421
        date: 2024-02-10 10:33:02.0 +01:00
      }
      +ip: null
      +adaAmount: 0
      +tags: null
      +mentions: null
      +comments: Doctrine\ORM\PersistentCollection {#1650 …}
      +votes: Doctrine\ORM\PersistentCollection {#1652 …}
      +reports: Doctrine\ORM\PersistentCollection {#1651 …}
      +favourites: Doctrine\ORM\PersistentCollection {#1527 …}
      +notifications: Doctrine\ORM\PersistentCollection {#1560 …}
      +badges: Doctrine\ORM\PersistentCollection {#1558 …}
      +children: [
        3 => App\Entity\EntryComment {#1611
          +user: App\Entity\User {#260}
          +entry: App\Entity\Entry {#1609}
          +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
          +image: null
          +parent: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
          +root: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
          +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 {#1596
            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 {#2464 …}
          +nested: Doctrine\ORM\PersistentCollection {#1740 …}
          +votes: Doctrine\ORM\PersistentCollection {#1739 …}
          +reports: Doctrine\ORM\PersistentCollection {#1716 …}
          +favourites: Doctrine\ORM\PersistentCollection {#2461 …}
          +notifications: Doctrine\ORM\PersistentCollection {#2447 …}
          -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 {#1555
            date: 2023-10-14 09:20:07.0 +02:00
          }
          +"title": 48003
        }
        2 => App\Entity\EntryComment {#2467
          +user: App\Entity\User {#260}
          +entry: App\Entity\Entry {#1609}
          +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
          +image: null
          +parent: Proxies\__CG__\App\Entity\EntryComment {#2470 …}
          +root: Proxies\__CG__\App\Entity\EntryComment {#2470 …}
          +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 {#1731
            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 {#2455 …}
          +nested: Doctrine\ORM\PersistentCollection {#2471 …}
          +votes: Doctrine\ORM\PersistentCollection {#2363 …}
          +reports: Doctrine\ORM\PersistentCollection {#2377 …}
          +favourites: Doctrine\ORM\PersistentCollection {#2359 …}
          +notifications: Doctrine\ORM\PersistentCollection {#2364 …}
          -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 {#2469
            date: 2023-10-14 09:26:17.0 +02:00
          }
          +"title": 48009
        }
        1 => App\Entity\EntryComment {#2382}
        0 => App\Entity\EntryComment {#1407
          +user: App\Entity\User {#260}
          +entry: App\Entity\Entry {#1609}
          +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
          +image: null
          +parent: Proxies\__CG__\App\Entity\EntryComment {#1883 …}
          +root: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
          +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 {#1907
            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 {#2391 …}
          +nested: Doctrine\ORM\PersistentCollection {#2369 …}
          +votes: Doctrine\ORM\PersistentCollection {#2392 …}
          +reports: Doctrine\ORM\PersistentCollection {#2395 …}
          +favourites: Doctrine\ORM\PersistentCollection {#1384 …}
          +notifications: Doctrine\ORM\PersistentCollection {#1383 …}
          -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 {#1908
            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 {#1424
        date: 2023-10-14 01:14:01.0 +02:00
      }
    }
    +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
    +image: null
    +parent: Proxies\__CG__\App\Entity\EntryComment {#2385 …}
    +root: Proxies\__CG__\App\Entity\EntryComment {#2385 …}
    +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 {#2380
      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 {#2384 …}
    +nested: Doctrine\ORM\PersistentCollection {#2379 …}
    +votes: Doctrine\ORM\PersistentCollection {#2383 …}
    +reports: Doctrine\ORM\PersistentCollection {#1906 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1708 …}
    +notifications: Doctrine\ORM\PersistentCollection {#1410 …}
    -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 {#2386
      date: 2023-10-14 15:04:09.0 +02:00
    }
    +"title": 48431
  }
  +formDest: "entry_comment"
  +showDownvote: true
  -cache: Symfony\Component\Cache\Adapter\TraceableTagAwareAdapter {#600 …}
}
boost App\Twig\Components\BoostComponent 14.0 MiB 0.68 ms
Input props
[
  "subject" => App\Entity\EntryComment {#2382
    +user: App\Entity\User {#260
      +avatar: Proxies\__CG__\App\Entity\Image {#240 …}
      +cover: null
      +email: "danielquinn@lemmy.ca"
      +username: "@danielquinn@lemmy.ca"
      +roles: []
      +followersCount: 0
      +homepage: "front"
      +about: "Canadian software engineer living in Europe."
      +lastActive: DateTime @1727577650 {#273
        date: 2024-09-29 04:40:50.0 +02:00
      }
      +markedForDeletionAt: null
      +fields: null
      +oauthGithubId: null
      +oauthGoogleId: null
      +oauthFacebookId: null
      +oauthKeycloakId: null
      +hideAdult: true
      +showSubscribedUsers: true
      +showSubscribedMagazines: true
      +showSubscribedDomains: true
      +preferredLanguages: []
      +featuredMagazines: null
      +showProfileSubscriptions: false
      +showProfileFollowings: true
      +markNewComments: false
      +notifyOnNewEntry: false
      +notifyOnNewEntryReply: true
      +notifyOnNewEntryCommentReply: true
      +notifyOnNewPost: false
      +notifyOnNewPostReply: true
      +notifyOnNewPostCommentReply: true
      +addMentionsEntries: false
      +addMentionsPosts: true
      +isBanned: false
      +isVerified: false
      +isDeleted: false
      +isBot: false
      +spamProtection: true
      +customCss: null
      +ignoreMagazinesCustomCss: false
      +moderatorTokens: Doctrine\ORM\PersistentCollection {#231 …}
      +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#227 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#216 …}
      +entries: Doctrine\ORM\PersistentCollection {#174 …}
      +entryVotes: Doctrine\ORM\PersistentCollection {#146 …}
      +entryComments: Doctrine\ORM\PersistentCollection {#119 …}
      +entryCommentVotes: Doctrine\ORM\PersistentCollection {#89 …}
      +posts: Doctrine\ORM\PersistentCollection {#62 …}
      +postVotes: Doctrine\ORM\PersistentCollection {#77 …}
      +postComments: Doctrine\ORM\PersistentCollection {#2405 …}
      +postCommentVotes: Doctrine\ORM\PersistentCollection {#1607 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#1768 …}
      +subscribedDomains: Doctrine\ORM\PersistentCollection {#2445 …}
      +follows: Doctrine\ORM\PersistentCollection {#1849 …}
      +followers: Doctrine\ORM\PersistentCollection {#1810 …}
      +blocks: Doctrine\ORM\PersistentCollection {#1794 …}
      +blockers: Doctrine\ORM\PersistentCollection {#2415 …}
      +blockedMagazines: Doctrine\ORM\PersistentCollection {#2421 …}
      +blockedDomains: Doctrine\ORM\PersistentCollection {#2418 …}
      +reports: Doctrine\ORM\PersistentCollection {#2398 …}
      +favourites: Doctrine\ORM\PersistentCollection {#1918 …}
      +violations: Doctrine\ORM\PersistentCollection {#1834 …}
      +notifications: Doctrine\ORM\PersistentCollection {#1878 …}
      +awards: Doctrine\ORM\PersistentCollection {#1886 …}
      +subscribedCategories: Doctrine\ORM\PersistentCollection {#1899 …}
      +categories: Doctrine\ORM\PersistentCollection {#1954 …}
      -id: 57593
      -password: "$2y$13$/L0PmovM1H9sjmzmYDFDJ./Rjx6mWwKcBTi6vz7ViURzIQuLk35WK"
      -totpSecret: null
      -totpBackupCodes: []
      -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1978 …}
      +apId: "danielquinn@lemmy.ca"
      +apProfileId: "https://lemmy.ca/u/danielquinn"
      +apPublicUrl: "https://lemmy.ca/u/danielquinn"
      +apFollowersUrl: null
      +apInboxUrl: "https://lemmy.ca/inbox"
      +apDomain: "lemmy.ca"
      +apPreferredUsername: "danielquinn"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: false
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729106992 {#276
        date: 2024-10-16 21:29:52.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1697197941 {#272
        date: 2023-10-13 13:52:21.0 +02:00
      }
    }
    +entry: App\Entity\Entry {#1609
      +user: App\Entity\User {#260}
      +magazine: Proxies\__CG__\App\Entity\Magazine {#1584
        +icon: Proxies\__CG__\App\Entity\Image {#3026 …}
        +name: "piracy@lemmy.dbzer0.com"
        +title: "piracy"
        +description: """
          ##### ⚓ Community devoted to in-depth debate on topics concerning digital piracy, ethical problems, and legal advancements.\n
          \n
          ---\n
          \n
          ### Rules • [Full Version](https://rentry.co/piracy-rules)\n
          \n
          **1**. Posts must be related to the discussion of digital piracy\n
          \n
          **2**. Don’t request invites, trade, sell, or self-promote\n
          \n
          **3**. Don’t request or link to specific pirated titles, including DMs\n
          \n
          **4**. Don’t submit low-quality posts, be entitled, or harass others\n
          \n
          **5**. Don’t post questions already answered. READ THE [WIKI](https://lemmy.dbzer0.com/post/10901)\n
          \n
          ---\n
          \n
          [![](https://a.imagem.app/oZoQ1v.png)](https://lemmy.dbzer0.com/post/10901)\n
          ---------------------------------------------------------------------------\n
          \n
          ### Loot, Pillage, & Plunder\n
          \n
          - [📜 Megathread](https://rentry.co/megathread)\n
          - [🪶 FAQ](https://rentry.co/piracy-faq)\n
          - [🪶 ISP Complaints](https://rentry.co/piracy-isp-complaints)\n
          - [🪶 Rules](https://rentry.co/piracy-rules)\n
          \n
          ---\n
          \n
          💰 Please help cover server costs.\n
          \n
          [![Ko-Fi](https://lemmy.dbzer0.com/pictrs/image/4a2f073a-3dd8-492a-942d-72bd929c9f1d.png)](https://ko-fi.com/dbzer0)[![Liberapay](https://lemmy.dbzer0.com/pictrs/image/eec4659d-39be-4fc9-bc9e-66a96285ea2c.png)](https://liberapay.com/db0/)\n
          \n
          ---
          """
        +rules: null
        +subscriptionsCount: 1
        +entryCount: 866
        +entryCommentCount: 20194
        +postCount: 7
        +postCommentCount: 149
        +isAdult: false
        +customCss: null
        +lastActive: DateTime @1729581369 {#3023
          date: 2024-10-22 09:16:09.0 +02:00
        }
        +markedForDeletionAt: null
        +tags: null
        +moderators: Doctrine\ORM\PersistentCollection {#3027 …}
        +ownershipRequests: Doctrine\ORM\PersistentCollection {#3029 …}
        +moderatorRequests: Doctrine\ORM\PersistentCollection {#3031 …}
        +entries: Doctrine\ORM\PersistentCollection {#3033 …}
        +posts: Doctrine\ORM\PersistentCollection {#3035 …}
        +subscriptions: Doctrine\ORM\PersistentCollection {#3037 …}
        +bans: Doctrine\ORM\PersistentCollection {#3043 …}
        +reports: Doctrine\ORM\PersistentCollection {#3051 …}
        +badges: Doctrine\ORM\PersistentCollection {#3064 …}
        +logs: Doctrine\ORM\PersistentCollection {#3074 …}
        +awards: Doctrine\ORM\PersistentCollection {#3056 …}
        +categories: Doctrine\ORM\PersistentCollection {#3080 …}
        -id: 51
        +apId: "piracy@lemmy.dbzer0.com"
        +apProfileId: "https://lemmy.dbzer0.com/c/piracy"
        +apPublicUrl: "https://lemmy.dbzer0.com/c/piracy"
        +apFollowersUrl: "https://lemmy.dbzer0.com/c/piracy/followers"
        +apInboxUrl: "https://lemmy.dbzer0.com/inbox"
        +apDomain: "lemmy.dbzer0.com"
        +apPreferredUsername: "piracy"
        +apDiscoverable: true
        +apManuallyApprovesFollowers: null
        +privateKey: null
        +publicKey: null
        +apFetchedAt: DateTime @1708748229 {#3024
          date: 2024-02-24 05:17:09.0 +01:00
        }
        +apDeletedAt: null
        +apTimeoutAt: null
        +visibility: "visible             "
        +createdAt: DateTimeImmutable @1697197339 {#3025
          date: 2023-10-13 13:42:19.0 +02:00
        }
        +__isInitialized__: true
         …2
      }
      +image: Proxies\__CG__\App\Entity\Image {#1579 …}
      +domain: Proxies\__CG__\App\Entity\Domain {#1679 …}
      +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 {#1421
        date: 2024-02-10 10:33:02.0 +01:00
      }
      +ip: null
      +adaAmount: 0
      +tags: null
      +mentions: null
      +comments: Doctrine\ORM\PersistentCollection {#1650 …}
      +votes: Doctrine\ORM\PersistentCollection {#1652 …}
      +reports: Doctrine\ORM\PersistentCollection {#1651 …}
      +favourites: Doctrine\ORM\PersistentCollection {#1527 …}
      +notifications: Doctrine\ORM\PersistentCollection {#1560 …}
      +badges: Doctrine\ORM\PersistentCollection {#1558 …}
      +children: [
        3 => App\Entity\EntryComment {#1611
          +user: App\Entity\User {#260}
          +entry: App\Entity\Entry {#1609}
          +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
          +image: null
          +parent: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
          +root: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
          +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 {#1596
            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 {#2464 …}
          +nested: Doctrine\ORM\PersistentCollection {#1740 …}
          +votes: Doctrine\ORM\PersistentCollection {#1739 …}
          +reports: Doctrine\ORM\PersistentCollection {#1716 …}
          +favourites: Doctrine\ORM\PersistentCollection {#2461 …}
          +notifications: Doctrine\ORM\PersistentCollection {#2447 …}
          -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 {#1555
            date: 2023-10-14 09:20:07.0 +02:00
          }
          +"title": 48003
        }
        2 => App\Entity\EntryComment {#2467
          +user: App\Entity\User {#260}
          +entry: App\Entity\Entry {#1609}
          +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
          +image: null
          +parent: Proxies\__CG__\App\Entity\EntryComment {#2470 …}
          +root: Proxies\__CG__\App\Entity\EntryComment {#2470 …}
          +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 {#1731
            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 {#2455 …}
          +nested: Doctrine\ORM\PersistentCollection {#2471 …}
          +votes: Doctrine\ORM\PersistentCollection {#2363 …}
          +reports: Doctrine\ORM\PersistentCollection {#2377 …}
          +favourites: Doctrine\ORM\PersistentCollection {#2359 …}
          +notifications: Doctrine\ORM\PersistentCollection {#2364 …}
          -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 {#2469
            date: 2023-10-14 09:26:17.0 +02:00
          }
          +"title": 48009
        }
        1 => App\Entity\EntryComment {#2382}
        0 => App\Entity\EntryComment {#1407
          +user: App\Entity\User {#260}
          +entry: App\Entity\Entry {#1609}
          +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
          +image: null
          +parent: Proxies\__CG__\App\Entity\EntryComment {#1883 …}
          +root: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
          +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 {#1907
            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 {#2391 …}
          +nested: Doctrine\ORM\PersistentCollection {#2369 …}
          +votes: Doctrine\ORM\PersistentCollection {#2392 …}
          +reports: Doctrine\ORM\PersistentCollection {#2395 …}
          +favourites: Doctrine\ORM\PersistentCollection {#1384 …}
          +notifications: Doctrine\ORM\PersistentCollection {#1383 …}
          -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 {#1908
            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 {#1424
        date: 2023-10-14 01:14:01.0 +02:00
      }
    }
    +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
    +image: null
    +parent: Proxies\__CG__\App\Entity\EntryComment {#2385 …}
    +root: Proxies\__CG__\App\Entity\EntryComment {#2385 …}
    +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 {#2380
      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 {#2384 …}
    +nested: Doctrine\ORM\PersistentCollection {#2379 …}
    +votes: Doctrine\ORM\PersistentCollection {#2383 …}
    +reports: Doctrine\ORM\PersistentCollection {#1906 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1708 …}
    +notifications: Doctrine\ORM\PersistentCollection {#1410 …}
    -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 {#2386
      date: 2023-10-14 15:04:09.0 +02:00
    }
    +"title": 48431
  }
]
Attributes
[]
Component
App\Twig\Components\BoostComponent {#5347
  +formDest: "entry_comment"
  +subject: App\Entity\EntryComment {#2382
    +user: App\Entity\User {#260
      +avatar: Proxies\__CG__\App\Entity\Image {#240 …}
      +cover: null
      +email: "danielquinn@lemmy.ca"
      +username: "@danielquinn@lemmy.ca"
      +roles: []
      +followersCount: 0
      +homepage: "front"
      +about: "Canadian software engineer living in Europe."
      +lastActive: DateTime @1727577650 {#273
        date: 2024-09-29 04:40:50.0 +02:00
      }
      +markedForDeletionAt: null
      +fields: null
      +oauthGithubId: null
      +oauthGoogleId: null
      +oauthFacebookId: null
      +oauthKeycloakId: null
      +hideAdult: true
      +showSubscribedUsers: true
      +showSubscribedMagazines: true
      +showSubscribedDomains: true
      +preferredLanguages: []
      +featuredMagazines: null
      +showProfileSubscriptions: false
      +showProfileFollowings: true
      +markNewComments: false
      +notifyOnNewEntry: false
      +notifyOnNewEntryReply: true
      +notifyOnNewEntryCommentReply: true
      +notifyOnNewPost: false
      +notifyOnNewPostReply: true
      +notifyOnNewPostCommentReply: true
      +addMentionsEntries: false
      +addMentionsPosts: true
      +isBanned: false
      +isVerified: false
      +isDeleted: false
      +isBot: false
      +spamProtection: true
      +customCss: null
      +ignoreMagazinesCustomCss: false
      +moderatorTokens: Doctrine\ORM\PersistentCollection {#231 …}
      +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#227 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#216 …}
      +entries: Doctrine\ORM\PersistentCollection {#174 …}
      +entryVotes: Doctrine\ORM\PersistentCollection {#146 …}
      +entryComments: Doctrine\ORM\PersistentCollection {#119 …}
      +entryCommentVotes: Doctrine\ORM\PersistentCollection {#89 …}
      +posts: Doctrine\ORM\PersistentCollection {#62 …}
      +postVotes: Doctrine\ORM\PersistentCollection {#77 …}
      +postComments: Doctrine\ORM\PersistentCollection {#2405 …}
      +postCommentVotes: Doctrine\ORM\PersistentCollection {#1607 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#1768 …}
      +subscribedDomains: Doctrine\ORM\PersistentCollection {#2445 …}
      +follows: Doctrine\ORM\PersistentCollection {#1849 …}
      +followers: Doctrine\ORM\PersistentCollection {#1810 …}
      +blocks: Doctrine\ORM\PersistentCollection {#1794 …}
      +blockers: Doctrine\ORM\PersistentCollection {#2415 …}
      +blockedMagazines: Doctrine\ORM\PersistentCollection {#2421 …}
      +blockedDomains: Doctrine\ORM\PersistentCollection {#2418 …}
      +reports: Doctrine\ORM\PersistentCollection {#2398 …}
      +favourites: Doctrine\ORM\PersistentCollection {#1918 …}
      +violations: Doctrine\ORM\PersistentCollection {#1834 …}
      +notifications: Doctrine\ORM\PersistentCollection {#1878 …}
      +awards: Doctrine\ORM\PersistentCollection {#1886 …}
      +subscribedCategories: Doctrine\ORM\PersistentCollection {#1899 …}
      +categories: Doctrine\ORM\PersistentCollection {#1954 …}
      -id: 57593
      -password: "$2y$13$/L0PmovM1H9sjmzmYDFDJ./Rjx6mWwKcBTi6vz7ViURzIQuLk35WK"
      -totpSecret: null
      -totpBackupCodes: []
      -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1978 …}
      +apId: "danielquinn@lemmy.ca"
      +apProfileId: "https://lemmy.ca/u/danielquinn"
      +apPublicUrl: "https://lemmy.ca/u/danielquinn"
      +apFollowersUrl: null
      +apInboxUrl: "https://lemmy.ca/inbox"
      +apDomain: "lemmy.ca"
      +apPreferredUsername: "danielquinn"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: false
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729106992 {#276
        date: 2024-10-16 21:29:52.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1697197941 {#272
        date: 2023-10-13 13:52:21.0 +02:00
      }
    }
    +entry: App\Entity\Entry {#1609
      +user: App\Entity\User {#260}
      +magazine: Proxies\__CG__\App\Entity\Magazine {#1584
        +icon: Proxies\__CG__\App\Entity\Image {#3026 …}
        +name: "piracy@lemmy.dbzer0.com"
        +title: "piracy"
        +description: """
          ##### ⚓ Community devoted to in-depth debate on topics concerning digital piracy, ethical problems, and legal advancements.\n
          \n
          ---\n
          \n
          ### Rules • [Full Version](https://rentry.co/piracy-rules)\n
          \n
          **1**. Posts must be related to the discussion of digital piracy\n
          \n
          **2**. Don’t request invites, trade, sell, or self-promote\n
          \n
          **3**. Don’t request or link to specific pirated titles, including DMs\n
          \n
          **4**. Don’t submit low-quality posts, be entitled, or harass others\n
          \n
          **5**. Don’t post questions already answered. READ THE [WIKI](https://lemmy.dbzer0.com/post/10901)\n
          \n
          ---\n
          \n
          [![](https://a.imagem.app/oZoQ1v.png)](https://lemmy.dbzer0.com/post/10901)\n
          ---------------------------------------------------------------------------\n
          \n
          ### Loot, Pillage, & Plunder\n
          \n
          - [📜 Megathread](https://rentry.co/megathread)\n
          - [🪶 FAQ](https://rentry.co/piracy-faq)\n
          - [🪶 ISP Complaints](https://rentry.co/piracy-isp-complaints)\n
          - [🪶 Rules](https://rentry.co/piracy-rules)\n
          \n
          ---\n
          \n
          💰 Please help cover server costs.\n
          \n
          [![Ko-Fi](https://lemmy.dbzer0.com/pictrs/image/4a2f073a-3dd8-492a-942d-72bd929c9f1d.png)](https://ko-fi.com/dbzer0)[![Liberapay](https://lemmy.dbzer0.com/pictrs/image/eec4659d-39be-4fc9-bc9e-66a96285ea2c.png)](https://liberapay.com/db0/)\n
          \n
          ---
          """
        +rules: null
        +subscriptionsCount: 1
        +entryCount: 866
        +entryCommentCount: 20194
        +postCount: 7
        +postCommentCount: 149
        +isAdult: false
        +customCss: null
        +lastActive: DateTime @1729581369 {#3023
          date: 2024-10-22 09:16:09.0 +02:00
        }
        +markedForDeletionAt: null
        +tags: null
        +moderators: Doctrine\ORM\PersistentCollection {#3027 …}
        +ownershipRequests: Doctrine\ORM\PersistentCollection {#3029 …}
        +moderatorRequests: Doctrine\ORM\PersistentCollection {#3031 …}
        +entries: Doctrine\ORM\PersistentCollection {#3033 …}
        +posts: Doctrine\ORM\PersistentCollection {#3035 …}
        +subscriptions: Doctrine\ORM\PersistentCollection {#3037 …}
        +bans: Doctrine\ORM\PersistentCollection {#3043 …}
        +reports: Doctrine\ORM\PersistentCollection {#3051 …}
        +badges: Doctrine\ORM\PersistentCollection {#3064 …}
        +logs: Doctrine\ORM\PersistentCollection {#3074 …}
        +awards: Doctrine\ORM\PersistentCollection {#3056 …}
        +categories: Doctrine\ORM\PersistentCollection {#3080 …}
        -id: 51
        +apId: "piracy@lemmy.dbzer0.com"
        +apProfileId: "https://lemmy.dbzer0.com/c/piracy"
        +apPublicUrl: "https://lemmy.dbzer0.com/c/piracy"
        +apFollowersUrl: "https://lemmy.dbzer0.com/c/piracy/followers"
        +apInboxUrl: "https://lemmy.dbzer0.com/inbox"
        +apDomain: "lemmy.dbzer0.com"
        +apPreferredUsername: "piracy"
        +apDiscoverable: true
        +apManuallyApprovesFollowers: null
        +privateKey: null
        +publicKey: null
        +apFetchedAt: DateTime @1708748229 {#3024
          date: 2024-02-24 05:17:09.0 +01:00
        }
        +apDeletedAt: null
        +apTimeoutAt: null
        +visibility: "visible             "
        +createdAt: DateTimeImmutable @1697197339 {#3025
          date: 2023-10-13 13:42:19.0 +02:00
        }
        +__isInitialized__: true
         …2
      }
      +image: Proxies\__CG__\App\Entity\Image {#1579 …}
      +domain: Proxies\__CG__\App\Entity\Domain {#1679 …}
      +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 {#1421
        date: 2024-02-10 10:33:02.0 +01:00
      }
      +ip: null
      +adaAmount: 0
      +tags: null
      +mentions: null
      +comments: Doctrine\ORM\PersistentCollection {#1650 …}
      +votes: Doctrine\ORM\PersistentCollection {#1652 …}
      +reports: Doctrine\ORM\PersistentCollection {#1651 …}
      +favourites: Doctrine\ORM\PersistentCollection {#1527 …}
      +notifications: Doctrine\ORM\PersistentCollection {#1560 …}
      +badges: Doctrine\ORM\PersistentCollection {#1558 …}
      +children: [
        3 => App\Entity\EntryComment {#1611
          +user: App\Entity\User {#260}
          +entry: App\Entity\Entry {#1609}
          +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
          +image: null
          +parent: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
          +root: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
          +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 {#1596
            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 {#2464 …}
          +nested: Doctrine\ORM\PersistentCollection {#1740 …}
          +votes: Doctrine\ORM\PersistentCollection {#1739 …}
          +reports: Doctrine\ORM\PersistentCollection {#1716 …}
          +favourites: Doctrine\ORM\PersistentCollection {#2461 …}
          +notifications: Doctrine\ORM\PersistentCollection {#2447 …}
          -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 {#1555
            date: 2023-10-14 09:20:07.0 +02:00
          }
          +"title": 48003
        }
        2 => App\Entity\EntryComment {#2467
          +user: App\Entity\User {#260}
          +entry: App\Entity\Entry {#1609}
          +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
          +image: null
          +parent: Proxies\__CG__\App\Entity\EntryComment {#2470 …}
          +root: Proxies\__CG__\App\Entity\EntryComment {#2470 …}
          +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 {#1731
            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 {#2455 …}
          +nested: Doctrine\ORM\PersistentCollection {#2471 …}
          +votes: Doctrine\ORM\PersistentCollection {#2363 …}
          +reports: Doctrine\ORM\PersistentCollection {#2377 …}
          +favourites: Doctrine\ORM\PersistentCollection {#2359 …}
          +notifications: Doctrine\ORM\PersistentCollection {#2364 …}
          -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 {#2469
            date: 2023-10-14 09:26:17.0 +02:00
          }
          +"title": 48009
        }
        1 => App\Entity\EntryComment {#2382}
        0 => App\Entity\EntryComment {#1407
          +user: App\Entity\User {#260}
          +entry: App\Entity\Entry {#1609}
          +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
          +image: null
          +parent: Proxies\__CG__\App\Entity\EntryComment {#1883 …}
          +root: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
          +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 {#1907
            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 {#2391 …}
          +nested: Doctrine\ORM\PersistentCollection {#2369 …}
          +votes: Doctrine\ORM\PersistentCollection {#2392 …}
          +reports: Doctrine\ORM\PersistentCollection {#2395 …}
          +favourites: Doctrine\ORM\PersistentCollection {#1384 …}
          +notifications: Doctrine\ORM\PersistentCollection {#1383 …}
          -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 {#1908
            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 {#1424
        date: 2023-10-14 01:14:01.0 +02:00
      }
    }
    +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
    +image: null
    +parent: Proxies\__CG__\App\Entity\EntryComment {#2385 …}
    +root: Proxies\__CG__\App\Entity\EntryComment {#2385 …}
    +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 {#2380
      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 {#2384 …}
    +nested: Doctrine\ORM\PersistentCollection {#2379 …}
    +votes: Doctrine\ORM\PersistentCollection {#2383 …}
    +reports: Doctrine\ORM\PersistentCollection {#1906 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1708 …}
    +notifications: Doctrine\ORM\PersistentCollection {#1410 …}
    -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 {#2386
      date: 2023-10-14 15:04:09.0 +02:00
    }
    +"title": 48431
  }
  -cache: Symfony\Component\Cache\Adapter\TraceableTagAwareAdapter {#600 …}
}
entry_comment App\Twig\Components\EntryCommentComponent 14.0 MiB 90.54 ms
Input props
[
  "comment" => App\Entity\EntryComment {#1407
    +user: App\Entity\User {#260
      +avatar: Proxies\__CG__\App\Entity\Image {#240 …}
      +cover: null
      +email: "danielquinn@lemmy.ca"
      +username: "@danielquinn@lemmy.ca"
      +roles: []
      +followersCount: 0
      +homepage: "front"
      +about: "Canadian software engineer living in Europe."
      +lastActive: DateTime @1727577650 {#273
        date: 2024-09-29 04:40:50.0 +02:00
      }
      +markedForDeletionAt: null
      +fields: null
      +oauthGithubId: null
      +oauthGoogleId: null
      +oauthFacebookId: null
      +oauthKeycloakId: null
      +hideAdult: true
      +showSubscribedUsers: true
      +showSubscribedMagazines: true
      +showSubscribedDomains: true
      +preferredLanguages: []
      +featuredMagazines: null
      +showProfileSubscriptions: false
      +showProfileFollowings: true
      +markNewComments: false
      +notifyOnNewEntry: false
      +notifyOnNewEntryReply: true
      +notifyOnNewEntryCommentReply: true
      +notifyOnNewPost: false
      +notifyOnNewPostReply: true
      +notifyOnNewPostCommentReply: true
      +addMentionsEntries: false
      +addMentionsPosts: true
      +isBanned: false
      +isVerified: false
      +isDeleted: false
      +isBot: false
      +spamProtection: true
      +customCss: null
      +ignoreMagazinesCustomCss: false
      +moderatorTokens: Doctrine\ORM\PersistentCollection {#231 …}
      +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#227 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#216 …}
      +entries: Doctrine\ORM\PersistentCollection {#174 …}
      +entryVotes: Doctrine\ORM\PersistentCollection {#146 …}
      +entryComments: Doctrine\ORM\PersistentCollection {#119 …}
      +entryCommentVotes: Doctrine\ORM\PersistentCollection {#89 …}
      +posts: Doctrine\ORM\PersistentCollection {#62 …}
      +postVotes: Doctrine\ORM\PersistentCollection {#77 …}
      +postComments: Doctrine\ORM\PersistentCollection {#2405 …}
      +postCommentVotes: Doctrine\ORM\PersistentCollection {#1607 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#1768 …}
      +subscribedDomains: Doctrine\ORM\PersistentCollection {#2445 …}
      +follows: Doctrine\ORM\PersistentCollection {#1849 …}
      +followers: Doctrine\ORM\PersistentCollection {#1810 …}
      +blocks: Doctrine\ORM\PersistentCollection {#1794 …}
      +blockers: Doctrine\ORM\PersistentCollection {#2415 …}
      +blockedMagazines: Doctrine\ORM\PersistentCollection {#2421 …}
      +blockedDomains: Doctrine\ORM\PersistentCollection {#2418 …}
      +reports: Doctrine\ORM\PersistentCollection {#2398 …}
      +favourites: Doctrine\ORM\PersistentCollection {#1918 …}
      +violations: Doctrine\ORM\PersistentCollection {#1834 …}
      +notifications: Doctrine\ORM\PersistentCollection {#1878 …}
      +awards: Doctrine\ORM\PersistentCollection {#1886 …}
      +subscribedCategories: Doctrine\ORM\PersistentCollection {#1899 …}
      +categories: Doctrine\ORM\PersistentCollection {#1954 …}
      -id: 57593
      -password: "$2y$13$/L0PmovM1H9sjmzmYDFDJ./Rjx6mWwKcBTi6vz7ViURzIQuLk35WK"
      -totpSecret: null
      -totpBackupCodes: []
      -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1978 …}
      +apId: "danielquinn@lemmy.ca"
      +apProfileId: "https://lemmy.ca/u/danielquinn"
      +apPublicUrl: "https://lemmy.ca/u/danielquinn"
      +apFollowersUrl: null
      +apInboxUrl: "https://lemmy.ca/inbox"
      +apDomain: "lemmy.ca"
      +apPreferredUsername: "danielquinn"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: false
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729106992 {#276
        date: 2024-10-16 21:29:52.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1697197941 {#272
        date: 2023-10-13 13:52:21.0 +02:00
      }
    }
    +entry: App\Entity\Entry {#1609
      +user: App\Entity\User {#260}
      +magazine: Proxies\__CG__\App\Entity\Magazine {#1584
        +icon: Proxies\__CG__\App\Entity\Image {#3026 …}
        +name: "piracy@lemmy.dbzer0.com"
        +title: "piracy"
        +description: """
          ##### ⚓ Community devoted to in-depth debate on topics concerning digital piracy, ethical problems, and legal advancements.\n
          \n
          ---\n
          \n
          ### Rules • [Full Version](https://rentry.co/piracy-rules)\n
          \n
          **1**. Posts must be related to the discussion of digital piracy\n
          \n
          **2**. Don’t request invites, trade, sell, or self-promote\n
          \n
          **3**. Don’t request or link to specific pirated titles, including DMs\n
          \n
          **4**. Don’t submit low-quality posts, be entitled, or harass others\n
          \n
          **5**. Don’t post questions already answered. READ THE [WIKI](https://lemmy.dbzer0.com/post/10901)\n
          \n
          ---\n
          \n
          [![](https://a.imagem.app/oZoQ1v.png)](https://lemmy.dbzer0.com/post/10901)\n
          ---------------------------------------------------------------------------\n
          \n
          ### Loot, Pillage, & Plunder\n
          \n
          - [📜 Megathread](https://rentry.co/megathread)\n
          - [🪶 FAQ](https://rentry.co/piracy-faq)\n
          - [🪶 ISP Complaints](https://rentry.co/piracy-isp-complaints)\n
          - [🪶 Rules](https://rentry.co/piracy-rules)\n
          \n
          ---\n
          \n
          💰 Please help cover server costs.\n
          \n
          [![Ko-Fi](https://lemmy.dbzer0.com/pictrs/image/4a2f073a-3dd8-492a-942d-72bd929c9f1d.png)](https://ko-fi.com/dbzer0)[![Liberapay](https://lemmy.dbzer0.com/pictrs/image/eec4659d-39be-4fc9-bc9e-66a96285ea2c.png)](https://liberapay.com/db0/)\n
          \n
          ---
          """
        +rules: null
        +subscriptionsCount: 1
        +entryCount: 866
        +entryCommentCount: 20194
        +postCount: 7
        +postCommentCount: 149
        +isAdult: false
        +customCss: null
        +lastActive: DateTime @1729581369 {#3023
          date: 2024-10-22 09:16:09.0 +02:00
        }
        +markedForDeletionAt: null
        +tags: null
        +moderators: Doctrine\ORM\PersistentCollection {#3027 …}
        +ownershipRequests: Doctrine\ORM\PersistentCollection {#3029 …}
        +moderatorRequests: Doctrine\ORM\PersistentCollection {#3031 …}
        +entries: Doctrine\ORM\PersistentCollection {#3033 …}
        +posts: Doctrine\ORM\PersistentCollection {#3035 …}
        +subscriptions: Doctrine\ORM\PersistentCollection {#3037 …}
        +bans: Doctrine\ORM\PersistentCollection {#3043 …}
        +reports: Doctrine\ORM\PersistentCollection {#3051 …}
        +badges: Doctrine\ORM\PersistentCollection {#3064 …}
        +logs: Doctrine\ORM\PersistentCollection {#3074 …}
        +awards: Doctrine\ORM\PersistentCollection {#3056 …}
        +categories: Doctrine\ORM\PersistentCollection {#3080 …}
        -id: 51
        +apId: "piracy@lemmy.dbzer0.com"
        +apProfileId: "https://lemmy.dbzer0.com/c/piracy"
        +apPublicUrl: "https://lemmy.dbzer0.com/c/piracy"
        +apFollowersUrl: "https://lemmy.dbzer0.com/c/piracy/followers"
        +apInboxUrl: "https://lemmy.dbzer0.com/inbox"
        +apDomain: "lemmy.dbzer0.com"
        +apPreferredUsername: "piracy"
        +apDiscoverable: true
        +apManuallyApprovesFollowers: null
        +privateKey: null
        +publicKey: null
        +apFetchedAt: DateTime @1708748229 {#3024
          date: 2024-02-24 05:17:09.0 +01:00
        }
        +apDeletedAt: null
        +apTimeoutAt: null
        +visibility: "visible             "
        +createdAt: DateTimeImmutable @1697197339 {#3025
          date: 2023-10-13 13:42:19.0 +02:00
        }
        +__isInitialized__: true
         …2
      }
      +image: Proxies\__CG__\App\Entity\Image {#1579 …}
      +domain: Proxies\__CG__\App\Entity\Domain {#1679 …}
      +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 {#1421
        date: 2024-02-10 10:33:02.0 +01:00
      }
      +ip: null
      +adaAmount: 0
      +tags: null
      +mentions: null
      +comments: Doctrine\ORM\PersistentCollection {#1650 …}
      +votes: Doctrine\ORM\PersistentCollection {#1652 …}
      +reports: Doctrine\ORM\PersistentCollection {#1651 …}
      +favourites: Doctrine\ORM\PersistentCollection {#1527 …}
      +notifications: Doctrine\ORM\PersistentCollection {#1560 …}
      +badges: Doctrine\ORM\PersistentCollection {#1558 …}
      +children: [
        3 => App\Entity\EntryComment {#1611
          +user: App\Entity\User {#260}
          +entry: App\Entity\Entry {#1609}
          +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
          +image: null
          +parent: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
          +root: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
          +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 {#1596
            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 {#2464 …}
          +nested: Doctrine\ORM\PersistentCollection {#1740 …}
          +votes: Doctrine\ORM\PersistentCollection {#1739 …}
          +reports: Doctrine\ORM\PersistentCollection {#1716 …}
          +favourites: Doctrine\ORM\PersistentCollection {#2461 …}
          +notifications: Doctrine\ORM\PersistentCollection {#2447 …}
          -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 {#1555
            date: 2023-10-14 09:20:07.0 +02:00
          }
          +"title": 48003
        }
        2 => App\Entity\EntryComment {#2467
          +user: App\Entity\User {#260}
          +entry: App\Entity\Entry {#1609}
          +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
          +image: null
          +parent: Proxies\__CG__\App\Entity\EntryComment {#2470 …}
          +root: Proxies\__CG__\App\Entity\EntryComment {#2470 …}
          +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 {#1731
            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 {#2455 …}
          +nested: Doctrine\ORM\PersistentCollection {#2471 …}
          +votes: Doctrine\ORM\PersistentCollection {#2363 …}
          +reports: Doctrine\ORM\PersistentCollection {#2377 …}
          +favourites: Doctrine\ORM\PersistentCollection {#2359 …}
          +notifications: Doctrine\ORM\PersistentCollection {#2364 …}
          -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 {#2469
            date: 2023-10-14 09:26:17.0 +02:00
          }
          +"title": 48009
        }
        1 => App\Entity\EntryComment {#2382
          +user: App\Entity\User {#260}
          +entry: App\Entity\Entry {#1609}
          +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
          +image: null
          +parent: Proxies\__CG__\App\Entity\EntryComment {#2385 …}
          +root: Proxies\__CG__\App\Entity\EntryComment {#2385 …}
          +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 {#2380
            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 {#2384 …}
          +nested: Doctrine\ORM\PersistentCollection {#2379 …}
          +votes: Doctrine\ORM\PersistentCollection {#2383 …}
          +reports: Doctrine\ORM\PersistentCollection {#1906 …}
          +favourites: Doctrine\ORM\PersistentCollection {#1708 …}
          +notifications: Doctrine\ORM\PersistentCollection {#1410 …}
          -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 {#2386
            date: 2023-10-14 15:04:09.0 +02:00
          }
          +"title": 48431
        }
        0 => App\Entity\EntryComment {#1407}
      ]
      -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 {#1424
        date: 2023-10-14 01:14:01.0 +02:00
      }
    }
    +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
    +image: null
    +parent: Proxies\__CG__\App\Entity\EntryComment {#1883 …}
    +root: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
    +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 {#1907
      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 {#2391 …}
    +nested: Doctrine\ORM\PersistentCollection {#2369 …}
    +votes: Doctrine\ORM\PersistentCollection {#2392 …}
    +reports: Doctrine\ORM\PersistentCollection {#2395 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1384 …}
    +notifications: Doctrine\ORM\PersistentCollection {#1383 …}
    -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 {#1908
      date: 2023-10-14 19:07:35.0 +02:00
    }
    +"title": 48905
  }
  "showEntryTitle" => false
  "dateAsUrl" => true
  "showMagazineName" => false
]
Attributes
[]
Component
App\Twig\Components\EntryCommentComponent {#5598
  +comment: App\Entity\EntryComment {#1407
    +user: App\Entity\User {#260
      +avatar: Proxies\__CG__\App\Entity\Image {#240 …}
      +cover: null
      +email: "danielquinn@lemmy.ca"
      +username: "@danielquinn@lemmy.ca"
      +roles: []
      +followersCount: 0
      +homepage: "front"
      +about: "Canadian software engineer living in Europe."
      +lastActive: DateTime @1727577650 {#273
        date: 2024-09-29 04:40:50.0 +02:00
      }
      +markedForDeletionAt: null
      +fields: null
      +oauthGithubId: null
      +oauthGoogleId: null
      +oauthFacebookId: null
      +oauthKeycloakId: null
      +hideAdult: true
      +showSubscribedUsers: true
      +showSubscribedMagazines: true
      +showSubscribedDomains: true
      +preferredLanguages: []
      +featuredMagazines: null
      +showProfileSubscriptions: false
      +showProfileFollowings: true
      +markNewComments: false
      +notifyOnNewEntry: false
      +notifyOnNewEntryReply: true
      +notifyOnNewEntryCommentReply: true
      +notifyOnNewPost: false
      +notifyOnNewPostReply: true
      +notifyOnNewPostCommentReply: true
      +addMentionsEntries: false
      +addMentionsPosts: true
      +isBanned: false
      +isVerified: false
      +isDeleted: false
      +isBot: false
      +spamProtection: true
      +customCss: null
      +ignoreMagazinesCustomCss: false
      +moderatorTokens: Doctrine\ORM\PersistentCollection {#231 …}
      +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#227 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#216 …}
      +entries: Doctrine\ORM\PersistentCollection {#174 …}
      +entryVotes: Doctrine\ORM\PersistentCollection {#146 …}
      +entryComments: Doctrine\ORM\PersistentCollection {#119 …}
      +entryCommentVotes: Doctrine\ORM\PersistentCollection {#89 …}
      +posts: Doctrine\ORM\PersistentCollection {#62 …}
      +postVotes: Doctrine\ORM\PersistentCollection {#77 …}
      +postComments: Doctrine\ORM\PersistentCollection {#2405 …}
      +postCommentVotes: Doctrine\ORM\PersistentCollection {#1607 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#1768 …}
      +subscribedDomains: Doctrine\ORM\PersistentCollection {#2445 …}
      +follows: Doctrine\ORM\PersistentCollection {#1849 …}
      +followers: Doctrine\ORM\PersistentCollection {#1810 …}
      +blocks: Doctrine\ORM\PersistentCollection {#1794 …}
      +blockers: Doctrine\ORM\PersistentCollection {#2415 …}
      +blockedMagazines: Doctrine\ORM\PersistentCollection {#2421 …}
      +blockedDomains: Doctrine\ORM\PersistentCollection {#2418 …}
      +reports: Doctrine\ORM\PersistentCollection {#2398 …}
      +favourites: Doctrine\ORM\PersistentCollection {#1918 …}
      +violations: Doctrine\ORM\PersistentCollection {#1834 …}
      +notifications: Doctrine\ORM\PersistentCollection {#1878 …}
      +awards: Doctrine\ORM\PersistentCollection {#1886 …}
      +subscribedCategories: Doctrine\ORM\PersistentCollection {#1899 …}
      +categories: Doctrine\ORM\PersistentCollection {#1954 …}
      -id: 57593
      -password: "$2y$13$/L0PmovM1H9sjmzmYDFDJ./Rjx6mWwKcBTi6vz7ViURzIQuLk35WK"
      -totpSecret: null
      -totpBackupCodes: []
      -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1978 …}
      +apId: "danielquinn@lemmy.ca"
      +apProfileId: "https://lemmy.ca/u/danielquinn"
      +apPublicUrl: "https://lemmy.ca/u/danielquinn"
      +apFollowersUrl: null
      +apInboxUrl: "https://lemmy.ca/inbox"
      +apDomain: "lemmy.ca"
      +apPreferredUsername: "danielquinn"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: false
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729106992 {#276
        date: 2024-10-16 21:29:52.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1697197941 {#272
        date: 2023-10-13 13:52:21.0 +02:00
      }
    }
    +entry: App\Entity\Entry {#1609
      +user: App\Entity\User {#260}
      +magazine: Proxies\__CG__\App\Entity\Magazine {#1584
        +icon: Proxies\__CG__\App\Entity\Image {#3026 …}
        +name: "piracy@lemmy.dbzer0.com"
        +title: "piracy"
        +description: """
          ##### ⚓ Community devoted to in-depth debate on topics concerning digital piracy, ethical problems, and legal advancements.\n
          \n
          ---\n
          \n
          ### Rules • [Full Version](https://rentry.co/piracy-rules)\n
          \n
          **1**. Posts must be related to the discussion of digital piracy\n
          \n
          **2**. Don’t request invites, trade, sell, or self-promote\n
          \n
          **3**. Don’t request or link to specific pirated titles, including DMs\n
          \n
          **4**. Don’t submit low-quality posts, be entitled, or harass others\n
          \n
          **5**. Don’t post questions already answered. READ THE [WIKI](https://lemmy.dbzer0.com/post/10901)\n
          \n
          ---\n
          \n
          [![](https://a.imagem.app/oZoQ1v.png)](https://lemmy.dbzer0.com/post/10901)\n
          ---------------------------------------------------------------------------\n
          \n
          ### Loot, Pillage, & Plunder\n
          \n
          - [📜 Megathread](https://rentry.co/megathread)\n
          - [🪶 FAQ](https://rentry.co/piracy-faq)\n
          - [🪶 ISP Complaints](https://rentry.co/piracy-isp-complaints)\n
          - [🪶 Rules](https://rentry.co/piracy-rules)\n
          \n
          ---\n
          \n
          💰 Please help cover server costs.\n
          \n
          [![Ko-Fi](https://lemmy.dbzer0.com/pictrs/image/4a2f073a-3dd8-492a-942d-72bd929c9f1d.png)](https://ko-fi.com/dbzer0)[![Liberapay](https://lemmy.dbzer0.com/pictrs/image/eec4659d-39be-4fc9-bc9e-66a96285ea2c.png)](https://liberapay.com/db0/)\n
          \n
          ---
          """
        +rules: null
        +subscriptionsCount: 1
        +entryCount: 866
        +entryCommentCount: 20194
        +postCount: 7
        +postCommentCount: 149
        +isAdult: false
        +customCss: null
        +lastActive: DateTime @1729581369 {#3023
          date: 2024-10-22 09:16:09.0 +02:00
        }
        +markedForDeletionAt: null
        +tags: null
        +moderators: Doctrine\ORM\PersistentCollection {#3027 …}
        +ownershipRequests: Doctrine\ORM\PersistentCollection {#3029 …}
        +moderatorRequests: Doctrine\ORM\PersistentCollection {#3031 …}
        +entries: Doctrine\ORM\PersistentCollection {#3033 …}
        +posts: Doctrine\ORM\PersistentCollection {#3035 …}
        +subscriptions: Doctrine\ORM\PersistentCollection {#3037 …}
        +bans: Doctrine\ORM\PersistentCollection {#3043 …}
        +reports: Doctrine\ORM\PersistentCollection {#3051 …}
        +badges: Doctrine\ORM\PersistentCollection {#3064 …}
        +logs: Doctrine\ORM\PersistentCollection {#3074 …}
        +awards: Doctrine\ORM\PersistentCollection {#3056 …}
        +categories: Doctrine\ORM\PersistentCollection {#3080 …}
        -id: 51
        +apId: "piracy@lemmy.dbzer0.com"
        +apProfileId: "https://lemmy.dbzer0.com/c/piracy"
        +apPublicUrl: "https://lemmy.dbzer0.com/c/piracy"
        +apFollowersUrl: "https://lemmy.dbzer0.com/c/piracy/followers"
        +apInboxUrl: "https://lemmy.dbzer0.com/inbox"
        +apDomain: "lemmy.dbzer0.com"
        +apPreferredUsername: "piracy"
        +apDiscoverable: true
        +apManuallyApprovesFollowers: null
        +privateKey: null
        +publicKey: null
        +apFetchedAt: DateTime @1708748229 {#3024
          date: 2024-02-24 05:17:09.0 +01:00
        }
        +apDeletedAt: null
        +apTimeoutAt: null
        +visibility: "visible             "
        +createdAt: DateTimeImmutable @1697197339 {#3025
          date: 2023-10-13 13:42:19.0 +02:00
        }
        +__isInitialized__: true
         …2
      }
      +image: Proxies\__CG__\App\Entity\Image {#1579 …}
      +domain: Proxies\__CG__\App\Entity\Domain {#1679 …}
      +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 {#1421
        date: 2024-02-10 10:33:02.0 +01:00
      }
      +ip: null
      +adaAmount: 0
      +tags: null
      +mentions: null
      +comments: Doctrine\ORM\PersistentCollection {#1650 …}
      +votes: Doctrine\ORM\PersistentCollection {#1652 …}
      +reports: Doctrine\ORM\PersistentCollection {#1651 …}
      +favourites: Doctrine\ORM\PersistentCollection {#1527 …}
      +notifications: Doctrine\ORM\PersistentCollection {#1560 …}
      +badges: Doctrine\ORM\PersistentCollection {#1558 …}
      +children: [
        3 => App\Entity\EntryComment {#1611
          +user: App\Entity\User {#260}
          +entry: App\Entity\Entry {#1609}
          +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
          +image: null
          +parent: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
          +root: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
          +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 {#1596
            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 {#2464 …}
          +nested: Doctrine\ORM\PersistentCollection {#1740 …}
          +votes: Doctrine\ORM\PersistentCollection {#1739 …}
          +reports: Doctrine\ORM\PersistentCollection {#1716 …}
          +favourites: Doctrine\ORM\PersistentCollection {#2461 …}
          +notifications: Doctrine\ORM\PersistentCollection {#2447 …}
          -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 {#1555
            date: 2023-10-14 09:20:07.0 +02:00
          }
          +"title": 48003
        }
        2 => App\Entity\EntryComment {#2467
          +user: App\Entity\User {#260}
          +entry: App\Entity\Entry {#1609}
          +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
          +image: null
          +parent: Proxies\__CG__\App\Entity\EntryComment {#2470 …}
          +root: Proxies\__CG__\App\Entity\EntryComment {#2470 …}
          +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 {#1731
            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 {#2455 …}
          +nested: Doctrine\ORM\PersistentCollection {#2471 …}
          +votes: Doctrine\ORM\PersistentCollection {#2363 …}
          +reports: Doctrine\ORM\PersistentCollection {#2377 …}
          +favourites: Doctrine\ORM\PersistentCollection {#2359 …}
          +notifications: Doctrine\ORM\PersistentCollection {#2364 …}
          -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 {#2469
            date: 2023-10-14 09:26:17.0 +02:00
          }
          +"title": 48009
        }
        1 => App\Entity\EntryComment {#2382
          +user: App\Entity\User {#260}
          +entry: App\Entity\Entry {#1609}
          +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
          +image: null
          +parent: Proxies\__CG__\App\Entity\EntryComment {#2385 …}
          +root: Proxies\__CG__\App\Entity\EntryComment {#2385 …}
          +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 {#2380
            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 {#2384 …}
          +nested: Doctrine\ORM\PersistentCollection {#2379 …}
          +votes: Doctrine\ORM\PersistentCollection {#2383 …}
          +reports: Doctrine\ORM\PersistentCollection {#1906 …}
          +favourites: Doctrine\ORM\PersistentCollection {#1708 …}
          +notifications: Doctrine\ORM\PersistentCollection {#1410 …}
          -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 {#2386
            date: 2023-10-14 15:04:09.0 +02:00
          }
          +"title": 48431
        }
        0 => App\Entity\EntryComment {#1407}
      ]
      -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 {#1424
        date: 2023-10-14 01:14:01.0 +02:00
      }
    }
    +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
    +image: null
    +parent: Proxies\__CG__\App\Entity\EntryComment {#1883 …}
    +root: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
    +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 {#1907
      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 {#2391 …}
    +nested: Doctrine\ORM\PersistentCollection {#2369 …}
    +votes: Doctrine\ORM\PersistentCollection {#2392 …}
    +reports: Doctrine\ORM\PersistentCollection {#2395 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1384 …}
    +notifications: Doctrine\ORM\PersistentCollection {#1383 …}
    -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 {#1908
      date: 2023-10-14 19:07:35.0 +02:00
    }
    +"title": 48905
  }
  +showMagazineName: false
  +showEntryTitle: false
  +showNested: false
  +level: 1
  +canSeeTrash: false
  +dateAsUrl: true
  -requestStack: Symfony\Component\HttpFoundation\RequestStack {#1328 …}
  -authorizationChecker: Symfony\Component\Security\Core\Authorization\AuthorizationChecker {#931 …}
}
user_inline App\Twig\Components\UserInlineComponent 14.0 MiB 0.14 ms
Input props
[
  "user" => App\Entity\User {#260
    +avatar: Proxies\__CG__\App\Entity\Image {#240 …}
    +cover: null
    +email: "danielquinn@lemmy.ca"
    +username: "@danielquinn@lemmy.ca"
    +roles: []
    +followersCount: 0
    +homepage: "front"
    +about: "Canadian software engineer living in Europe."
    +lastActive: DateTime @1727577650 {#273
      date: 2024-09-29 04:40:50.0 +02:00
    }
    +markedForDeletionAt: null
    +fields: null
    +oauthGithubId: null
    +oauthGoogleId: null
    +oauthFacebookId: null
    +oauthKeycloakId: null
    +hideAdult: true
    +showSubscribedUsers: true
    +showSubscribedMagazines: true
    +showSubscribedDomains: true
    +preferredLanguages: []
    +featuredMagazines: null
    +showProfileSubscriptions: false
    +showProfileFollowings: true
    +markNewComments: false
    +notifyOnNewEntry: false
    +notifyOnNewEntryReply: true
    +notifyOnNewEntryCommentReply: true
    +notifyOnNewPost: false
    +notifyOnNewPostReply: true
    +notifyOnNewPostCommentReply: true
    +addMentionsEntries: false
    +addMentionsPosts: true
    +isBanned: false
    +isVerified: false
    +isDeleted: false
    +isBot: false
    +spamProtection: true
    +customCss: null
    +ignoreMagazinesCustomCss: false
    +moderatorTokens: Doctrine\ORM\PersistentCollection {#231 …}
    +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#227 …}
    +moderatorRequests: Doctrine\ORM\PersistentCollection {#216 …}
    +entries: Doctrine\ORM\PersistentCollection {#174 …}
    +entryVotes: Doctrine\ORM\PersistentCollection {#146 …}
    +entryComments: Doctrine\ORM\PersistentCollection {#119 …}
    +entryCommentVotes: Doctrine\ORM\PersistentCollection {#89 …}
    +posts: Doctrine\ORM\PersistentCollection {#62 …}
    +postVotes: Doctrine\ORM\PersistentCollection {#77 …}
    +postComments: Doctrine\ORM\PersistentCollection {#2405 …}
    +postCommentVotes: Doctrine\ORM\PersistentCollection {#1607 …}
    +subscriptions: Doctrine\ORM\PersistentCollection {#1768 …}
    +subscribedDomains: Doctrine\ORM\PersistentCollection {#2445 …}
    +follows: Doctrine\ORM\PersistentCollection {#1849 …}
    +followers: Doctrine\ORM\PersistentCollection {#1810 …}
    +blocks: Doctrine\ORM\PersistentCollection {#1794 …}
    +blockers: Doctrine\ORM\PersistentCollection {#2415 …}
    +blockedMagazines: Doctrine\ORM\PersistentCollection {#2421 …}
    +blockedDomains: Doctrine\ORM\PersistentCollection {#2418 …}
    +reports: Doctrine\ORM\PersistentCollection {#2398 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1918 …}
    +violations: Doctrine\ORM\PersistentCollection {#1834 …}
    +notifications: Doctrine\ORM\PersistentCollection {#1878 …}
    +awards: Doctrine\ORM\PersistentCollection {#1886 …}
    +subscribedCategories: Doctrine\ORM\PersistentCollection {#1899 …}
    +categories: Doctrine\ORM\PersistentCollection {#1954 …}
    -id: 57593
    -password: "$2y$13$/L0PmovM1H9sjmzmYDFDJ./Rjx6mWwKcBTi6vz7ViURzIQuLk35WK"
    -totpSecret: null
    -totpBackupCodes: []
    -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1978 …}
    +apId: "danielquinn@lemmy.ca"
    +apProfileId: "https://lemmy.ca/u/danielquinn"
    +apPublicUrl: "https://lemmy.ca/u/danielquinn"
    +apFollowersUrl: null
    +apInboxUrl: "https://lemmy.ca/inbox"
    +apDomain: "lemmy.ca"
    +apPreferredUsername: "danielquinn"
    +apDiscoverable: true
    +apManuallyApprovesFollowers: false
    +privateKey: null
    +publicKey: null
    +apFetchedAt: DateTime @1729106992 {#276
      date: 2024-10-16 21:29:52.0 +02:00
    }
    +apDeletedAt: null
    +apTimeoutAt: null
    +visibility: "visible             "
    +createdAt: DateTimeImmutable @1697197941 {#272
      date: 2023-10-13 13:52:21.0 +02:00
    }
  }
  "showAvatar" => false
]
Attributes
[]
Component
App\Twig\Components\UserInlineComponent {#5643
  +user: App\Entity\User {#260
    +avatar: Proxies\__CG__\App\Entity\Image {#240 …}
    +cover: null
    +email: "danielquinn@lemmy.ca"
    +username: "@danielquinn@lemmy.ca"
    +roles: []
    +followersCount: 0
    +homepage: "front"
    +about: "Canadian software engineer living in Europe."
    +lastActive: DateTime @1727577650 {#273
      date: 2024-09-29 04:40:50.0 +02:00
    }
    +markedForDeletionAt: null
    +fields: null
    +oauthGithubId: null
    +oauthGoogleId: null
    +oauthFacebookId: null
    +oauthKeycloakId: null
    +hideAdult: true
    +showSubscribedUsers: true
    +showSubscribedMagazines: true
    +showSubscribedDomains: true
    +preferredLanguages: []
    +featuredMagazines: null
    +showProfileSubscriptions: false
    +showProfileFollowings: true
    +markNewComments: false
    +notifyOnNewEntry: false
    +notifyOnNewEntryReply: true
    +notifyOnNewEntryCommentReply: true
    +notifyOnNewPost: false
    +notifyOnNewPostReply: true
    +notifyOnNewPostCommentReply: true
    +addMentionsEntries: false
    +addMentionsPosts: true
    +isBanned: false
    +isVerified: false
    +isDeleted: false
    +isBot: false
    +spamProtection: true
    +customCss: null
    +ignoreMagazinesCustomCss: false
    +moderatorTokens: Doctrine\ORM\PersistentCollection {#231 …}
    +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#227 …}
    +moderatorRequests: Doctrine\ORM\PersistentCollection {#216 …}
    +entries: Doctrine\ORM\PersistentCollection {#174 …}
    +entryVotes: Doctrine\ORM\PersistentCollection {#146 …}
    +entryComments: Doctrine\ORM\PersistentCollection {#119 …}
    +entryCommentVotes: Doctrine\ORM\PersistentCollection {#89 …}
    +posts: Doctrine\ORM\PersistentCollection {#62 …}
    +postVotes: Doctrine\ORM\PersistentCollection {#77 …}
    +postComments: Doctrine\ORM\PersistentCollection {#2405 …}
    +postCommentVotes: Doctrine\ORM\PersistentCollection {#1607 …}
    +subscriptions: Doctrine\ORM\PersistentCollection {#1768 …}
    +subscribedDomains: Doctrine\ORM\PersistentCollection {#2445 …}
    +follows: Doctrine\ORM\PersistentCollection {#1849 …}
    +followers: Doctrine\ORM\PersistentCollection {#1810 …}
    +blocks: Doctrine\ORM\PersistentCollection {#1794 …}
    +blockers: Doctrine\ORM\PersistentCollection {#2415 …}
    +blockedMagazines: Doctrine\ORM\PersistentCollection {#2421 …}
    +blockedDomains: Doctrine\ORM\PersistentCollection {#2418 …}
    +reports: Doctrine\ORM\PersistentCollection {#2398 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1918 …}
    +violations: Doctrine\ORM\PersistentCollection {#1834 …}
    +notifications: Doctrine\ORM\PersistentCollection {#1878 …}
    +awards: Doctrine\ORM\PersistentCollection {#1886 …}
    +subscribedCategories: Doctrine\ORM\PersistentCollection {#1899 …}
    +categories: Doctrine\ORM\PersistentCollection {#1954 …}
    -id: 57593
    -password: "$2y$13$/L0PmovM1H9sjmzmYDFDJ./Rjx6mWwKcBTi6vz7ViURzIQuLk35WK"
    -totpSecret: null
    -totpBackupCodes: []
    -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1978 …}
    +apId: "danielquinn@lemmy.ca"
    +apProfileId: "https://lemmy.ca/u/danielquinn"
    +apPublicUrl: "https://lemmy.ca/u/danielquinn"
    +apFollowersUrl: null
    +apInboxUrl: "https://lemmy.ca/inbox"
    +apDomain: "lemmy.ca"
    +apPreferredUsername: "danielquinn"
    +apDiscoverable: true
    +apManuallyApprovesFollowers: false
    +privateKey: null
    +publicKey: null
    +apFetchedAt: DateTime @1729106992 {#276
      date: 2024-10-16 21:29:52.0 +02:00
    }
    +apDeletedAt: null
    +apTimeoutAt: null
    +visibility: "visible             "
    +createdAt: DateTimeImmutable @1697197941 {#272
      date: 2023-10-13 13:52:21.0 +02:00
    }
  }
  +showAvatar: false
}
date App\Twig\Components\DateComponent 14.0 MiB 0.19 ms
Input props
[
  "date" => DateTimeImmutable @1697303255 {#1908
    date: 2023-10-14 19:07:35.0 +02:00
  }
]
Attributes
[]
Component
App\Twig\Components\DateComponent {#5699
  +date: DateTimeImmutable @1697303255 {#1908
    date: 2023-10-14 19:07:35.0 +02:00
  }
}
date_edited App\Twig\Components\DateEditedComponent 14.0 MiB 0.09 ms
Input props
[
  "createdAt" => DateTimeImmutable @1697303255 {#1908
    date: 2023-10-14 19:07:35.0 +02:00
  }
  "editedAt" => null
]
Attributes
[]
Component
App\Twig\Components\DateEditedComponent {#5753
  +createdAt: DateTimeImmutable @1697303255 {#1908
    date: 2023-10-14 19:07:35.0 +02:00
  }
  +editedAt: null
}
user_avatar App\Twig\Components\UserAvatarComponent 14.0 MiB 0.26 ms
Input props
[
  "user" => App\Entity\User {#260
    +avatar: Proxies\__CG__\App\Entity\Image {#240 …}
    +cover: null
    +email: "danielquinn@lemmy.ca"
    +username: "@danielquinn@lemmy.ca"
    +roles: []
    +followersCount: 0
    +homepage: "front"
    +about: "Canadian software engineer living in Europe."
    +lastActive: DateTime @1727577650 {#273
      date: 2024-09-29 04:40:50.0 +02:00
    }
    +markedForDeletionAt: null
    +fields: null
    +oauthGithubId: null
    +oauthGoogleId: null
    +oauthFacebookId: null
    +oauthKeycloakId: null
    +hideAdult: true
    +showSubscribedUsers: true
    +showSubscribedMagazines: true
    +showSubscribedDomains: true
    +preferredLanguages: []
    +featuredMagazines: null
    +showProfileSubscriptions: false
    +showProfileFollowings: true
    +markNewComments: false
    +notifyOnNewEntry: false
    +notifyOnNewEntryReply: true
    +notifyOnNewEntryCommentReply: true
    +notifyOnNewPost: false
    +notifyOnNewPostReply: true
    +notifyOnNewPostCommentReply: true
    +addMentionsEntries: false
    +addMentionsPosts: true
    +isBanned: false
    +isVerified: false
    +isDeleted: false
    +isBot: false
    +spamProtection: true
    +customCss: null
    +ignoreMagazinesCustomCss: false
    +moderatorTokens: Doctrine\ORM\PersistentCollection {#231 …}
    +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#227 …}
    +moderatorRequests: Doctrine\ORM\PersistentCollection {#216 …}
    +entries: Doctrine\ORM\PersistentCollection {#174 …}
    +entryVotes: Doctrine\ORM\PersistentCollection {#146 …}
    +entryComments: Doctrine\ORM\PersistentCollection {#119 …}
    +entryCommentVotes: Doctrine\ORM\PersistentCollection {#89 …}
    +posts: Doctrine\ORM\PersistentCollection {#62 …}
    +postVotes: Doctrine\ORM\PersistentCollection {#77 …}
    +postComments: Doctrine\ORM\PersistentCollection {#2405 …}
    +postCommentVotes: Doctrine\ORM\PersistentCollection {#1607 …}
    +subscriptions: Doctrine\ORM\PersistentCollection {#1768 …}
    +subscribedDomains: Doctrine\ORM\PersistentCollection {#2445 …}
    +follows: Doctrine\ORM\PersistentCollection {#1849 …}
    +followers: Doctrine\ORM\PersistentCollection {#1810 …}
    +blocks: Doctrine\ORM\PersistentCollection {#1794 …}
    +blockers: Doctrine\ORM\PersistentCollection {#2415 …}
    +blockedMagazines: Doctrine\ORM\PersistentCollection {#2421 …}
    +blockedDomains: Doctrine\ORM\PersistentCollection {#2418 …}
    +reports: Doctrine\ORM\PersistentCollection {#2398 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1918 …}
    +violations: Doctrine\ORM\PersistentCollection {#1834 …}
    +notifications: Doctrine\ORM\PersistentCollection {#1878 …}
    +awards: Doctrine\ORM\PersistentCollection {#1886 …}
    +subscribedCategories: Doctrine\ORM\PersistentCollection {#1899 …}
    +categories: Doctrine\ORM\PersistentCollection {#1954 …}
    -id: 57593
    -password: "$2y$13$/L0PmovM1H9sjmzmYDFDJ./Rjx6mWwKcBTi6vz7ViURzIQuLk35WK"
    -totpSecret: null
    -totpBackupCodes: []
    -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1978 …}
    +apId: "danielquinn@lemmy.ca"
    +apProfileId: "https://lemmy.ca/u/danielquinn"
    +apPublicUrl: "https://lemmy.ca/u/danielquinn"
    +apFollowersUrl: null
    +apInboxUrl: "https://lemmy.ca/inbox"
    +apDomain: "lemmy.ca"
    +apPreferredUsername: "danielquinn"
    +apDiscoverable: true
    +apManuallyApprovesFollowers: false
    +privateKey: null
    +publicKey: null
    +apFetchedAt: DateTime @1729106992 {#276
      date: 2024-10-16 21:29:52.0 +02:00
    }
    +apDeletedAt: null
    +apTimeoutAt: null
    +visibility: "visible             "
    +createdAt: DateTimeImmutable @1697197941 {#272
      date: 2023-10-13 13:52:21.0 +02:00
    }
  }
  "width" => 40
  "height" => 40
  "asLink" => true
]
Attributes
[]
Component
App\Twig\Components\UserAvatarComponent {#5807
  +width: 40
  +height: 40
  +user: App\Entity\User {#260
    +avatar: Proxies\__CG__\App\Entity\Image {#240 …}
    +cover: null
    +email: "danielquinn@lemmy.ca"
    +username: "@danielquinn@lemmy.ca"
    +roles: []
    +followersCount: 0
    +homepage: "front"
    +about: "Canadian software engineer living in Europe."
    +lastActive: DateTime @1727577650 {#273
      date: 2024-09-29 04:40:50.0 +02:00
    }
    +markedForDeletionAt: null
    +fields: null
    +oauthGithubId: null
    +oauthGoogleId: null
    +oauthFacebookId: null
    +oauthKeycloakId: null
    +hideAdult: true
    +showSubscribedUsers: true
    +showSubscribedMagazines: true
    +showSubscribedDomains: true
    +preferredLanguages: []
    +featuredMagazines: null
    +showProfileSubscriptions: false
    +showProfileFollowings: true
    +markNewComments: false
    +notifyOnNewEntry: false
    +notifyOnNewEntryReply: true
    +notifyOnNewEntryCommentReply: true
    +notifyOnNewPost: false
    +notifyOnNewPostReply: true
    +notifyOnNewPostCommentReply: true
    +addMentionsEntries: false
    +addMentionsPosts: true
    +isBanned: false
    +isVerified: false
    +isDeleted: false
    +isBot: false
    +spamProtection: true
    +customCss: null
    +ignoreMagazinesCustomCss: false
    +moderatorTokens: Doctrine\ORM\PersistentCollection {#231 …}
    +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#227 …}
    +moderatorRequests: Doctrine\ORM\PersistentCollection {#216 …}
    +entries: Doctrine\ORM\PersistentCollection {#174 …}
    +entryVotes: Doctrine\ORM\PersistentCollection {#146 …}
    +entryComments: Doctrine\ORM\PersistentCollection {#119 …}
    +entryCommentVotes: Doctrine\ORM\PersistentCollection {#89 …}
    +posts: Doctrine\ORM\PersistentCollection {#62 …}
    +postVotes: Doctrine\ORM\PersistentCollection {#77 …}
    +postComments: Doctrine\ORM\PersistentCollection {#2405 …}
    +postCommentVotes: Doctrine\ORM\PersistentCollection {#1607 …}
    +subscriptions: Doctrine\ORM\PersistentCollection {#1768 …}
    +subscribedDomains: Doctrine\ORM\PersistentCollection {#2445 …}
    +follows: Doctrine\ORM\PersistentCollection {#1849 …}
    +followers: Doctrine\ORM\PersistentCollection {#1810 …}
    +blocks: Doctrine\ORM\PersistentCollection {#1794 …}
    +blockers: Doctrine\ORM\PersistentCollection {#2415 …}
    +blockedMagazines: Doctrine\ORM\PersistentCollection {#2421 …}
    +blockedDomains: Doctrine\ORM\PersistentCollection {#2418 …}
    +reports: Doctrine\ORM\PersistentCollection {#2398 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1918 …}
    +violations: Doctrine\ORM\PersistentCollection {#1834 …}
    +notifications: Doctrine\ORM\PersistentCollection {#1878 …}
    +awards: Doctrine\ORM\PersistentCollection {#1886 …}
    +subscribedCategories: Doctrine\ORM\PersistentCollection {#1899 …}
    +categories: Doctrine\ORM\PersistentCollection {#1954 …}
    -id: 57593
    -password: "$2y$13$/L0PmovM1H9sjmzmYDFDJ./Rjx6mWwKcBTi6vz7ViURzIQuLk35WK"
    -totpSecret: null
    -totpBackupCodes: []
    -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1978 …}
    +apId: "danielquinn@lemmy.ca"
    +apProfileId: "https://lemmy.ca/u/danielquinn"
    +apPublicUrl: "https://lemmy.ca/u/danielquinn"
    +apFollowersUrl: null
    +apInboxUrl: "https://lemmy.ca/inbox"
    +apDomain: "lemmy.ca"
    +apPreferredUsername: "danielquinn"
    +apDiscoverable: true
    +apManuallyApprovesFollowers: false
    +privateKey: null
    +publicKey: null
    +apFetchedAt: DateTime @1729106992 {#276
      date: 2024-10-16 21:29:52.0 +02:00
    }
    +apDeletedAt: null
    +apTimeoutAt: null
    +visibility: "visible             "
    +createdAt: DateTimeImmutable @1697197941 {#272
      date: 2023-10-13 13:52:21.0 +02:00
    }
  }
  +asLink: true
}
vote App\Twig\Components\VoteComponent 14.0 MiB 0.38 ms
Input props
[
  "subject" => App\Entity\EntryComment {#1407
    +user: App\Entity\User {#260
      +avatar: Proxies\__CG__\App\Entity\Image {#240 …}
      +cover: null
      +email: "danielquinn@lemmy.ca"
      +username: "@danielquinn@lemmy.ca"
      +roles: []
      +followersCount: 0
      +homepage: "front"
      +about: "Canadian software engineer living in Europe."
      +lastActive: DateTime @1727577650 {#273
        date: 2024-09-29 04:40:50.0 +02:00
      }
      +markedForDeletionAt: null
      +fields: null
      +oauthGithubId: null
      +oauthGoogleId: null
      +oauthFacebookId: null
      +oauthKeycloakId: null
      +hideAdult: true
      +showSubscribedUsers: true
      +showSubscribedMagazines: true
      +showSubscribedDomains: true
      +preferredLanguages: []
      +featuredMagazines: null
      +showProfileSubscriptions: false
      +showProfileFollowings: true
      +markNewComments: false
      +notifyOnNewEntry: false
      +notifyOnNewEntryReply: true
      +notifyOnNewEntryCommentReply: true
      +notifyOnNewPost: false
      +notifyOnNewPostReply: true
      +notifyOnNewPostCommentReply: true
      +addMentionsEntries: false
      +addMentionsPosts: true
      +isBanned: false
      +isVerified: false
      +isDeleted: false
      +isBot: false
      +spamProtection: true
      +customCss: null
      +ignoreMagazinesCustomCss: false
      +moderatorTokens: Doctrine\ORM\PersistentCollection {#231 …}
      +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#227 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#216 …}
      +entries: Doctrine\ORM\PersistentCollection {#174 …}
      +entryVotes: Doctrine\ORM\PersistentCollection {#146 …}
      +entryComments: Doctrine\ORM\PersistentCollection {#119 …}
      +entryCommentVotes: Doctrine\ORM\PersistentCollection {#89 …}
      +posts: Doctrine\ORM\PersistentCollection {#62 …}
      +postVotes: Doctrine\ORM\PersistentCollection {#77 …}
      +postComments: Doctrine\ORM\PersistentCollection {#2405 …}
      +postCommentVotes: Doctrine\ORM\PersistentCollection {#1607 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#1768 …}
      +subscribedDomains: Doctrine\ORM\PersistentCollection {#2445 …}
      +follows: Doctrine\ORM\PersistentCollection {#1849 …}
      +followers: Doctrine\ORM\PersistentCollection {#1810 …}
      +blocks: Doctrine\ORM\PersistentCollection {#1794 …}
      +blockers: Doctrine\ORM\PersistentCollection {#2415 …}
      +blockedMagazines: Doctrine\ORM\PersistentCollection {#2421 …}
      +blockedDomains: Doctrine\ORM\PersistentCollection {#2418 …}
      +reports: Doctrine\ORM\PersistentCollection {#2398 …}
      +favourites: Doctrine\ORM\PersistentCollection {#1918 …}
      +violations: Doctrine\ORM\PersistentCollection {#1834 …}
      +notifications: Doctrine\ORM\PersistentCollection {#1878 …}
      +awards: Doctrine\ORM\PersistentCollection {#1886 …}
      +subscribedCategories: Doctrine\ORM\PersistentCollection {#1899 …}
      +categories: Doctrine\ORM\PersistentCollection {#1954 …}
      -id: 57593
      -password: "$2y$13$/L0PmovM1H9sjmzmYDFDJ./Rjx6mWwKcBTi6vz7ViURzIQuLk35WK"
      -totpSecret: null
      -totpBackupCodes: []
      -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1978 …}
      +apId: "danielquinn@lemmy.ca"
      +apProfileId: "https://lemmy.ca/u/danielquinn"
      +apPublicUrl: "https://lemmy.ca/u/danielquinn"
      +apFollowersUrl: null
      +apInboxUrl: "https://lemmy.ca/inbox"
      +apDomain: "lemmy.ca"
      +apPreferredUsername: "danielquinn"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: false
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729106992 {#276
        date: 2024-10-16 21:29:52.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1697197941 {#272
        date: 2023-10-13 13:52:21.0 +02:00
      }
    }
    +entry: App\Entity\Entry {#1609
      +user: App\Entity\User {#260}
      +magazine: Proxies\__CG__\App\Entity\Magazine {#1584
        +icon: Proxies\__CG__\App\Entity\Image {#3026 …}
        +name: "piracy@lemmy.dbzer0.com"
        +title: "piracy"
        +description: """
          ##### ⚓ Community devoted to in-depth debate on topics concerning digital piracy, ethical problems, and legal advancements.\n
          \n
          ---\n
          \n
          ### Rules • [Full Version](https://rentry.co/piracy-rules)\n
          \n
          **1**. Posts must be related to the discussion of digital piracy\n
          \n
          **2**. Don’t request invites, trade, sell, or self-promote\n
          \n
          **3**. Don’t request or link to specific pirated titles, including DMs\n
          \n
          **4**. Don’t submit low-quality posts, be entitled, or harass others\n
          \n
          **5**. Don’t post questions already answered. READ THE [WIKI](https://lemmy.dbzer0.com/post/10901)\n
          \n
          ---\n
          \n
          [![](https://a.imagem.app/oZoQ1v.png)](https://lemmy.dbzer0.com/post/10901)\n
          ---------------------------------------------------------------------------\n
          \n
          ### Loot, Pillage, & Plunder\n
          \n
          - [📜 Megathread](https://rentry.co/megathread)\n
          - [🪶 FAQ](https://rentry.co/piracy-faq)\n
          - [🪶 ISP Complaints](https://rentry.co/piracy-isp-complaints)\n
          - [🪶 Rules](https://rentry.co/piracy-rules)\n
          \n
          ---\n
          \n
          💰 Please help cover server costs.\n
          \n
          [![Ko-Fi](https://lemmy.dbzer0.com/pictrs/image/4a2f073a-3dd8-492a-942d-72bd929c9f1d.png)](https://ko-fi.com/dbzer0)[![Liberapay](https://lemmy.dbzer0.com/pictrs/image/eec4659d-39be-4fc9-bc9e-66a96285ea2c.png)](https://liberapay.com/db0/)\n
          \n
          ---
          """
        +rules: null
        +subscriptionsCount: 1
        +entryCount: 866
        +entryCommentCount: 20194
        +postCount: 7
        +postCommentCount: 149
        +isAdult: false
        +customCss: null
        +lastActive: DateTime @1729581369 {#3023
          date: 2024-10-22 09:16:09.0 +02:00
        }
        +markedForDeletionAt: null
        +tags: null
        +moderators: Doctrine\ORM\PersistentCollection {#3027 …}
        +ownershipRequests: Doctrine\ORM\PersistentCollection {#3029 …}
        +moderatorRequests: Doctrine\ORM\PersistentCollection {#3031 …}
        +entries: Doctrine\ORM\PersistentCollection {#3033 …}
        +posts: Doctrine\ORM\PersistentCollection {#3035 …}
        +subscriptions: Doctrine\ORM\PersistentCollection {#3037 …}
        +bans: Doctrine\ORM\PersistentCollection {#3043 …}
        +reports: Doctrine\ORM\PersistentCollection {#3051 …}
        +badges: Doctrine\ORM\PersistentCollection {#3064 …}
        +logs: Doctrine\ORM\PersistentCollection {#3074 …}
        +awards: Doctrine\ORM\PersistentCollection {#3056 …}
        +categories: Doctrine\ORM\PersistentCollection {#3080 …}
        -id: 51
        +apId: "piracy@lemmy.dbzer0.com"
        +apProfileId: "https://lemmy.dbzer0.com/c/piracy"
        +apPublicUrl: "https://lemmy.dbzer0.com/c/piracy"
        +apFollowersUrl: "https://lemmy.dbzer0.com/c/piracy/followers"
        +apInboxUrl: "https://lemmy.dbzer0.com/inbox"
        +apDomain: "lemmy.dbzer0.com"
        +apPreferredUsername: "piracy"
        +apDiscoverable: true
        +apManuallyApprovesFollowers: null
        +privateKey: null
        +publicKey: null
        +apFetchedAt: DateTime @1708748229 {#3024
          date: 2024-02-24 05:17:09.0 +01:00
        }
        +apDeletedAt: null
        +apTimeoutAt: null
        +visibility: "visible             "
        +createdAt: DateTimeImmutable @1697197339 {#3025
          date: 2023-10-13 13:42:19.0 +02:00
        }
        +__isInitialized__: true
         …2
      }
      +image: Proxies\__CG__\App\Entity\Image {#1579 …}
      +domain: Proxies\__CG__\App\Entity\Domain {#1679 …}
      +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 {#1421
        date: 2024-02-10 10:33:02.0 +01:00
      }
      +ip: null
      +adaAmount: 0
      +tags: null
      +mentions: null
      +comments: Doctrine\ORM\PersistentCollection {#1650 …}
      +votes: Doctrine\ORM\PersistentCollection {#1652 …}
      +reports: Doctrine\ORM\PersistentCollection {#1651 …}
      +favourites: Doctrine\ORM\PersistentCollection {#1527 …}
      +notifications: Doctrine\ORM\PersistentCollection {#1560 …}
      +badges: Doctrine\ORM\PersistentCollection {#1558 …}
      +children: [
        3 => App\Entity\EntryComment {#1611
          +user: App\Entity\User {#260}
          +entry: App\Entity\Entry {#1609}
          +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
          +image: null
          +parent: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
          +root: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
          +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 {#1596
            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 {#2464 …}
          +nested: Doctrine\ORM\PersistentCollection {#1740 …}
          +votes: Doctrine\ORM\PersistentCollection {#1739 …}
          +reports: Doctrine\ORM\PersistentCollection {#1716 …}
          +favourites: Doctrine\ORM\PersistentCollection {#2461 …}
          +notifications: Doctrine\ORM\PersistentCollection {#2447 …}
          -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 {#1555
            date: 2023-10-14 09:20:07.0 +02:00
          }
          +"title": 48003
        }
        2 => App\Entity\EntryComment {#2467
          +user: App\Entity\User {#260}
          +entry: App\Entity\Entry {#1609}
          +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
          +image: null
          +parent: Proxies\__CG__\App\Entity\EntryComment {#2470 …}
          +root: Proxies\__CG__\App\Entity\EntryComment {#2470 …}
          +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 {#1731
            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 {#2455 …}
          +nested: Doctrine\ORM\PersistentCollection {#2471 …}
          +votes: Doctrine\ORM\PersistentCollection {#2363 …}
          +reports: Doctrine\ORM\PersistentCollection {#2377 …}
          +favourites: Doctrine\ORM\PersistentCollection {#2359 …}
          +notifications: Doctrine\ORM\PersistentCollection {#2364 …}
          -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 {#2469
            date: 2023-10-14 09:26:17.0 +02:00
          }
          +"title": 48009
        }
        1 => App\Entity\EntryComment {#2382
          +user: App\Entity\User {#260}
          +entry: App\Entity\Entry {#1609}
          +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
          +image: null
          +parent: Proxies\__CG__\App\Entity\EntryComment {#2385 …}
          +root: Proxies\__CG__\App\Entity\EntryComment {#2385 …}
          +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 {#2380
            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 {#2384 …}
          +nested: Doctrine\ORM\PersistentCollection {#2379 …}
          +votes: Doctrine\ORM\PersistentCollection {#2383 …}
          +reports: Doctrine\ORM\PersistentCollection {#1906 …}
          +favourites: Doctrine\ORM\PersistentCollection {#1708 …}
          +notifications: Doctrine\ORM\PersistentCollection {#1410 …}
          -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 {#2386
            date: 2023-10-14 15:04:09.0 +02:00
          }
          +"title": 48431
        }
        0 => App\Entity\EntryComment {#1407}
      ]
      -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 {#1424
        date: 2023-10-14 01:14:01.0 +02:00
      }
    }
    +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
    +image: null
    +parent: Proxies\__CG__\App\Entity\EntryComment {#1883 …}
    +root: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
    +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 {#1907
      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 {#2391 …}
    +nested: Doctrine\ORM\PersistentCollection {#2369 …}
    +votes: Doctrine\ORM\PersistentCollection {#2392 …}
    +reports: Doctrine\ORM\PersistentCollection {#2395 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1384 …}
    +notifications: Doctrine\ORM\PersistentCollection {#1383 …}
    -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 {#1908
      date: 2023-10-14 19:07:35.0 +02:00
    }
    +"title": 48905
  }
]
Attributes
[]
Component
App\Twig\Components\VoteComponent {#5883
  +subject: App\Entity\EntryComment {#1407
    +user: App\Entity\User {#260
      +avatar: Proxies\__CG__\App\Entity\Image {#240 …}
      +cover: null
      +email: "danielquinn@lemmy.ca"
      +username: "@danielquinn@lemmy.ca"
      +roles: []
      +followersCount: 0
      +homepage: "front"
      +about: "Canadian software engineer living in Europe."
      +lastActive: DateTime @1727577650 {#273
        date: 2024-09-29 04:40:50.0 +02:00
      }
      +markedForDeletionAt: null
      +fields: null
      +oauthGithubId: null
      +oauthGoogleId: null
      +oauthFacebookId: null
      +oauthKeycloakId: null
      +hideAdult: true
      +showSubscribedUsers: true
      +showSubscribedMagazines: true
      +showSubscribedDomains: true
      +preferredLanguages: []
      +featuredMagazines: null
      +showProfileSubscriptions: false
      +showProfileFollowings: true
      +markNewComments: false
      +notifyOnNewEntry: false
      +notifyOnNewEntryReply: true
      +notifyOnNewEntryCommentReply: true
      +notifyOnNewPost: false
      +notifyOnNewPostReply: true
      +notifyOnNewPostCommentReply: true
      +addMentionsEntries: false
      +addMentionsPosts: true
      +isBanned: false
      +isVerified: false
      +isDeleted: false
      +isBot: false
      +spamProtection: true
      +customCss: null
      +ignoreMagazinesCustomCss: false
      +moderatorTokens: Doctrine\ORM\PersistentCollection {#231 …}
      +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#227 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#216 …}
      +entries: Doctrine\ORM\PersistentCollection {#174 …}
      +entryVotes: Doctrine\ORM\PersistentCollection {#146 …}
      +entryComments: Doctrine\ORM\PersistentCollection {#119 …}
      +entryCommentVotes: Doctrine\ORM\PersistentCollection {#89 …}
      +posts: Doctrine\ORM\PersistentCollection {#62 …}
      +postVotes: Doctrine\ORM\PersistentCollection {#77 …}
      +postComments: Doctrine\ORM\PersistentCollection {#2405 …}
      +postCommentVotes: Doctrine\ORM\PersistentCollection {#1607 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#1768 …}
      +subscribedDomains: Doctrine\ORM\PersistentCollection {#2445 …}
      +follows: Doctrine\ORM\PersistentCollection {#1849 …}
      +followers: Doctrine\ORM\PersistentCollection {#1810 …}
      +blocks: Doctrine\ORM\PersistentCollection {#1794 …}
      +blockers: Doctrine\ORM\PersistentCollection {#2415 …}
      +blockedMagazines: Doctrine\ORM\PersistentCollection {#2421 …}
      +blockedDomains: Doctrine\ORM\PersistentCollection {#2418 …}
      +reports: Doctrine\ORM\PersistentCollection {#2398 …}
      +favourites: Doctrine\ORM\PersistentCollection {#1918 …}
      +violations: Doctrine\ORM\PersistentCollection {#1834 …}
      +notifications: Doctrine\ORM\PersistentCollection {#1878 …}
      +awards: Doctrine\ORM\PersistentCollection {#1886 …}
      +subscribedCategories: Doctrine\ORM\PersistentCollection {#1899 …}
      +categories: Doctrine\ORM\PersistentCollection {#1954 …}
      -id: 57593
      -password: "$2y$13$/L0PmovM1H9sjmzmYDFDJ./Rjx6mWwKcBTi6vz7ViURzIQuLk35WK"
      -totpSecret: null
      -totpBackupCodes: []
      -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1978 …}
      +apId: "danielquinn@lemmy.ca"
      +apProfileId: "https://lemmy.ca/u/danielquinn"
      +apPublicUrl: "https://lemmy.ca/u/danielquinn"
      +apFollowersUrl: null
      +apInboxUrl: "https://lemmy.ca/inbox"
      +apDomain: "lemmy.ca"
      +apPreferredUsername: "danielquinn"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: false
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729106992 {#276
        date: 2024-10-16 21:29:52.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1697197941 {#272
        date: 2023-10-13 13:52:21.0 +02:00
      }
    }
    +entry: App\Entity\Entry {#1609
      +user: App\Entity\User {#260}
      +magazine: Proxies\__CG__\App\Entity\Magazine {#1584
        +icon: Proxies\__CG__\App\Entity\Image {#3026 …}
        +name: "piracy@lemmy.dbzer0.com"
        +title: "piracy"
        +description: """
          ##### ⚓ Community devoted to in-depth debate on topics concerning digital piracy, ethical problems, and legal advancements.\n
          \n
          ---\n
          \n
          ### Rules • [Full Version](https://rentry.co/piracy-rules)\n
          \n
          **1**. Posts must be related to the discussion of digital piracy\n
          \n
          **2**. Don’t request invites, trade, sell, or self-promote\n
          \n
          **3**. Don’t request or link to specific pirated titles, including DMs\n
          \n
          **4**. Don’t submit low-quality posts, be entitled, or harass others\n
          \n
          **5**. Don’t post questions already answered. READ THE [WIKI](https://lemmy.dbzer0.com/post/10901)\n
          \n
          ---\n
          \n
          [![](https://a.imagem.app/oZoQ1v.png)](https://lemmy.dbzer0.com/post/10901)\n
          ---------------------------------------------------------------------------\n
          \n
          ### Loot, Pillage, & Plunder\n
          \n
          - [📜 Megathread](https://rentry.co/megathread)\n
          - [🪶 FAQ](https://rentry.co/piracy-faq)\n
          - [🪶 ISP Complaints](https://rentry.co/piracy-isp-complaints)\n
          - [🪶 Rules](https://rentry.co/piracy-rules)\n
          \n
          ---\n
          \n
          💰 Please help cover server costs.\n
          \n
          [![Ko-Fi](https://lemmy.dbzer0.com/pictrs/image/4a2f073a-3dd8-492a-942d-72bd929c9f1d.png)](https://ko-fi.com/dbzer0)[![Liberapay](https://lemmy.dbzer0.com/pictrs/image/eec4659d-39be-4fc9-bc9e-66a96285ea2c.png)](https://liberapay.com/db0/)\n
          \n
          ---
          """
        +rules: null
        +subscriptionsCount: 1
        +entryCount: 866
        +entryCommentCount: 20194
        +postCount: 7
        +postCommentCount: 149
        +isAdult: false
        +customCss: null
        +lastActive: DateTime @1729581369 {#3023
          date: 2024-10-22 09:16:09.0 +02:00
        }
        +markedForDeletionAt: null
        +tags: null
        +moderators: Doctrine\ORM\PersistentCollection {#3027 …}
        +ownershipRequests: Doctrine\ORM\PersistentCollection {#3029 …}
        +moderatorRequests: Doctrine\ORM\PersistentCollection {#3031 …}
        +entries: Doctrine\ORM\PersistentCollection {#3033 …}
        +posts: Doctrine\ORM\PersistentCollection {#3035 …}
        +subscriptions: Doctrine\ORM\PersistentCollection {#3037 …}
        +bans: Doctrine\ORM\PersistentCollection {#3043 …}
        +reports: Doctrine\ORM\PersistentCollection {#3051 …}
        +badges: Doctrine\ORM\PersistentCollection {#3064 …}
        +logs: Doctrine\ORM\PersistentCollection {#3074 …}
        +awards: Doctrine\ORM\PersistentCollection {#3056 …}
        +categories: Doctrine\ORM\PersistentCollection {#3080 …}
        -id: 51
        +apId: "piracy@lemmy.dbzer0.com"
        +apProfileId: "https://lemmy.dbzer0.com/c/piracy"
        +apPublicUrl: "https://lemmy.dbzer0.com/c/piracy"
        +apFollowersUrl: "https://lemmy.dbzer0.com/c/piracy/followers"
        +apInboxUrl: "https://lemmy.dbzer0.com/inbox"
        +apDomain: "lemmy.dbzer0.com"
        +apPreferredUsername: "piracy"
        +apDiscoverable: true
        +apManuallyApprovesFollowers: null
        +privateKey: null
        +publicKey: null
        +apFetchedAt: DateTime @1708748229 {#3024
          date: 2024-02-24 05:17:09.0 +01:00
        }
        +apDeletedAt: null
        +apTimeoutAt: null
        +visibility: "visible             "
        +createdAt: DateTimeImmutable @1697197339 {#3025
          date: 2023-10-13 13:42:19.0 +02:00
        }
        +__isInitialized__: true
         …2
      }
      +image: Proxies\__CG__\App\Entity\Image {#1579 …}
      +domain: Proxies\__CG__\App\Entity\Domain {#1679 …}
      +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 {#1421
        date: 2024-02-10 10:33:02.0 +01:00
      }
      +ip: null
      +adaAmount: 0
      +tags: null
      +mentions: null
      +comments: Doctrine\ORM\PersistentCollection {#1650 …}
      +votes: Doctrine\ORM\PersistentCollection {#1652 …}
      +reports: Doctrine\ORM\PersistentCollection {#1651 …}
      +favourites: Doctrine\ORM\PersistentCollection {#1527 …}
      +notifications: Doctrine\ORM\PersistentCollection {#1560 …}
      +badges: Doctrine\ORM\PersistentCollection {#1558 …}
      +children: [
        3 => App\Entity\EntryComment {#1611
          +user: App\Entity\User {#260}
          +entry: App\Entity\Entry {#1609}
          +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
          +image: null
          +parent: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
          +root: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
          +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 {#1596
            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 {#2464 …}
          +nested: Doctrine\ORM\PersistentCollection {#1740 …}
          +votes: Doctrine\ORM\PersistentCollection {#1739 …}
          +reports: Doctrine\ORM\PersistentCollection {#1716 …}
          +favourites: Doctrine\ORM\PersistentCollection {#2461 …}
          +notifications: Doctrine\ORM\PersistentCollection {#2447 …}
          -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 {#1555
            date: 2023-10-14 09:20:07.0 +02:00
          }
          +"title": 48003
        }
        2 => App\Entity\EntryComment {#2467
          +user: App\Entity\User {#260}
          +entry: App\Entity\Entry {#1609}
          +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
          +image: null
          +parent: Proxies\__CG__\App\Entity\EntryComment {#2470 …}
          +root: Proxies\__CG__\App\Entity\EntryComment {#2470 …}
          +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 {#1731
            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 {#2455 …}
          +nested: Doctrine\ORM\PersistentCollection {#2471 …}
          +votes: Doctrine\ORM\PersistentCollection {#2363 …}
          +reports: Doctrine\ORM\PersistentCollection {#2377 …}
          +favourites: Doctrine\ORM\PersistentCollection {#2359 …}
          +notifications: Doctrine\ORM\PersistentCollection {#2364 …}
          -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 {#2469
            date: 2023-10-14 09:26:17.0 +02:00
          }
          +"title": 48009
        }
        1 => App\Entity\EntryComment {#2382
          +user: App\Entity\User {#260}
          +entry: App\Entity\Entry {#1609}
          +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
          +image: null
          +parent: Proxies\__CG__\App\Entity\EntryComment {#2385 …}
          +root: Proxies\__CG__\App\Entity\EntryComment {#2385 …}
          +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 {#2380
            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 {#2384 …}
          +nested: Doctrine\ORM\PersistentCollection {#2379 …}
          +votes: Doctrine\ORM\PersistentCollection {#2383 …}
          +reports: Doctrine\ORM\PersistentCollection {#1906 …}
          +favourites: Doctrine\ORM\PersistentCollection {#1708 …}
          +notifications: Doctrine\ORM\PersistentCollection {#1410 …}
          -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 {#2386
            date: 2023-10-14 15:04:09.0 +02:00
          }
          +"title": 48431
        }
        0 => App\Entity\EntryComment {#1407}
      ]
      -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 {#1424
        date: 2023-10-14 01:14:01.0 +02:00
      }
    }
    +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
    +image: null
    +parent: Proxies\__CG__\App\Entity\EntryComment {#1883 …}
    +root: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
    +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 {#1907
      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 {#2391 …}
    +nested: Doctrine\ORM\PersistentCollection {#2369 …}
    +votes: Doctrine\ORM\PersistentCollection {#2392 …}
    +reports: Doctrine\ORM\PersistentCollection {#2395 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1384 …}
    +notifications: Doctrine\ORM\PersistentCollection {#1383 …}
    -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 {#1908
      date: 2023-10-14 19:07:35.0 +02:00
    }
    +"title": 48905
  }
  +formDest: "entry_comment"
  +showDownvote: true
  -cache: Symfony\Component\Cache\Adapter\TraceableTagAwareAdapter {#600 …}
}
boost App\Twig\Components\BoostComponent 14.0 MiB 0.67 ms
Input props
[
  "subject" => App\Entity\EntryComment {#1407
    +user: App\Entity\User {#260
      +avatar: Proxies\__CG__\App\Entity\Image {#240 …}
      +cover: null
      +email: "danielquinn@lemmy.ca"
      +username: "@danielquinn@lemmy.ca"
      +roles: []
      +followersCount: 0
      +homepage: "front"
      +about: "Canadian software engineer living in Europe."
      +lastActive: DateTime @1727577650 {#273
        date: 2024-09-29 04:40:50.0 +02:00
      }
      +markedForDeletionAt: null
      +fields: null
      +oauthGithubId: null
      +oauthGoogleId: null
      +oauthFacebookId: null
      +oauthKeycloakId: null
      +hideAdult: true
      +showSubscribedUsers: true
      +showSubscribedMagazines: true
      +showSubscribedDomains: true
      +preferredLanguages: []
      +featuredMagazines: null
      +showProfileSubscriptions: false
      +showProfileFollowings: true
      +markNewComments: false
      +notifyOnNewEntry: false
      +notifyOnNewEntryReply: true
      +notifyOnNewEntryCommentReply: true
      +notifyOnNewPost: false
      +notifyOnNewPostReply: true
      +notifyOnNewPostCommentReply: true
      +addMentionsEntries: false
      +addMentionsPosts: true
      +isBanned: false
      +isVerified: false
      +isDeleted: false
      +isBot: false
      +spamProtection: true
      +customCss: null
      +ignoreMagazinesCustomCss: false
      +moderatorTokens: Doctrine\ORM\PersistentCollection {#231 …}
      +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#227 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#216 …}
      +entries: Doctrine\ORM\PersistentCollection {#174 …}
      +entryVotes: Doctrine\ORM\PersistentCollection {#146 …}
      +entryComments: Doctrine\ORM\PersistentCollection {#119 …}
      +entryCommentVotes: Doctrine\ORM\PersistentCollection {#89 …}
      +posts: Doctrine\ORM\PersistentCollection {#62 …}
      +postVotes: Doctrine\ORM\PersistentCollection {#77 …}
      +postComments: Doctrine\ORM\PersistentCollection {#2405 …}
      +postCommentVotes: Doctrine\ORM\PersistentCollection {#1607 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#1768 …}
      +subscribedDomains: Doctrine\ORM\PersistentCollection {#2445 …}
      +follows: Doctrine\ORM\PersistentCollection {#1849 …}
      +followers: Doctrine\ORM\PersistentCollection {#1810 …}
      +blocks: Doctrine\ORM\PersistentCollection {#1794 …}
      +blockers: Doctrine\ORM\PersistentCollection {#2415 …}
      +blockedMagazines: Doctrine\ORM\PersistentCollection {#2421 …}
      +blockedDomains: Doctrine\ORM\PersistentCollection {#2418 …}
      +reports: Doctrine\ORM\PersistentCollection {#2398 …}
      +favourites: Doctrine\ORM\PersistentCollection {#1918 …}
      +violations: Doctrine\ORM\PersistentCollection {#1834 …}
      +notifications: Doctrine\ORM\PersistentCollection {#1878 …}
      +awards: Doctrine\ORM\PersistentCollection {#1886 …}
      +subscribedCategories: Doctrine\ORM\PersistentCollection {#1899 …}
      +categories: Doctrine\ORM\PersistentCollection {#1954 …}
      -id: 57593
      -password: "$2y$13$/L0PmovM1H9sjmzmYDFDJ./Rjx6mWwKcBTi6vz7ViURzIQuLk35WK"
      -totpSecret: null
      -totpBackupCodes: []
      -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1978 …}
      +apId: "danielquinn@lemmy.ca"
      +apProfileId: "https://lemmy.ca/u/danielquinn"
      +apPublicUrl: "https://lemmy.ca/u/danielquinn"
      +apFollowersUrl: null
      +apInboxUrl: "https://lemmy.ca/inbox"
      +apDomain: "lemmy.ca"
      +apPreferredUsername: "danielquinn"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: false
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729106992 {#276
        date: 2024-10-16 21:29:52.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1697197941 {#272
        date: 2023-10-13 13:52:21.0 +02:00
      }
    }
    +entry: App\Entity\Entry {#1609
      +user: App\Entity\User {#260}
      +magazine: Proxies\__CG__\App\Entity\Magazine {#1584
        +icon: Proxies\__CG__\App\Entity\Image {#3026 …}
        +name: "piracy@lemmy.dbzer0.com"
        +title: "piracy"
        +description: """
          ##### ⚓ Community devoted to in-depth debate on topics concerning digital piracy, ethical problems, and legal advancements.\n
          \n
          ---\n
          \n
          ### Rules • [Full Version](https://rentry.co/piracy-rules)\n
          \n
          **1**. Posts must be related to the discussion of digital piracy\n
          \n
          **2**. Don’t request invites, trade, sell, or self-promote\n
          \n
          **3**. Don’t request or link to specific pirated titles, including DMs\n
          \n
          **4**. Don’t submit low-quality posts, be entitled, or harass others\n
          \n
          **5**. Don’t post questions already answered. READ THE [WIKI](https://lemmy.dbzer0.com/post/10901)\n
          \n
          ---\n
          \n
          [![](https://a.imagem.app/oZoQ1v.png)](https://lemmy.dbzer0.com/post/10901)\n
          ---------------------------------------------------------------------------\n
          \n
          ### Loot, Pillage, & Plunder\n
          \n
          - [📜 Megathread](https://rentry.co/megathread)\n
          - [🪶 FAQ](https://rentry.co/piracy-faq)\n
          - [🪶 ISP Complaints](https://rentry.co/piracy-isp-complaints)\n
          - [🪶 Rules](https://rentry.co/piracy-rules)\n
          \n
          ---\n
          \n
          💰 Please help cover server costs.\n
          \n
          [![Ko-Fi](https://lemmy.dbzer0.com/pictrs/image/4a2f073a-3dd8-492a-942d-72bd929c9f1d.png)](https://ko-fi.com/dbzer0)[![Liberapay](https://lemmy.dbzer0.com/pictrs/image/eec4659d-39be-4fc9-bc9e-66a96285ea2c.png)](https://liberapay.com/db0/)\n
          \n
          ---
          """
        +rules: null
        +subscriptionsCount: 1
        +entryCount: 866
        +entryCommentCount: 20194
        +postCount: 7
        +postCommentCount: 149
        +isAdult: false
        +customCss: null
        +lastActive: DateTime @1729581369 {#3023
          date: 2024-10-22 09:16:09.0 +02:00
        }
        +markedForDeletionAt: null
        +tags: null
        +moderators: Doctrine\ORM\PersistentCollection {#3027 …}
        +ownershipRequests: Doctrine\ORM\PersistentCollection {#3029 …}
        +moderatorRequests: Doctrine\ORM\PersistentCollection {#3031 …}
        +entries: Doctrine\ORM\PersistentCollection {#3033 …}
        +posts: Doctrine\ORM\PersistentCollection {#3035 …}
        +subscriptions: Doctrine\ORM\PersistentCollection {#3037 …}
        +bans: Doctrine\ORM\PersistentCollection {#3043 …}
        +reports: Doctrine\ORM\PersistentCollection {#3051 …}
        +badges: Doctrine\ORM\PersistentCollection {#3064 …}
        +logs: Doctrine\ORM\PersistentCollection {#3074 …}
        +awards: Doctrine\ORM\PersistentCollection {#3056 …}
        +categories: Doctrine\ORM\PersistentCollection {#3080 …}
        -id: 51
        +apId: "piracy@lemmy.dbzer0.com"
        +apProfileId: "https://lemmy.dbzer0.com/c/piracy"
        +apPublicUrl: "https://lemmy.dbzer0.com/c/piracy"
        +apFollowersUrl: "https://lemmy.dbzer0.com/c/piracy/followers"
        +apInboxUrl: "https://lemmy.dbzer0.com/inbox"
        +apDomain: "lemmy.dbzer0.com"
        +apPreferredUsername: "piracy"
        +apDiscoverable: true
        +apManuallyApprovesFollowers: null
        +privateKey: null
        +publicKey: null
        +apFetchedAt: DateTime @1708748229 {#3024
          date: 2024-02-24 05:17:09.0 +01:00
        }
        +apDeletedAt: null
        +apTimeoutAt: null
        +visibility: "visible             "
        +createdAt: DateTimeImmutable @1697197339 {#3025
          date: 2023-10-13 13:42:19.0 +02:00
        }
        +__isInitialized__: true
         …2
      }
      +image: Proxies\__CG__\App\Entity\Image {#1579 …}
      +domain: Proxies\__CG__\App\Entity\Domain {#1679 …}
      +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 {#1421
        date: 2024-02-10 10:33:02.0 +01:00
      }
      +ip: null
      +adaAmount: 0
      +tags: null
      +mentions: null
      +comments: Doctrine\ORM\PersistentCollection {#1650 …}
      +votes: Doctrine\ORM\PersistentCollection {#1652 …}
      +reports: Doctrine\ORM\PersistentCollection {#1651 …}
      +favourites: Doctrine\ORM\PersistentCollection {#1527 …}
      +notifications: Doctrine\ORM\PersistentCollection {#1560 …}
      +badges: Doctrine\ORM\PersistentCollection {#1558 …}
      +children: [
        3 => App\Entity\EntryComment {#1611
          +user: App\Entity\User {#260}
          +entry: App\Entity\Entry {#1609}
          +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
          +image: null
          +parent: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
          +root: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
          +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 {#1596
            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 {#2464 …}
          +nested: Doctrine\ORM\PersistentCollection {#1740 …}
          +votes: Doctrine\ORM\PersistentCollection {#1739 …}
          +reports: Doctrine\ORM\PersistentCollection {#1716 …}
          +favourites: Doctrine\ORM\PersistentCollection {#2461 …}
          +notifications: Doctrine\ORM\PersistentCollection {#2447 …}
          -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 {#1555
            date: 2023-10-14 09:20:07.0 +02:00
          }
          +"title": 48003
        }
        2 => App\Entity\EntryComment {#2467
          +user: App\Entity\User {#260}
          +entry: App\Entity\Entry {#1609}
          +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
          +image: null
          +parent: Proxies\__CG__\App\Entity\EntryComment {#2470 …}
          +root: Proxies\__CG__\App\Entity\EntryComment {#2470 …}
          +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 {#1731
            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 {#2455 …}
          +nested: Doctrine\ORM\PersistentCollection {#2471 …}
          +votes: Doctrine\ORM\PersistentCollection {#2363 …}
          +reports: Doctrine\ORM\PersistentCollection {#2377 …}
          +favourites: Doctrine\ORM\PersistentCollection {#2359 …}
          +notifications: Doctrine\ORM\PersistentCollection {#2364 …}
          -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 {#2469
            date: 2023-10-14 09:26:17.0 +02:00
          }
          +"title": 48009
        }
        1 => App\Entity\EntryComment {#2382
          +user: App\Entity\User {#260}
          +entry: App\Entity\Entry {#1609}
          +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
          +image: null
          +parent: Proxies\__CG__\App\Entity\EntryComment {#2385 …}
          +root: Proxies\__CG__\App\Entity\EntryComment {#2385 …}
          +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 {#2380
            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 {#2384 …}
          +nested: Doctrine\ORM\PersistentCollection {#2379 …}
          +votes: Doctrine\ORM\PersistentCollection {#2383 …}
          +reports: Doctrine\ORM\PersistentCollection {#1906 …}
          +favourites: Doctrine\ORM\PersistentCollection {#1708 …}
          +notifications: Doctrine\ORM\PersistentCollection {#1410 …}
          -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 {#2386
            date: 2023-10-14 15:04:09.0 +02:00
          }
          +"title": 48431
        }
        0 => App\Entity\EntryComment {#1407}
      ]
      -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 {#1424
        date: 2023-10-14 01:14:01.0 +02:00
      }
    }
    +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
    +image: null
    +parent: Proxies\__CG__\App\Entity\EntryComment {#1883 …}
    +root: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
    +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 {#1907
      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 {#2391 …}
    +nested: Doctrine\ORM\PersistentCollection {#2369 …}
    +votes: Doctrine\ORM\PersistentCollection {#2392 …}
    +reports: Doctrine\ORM\PersistentCollection {#2395 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1384 …}
    +notifications: Doctrine\ORM\PersistentCollection {#1383 …}
    -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 {#1908
      date: 2023-10-14 19:07:35.0 +02:00
    }
    +"title": 48905
  }
]
Attributes
[]
Component
App\Twig\Components\BoostComponent {#5940
  +formDest: "entry_comment"
  +subject: App\Entity\EntryComment {#1407
    +user: App\Entity\User {#260
      +avatar: Proxies\__CG__\App\Entity\Image {#240 …}
      +cover: null
      +email: "danielquinn@lemmy.ca"
      +username: "@danielquinn@lemmy.ca"
      +roles: []
      +followersCount: 0
      +homepage: "front"
      +about: "Canadian software engineer living in Europe."
      +lastActive: DateTime @1727577650 {#273
        date: 2024-09-29 04:40:50.0 +02:00
      }
      +markedForDeletionAt: null
      +fields: null
      +oauthGithubId: null
      +oauthGoogleId: null
      +oauthFacebookId: null
      +oauthKeycloakId: null
      +hideAdult: true
      +showSubscribedUsers: true
      +showSubscribedMagazines: true
      +showSubscribedDomains: true
      +preferredLanguages: []
      +featuredMagazines: null
      +showProfileSubscriptions: false
      +showProfileFollowings: true
      +markNewComments: false
      +notifyOnNewEntry: false
      +notifyOnNewEntryReply: true
      +notifyOnNewEntryCommentReply: true
      +notifyOnNewPost: false
      +notifyOnNewPostReply: true
      +notifyOnNewPostCommentReply: true
      +addMentionsEntries: false
      +addMentionsPosts: true
      +isBanned: false
      +isVerified: false
      +isDeleted: false
      +isBot: false
      +spamProtection: true
      +customCss: null
      +ignoreMagazinesCustomCss: false
      +moderatorTokens: Doctrine\ORM\PersistentCollection {#231 …}
      +magazineOwnershipRequests: Doctrine\ORM\PersistentCollection {#227 …}
      +moderatorRequests: Doctrine\ORM\PersistentCollection {#216 …}
      +entries: Doctrine\ORM\PersistentCollection {#174 …}
      +entryVotes: Doctrine\ORM\PersistentCollection {#146 …}
      +entryComments: Doctrine\ORM\PersistentCollection {#119 …}
      +entryCommentVotes: Doctrine\ORM\PersistentCollection {#89 …}
      +posts: Doctrine\ORM\PersistentCollection {#62 …}
      +postVotes: Doctrine\ORM\PersistentCollection {#77 …}
      +postComments: Doctrine\ORM\PersistentCollection {#2405 …}
      +postCommentVotes: Doctrine\ORM\PersistentCollection {#1607 …}
      +subscriptions: Doctrine\ORM\PersistentCollection {#1768 …}
      +subscribedDomains: Doctrine\ORM\PersistentCollection {#2445 …}
      +follows: Doctrine\ORM\PersistentCollection {#1849 …}
      +followers: Doctrine\ORM\PersistentCollection {#1810 …}
      +blocks: Doctrine\ORM\PersistentCollection {#1794 …}
      +blockers: Doctrine\ORM\PersistentCollection {#2415 …}
      +blockedMagazines: Doctrine\ORM\PersistentCollection {#2421 …}
      +blockedDomains: Doctrine\ORM\PersistentCollection {#2418 …}
      +reports: Doctrine\ORM\PersistentCollection {#2398 …}
      +favourites: Doctrine\ORM\PersistentCollection {#1918 …}
      +violations: Doctrine\ORM\PersistentCollection {#1834 …}
      +notifications: Doctrine\ORM\PersistentCollection {#1878 …}
      +awards: Doctrine\ORM\PersistentCollection {#1886 …}
      +subscribedCategories: Doctrine\ORM\PersistentCollection {#1899 …}
      +categories: Doctrine\ORM\PersistentCollection {#1954 …}
      -id: 57593
      -password: "$2y$13$/L0PmovM1H9sjmzmYDFDJ./Rjx6mWwKcBTi6vz7ViURzIQuLk35WK"
      -totpSecret: null
      -totpBackupCodes: []
      -oAuth2UserConsents: Doctrine\ORM\PersistentCollection {#1978 …}
      +apId: "danielquinn@lemmy.ca"
      +apProfileId: "https://lemmy.ca/u/danielquinn"
      +apPublicUrl: "https://lemmy.ca/u/danielquinn"
      +apFollowersUrl: null
      +apInboxUrl: "https://lemmy.ca/inbox"
      +apDomain: "lemmy.ca"
      +apPreferredUsername: "danielquinn"
      +apDiscoverable: true
      +apManuallyApprovesFollowers: false
      +privateKey: null
      +publicKey: null
      +apFetchedAt: DateTime @1729106992 {#276
        date: 2024-10-16 21:29:52.0 +02:00
      }
      +apDeletedAt: null
      +apTimeoutAt: null
      +visibility: "visible             "
      +createdAt: DateTimeImmutable @1697197941 {#272
        date: 2023-10-13 13:52:21.0 +02:00
      }
    }
    +entry: App\Entity\Entry {#1609
      +user: App\Entity\User {#260}
      +magazine: Proxies\__CG__\App\Entity\Magazine {#1584
        +icon: Proxies\__CG__\App\Entity\Image {#3026 …}
        +name: "piracy@lemmy.dbzer0.com"
        +title: "piracy"
        +description: """
          ##### ⚓ Community devoted to in-depth debate on topics concerning digital piracy, ethical problems, and legal advancements.\n
          \n
          ---\n
          \n
          ### Rules • [Full Version](https://rentry.co/piracy-rules)\n
          \n
          **1**. Posts must be related to the discussion of digital piracy\n
          \n
          **2**. Don’t request invites, trade, sell, or self-promote\n
          \n
          **3**. Don’t request or link to specific pirated titles, including DMs\n
          \n
          **4**. Don’t submit low-quality posts, be entitled, or harass others\n
          \n
          **5**. Don’t post questions already answered. READ THE [WIKI](https://lemmy.dbzer0.com/post/10901)\n
          \n
          ---\n
          \n
          [![](https://a.imagem.app/oZoQ1v.png)](https://lemmy.dbzer0.com/post/10901)\n
          ---------------------------------------------------------------------------\n
          \n
          ### Loot, Pillage, & Plunder\n
          \n
          - [📜 Megathread](https://rentry.co/megathread)\n
          - [🪶 FAQ](https://rentry.co/piracy-faq)\n
          - [🪶 ISP Complaints](https://rentry.co/piracy-isp-complaints)\n
          - [🪶 Rules](https://rentry.co/piracy-rules)\n
          \n
          ---\n
          \n
          💰 Please help cover server costs.\n
          \n
          [![Ko-Fi](https://lemmy.dbzer0.com/pictrs/image/4a2f073a-3dd8-492a-942d-72bd929c9f1d.png)](https://ko-fi.com/dbzer0)[![Liberapay](https://lemmy.dbzer0.com/pictrs/image/eec4659d-39be-4fc9-bc9e-66a96285ea2c.png)](https://liberapay.com/db0/)\n
          \n
          ---
          """
        +rules: null
        +subscriptionsCount: 1
        +entryCount: 866
        +entryCommentCount: 20194
        +postCount: 7
        +postCommentCount: 149
        +isAdult: false
        +customCss: null
        +lastActive: DateTime @1729581369 {#3023
          date: 2024-10-22 09:16:09.0 +02:00
        }
        +markedForDeletionAt: null
        +tags: null
        +moderators: Doctrine\ORM\PersistentCollection {#3027 …}
        +ownershipRequests: Doctrine\ORM\PersistentCollection {#3029 …}
        +moderatorRequests: Doctrine\ORM\PersistentCollection {#3031 …}
        +entries: Doctrine\ORM\PersistentCollection {#3033 …}
        +posts: Doctrine\ORM\PersistentCollection {#3035 …}
        +subscriptions: Doctrine\ORM\PersistentCollection {#3037 …}
        +bans: Doctrine\ORM\PersistentCollection {#3043 …}
        +reports: Doctrine\ORM\PersistentCollection {#3051 …}
        +badges: Doctrine\ORM\PersistentCollection {#3064 …}
        +logs: Doctrine\ORM\PersistentCollection {#3074 …}
        +awards: Doctrine\ORM\PersistentCollection {#3056 …}
        +categories: Doctrine\ORM\PersistentCollection {#3080 …}
        -id: 51
        +apId: "piracy@lemmy.dbzer0.com"
        +apProfileId: "https://lemmy.dbzer0.com/c/piracy"
        +apPublicUrl: "https://lemmy.dbzer0.com/c/piracy"
        +apFollowersUrl: "https://lemmy.dbzer0.com/c/piracy/followers"
        +apInboxUrl: "https://lemmy.dbzer0.com/inbox"
        +apDomain: "lemmy.dbzer0.com"
        +apPreferredUsername: "piracy"
        +apDiscoverable: true
        +apManuallyApprovesFollowers: null
        +privateKey: null
        +publicKey: null
        +apFetchedAt: DateTime @1708748229 {#3024
          date: 2024-02-24 05:17:09.0 +01:00
        }
        +apDeletedAt: null
        +apTimeoutAt: null
        +visibility: "visible             "
        +createdAt: DateTimeImmutable @1697197339 {#3025
          date: 2023-10-13 13:42:19.0 +02:00
        }
        +__isInitialized__: true
         …2
      }
      +image: Proxies\__CG__\App\Entity\Image {#1579 …}
      +domain: Proxies\__CG__\App\Entity\Domain {#1679 …}
      +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 {#1421
        date: 2024-02-10 10:33:02.0 +01:00
      }
      +ip: null
      +adaAmount: 0
      +tags: null
      +mentions: null
      +comments: Doctrine\ORM\PersistentCollection {#1650 …}
      +votes: Doctrine\ORM\PersistentCollection {#1652 …}
      +reports: Doctrine\ORM\PersistentCollection {#1651 …}
      +favourites: Doctrine\ORM\PersistentCollection {#1527 …}
      +notifications: Doctrine\ORM\PersistentCollection {#1560 …}
      +badges: Doctrine\ORM\PersistentCollection {#1558 …}
      +children: [
        3 => App\Entity\EntryComment {#1611
          +user: App\Entity\User {#260}
          +entry: App\Entity\Entry {#1609}
          +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
          +image: null
          +parent: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
          +root: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
          +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 {#1596
            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 {#2464 …}
          +nested: Doctrine\ORM\PersistentCollection {#1740 …}
          +votes: Doctrine\ORM\PersistentCollection {#1739 …}
          +reports: Doctrine\ORM\PersistentCollection {#1716 …}
          +favourites: Doctrine\ORM\PersistentCollection {#2461 …}
          +notifications: Doctrine\ORM\PersistentCollection {#2447 …}
          -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 {#1555
            date: 2023-10-14 09:20:07.0 +02:00
          }
          +"title": 48003
        }
        2 => App\Entity\EntryComment {#2467
          +user: App\Entity\User {#260}
          +entry: App\Entity\Entry {#1609}
          +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
          +image: null
          +parent: Proxies\__CG__\App\Entity\EntryComment {#2470 …}
          +root: Proxies\__CG__\App\Entity\EntryComment {#2470 …}
          +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 {#1731
            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 {#2455 …}
          +nested: Doctrine\ORM\PersistentCollection {#2471 …}
          +votes: Doctrine\ORM\PersistentCollection {#2363 …}
          +reports: Doctrine\ORM\PersistentCollection {#2377 …}
          +favourites: Doctrine\ORM\PersistentCollection {#2359 …}
          +notifications: Doctrine\ORM\PersistentCollection {#2364 …}
          -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 {#2469
            date: 2023-10-14 09:26:17.0 +02:00
          }
          +"title": 48009
        }
        1 => App\Entity\EntryComment {#2382
          +user: App\Entity\User {#260}
          +entry: App\Entity\Entry {#1609}
          +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
          +image: null
          +parent: Proxies\__CG__\App\Entity\EntryComment {#2385 …}
          +root: Proxies\__CG__\App\Entity\EntryComment {#2385 …}
          +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 {#2380
            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 {#2384 …}
          +nested: Doctrine\ORM\PersistentCollection {#2379 …}
          +votes: Doctrine\ORM\PersistentCollection {#2383 …}
          +reports: Doctrine\ORM\PersistentCollection {#1906 …}
          +favourites: Doctrine\ORM\PersistentCollection {#1708 …}
          +notifications: Doctrine\ORM\PersistentCollection {#1410 …}
          -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 {#2386
            date: 2023-10-14 15:04:09.0 +02:00
          }
          +"title": 48431
        }
        0 => App\Entity\EntryComment {#1407}
      ]
      -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 {#1424
        date: 2023-10-14 01:14:01.0 +02:00
      }
    }
    +magazine: Proxies\__CG__\App\Entity\Magazine {#1584 …2}
    +image: null
    +parent: Proxies\__CG__\App\Entity\EntryComment {#1883 …}
    +root: Proxies\__CG__\App\Entity\EntryComment {#2463 …}
    +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 {#1907
      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 {#2391 …}
    +nested: Doctrine\ORM\PersistentCollection {#2369 …}
    +votes: Doctrine\ORM\PersistentCollection {#2392 …}
    +reports: Doctrine\ORM\PersistentCollection {#2395 …}
    +favourites: Doctrine\ORM\PersistentCollection {#1384 …}
    +notifications: Doctrine\ORM\PersistentCollection {#1383 …}
    -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 {#1908
      date: 2023-10-14 19:07:35.0 +02:00
    }
    +"title": 48905
  }
  -cache: Symfony\Component\Cache\Adapter\TraceableTagAwareAdapter {#600 …}
}
settings_row_enum App\Twig\Components\SettingsRowEnumComponent 14.0 MiB 0.21 ms
Input props
[
  "label" => "Sidebar position"
  "settingsKey" => "KBIN_GENERAL_SIDEBAR_POSITION"
  "values" => [
    [
      "name" => "Left"
      "value" => "LEFT"
    ]
    [
      "name" => "Right"
      "value" => "RIGHT"
    ]
  ]
  "defaultValue" => "RIGHT"
]
Attributes
[]
Component
App\Twig\Components\SettingsRowEnumComponent {#6318
  +label: "Sidebar position"
  +help: ""
  +settingsKey: "KBIN_GENERAL_SIDEBAR_POSITION"
  +values: [
    [
      "name" => "Left"
      "value" => "LEFT"
    ]
    [
      "name" => "Right"
      "value" => "RIGHT"
    ]
  ]
  +defaultValue: "RIGHT"
  +reloadRequired: true
}
settings_row_switch App\Twig\Components\SettingsRowSwitchComponent 14.0 MiB 0.18 ms
Input props
[
  "label" => "Dynamic lists"
  "settingsKey" => "KBIN_GENERAL_DYNAMIC_LISTS"
]
Attributes
[]
Component
App\Twig\Components\SettingsRowSwitchComponent {#6390
  +label: "Dynamic lists"
  +help: ""
  +settingsKey: "KBIN_GENERAL_DYNAMIC_LISTS"
  +defaultValue: false
  +reloadRequired: true
}
settings_row_switch App\Twig\Components\SettingsRowSwitchComponent 14.0 MiB 0.12 ms
Input props
[
  "label" => "Rounded edges"
  "settingsKey" => "KBIN_GENERAL_ROUNDED_EDGES"
]
Attributes
[]
Component
App\Twig\Components\SettingsRowSwitchComponent {#6453
  +label: "Rounded edges"
  +help: ""
  +settingsKey: "KBIN_GENERAL_ROUNDED_EDGES"
  +defaultValue: false
  +reloadRequired: true
}
settings_row_switch App\Twig\Components\SettingsRowSwitchComponent 14.0 MiB 0.13 ms
Input props
[
  "label" => "Infinite scrolling"
  "help" => "Automatically load more content when you reach the bottom of the page."
  "settingsKey" => "KBIN_GENERAL_INFINITE_SCROLL"
]
Attributes
[]
Component
App\Twig\Components\SettingsRowSwitchComponent {#6509
  +label: "Infinite scrolling"
  +help: "Automatically load more content when you reach the bottom of the page."
  +settingsKey: "KBIN_GENERAL_INFINITE_SCROLL"
  +defaultValue: false
  +reloadRequired: true
}
settings_row_switch App\Twig\Components\SettingsRowSwitchComponent 14.0 MiB 0.13 ms
Input props
[
  "label" => "Sticky navbar"
  "help" => "The navbar will stick to the top of the page when you scroll down."
  "settingsKey" => "KBIN_GENERAL_FIXED_NAVBAR"
]
Attributes
[]
Component
App\Twig\Components\SettingsRowSwitchComponent {#6568
  +label: "Sticky navbar"
  +help: "The navbar will stick to the top of the page when you scroll down."
  +settingsKey: "KBIN_GENERAL_FIXED_NAVBAR"
  +defaultValue: false
  +reloadRequired: true
}
settings_row_switch App\Twig\Components\SettingsRowSwitchComponent 14.0 MiB 0.12 ms
Input props
[
  "label" => "Show top bar"
  "settingsKey" => "KBIN_GENERAL_TOPBAR"
]
Attributes
[]
Component
App\Twig\Components\SettingsRowSwitchComponent {#6624
  +label: "Show top bar"
  +help: ""
  +settingsKey: "KBIN_GENERAL_TOPBAR"
  +defaultValue: false
  +reloadRequired: true
}
settings_row_switch App\Twig\Components\SettingsRowSwitchComponent 14.0 MiB 0.13 ms
Input props
[
  "label" => "Turbo mode (experimental)"
  "settingsKey" => "KBIN_GENERAL_TURBO"
]
Attributes
[]
Component
App\Twig\Components\SettingsRowSwitchComponent {#6680
  +label: "Turbo mode (experimental)"
  +help: ""
  +settingsKey: "KBIN_GENERAL_TURBO"
  +defaultValue: false
  +reloadRequired: true
}
user_settings_row_switch App\Twig\Components\UserSettingsRowSwitchComponent 14.0 MiB 0.26 ms
Input props
[
  "label" => "Mark new comments"
  "settingsKey" => "KBIN_MARK_NEW_COMMENTS"
]
Attributes
[]
Component
App\Twig\Components\UserSettingsRowSwitchComponent {#6738
  +label: "Mark new comments"
  +help: ""
  +settingsKey: "KBIN_MARK_NEW_COMMENTS"
  +defaultValue: false
  +reloadRequired: true
}
settings_row_switch App\Twig\Components\SettingsRowSwitchComponent 14.0 MiB 5.38 ms
Input props
[
  "label" => "Show "Support Us" block"
  "settingsKey" => "KBIN_GENERAL_SUPPORT_US_BLOCK"
  "defaultValue" => true
]
Attributes
[]
Component
App\Twig\Components\SettingsRowSwitchComponent {#6801
  +label: "Show "Support Us" block"
  +help: ""
  +settingsKey: "KBIN_GENERAL_SUPPORT_US_BLOCK"
  +defaultValue: true
  +reloadRequired: true
}
user_settings_row_switch App\Twig\Components\UserSettingsRowSwitchComponent 14.0 MiB 0.25 ms
Input props
[
  "label" => "Show subscribed users"
  "settingsKey" => "KBIN_SUB_CHANNEL_USERS"
]
Attributes
[]
Component
App\Twig\Components\UserSettingsRowSwitchComponent {#6859
  +label: "Show subscribed users"
  +help: ""
  +settingsKey: "KBIN_SUB_CHANNEL_USERS"
  +defaultValue: false
  +reloadRequired: true
}
user_settings_row_switch App\Twig\Components\UserSettingsRowSwitchComponent 14.0 MiB 0.14 ms
Input props
[
  "label" => "Show subscribed magazines"
  "settingsKey" => "KBIN_SUB_CHANNEL_MAGAZINES"
]
Attributes
[]
Component
App\Twig\Components\UserSettingsRowSwitchComponent {#6915
  +label: "Show subscribed magazines"
  +help: ""
  +settingsKey: "KBIN_SUB_CHANNEL_MAGAZINES"
  +defaultValue: false
  +reloadRequired: true
}
user_settings_row_switch App\Twig\Components\UserSettingsRowSwitchComponent 14.0 MiB 0.14 ms
Input props
[
  "label" => "Show subscribed domains"
  "settingsKey" => "KBIN_SUB_CHANNEL_DOMAINS"
]
Attributes
[]
Component
App\Twig\Components\UserSettingsRowSwitchComponent {#6971
  +label: "Show subscribed domains"
  +help: ""
  +settingsKey: "KBIN_SUB_CHANNEL_DOMAINS"
  +defaultValue: false
  +reloadRequired: true
}
settings_row_switch App\Twig\Components\SettingsRowSwitchComponent 14.0 MiB 0.13 ms
Input props
[
  "label" => "Auto media preview"
  "help" => "Automatically expand media previews."
  "settingsKey" => "KBIN_ENTRIES_SHOW_PREVIEW"
]
Attributes
[]
Component
App\Twig\Components\SettingsRowSwitchComponent {#7027
  +label: "Auto media preview"
  +help: "Automatically expand media previews."
  +settingsKey: "KBIN_ENTRIES_SHOW_PREVIEW"
  +defaultValue: false
  +reloadRequired: true
}
settings_row_switch App\Twig\Components\SettingsRowSwitchComponent 14.0 MiB 0.15 ms
Input props
[
  "label" => "Compact view"
  "settingsKey" => "KBIN_ENTRIES_COMPACT"
]
Attributes
[]
Component
App\Twig\Components\SettingsRowSwitchComponent {#7083
  +label: "Compact view"
  +help: ""
  +settingsKey: "KBIN_ENTRIES_COMPACT"
  +defaultValue: false
  +reloadRequired: true
}
settings_row_switch App\Twig\Components\SettingsRowSwitchComponent 14.0 MiB 0.14 ms
Input props
[
  "label" => "Show users’ avatars"
  "settingsKey" => "KBIN_ENTRIES_SHOW_USERS_AVATARS"
]
Attributes
[]
Component
App\Twig\Components\SettingsRowSwitchComponent {#7139
  +label: "Show users’ avatars"
  +help: ""
  +settingsKey: "KBIN_ENTRIES_SHOW_USERS_AVATARS"
  +defaultValue: false
  +reloadRequired: true
}
settings_row_switch App\Twig\Components\SettingsRowSwitchComponent 14.0 MiB 0.12 ms
Input props
[
  "label" => "Show magazines’ icons"
  "settingsKey" => "KBIN_ENTRIES_SHOW_MAGAZINES_ICONS"
]
Attributes
[]
Component
App\Twig\Components\SettingsRowSwitchComponent {#7195
  +label: "Show magazines’ icons"
  +help: ""
  +settingsKey: "KBIN_ENTRIES_SHOW_MAGAZINES_ICONS"
  +defaultValue: false
  +reloadRequired: true
}
settings_row_switch App\Twig\Components\SettingsRowSwitchComponent 14.0 MiB 0.13 ms
Input props
[
  "label" => "Show thumbnails"
  "settingsKey" => "KBIN_ENTRIES_SHOW_THUMBNAILS"
  "defaultValue" => true
]
Attributes
[]
Component
App\Twig\Components\SettingsRowSwitchComponent {#7251
  +label: "Show thumbnails"
  +help: ""
  +settingsKey: "KBIN_ENTRIES_SHOW_THUMBNAILS"
  +defaultValue: true
  +reloadRequired: true
}
settings_row_switch App\Twig\Components\SettingsRowSwitchComponent 14.0 MiB 0.97 ms
Input props
[
  "label" => "Auto media preview"
  "help" => "Automatically expand media previews."
  "settingsKey" => "KBIN_POSTS_SHOW_PREVIEW"
]
Attributes
[]
Component
App\Twig\Components\SettingsRowSwitchComponent {#7307
  +label: "Auto media preview"
  +help: "Automatically expand media previews."
  +settingsKey: "KBIN_POSTS_SHOW_PREVIEW"
  +defaultValue: false
  +reloadRequired: true
}
settings_row_switch App\Twig\Components\SettingsRowSwitchComponent 14.0 MiB 0.14 ms
Input props
[
  "label" => "Show users’ avatars"
  "settingsKey" => "KBIN_POSTS_SHOW_USERS_AVATARS"
  "defaultValue" => true
]
Attributes
[]
Component
App\Twig\Components\SettingsRowSwitchComponent {#7363
  +label: "Show users’ avatars"
  +help: ""
  +settingsKey: "KBIN_POSTS_SHOW_USERS_AVATARS"
  +defaultValue: true
  +reloadRequired: true
}
settings_row_enum App\Twig\Components\SettingsRowEnumComponent 14.0 MiB 0.21 ms
Input props
[
  "label" => "Comment reply position"
  "help" => "Display the comment reply form either at the top or bottom of the page. When 'infinite scroll' is enabled the position will always appear at the top."
  "settingsKey" => "KBIN_COMMENTS_REPLY_POSITION"
  "values" => [
    [
      "name" => "top"
      "value" => "TOP"
    ]
    [
      "name" => "bottom"
      "value" => "BOTTOM"
    ]
  ]
  "defaultValue" => "TOP"
]
Attributes
[]
Component
App\Twig\Components\SettingsRowEnumComponent {#7419
  +label: "Comment reply position"
  +help: "Display the comment reply form either at the top or bottom of the page. When 'infinite scroll' is enabled the position will always appear at the top."
  +settingsKey: "KBIN_COMMENTS_REPLY_POSITION"
  +values: [
    [
      "name" => "top"
      "value" => "TOP"
    ]
    [
      "name" => "bottom"
      "value" => "BOTTOM"
    ]
  ]
  +defaultValue: "TOP"
  +reloadRequired: true
}
settings_row_switch App\Twig\Components\SettingsRowSwitchComponent 14.0 MiB 0.13 ms
Input props
[
  "label" => "Show Comment Avatars"
  "help" => "Display/hide user avatars when viewing comments on a single thread or post."
  "settingsKey" => "KBIN_COMMENTS_SHOW_USER_AVATAR"
  "defaultValue" => true
]
Attributes
[]
Component
App\Twig\Components\SettingsRowSwitchComponent {#7477
  +label: "Show Comment Avatars"
  +help: "Display/hide user avatars when viewing comments on a single thread or post."
  +settingsKey: "KBIN_COMMENTS_SHOW_USER_AVATAR"
  +defaultValue: true
  +reloadRequired: true
}
date App\Twig\Components\DateComponent 14.0 MiB 0.13 ms
Input props
[
  "date" => DateTimeImmutable @1697197941 {#272
    date: 2023-10-13 13:52:21.0 +02:00
  }
]
Attributes
[]
Component
App\Twig\Components\DateComponent {#7550
  +date: DateTimeImmutable @1697197941 {#272
    date: 2023-10-13 13:52:21.0 +02:00
  }
}
related_magazines App\Twig\Components\RelatedMagazinesComponent 14.0 MiB 2.09 ms
Input props
[
  "magazine" => null
  "tag" => null
]
Attributes
[]
Component
App\Twig\Components\RelatedMagazinesComponent {#7637
  +limit: 4
  +tag: null
  +magazine: null
  +type: "random"
  +title: "random_magazines"
  +refreshedRandom: false
  -repository: App\Repository\MagazineRepository {#2439 …}
  -cache: Symfony\Component\Cache\Adapter\TraceableTagAwareAdapter {#600 …}
  -twig: Twig\Environment {#1252 …}
  -requestStack: Symfony\Component\HttpFoundation\RequestStack {#1328 …}
}
active_users App\Twig\Components\ActiveUsersComponent 14.0 MiB 0.23 ms
Input props
[
  "magazine" => null
]
Attributes
[]
Component
App\Twig\Components\ActiveUsersComponent {#7702
  +magazine: null
  -userRepository: App\Repository\UserRepository {#603 …}
  -cache: Symfony\Component\Cache\Adapter\TraceableTagAwareAdapter {#600 …}
  -twig: Twig\Environment {#1252 …}
  -requestStack: Symfony\Component\HttpFoundation\RequestStack {#1328 …}
}
related_categories App\Twig\Components\RelatedCategoriesComponent 14.0 MiB 1.57 ms
Input props
[
  "magazine" => null
  "tag" => null
]
Attributes
[]
Component
App\Twig\Components\RelatedCategoriesComponent {#7761
  +limit: 4
  +tag: null
  +magazine: null
  +type: "random"
  +title: "random_categories"
  +refreshedRandom: false
  -repository: App\Repository\CategoryRepository {#7762 …}
  -cache: Symfony\Component\Cache\Adapter\TraceableTagAwareAdapter {#600 …}
  -twig: Twig\Environment {#1252 …}
  -requestStack: Symfony\Component\HttpFoundation\RequestStack {#1328 …}
}
related_posts App\Twig\Components\RelatedPostsComponent 14.0 MiB 4.32 ms
Input props
[
  "magazine" => null
  "tag" => null
]
Attributes
[]
Component
App\Twig\Components\RelatedPostsComponent {#7831
  +limit: 4
  +tag: null
  +magazine: null
  +type: "random"
  +post: null
  +title: "random_posts"
  +refreshedRandom: false
  -repository: App\Repository\PostRepository {#1449 …}
  -cache: Symfony\Component\Cache\Adapter\TraceableTagAwareAdapter {#600 …}
  -twig: Twig\Environment {#1252 …}
  -requestStack: Symfony\Component\HttpFoundation\RequestStack {#1328 …}
  -mentionManager: App\Service\MentionManager {#1631 …}
}
related_entries App\Twig\Components\RelatedEntriesComponent 14.0 MiB 2.50 ms
Input props
[
  "magazine" => null
  "tag" => null
]
Attributes
[]
Component
App\Twig\Components\RelatedEntriesComponent {#7900
  +limit: 4
  +tag: null
  +magazine: null
  +type: "random"
  +entry: null
  +title: "random_entries"
  +refreshedRandom: false
  -repository: App\Repository\EntryRepository {#1766 …}
  -cache: Symfony\Component\Cache\Adapter\TraceableTagAwareAdapter {#600 …}
  -twig: Twig\Environment {#1252 …}
  -requestStack: Symfony\Component\HttpFoundation\RequestStack {#1328 …}
  -mentionManager: App\Service\MentionManager {#1631 …}
}
support_us_block App\Twig\Components\SupportUsBlock 14.0 MiB 0.50 ms
Input props
[]
Attributes
[]
Component
App\Twig\Components\SupportUsBlock {#7969
  +subject: ? App\Entity\Contracts\VotableInterface
  +url: ? string
  -twig: Twig\Environment {#1252 …}
  -cache: Symfony\Component\Cache\Adapter\TraceableTagAwareAdapter {#600 …}
  -requestStack: Symfony\Component\HttpFoundation\RequestStack {#1328 …}
  -partnerBlockRepository: App\Repository\PartnerBlockRepository {#7970 …}
}
featured_magazines App\Twig\Components\FeaturedMagazinesComponent 14.0 MiB 0.85 ms
Input props
[
  "magazine" => null
]
Attributes
[]
Component
App\Twig\Components\FeaturedMagazinesComponent {#8062
  +magazine: null
  -twig: Twig\Environment {#1252 …}
  -repository: App\Repository\MagazineRepository {#2439 …}
}