kiến thức Tổng hợp những addon chất cho Firefox / Chromium

search 1 hồi hóa ra là ko có native client cho M1. Nên em cài brew ko tương thích, chỉ có mpv native cho interl mới có app link với exernal link thím nạ. Cảm ơn thím, đành chờ thời bản mới vại.
Cái folder cài đặt của homebrew trên mac m1 nó thay đổi so với mac intel đó. T nghĩ external link vẫn được thôi nhưng mà xài iina có sẵn addon pop up video cho gọn, mấy tinh chỉnh khác có thể thêm vào config của mpv hay yt-dlp cũng được

via theNEXTvoz for iPhone
 
trên mac thì dùng iina cũng dùng nhân mpv đấy, có sẵn extension pop up video
Cơ bản mình muốn add mấy cái tiện ích cho mpv như ở đây là playlist rồi tự động tìm sub
Cái folder cài đặt của homebrew trên mac m1 nó thay đổi so với mac intel đó. T nghĩ external link vẫn được thôi nhưng mà xài iina có sẵn addon pop up video cho gọn, mấy tinh chỉnh khác có thể thêm vào config của mpv hay yt-dlp cũng được

via theNEXTvoz for iPhone
đúng rồi. cái mình cần mấy cái tinh chỉnh ở đây, ví dụ: hiện context link mở trực tiếp, auto sub, đánh dấu đã xem, thumbfast.. Externsion open in iina trên firefox loading ổn định ngon, dễ setup, nhưng nếu chỉ loading thì coi trực tiếp cho rồi
 
Last edited:
Copy chủ thớt cho khỏe ấy thím. Chứ mò mới vã quá. Mới thử vài agrument đã tạch. :rolleyes:
bác tạo cấu trúc folder mpv trong home/.config/ rồi tinh chỉnh như bình thường (mpv.conf, folder scripts, script-opts, shaders). trong iina bật cái use mpv's configuration folder lên thử
 
cơ bản là đang nói chuyện mấy thằng bảo brave sờ cu rờ ti này nọ thì security patch cũng là từ chromium thì hơn đếch gì ông chrome đâu còn privacy thì thằng nào cũng mất dạy cả lo sợ thì cứ phải tự tắt (firefox dễ hơn nhưng thằng mozilla cũng không tốt đẹp gì lul). rust thì mấy ông nội kia migrate qua xong viết unsafe rust thì cũng vậy nên lỗi hay không vẫn là chuyện của các anh kĩ sư gu gồ
Dùng chung kho extension của Chrome thì nguy cơ dính chưởng cũng vậy thôi, theo nghiên cứu đưa ra thì gần 50% số extension của Chrome có khả năng đã hoặc sẽ trở thành malware tùy tâm thằng phát triển vì quyền thực thi của số extension đó có thể ăn cắp dữ liệu người dùng bất cứ lúc nào, vài ví dụ điển hình thực tế:


Nhất là cái thứ 2, nó ăn cắp cookies của người dùng trên tất cả các trang rồi gửi vào database của thằng viết extension, tùy tâm nếu nó thích làm gì thì làm. Đến cả hacker lẫy lừng một thời còn bị dính malware này của Chrome, thậm chí có người bị thằng dev nó đăng nhập vào tài khoản ngân hàng chuyển tiền, có người có email bị biến thành ổ spam.

Khi mà kho extension có tỉ lệ chọi bị dính malware cao như vậy, từ "bảo mật" với Chrome thật sự vô nghĩa.

Cái lý do chính mà Google nó phải ra Manifest V3 có 2 đại ý:
  • Thứ nhất là tiêu diệt addon chặn quảng cáo, ảnh hưởng doanh thu Google
  • Thứ hai là sau khi ra Manifest V3, các addon malware dùng Manifest V2 sẽ phải viết lại, đó gọi là một mũi tên bắn trung 2 con tờ rym

Vài chủ đề tham khảo:
 
Dùng chung kho extension của Chrome thì nguy cơ dính chưởng cũng vậy thôi, theo nghiên cứu đưa ra thì gần 50% số extension của Chrome có khả năng đã hoặc sẽ trở thành malware tùy tâm thằng phát triển vì quyền thực thi của số extension đó có thể ăn cắp dữ liệu người dùng bất cứ lúc nào, vài ví dụ điển hình thực tế:


