Freetar ฟรอนต์เอนด์ทางเลือกสำหรับ ultimate-guitar.com
(github.com/kmille)- Freetar เป็นฟรอนต์เอนด์ทางเลือกแบบโอเพนซอร์สสำหรับ Ultimate Guitar โดยทำหน้าที่กับแท็บและคอร์ดของ Ultimate Guitar ในแบบเดียวกับที่ Invidious ทำกับ YouTube
- มาพร้อม ดีไซน์เรียบง่าย ไม่มีโฆษณา ป๊อปอัป AI หรือบล็อกเชน และเน้นความสามารถในการค้นหาและดูแท็บ
- คอร์ดที่บันทึกเป็นรายการโปรดจะถูกเก็บไว้ใน session storage โดยไม่ต้องมีบัญชี ไม่ถูกส่งไปยังเซิร์ฟเวอร์ และมีโหมดมืด การเลื่อนอัตโนมัติ มุมมองคอร์ดสำหรับพิมพ์ และฟังก์ชันป้องกันหน้าจอดับด้วย WakeLock API
- หลังติดตั้ง หากรันไฟล์ปฏิบัติการ
freetarโดยไม่ใส่พารามิเตอร์ ระบบจะทำงานที่0.0.0.0:22000และสามารถปรับพฤติกรรมการทำงานได้ด้วยตัวแปรแวดล้อมFREETAR_HOST,FREETAR_PORT,FREETAR_CACHE_TIMEOUT - งานในอนาคตประกอบด้วยการปรับปรุง UX บนมือถือ การแพ็กเป็น PWA การเก็บรายการโปรดแบบเข้ารหัสฝั่งเซิร์ฟเวอร์ และการแสดง QR code สำหรับแชร์แท็บ โดยแนะนำให้เสนอ issue ก่อนเพิ่มฟีเจอร์
Freetar ทำอะไร
- Freetar เป็นฟรอนต์เอนด์ทางเลือกแบบโอเพนซอร์สสำหรับ Ultimate Guitar
- บทบาทคล้ายกับ Invidious แต่เป้าหมายไม่ใช่ YouTube แต่เป็น Ultimate Guitar
- มี public instance ดังนี้
ฟีเจอร์ที่มี
- มี ดีไซน์เรียบง่าย ไม่มีโฆษณา ป๊อปอัป AI หรือบล็อกเชน
- ค้นหาและดูแท็บได้
- บันทึกคอร์ดที่ชอบเป็น favs ได้
- ข้อมูลทั้งหมดถูกเก็บใน session storage
- ไม่ถูกส่งไปยังเซิร์ฟเวอร์
- ไม่ต้องมีบัญชี
- รองรับ โหมดมืด
- รองรับการเลื่อนอัตโนมัติ
- มีประโยชน์สำหรับการพิมพ์คอร์ด
- สามารถแสดงคอร์ดได้
- ใช้ WakeLock API เพื่อป้องกันหน้าจอดับ
การติดตั้งและการรัน
- เมื่อติดตั้งสำเร็จ จะมีไฟล์ปฏิบัติการ
freetarอยู่ในPATH - หากรันโดยไม่ใส่พารามิเตอร์ จะเริ่มฟังที่
0.0.0.0:22000 - สามารถเปลี่ยนโฮสต์และพอร์ตได้ด้วยตัวแปรแวดล้อม
FREETAR_HOSTFREETAR_PORTFREETAR_CACHE_TIMEOUT: กำหนดเวลาที่จะแคชแท็บไว้ในหน่วยความจำ เพื่อลดการร้องขอไปยัง Ultimate Guitar- ค่าเริ่มต้นคือ
0 - ค่าเริ่มต้นทำงานแบบแคชไม่จำกัดเวลา
- ค่าเริ่มต้นคือ
วิธีเผยแพร่
- ติดตั้งได้เป็นแพ็กเกจ PyPI
- Package: https://pypi.org/project/freetar/
- คำสั่งติดตั้ง:
pip install freetar
- รันได้ด้วยอิมเมจ Docker
- Image: https://hub.docker.com/r/kmille2/freetar
- พอร์ตเริ่มต้นคือ
22000 - ตัวอย่างการรันคือ
sudo docker run -p 127.0.0.1:22000:22000 kmille2/freetar
- ใช้ Docker Compose ได้เช่นกัน
sudo docker compose up -d- สามารถเปลี่ยน bind port ได้ด้วยตัวแปรแวดล้อม
FREETAR_PORT
- แทนที่จะดึงอิมเมจจาก Docker Hub ก็สามารถ build จากโลคัลรีโพสิทอรีแล้วรันได้
docker compose builddocker compose up -d
สภาพแวดล้อมการพัฒนาและงานในอนาคต
- สภาพแวดล้อมการพัฒนาต้องใช้ uv
- ตัวอย่างการรันสำหรับพัฒนาคือ
FREETAR_CACHE_TIMEOUT=1 uv run freetar/backend.pyหรือFREETAR_CACHE_TIMEOUT=1 uv run freetar - ไฟล์สแตติกอยู่ที่
freetar/static/*และ HTML template อยู่ที่freetar/templates/* - งานในอนาคตมีดังนี้
- ปรับปรุง UX บนอุปกรณ์มือถือ
- การแพ็ก Progressive Web App ที่ระบุไว้ว่า PGA
- การเก็บ favs ด้วยวิธีเข้ารหัสฝั่งเซิร์ฟเวอร์
- การแสดง QR code เพื่อแชร์แท็บได้รวดเร็ว
- มีบางรายการที่ทำเสร็จแล้ว
- การแชร์คอร์ดด้วย QR code เสร็จสิ้นผ่านฟีเจอร์ export/import ใน #12
- ส่วนขยายเบราว์เซอร์แบบ Invidious Redirection เสร็จสิ้นใน LibRedirect browser extension issue
- สามารถมีส่วนร่วมได้ แต่แนะนำให้สร้าง issue เพื่อเสนอฟีเจอร์ก่อน
- ไม่ต้องการให้ UI หรือฟีเจอร์ บวมเกินไป
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
ค่อนข้างดี และมีเครื่องมือที่เกี่ยวข้องอยู่เยอะแล้ว ผมคิดว่าในอนาคตการเข้าถึงแท็บจะถูกล็อกแน่นขึ้น เลยทำ เครื่องมือสำหรับดึงแท็บมาเก็บไว้ เองด้วย
เป็นสมาชิก UG Pro ตลอดชีพ แต่พวกเขายังคงล้ำเส้นเพื่อหารายได้เพิ่มอยู่เรื่อย ๆ น่าเสียดายที่สายนี้แทบไม่มีทางไปสู่โอเพนซอร์ส เพราะแท็บมักมีผู้จัดพิมพ์ หรืออย่างน้อยศิลปินเป็นผู้ถือไลเซนส์ กรณี Oliver Tree แปลกมาก เพลงของเขามีแค่ระดับคอร์ด 4 คอร์ดต่อเพลง แต่ช่วงหนึ่งกลับทำให้แท็บส่วนใหญ่ถูกถอดลง เมื่อคิดว่าใคร ๆ ก็ฟังเพลงแล้วจดแท็บออกมาได้ สภาพปัจจุบันของวงการนี้จึงค่อนข้างน่าหงุดหงิด
สงสัยว่ามีใครเคยลองอ้าง fair use เพื่อการศึกษาบ้างไหม แท็บดูใกล้เคียงกับคำแนะนำว่าเล่นเพลงหนึ่งให้ดีที่สุดอย่างไร มากกว่าจะเป็นงานสร้างสรรค์จริง ๆ และเนื่องจากไม่มีข้อมูลจังหวะ ปกติจึงแทบเป็นไปไม่ได้ที่จะกู้คืนเพลงจริงจากแท็บเพียงอย่างเดียว ส่วนคอร์ดยิ่งมีปริมาณข้อมูลน้อยกว่า การถอดคอร์ดกีตาร์อาจไม่เหมือนโน้ตที่เล่นจริงในบันทึกเสียงเลยก็ได้
ผมคิดว่าพวกเขาจะดันต่อไปเรื่อย ๆ จนถึงระดับที่ผู้ใช้พอทนได้แบบเฉียด ๆ หรือแย่กว่านั้นนิดหน่อย
ใช้ Ultimate Guitar มาตั้งแต่ต้นยุค 2000 และยังมีแท็บที่ผมทำเองเหลืออยู่ไม่กี่อัน ตอนนี้ลองเข้าไปดูแล้วเป็นโศกนาฏกรรมจริง ๆ เว็บไซต์เละเทะมาก เครื่องมือนี้ผมจะลองใช้แน่นอน
เหตุผลที่อินเทอร์เน็ตยุคนั้นสวยงามคือมีหลายมุมที่การทำเงินจากมันไม่ง่าย หรือไม่ได้ถูกไล่ล่าอย่างจริงจัง จึงมีหลายสิ่งที่แค่อยู่ตรงนั้นได้ แต่ตอนนี้ไม่ใช่แล้ว
ยังจำ IRC channel ที่เคยไปสิงด้วยกันในแง่ดี น่าจะมีแท็บที่ผมอัปไว้บนเว็บสักอันสองอัน ช่วงหลายปีที่ผ่านมา ทุกครั้งที่กลับเข้าไปดูบ้าง สุดท้ายก็ต้องถอยห่างออกมาอีก
ฮาเลลูยา เมื่อก่อนผมซื้อแอปไว้เลยได้สิทธิ์สมาชิกตลอดชีพต่อมา ทำให้เลี่ยงการตลาดบางส่วนได้ แต่ UI ที่บ้าบอของมันมักทำให้การเล่นกีตาร์ยากขึ้นกว่าเดิม
จำ OLGA หรือ On-Line Guitar Archive ได้ ตอนสมัยวัยรุ่นในทศวรรษ 1990 ที่กำลังเรียนกีตาร์ OLGA มีแท็บแบบข้อความที่ผู้ใช้ทำขึ้นมากพอให้ผมเรียนเพลงแทบทุกเพลงที่เคยฟังหรืออยากเล่นได้ฟรี
ยอดเยี่ยมจริง ๆ ผมเรียนกีตาร์มาได้ประมาณ 15 เดือน และเกลียดโฆษณากับป๊อปอัปบนเว็บกีตาร์ส่วนใหญ่เหลือเกิน อันนี้สมบูรณ์แบบ เพราะมี อินเทอร์เฟซเรียบง่าย ที่ทำสิ่งจำเป็นโดยไม่เสียเวลา
เพราะไม่ได้ใช้ jQuery อาจไม่ตรงกับแนวทางโค้ดเดิม แต่ถ้าช่วย merge และ deploy ให้ ก็จะดีเพราะจะได้มีฟีเจอร์จัดเรียง ขอบคุณอีกครั้งที่คิดและสร้างสิ่งนี้ขึ้นมา
ยอดเยี่ยม เว็บต้นฉบับเปลี่ยนไปเป็นมิตรกับผู้ใช้น้อยลงมากตลอดหลายปี โดยเฉพาะเมื่อคิดว่าคอนเทนต์ส่วนใหญ่ที่เป็นตัวตนของเว็บนั้น ผู้ใช้เป็นคนมีส่วนร่วมสร้าง จึงยิ่งยอมรับได้ยาก
มีสองเรื่อง อย่างแรก ยอดเยี่ยมจริง ๆ ผมลองหาแท็บที่เคยเพิ่มไว้บนเว็บ และมันแสดงผลได้ดีมาก ที่สำคัญที่สุดคือแสดงใน รูปแบบที่เหมาะสำหรับการพิมพ์
อย่างที่สอง ถ้าคุณเล่นกีตาร์คลาสสิกหรือสนใจ ลองดูอัญมณีบนอินเทอร์เน็ตอย่าง https://www.classtab.org/ ด้วยก็น่าดู
ผมเคยทำเว็บแอปคล้าย ๆ กันเมื่อหลายปีก่อน คิดว่าสู้กับเครื่องมือนี้ได้ค่อนข้างดี มี syntax highlighting ด้วย :)
https://tabviewer.app/
พูดถึงคอมเมนต์พี่น้องและคำอธิบายว่า “คลิกเพื่อดู repository” ถ้าตอนนี้เราไม่ได้ยอมรับ
"license":"ISC"ใน package.json อย่างเป็นทางการว่าเป็นไลเซนส์ที่มีผลทางกฎหมาย repository นี้ก็ไม่มีไลเซนส์ซื้อ Pro แบบ 1 ปี แล้วขอคืนเงินโดยยอมขาดทุนหลังผ่านไป 24 ชั่วโมง เพราะสมัครด้วยรหัสโปรโมชันที่คืนเงินไม่ได้
แอปมันใช้งานไม่ได้จริง ๆ เพลย์ลิสต์ไม่โหลดเพลงถัดไปจริงตามเวลาที่คาดไว้ การเปิดโน้ตเพลงหนึ่งใช้เวลานานเกินไป และในแต่ละเพลงของเพลย์ลิสต์ยังต้องกดไปที่ “chords” ใหม่ ทำให้โหลดเพิ่มอีก แค่ไม่โหลดสิ่งที่ผมไม่ต้องการเลยก็ประหยัดเวลาได้มหาศาลแล้ว แถมยังซิงก์เพลงเองเพื่อใช้ออฟไลน์ไม่ได้ ต้องกด favorite แล้วปล่อยให้ขึ้นกับตารางซิงก์ของพวกเขา
ผมทำ เครื่องมือ command-line สำหรับสิ่งนี้ไว้: https://codeberg.org/ltworf/ultimateultimateguitar