Nhất là cái thứ 2, nó ăn cắp cookies của người dùng trên tất cả các trang rồi gửi vào database của thằng viết extension, tùy tâm nếu nó thích làm gì thì làm. Đến cả hacker lẫy lừng một thời còn bị dính malware này của Chrome, thậm chí có người bị thằng dev nó đăng nhập vào tài khoản ngân hàng chuyển tiền, có người có email bị biến thành ổ spam.

Khi mà kho extension có tỉ lệ chọi bị dính malware cao như vậy, từ "bảo mật" với Chrome thật sự vô nghĩa.

Cái lý do chính mà Google nó phải ra Manifest V3 có 2 đại ý:
  • Thứ nhất là tiêu diệt addon chặn quảng cáo, ảnh hưởng doanh thu Google
  • Thứ hai là sau khi ra Manifest V3, các addon malware dùng Manifest V2 sẽ phải viết lại, đó gọi là một mũi tên bắn trung 2 con tờ rym

Vài chủ đề tham khảo:
Malicious addon thì dùng cái gì cũng sẽ có không né được nên lúc cài đầu tiên phải tìm hiểu độ legit của nó dùng đồ open source thì an toàn hơn (không phải 100%) còn sợ quá thì manually install extension lul
Edit: nói chung là đã dùng internet thì không thể cứ trông chờ anh nào đấy bảo vệ mình khỏi kẻ xấu được, kiến thức với ý thức luôn là quan trọng nhất
 
Ngủ dậy nhận hàng nhé :D

Đã viết xong plugin giúp MPV gửi watchtime (để Youtube nó ghi nhớ rằng video này đã xem), tạo một file tên markwatched.lua, rồi copy toàn bộ đống code sau vào sau đó sửa lại chút:

Code:
local msg = require 'mp.msg'

local function ytdlWatch()
    local path = mp.get_property("path", "")
    -- Use this website to escape LUA String Path (about:support -> Open Profile Folder -> Copy -> Paste): https://onlinestringtools.com/escape-string
    -- Then replace D:\\PB\\Data\\profilet with yours
    local ffpath = "firefox:D:\\PB\\Data\\profilet"
    local command = { "yt-dlp", "--cookies-from-browser", ffpath, "--mark-watched", "-vU", "--simulate", path }
    local ret = mp.command_native({
        name = "subprocess",
        args = command,
        capture_stdout = true,
        capture_stderr = true
    })
    msg.info(ret.stdout)
    msg.info(ret.stderr)
end

--mp.register_event("start-file", ytdlWatch)
mp.register_event("file-loaded", ytdlWatch)

Thay thế đoạn D:\\PB\\Data\\profilet với đường dẫn tới profile Firefox của bạn bằng cách vào about:support -> Open Profile Folder -> Copy cái đường dẫn rồi mở trang này lên https://onlinestringtools.com/escape-string, Paste vào nó sẽ ra cái đường dẫn được escape kiểu D:\\PB\\Data\\profilet, thay thế cái đường dẫn mặc định D:\\PB\\Data\\profilet thành của bạn là xong.

Để file markwatched.lua vào thư mục scripts của MPV.

Giờ xem Youtube và nhận hậu quả.

Trái đắng: https://gfycat.com/BoringAmusingHoneybadger


Hiện tượng: Cũng hiếm khi Youtube nó từ chối nhận thông tin lịch sử từ MPV thì Thoát tài khoản Youtube ra, xóa sạch Cookie từ Youtube đi rồi đăng nhập lại là hết. Một trường hợp đã xử lý là @Ray Gunn

Chúc vui :D
bác ơi ytb của em làm theo rồi mà cũng không nhận lịch sử từ mpv
 
có tui làm cả nó rồi á
Bạn thử thoát tài khoản Youtube ra, xóa sạch cookies Youtube (click vào cái khóa ở thanh địa chỉ -> Clear Cookie and Site Data..), rồi kiểm tra lại.

Ngoài ra cho mình xem toàn bộ nội dung file markwatched.lua, ngoài ra cấu trúc folder MPV dùng lệnh tree nữa, cách thức:

Code:
D:\mpv>tree
Folder PATH listing for volume Local Disk
Volume serial number is 3249-5F00
D:.
├───doc
├───gallery-dl
├───installer
├───mpv
├───portable_config
│   ├───fonts
│   ├───screenshots
│   ├───script-opts
│   │   ├───rejected
│   │   └───temp
│   ├───script-settings
│   ├───scripts
│   │   ├───promising
│   │   ├───rejected
│   │   ├───rejected2
│   │   │   ├───RC
│   │   │   └───uosc_shared
│   │   │       ├───elements
│   │   │       └───lib
│   │   └───temp
│   ├───scripts3
│   │   └───modules.js
│   ├───watch_later
│   └───ytdl
│       └───download
├───portable_config2
│   ├───fonts
│   ├───screenshots
│   ├───script-opts
│   │   ├───rejected
│   │   └───temp
│   ├───script-settings
│   ├───scripts
│   │   ├───promising
│   │   ├───rejected
│   │   ├───rejected2
│   │   │   └───uosc_shared
│   │   │       ├───elements
│   │   │       └───lib
│   │   ├───temp
│   │   └───uosc_shared
│   │       ├───elements
│   │       └───lib
│   ├───scripts3
│   │   └───modules.js
│   ├───watch_later
│   └───ytdl
│       └───download
 
Bạn thử thoát tài khoản Youtube ra, xóa sạch cookies Youtube (click vào cái khóa ở thanh địa chỉ -> Clear Cookie and Site Data..), rồi kiểm tra lại.

Ngoài ra cho mình xem toàn bộ nội dung file markwatched.lua, ngoài ra cấu trúc folder MPV dùng lệnh tree nữa, cách thức:

Code:
D:\mpv>tree
Folder PATH listing for volume Local Disk
Volume serial number is 3249-5F00
D:.
├───doc
├───gallery-dl
├───installer
├───mpv
├───portable_config
│   ├───fonts
│   ├───screenshots
│   ├───script-opts
│   │   ├───rejected
│   │   └───temp
│   ├───script-settings
│   ├───scripts
│   │   ├───promising
│   │   ├───rejected
│   │   ├───rejected2
│   │   │   ├───RC
│   │   │   └───uosc_shared
│   │   │       ├───elements
│   │   │       └───lib
│   │   └───temp
│   ├───scripts3
│   │   └───modules.js
│   ├───watch_later
│   └───ytdl
│       └───download
├───portable_config2
│   ├───fonts
│   ├───screenshots
│   ├───script-opts
│   │   ├───rejected
│   │   └───temp
│   ├───script-settings
│   ├───scripts
│   │   ├───promising
│   │   ├───rejected
│   │   ├───rejected2
│   │   │   └───uosc_shared
│   │   │       ├───elements
│   │   │       └───lib
│   │   ├───temp
│   │   └───uosc_shared
│   │       ├───elements
│   │       └───lib
│   ├───scripts3
│   │   └───modules.js
│   ├───watch_later
│   └───ytdl
│       └───download
em cũng đã thử xoá sạch rồi không được, mở cả tab private thử login để check cũng kh đc luôn.
hiện tại thì em không cầm pc để chiều tối em nhờ bác chỉ giáo tiếp.
nhưng em nghĩ chắc do cái khác thôi chứ theo hướng dẫn bác em làm rồi
 
em cũng đã thử xoá sạch rồi không được, mở cả tab private thử login để check cũng kh đc luôn.
hiện tại thì em không cầm pc để chiều tối em nhờ bác chỉ giáo tiếp.
nhưng em nghĩ chắc do cái khác thôi chứ theo hướng dẫn bác em làm rồi
Xóa sạch thì ok nhưng mở private không có tác dụng gì đâu vì MPV với yt-dlp nó kéo cookies từ Firefox để đăng nhập kết nối 100% với Youtube và nhiều dịch vụ khác như Dailymotion, Netflix, Crunchyroll... mà cookie trong chế độ private nó lưu trên RAM không kéo được và đây là điều kiện tuyệt đối (không cookies không đánh dấu được đã xem).

Có gì bạn cứ test thử qua (vài điểm cần lưu ý là thư mục dẫn tới profile Firefox có dấu cách không, thư mục portable_config đã đúng cấu trúc chưa..), nếu không được thì dùng AnyDesk mình chỉnh xem (Portable nặng có vài MB): https://anydesk.com/en/downloads/windows
 
Tiện đây mình làm một bài về cấu trúc MPV với portable_config trên Windows vì hiện tại ở #1 chưa có nên nếu dùng khác mình nhiều khi sẽ khó làm theo hướng dẫn, đây là cấu trúc chung của thread, không có đuôi file nghĩa là folder, không bôi đen là tùy ý (có cũng được không có cũng ok hoặc có chỉ để mở rộng tính năng):

Ví dụ đây là thư mục mpv nằm ở D:\mpv
├─── portable_config
│ ├─── mpv.conf
│ ├─── input.conf
│ ├─── scripts
│ ├─── script-opts
│ ├─── fonts
│ ├─── shaders
├─── streamlink
├─── mpv.exe
├─── yt-dlp.exe
├─── ffmpeg.exe
├─── yt-dlp.conf
├─── streamlink.conf

Lệnh tree của Windows cùi bắp nên phải sửa nhiều thứ. Đã update lên #1.
 
Last edited:
Bạn thử thoát tài khoản Youtube ra, xóa sạch cookies Youtube (click vào cái khóa ở thanh địa chỉ -> Clear Cookie and Site Data..), rồi kiểm tra lại.

Ngoài ra cho mình xem toàn bộ nội dung file markwatched.lua, ngoài ra cấu trúc folder MPV dùng lệnh tree nữa, cách thức:

Code:
D:\mpv>tree
Folder PATH listing for volume Local Disk
Volume serial number is 3249-5F00
D:.
├───doc
├───gallery-dl
├───installer
├───mpv
├───portable_config
│   ├───fonts
│   ├───screenshots
│   ├───script-opts
│   │   ├───rejected
│   │   └───temp
│   ├───script-settings
│   ├───scripts
│   │   ├───promising
│   │   ├───rejected
│   │   ├───rejected2
│   │   │   ├───RC
│   │   │   └───uosc_shared
│   │   │       ├───elements
│   │   │       └───lib
│   │   └───temp
│   ├───scripts3
│   │   └───modules.js
│   ├───watch_later
│   └───ytdl
│       └───download
├───portable_config2
│   ├───fonts
│   ├───screenshots
│   ├───script-opts
│   │   ├───rejected
│   │   └───temp
│   ├───script-settings
│   ├───scripts
│   │   ├───promising
│   │   ├───rejected
│   │   ├───rejected2
│   │   │   └───uosc_shared
│   │   │       ├───elements
│   │   │       └───lib
│   │   ├───temp
│   │   └───uosc_shared
│   │       ├───elements
│   │       └───lib
│   ├───scripts3
│   │   └───modules.js
│   ├───watch_later
│   └───ytdl
│       └───download

Code:
-- "D:\mpv\portable_config\scripts\markwatched.lua"

local msg = require 'mp.msg'

local function ytdlWatch()
    local path = mp.get_property("path", "")
    -- Use this website to escape LUA String Path (about:support -> Open Profile Folder -> Copy -> Paste): https://onlinestringtools.com/escape-string
    -- Then replace D:\\PB\\Data\\profilet with yours
    local ffpath = "firefox:D:\\Firefox\\PortableData\\AppData\\Mozilla\\Firefox\\Profiles\\26ci9w4y.default-1674881406111"
    local command = { "yt-dlp", "--cookies-from-browser", ffpath, "--mark-watched", "-vU", "--simulate", path }
    local ret = mp.command_native({
        name = "subprocess",
        args = command,
        capture_stdout = true,
        capture_stderr = true
    })
    msg.info(ret.stdout)
    msg.info(ret.stderr)
end

--mp.register_event("start-file", ytdlWatch)
mp.register_event("file-loaded", ytdlWatch)

Code:
-- D:\mpv>tree

D:.
├───app
├───certifi
├───Cryptodome
│   ├───Cipher
│   ├───Hash
│   ├───Math
│   ├───Protocol
│   ├───PublicKey
│   └───Util
├───doc
├───downloads
├───installer
├───mpv
├───node
│   ├───x64
│   └───x86
├───portable_config
│   ├───fonts
│   ├───script-opts
│   └───scripts
│       └───uosc_shared
│           ├───elements
│           └───lib
├───streamlink
│   ├───bin
│   ├───ffmpeg
│   ├───pkgs
│   │   ├───certifi
│   │   │   └───__pycache__
│   │   ├───certifi-2022.12.7.dist-info
│   │   ├───charset_normalizer
│   │   │   ├───assets
│   │   │   │   └───__pycache__
│   │   │   ├───cli
│   │   │   └───__pycache__
│   │   ├───charset_normalizer-3.0.1.dist-info
│   │   ├───Crypto
│   │   │   ├───Cipher
│   │   │   │   └───__pycache__
│   │   │   ├───Hash
│   │   │   │   └───__pycache__
│   │   │   ├───IO
│   │   │   ├───Math
│   │   │   │   └───__pycache__
│   │   │   ├───Protocol
│   │   │   │   └───__pycache__
│   │   │   ├───PublicKey
│   │   │   │   └───__pycache__
│   │   │   ├───Random
│   │   │   │   └───__pycache__
│   │   │   ├───SelfTest
│   │   │   │   ├───Cipher
│   │   │   │   ├───Hash
│   │   │   │   ├───IO
│   │   │   │   ├───Math
│   │   │   │   ├───Protocol
│   │   │   │   ├───PublicKey
│   │   │   │   ├───Random
│   │   │   │   ├───Signature
│   │   │   │   └───Util
│   │   │   ├───Signature
│   │   │   ├───Util
│   │   │   │   └───__pycache__
│   │   │   └───__pycache__
│   │   ├───idna
│   │   │   └───__pycache__
│   │   ├───idna-3.4.dist-info
│   │   ├───isodate
│   │   │   ├───tests
│   │   │   └───__pycache__
│   │   ├───isodate-0.6.1.dist-info
│   │   ├───lxml
│   │   │   ├───html
│   │   │   ├───includes
│   │   │   │   ├───extlibs
│   │   │   │   ├───libexslt
│   │   │   │   ├───libxml
│   │   │   │   └───libxslt
│   │   │   ├───isoschematron
│   │   │   │   └───resources
│   │   │   │       ├───rng
│   │   │   │       └───xsl
│   │   │   │           └───iso-schematron-xslt1
│   │   │   └───__pycache__
│   │   ├───lxml-4.9.2.dist-info
│   │   ├───pycountry
│   │   │   ├───databases
│   │   │   ├───locales
│   │   │   │   ├───ab
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───ace
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───ach
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───af
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───ak
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───am
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───an
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───ar
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───as
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───ast
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───ay
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───az
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───ba
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───bar
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───be
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───bg
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───bi
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───bn
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───bn_BD
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───bn_IN
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───br
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───bs
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───byn
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───ca
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───ce
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───ch
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───chr
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───ckb
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───crh
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───cs
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───csb
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───cv
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───cy
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───da
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───de
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───dv
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───dz
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───ee
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───el
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───en
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───eo
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───es
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───et
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───eu
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───fa
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───ff
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───fi
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───fil
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───fo
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───fr
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───frp
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───fur
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───fy
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───ga
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───gez
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───gl
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───gn
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───gu
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───gv
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───ha
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───haw
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───he
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───hi
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───hr
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───ht
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───hu
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───hy
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───ia
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───id
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───io
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───is
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───it
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───iu
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───ja
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───jam
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───ka
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───kab
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───ki
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───kk
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───kl
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───km
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───kmr
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───kn
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───ko
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───kok
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───ku
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───kv
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───kw
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───ky
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───lo
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───lt
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───lv
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───mai
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───mhr
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───mi
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───mk
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───ml
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───mn
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───mo
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───mr
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───ms
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───mt
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───my
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───na
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───nah
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───nb
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───nb_NO
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───ne
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───nl
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───nn
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───nso
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───nv
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───oc
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───or
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───pa
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───pap
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───pi
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───pl
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───ps
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───pt
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───pt_BR
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───ro
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───ru
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───rw
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───sc
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───sd
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───si
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───sk
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───sl
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───so
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───son
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───sq
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───sr
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───sr@latin
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───sv
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───sw
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───ta
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───te
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───tg
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───th
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───ti
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───tig
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───tk
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───tl
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───tr
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───tt
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───tt@iqtelif
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───tzm
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───ug
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───uk
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───ur
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───uz
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───ve
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───vi
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───wa
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───wal
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───wo
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───xh
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───yo
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───zh_CN
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───zh_Hans
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───zh_Hant
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───zh_HK
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   ├───zh_TW
│   │   │   │   │   └───LC_MESSAGES
│   │   │   │   └───zu
│   │   │   │       └───LC_MESSAGES
│   │   │   ├───tests
│   │   │   └───__pycache__
│   │   ├───pycountry-22.3.5.dist-info
│   │   ├───pycryptodome-3.17.dist-info
│   │   ├───PySocks-1.7.1.dist-info
│   │   ├───requests
│   │   │   └───__pycache__
│   │   ├───requests-2.28.2.dist-info
│   │   ├───six-1.16.0.dist-info
│   │   ├───streamlink
│   │   │   ├───packages
│   │   │   │   └───__pycache__
│   │   │   ├───plugin
│   │   │   │   ├───api
│   │   │   │   │   ├───validate
│   │   │   │   │   │   └───__pycache__
│   │   │   │   │   └───__pycache__
│   │   │   │   └───__pycache__
│   │   │   ├───plugins
│   │   │   │   └───__pycache__
│   │   │   ├───stream
│   │   │   │   └───__pycache__
│   │   │   ├───utils
│   │   │   │   └───__pycache__
│   │   │   └───__pycache__
│   │   ├───streamlink-5.3.1.dist-info
│   │   ├───streamlink_cli
│   │   │   ├───utils
│   │   │   │   └───__pycache__
│   │   │   └───__pycache__
│   │   ├───urllib3
│   │   │   ├───contrib
│   │   │   │   ├───_securetransport
│   │   │   │   └───__pycache__
│   │   │   ├───packages
│   │   │   │   ├───backports
│   │   │   │   └───__pycache__
│   │   │   ├───util
│   │   │   │   └───__pycache__
│   │   │   └───__pycache__
│   │   ├───urllib3-1.26.14.dist-info
│   │   ├───websocket
│   │   │   ├───tests
│   │   │   │   └───data
│   │   │   └───__pycache__
│   │   ├───websocket_client-1.5.1.dist-info
│   │   └───__pycache__
│   └───Python
│       └───DLLs
├───websockets
└───websockets-10.4.dist-info
 

Attachments

  • 1678275777476.png
    1678275777476.png
    188.7 KB · Views: 45
Last edited:
làm sao để ẩn cái nút extension của firefox nhỉ thím, mình chuyển extensions.unifiedExtensions.enabled thành false rồi mà k được
1678278438903.png
 
Tiện đây mình làm một bài về cấu trúc MPV với portable_config trên Windows vì hiện tại ở #1 chưa có nên nếu dùng khác mình nhiều khi sẽ khó làm theo hướng dẫn, đây là cấu trúc chung của thread, không có đuôi file nghĩa là folder, không bôi đen là tùy ý (có cũng được không có cũng ok hoặc có chỉ để mở rộng tính năng):

Ví dụ đây là thư mục MPV nằm ở D:\mpv

Code:
D:\mpv>tree
D:.
├───𝗺𝗽𝘃.𝗲𝘅𝗲
├───𝘆𝘁-𝗱𝗹𝗽.𝗲𝘅𝗲
├───𝗳𝗳𝗺𝗽𝗲𝗴.𝗲𝘅𝗲
├───streamlink
├───𝗽𝗼𝗿𝘁𝗮𝗯𝗹𝗲_𝗰𝗼𝗻𝗳𝗶𝗴
│   ├───𝗺𝗽𝘃.𝗰𝗼𝗻𝗳
│   ├───𝗶𝗻𝗽𝘂𝘁.𝗰𝗼𝗻𝗳
│   ├───𝘀𝗰𝗿𝗶𝗽𝘁𝘀
│   ├───script-opts

Lệnh tree của Windows cùi bắp nên phải sửa nhiều thứ. Đã update lên #1.
Fen tạo 1 cái thớt chuyên MPV được ko fen. Em chưa biết gì cả mà nghe fen quảng cáo thấy hay hay :shame:
 
Back
Top