рдЯреЙрд░реЗрдВрдЯ-рдЯреАрд╡реА рдкреНрд▓реЗрд▓рд┐рд╕реНрдЯ (рд╕реБрдкрд░ рд╡реЙрд╢) рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░реЗрдВ

рдпреБрдкреАрдбреАред рдЯреЛрд░реЗрдВрдЯ-рдЯреАрд╡реА рд╕реЗрд╡рд╛, рдЬреЛ рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдореБрдЦреНрдп рд╕реНрд░реЛрдд рдерд╛, рдХреА рдореГрддреНрдпреБ рд╣реЛ рдЧрдИ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд▓реЗрдЦ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЕрд░реНрде рд╕реЗ рд░рд╣рд┐рдд рд╣реИред

рдЕрд╡реИрдз рдЯреЛрд░реЗрдВрдЯ-рдЯреАрд╡реА рд╕реЗрд╡рд╛ (рд╕реБрдкрд░ рд╡реЙрд╢) рдореЗрдВ рдзрд╛рд░рд╛рдПрдВ рдСрдкрд░реЗрдЯрд░реЛрдВ рд╕реЗ рдпрд╛ рдХреНрд▓реИрдореНрдкрд┐рдВрдЧ рдХреЗ рдмрд┐рдирд╛ рдЙрдкрдЧреНрд░рд╣ рд╕реЗ рдЕрддреНрдпрдзрд┐рдХ рдореВрд▓ рдзрд╛рд░рд╛рдПрдВ рд╣реИрдВред рдпреЗ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдЗрдВрдЯрд░рд▓реЗрд╕реНрдб рд╡реАрдбрд┐рдпреЛ рд╕реНрдЯреНрд░реАрдо рд╣реИрдВред рдЯреЛрд░реЗрдВрдЯ рдЯреАрд╡реА рдЙрдЪреНрдЪрддрдо рдЧреБрдгрд╡рддреНрддрд╛ рд╕рдВрднрд╡ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрдо рд╕реНрдерд┐рд░рддрд╛ред рдЖрдЬ рдХреБрдЫ рдЪреИрдирд▓ рд╣реИрдВ, рдХрд▓ рдирд╣реАрдВред рдЖрдЬ, рдХреБрдЫ рдЪреИрдирд▓ рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдХрд▓ рдпрд╣ рдмреБрд░рд╛ рд╣реИред рдпрд╣ рд╕реЗрд╡рд╛ рдирд┐рд░рдВрддрд░ рдкрд░реЗрд╢рд╛рдиреА рд╕реЗ рдореБрдХреНрдд рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИ - рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЛрдВрдиреЗ рднреБрдЧрддрд╛рди рдХрд┐рдпрд╛, рдЕрд░реНрдерд╛рддреНред рднреБрдЧрддрд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛, рддреЛ рдЙрдиреНрд╣реЛрдВрдиреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ред рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ рдЬрдм рдЖрдкрдХреЛ рдЙрдЪреНрдЪ рдЧреБрдгрд╡рддреНрддрд╛ рдХреЗ рд╕рд╛рде рдХреБрдЫ рджреЗрдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ (рдпрджрд┐ рдЪреИрдирд▓ рдЙрд╕ рдХреНрд╖рдг рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдЧрд╛)ред рдПрдХ рдФрд░ рд╕рдорд╕реНрдпрд╛ рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдкреНрд▓реЗрд▓рд┐рд╕реНрдЯ рдХреЗ рдЧрдарди рдХреА рд╣реИред рдЗрд╕ рдкрд░ рдПрдХ рдиреЛрдЯ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреАред



рдмреЗрд╕ рдЯреЛрд░реЗрдВрдЯ-рдЯреАрд╡реА рдкреНрд▓реЗрд▓рд┐рд╕реНрдЯ (рд╕реБрдкрд░ рд╡реЙрд╢) рдореЗрдВ 1200 рд╕реЗ рдЕрдзрд┐рдХ рдЪреИрдирд▓ рд╣реИрдВред рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдХреНрд╖реЗрддреНрд░реАрдп, рд╡рд┐рднрд┐рдиреНрди рджреЗрд╢реЛрдВ, рдПрд╕рдбреА рдФрд░ рдПрдЪрдбреА рдХреЗ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ, рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрдЪрд░рд╛ рдирд╣рд░ рдЖрджрд┐, 200-300 рдЪреИрдирд▓ рд░реВрд╕реА рджрд░реНрд╢рдХреЛрдВ рдХреЗ рд╣реИрдВред рдЗрд╕реА рд╕рдордп, рдЪреИрдирд▓реЛрдВ рдХрд╛ рд╕реНрд╡реАрдХреГрдд рд╕рдореВрд╣рди рд╕рднреА рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд╣реАрдВ рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЯреЛрд░реЗрдВрдЯ рдЯреАрд╡реА рд╕реЗ рдПрдХ рдкреНрд▓реЗрд▓рд┐рд╕реНрдЯ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕реЗ рдПрдХ рдкреВрд░реНрдгрддрд╛рд╡рд╛рджреА рдХреА рдЖрддреНрдорд╛ рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╢реНрдпрдХрддрд╛рдиреБрд╕рд╛рд░ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ AceStream рдЪреИрдирд▓реЛрдВ рдХреЗ рд▓рд┐рдВрдХ рд╕рдордп-рд╕рдордп рдкрд░ рдмрджрд▓рддреЗ рд░рд╣рддреЗ рд╣реИрдВ, рдФрд░ рддреИрдпрд╛рд░ рдХреА рдЧрдИ рдкреНрд▓реЗрд▓рд┐рд╕реНрдЯ рдмреЗрдХрд╛рд░ рд╣реЛ рдЬрд╛рдПрдЧреАред рдпрд╛рдиреА рдЖрдкрдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд░реВрдк рдореЗрдВ рдПрдХ рдирдИ, рдЕрдк-рдЯреВ-рдбреЗрдЯ рдкреНрд▓реЗрд▓рд┐рд╕реНрдЯ рдХреА рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкреАрдврд╝реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╡рд╣реА рд╣рдо рдХрд░реЗрдВрдЧреЗред

рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА:

  • рдЯреЙрд░реЗрдВрдЯ рдЯреАрд╡реА ("рд╕реБрдкрд░ рд╡реЙрд╢") рджреЗрдЦрдиреЗ рдФрд░ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрдХреНрд░рдо рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдЕрдиреБрднрд╡ред
  • рдПрдВрдЯрд╡реЗрдпрд░ рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рд░рд╛рдЙрдЯрд░ (рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рдФрд░ рдХреБрдЫ рдХреМрд╢рд▓ рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рдЦреБрдж рдХреЗ рдмреЙрдХреНрд╕ рдкрд░ OpenWrt рдпрд╛ Entware рдХреЗ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)ред

рдиреЛрдЯ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ:

  • IPTV рдкреНрд░рдмрдВрдзрдХ рдЪреБрдирдирд╛ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ред
  • рдЯреЛрд░реЗрдВрдЯ рдЯреАрд╡реА рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреВрд░реЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд┐рд╕реНрдЯрдо рд╕реЗрдЯрд┐рдВрдЧреНрд╕ред
  • рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рдФрд░ рдЯреЛрд░реЗрдВрдЯ рдЯреАрд╡реА рдореЗрдВ рдЗрдВрдЯрд░рд▓реЗрд╕реНрдб рд╡реАрдбрд┐рдпреЛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рдПрдВрдбреНрд░реЙрдЗрдб рдмреЙрдХреНрд╕ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВред

рд╣рдо рд░рд╛рдЙрдЯрд░ рдкрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рдЬреЛ рд▓рд┐рдВрдХ рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрд░реЛрдз рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░, рд╡рд░реНрддрдорд╛рди рдЯреЛрд░реЗрдВрдЯ-рдЯреАрд╡реА рдкреНрд▓реЗрд▓рд┐рд╕реНрдЯ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ, рдЗрд╕рдореЗрдВ рд╕реЗ рдПрдХ рдирдИ рдкреНрд▓реЗрд▓рд┐рд╕реНрдЯ рдмрдирд╛рдПрдВ рдФрд░ рдЗрд╕реЗ рджреЗрдВ:

  • рдкрд╕рдВрджреАрджрд╛ рдЪреИрдирд▓реЛрдВ рдХреА рддреИрдпрд╛рд░ рд╕реВрдЪреА рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЖрдкрдХреА рдЦреБрдж рдХреА рдЪреИрдирд▓ рд╕реВрдЪреАред
  • рдпрджрд┐ рдЖрдк рдЙрдирдХреЗ рд▓рд┐рдП рдПрдЪрдбреА рдорд┐рд▓рд╛рди рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдЖрдк рдПрд╕рдбреА рдЪреИрдирд▓реЛрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрд╛рд╣рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
  • рдЕрдкрдиреА рдЗрдЪреНрдЫрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕рдореВрд╣реЛрдВ рдФрд░ рдЙрдирдХреЗ рдирд╛рдореЛрдВ рдХреЛ рдХреНрд░рдордмрджреНрдз рдХрд░реЗрдВред
  • рдЕрдкрдиреА рдЗрдЪреНрдЫрд╛рдиреБрд╕рд╛рд░ рдЪреИрдирд▓ рдХрд╛ рдирд╛рдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ред
  • рдПрдЪрдбреА / рдПрд╕рдбреА (рдкреНрд░рд╛рдердорд┐рдХ) рдФрд░ рдирд╛рдо рд╕реЗ рдПрдХ рд╕рдореВрд╣ рдореЗрдВ рдЪреИрдирд▓ рд╕реЙрд░реНрдЯ рдХрд░реЗрдВред
  • рдИрдкреАрдЬреА рд╕реНрд░реЛрддреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд▓рд┐рдВрдХред
  • рд▓реЛрдЧреЛ рдХрд╛ рд╕реНрд░реЛрдд (рд╕рд╛рде рд╣реА рд▓реЛрдЧреЛ рдЦреБрдж) рдФрд░ рдЕрдкрдиреА рдкрд╕рдВрдж рдХреЗ рдЪреИрдирд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдИрдкреАрдЬреА рдЕрдиреБрдкрд╛рд▓рдиред

рдЯреНрдпреВрдирд┐рдВрдЧ рдХреЗ рдмрд╛рдж рд╕рдм рдХреБрдЫ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛?


рдЕрдкрдиреЗ IPTV рдкреНрд░рдмрдВрдзрдХ рдореЗрдВ рдкреНрд▓реЗрд▓рд┐рд╕реНрдЯ http://192.168.0.1:81/playlist.cgi (рдЕрдкрдиреЗ рд░рд╛рдЙрдЯрд░ рдХреЗ рдЖрдВрддрд░рд┐рдХ рдкрддреЗ рдХреЗ рд╕рд╛рде 192.168.0.1 рдХреЛ рдмрджрд▓реЗрдВ) рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рдЬреЛрдбрд╝реЗрдВред рд╣реЛ рдЧрдпрд╛ред



рдСрдкрд░реЗрд╢рди рдХрд╛ рд╕рд┐рджреНрдзрд╛рдВрдд рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИред рд░рд╛рдЙрдЯрд░ рдкрд░ playlist.cgi рд╕реНрдХреНрд░рд┐рдкреНрдЯ ttv.py рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓реЙрдиреНрдЪ рдХрд░рддреА рд╣реИ, рдЬреЛ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдЯреЛрд░реЗрдВрдЯ-рдЯреАрд╡реА рдкреНрд▓реЗрд▓рд┐рд╕реНрдЯ (рдПрдХреНрд╕реЗрд╕ рдХреЗ рд╕рдордп рд▓реЛрдб) рдФрд░ рдкрд╕рдВрджреАрджрд╛ рдЪреИрдирд▓реЛрдВ рдХреА рджреА рдЧрдИ рд╕реВрдЪреА рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдПрдХ рдирдИ рдкреНрд▓реЗрд▓рд┐рд╕реНрдЯ рддреИрдпрд╛рд░ рдХрд░рддреА рд╣реИ рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рд╣рдЯрд╛ рджреЗрддреА рд╣реИред

рд░рд╛рдЙрдЯрд░ рдкрд░ рдЖрд╡рд╢реНрдпрдХ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛


SSH рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд░рд╛рдЙрдЯрд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВред Windows рдкрд░, рдЖрдк рдХрдиреЗрдХреНрд╢рди рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП PuTTY рдХреНрд▓рд╛рдЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЖрд╡рд╢реНрдпрдХ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:

opkg update opkg install wget ca-certificates mc python3 lighttpd-mod-cgi 

wget рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╣реИред рдпрд╣ рдХреЗрд╡рд▓ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реЗрдЯрдЕрдк рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛ред

ca- рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ - wget рдХреЗ рд▓рд┐рдП рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯред

mc - рдорд┐рдбрдирд╛рдЗрдЯ рдХрдорд╛рдВрдбрд░ рдлрд╝рд╛рдЗрд▓ рдореИрдиреЗрдЬрд░ред рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдореИрдбрд┐рдЯ рдПрдбрд┐рдЯрд░ рдХреА рд╡рдЬрд╣ рд╕реЗ рд╣реА рдЗрд╕рдХреА рдЬрд░реВрд░рдд рд╣реИред рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рдЕрдиреНрдп рдкрд╛рда рд╕рдВрдкрд╛рджрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ mc рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

python3 рдПрдХ Python рджреБрднрд╛рд╖рд┐рдпрд╛ рд╣реИред

lighttpd-mod-cgi - рд▓рд╛рдЗрдЯрдЯреИрдк рд╡реЗрдм рд╕рд░реНрд╡рд░ред

рдореБрдЦреНрдп рдлрд╛рдЗрд▓реЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ


 mkdir -p /opt/etc/ttv wget --no-check-certificate -O /opt/etc/ttv/ttv.py https://raw.githubusercontent.com/Kyrie1965/ttv/master/ttv.py wget --no-check-certificate -O /opt/share/www/playlist.cgi https://raw.githubusercontent.com/Kyrie1965/ttv/master/playlist.cgi chmod +x /opt/share/www/playlist.cgi 

рдореИрдВ рдЙрдирдХреА рдирд┐рдпреБрдХреНрддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдж рдореЗрдВ рдмрддрд╛рдКрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдЕрднреА рдореИрдВ рдХреЗрд╡рд▓ рд╕рд╛рдордЧреНрд░реА рджрд┐рдЦрд╛рдКрдВрдЧрд╛ред рдкрд╛рдпрдерди рдХреЛрдб рдореЗрдВ рдЧрд▓рддреА рдирд╣реАрдВ рд╣реИ, рдЗрд╕ рдХреНрд╖рдг рддрдХ рдореИрдВрдиреЗ рдкрд╛рдпрдерди рдореЗрдВ рдХрднреА рдХреБрдЫ рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рд╣реИред

рд╕рд╛рдордЧреНрд░реА / рдЕрдкрдирд╛рдиреЗ /etc/ttv/ttv.py
 PLAYLIST_LOAD_URL = "http://91.92.66.82/trash/ttv-list/as.all.tag.player.m3u" TEMPLATE_SAVE_PATH = "/opt/etc/ttv/template.txt" FAVORITES_LOAD_PATH = "/opt/etc/ttv/favorites.txt" PLAYLIST_SAVE_PATH = "/opt/etc/ttv/playlist.m3u" LOGOS_URL = "" #LOGOS_URL = "https://raw.githubusercontent.com/Kyrie1965/ttv/master/logos/{}" #LOGOS_URL = "{}" STREAM_URL = "http://127.0.0.1:6878/ace/getstream?id={}&.mp4" #STREAM_URL = "acestream://{}" EPG_LINKS = "https://teleguide.info/download/new3/xmltv.xml.gz" #EPG_LINKS = "https://teleguide.info/download/new3/xmltv.xml.gz,http://programtv.ru/xmltv.xml.gz,http://api.torrent-tv.ru/ttv.xmltv.xml.gz" import re import urllib.request import os from operator import itemgetter as i from functools import cmp_to_key from urllib.parse import urlencode import gzip def cmp(a, b): return (a > b) - (a < b) def multikeysort(items, columns): comparers = [ ((i(col[1:].strip()), -1) if col.startswith('-') else (i(col.strip()), 1)) for col in columns ] def comparer(left, right): comparer_iter = ( cmp(fn(left), fn(right)) * mult for fn, mult in comparers ) return next((result for result in comparer_iter if result), 0) return sorted(items, key=cmp_to_key(comparer)) def loadChannels(content): lines = content.splitlines() returnChannels = {} pattern = re.compile("group-title=\"(.*?)\"") pattern2 = re.compile("tvg-logo=\"(.*?)\"") channelName = "" channelGroup = "" channelLogoLink = "" channelStreamID = "" waitURI = False for line in lines: if line.startswith("acestream"): if waitURI: channelStreamID = line[12:] HD = False if ("HD" in channelName) or ("UHD" in channelName) or ("4K" in channelName): HD = True tmpDict = {"name": channelName, "group": channelGroup, "stream": channelStreamID, "hd": HD, "logolink": channelLogoLink} returnChannels[channelName.upper()] = tmpDict waitURI = False elif line.startswith("#EXTINF"): index = line.rfind("\",") if (index == -1): continue channelName = line[index+2:] match = pattern.search(line) if match: channelGroup = match.group(1) else: channelGroup = "" match = pattern2.search(line) if match: channelLogoLink = match.group(1) else: channelLogoLink = "" waitURI = True return returnChannels def saveTemplate(content, channels, path): lines = content.splitlines() pattern = re.compile("group-title=\"(.*?)\"") waitURI = False channelName = "" channelReplace = "" channelNewName = "" channelEPG = "" channelGroup = "" channelStreamID = "" groupDict = {} currentGroup = 1 template="" for line in lines: if line.startswith("acestream"): if waitURI: channelStreamID = line[12:] template += channelName template += "/" template += channelReplace template += "/" template += channelNewName template += "/" template += channelEPG template += "/" template += channelName + ".png" template += "/" template += channelGroup template += "\n" waitURI = False elif line.startswith("#EXTINF"): x = line.split("\",") if (len(x) != 2): continue channelName = x[1] channelNewName = x[1] channelEPG = x[1] if (channels.get(channelName.upper() + " HD") != None): channelReplace = channelName + " HD" else: channelReplace = "-" match = pattern.search(x[0]) if match: channelGroup = match.group(1) if (groupDict.get(channelGroup)): channelGroup = groupDict.get(channelGroup) else: newGroupName = "{:02d}_{}".format(currentGroup, channelGroup) currentGroup += 1 groupDict[channelGroup] = newGroupName channelGroup = newGroupName else: channelGroup = "00_Unsigned" waitURI = True file = open(path,'w', encoding='utf-8') file.write(template) file.close() return def loadFavorites(content): returnChannels = {} lines = content.splitlines() for line in lines: parts = line.split('/') if len(parts) == 6: tmpDict = {"name": parts[0], "replace": parts[1], "newName": parts[2], "EPG": parts[3], "logo": parts[4], "group": parts[5]} returnChannels[parts[0].upper()] = tmpDict elif len(parts) == 5: #    tmpDict = {"name": parts[0], "replace": parts[1], "newName": parts[2], "EPG": parts[3], "group": parts[4], "logo": parts[0] + ".png"} returnChannels[parts[0].upper()] = tmpDict return returnChannels def savePlaylist(channels, favorites, path): returnChannels = [] currentChannels = set() for key, chDict in favorites.items(): if chDict["replace"] != "-": if favorites.get(chDict["replace"].upper()) != None and channels.get(chDict["replace"].upper()) != None: currentChannels.add(chDict["replace"]) elif channels.get(chDict["name"].upper()) != None: currentChannels.add(chDict["name"]) elif channels.get(chDict["name"].upper()) != None: currentChannels.add(chDict["name"]) for ch in currentChannels: chFromFavorites = favorites.get(ch.upper()) chFromChannels = channels.get(ch.upper()) tmpDict = {"name": chFromFavorites.get("newName"), "oldName": chFromFavorites.get("name"), "EPG": chFromFavorites.get("EPG"), "group": chFromFavorites.get("group"), "logof": chFromFavorites.get("logo"), "logoc": chFromChannels.get("logolink"), "stream": chFromChannels.get("stream"), "hd": chFromChannels.get("hd")} returnChannels.append(tmpDict) result = multikeysort(returnChannels, ['group', '-hd', 'name']) template="" template += "#EXTM3U url-tvg=" template += "\"" template += EPG_LINKS template += "\"" template += "\n" for n in result: group = n.get("group") if group.find("_", 2, 3) != -1: group = group[3:] if len(LOGOS_URL) > 0: template += "#EXTINF:-1 tvg-name=\"{}\" tvg-logo=\"{}\" group-title=\"{}\",{}".format(n.get("EPG"), LOGOS_URL.format(urllib.parse.quote(n.get("logof"))), group, n.get("name")) else: template += "#EXTINF:-1 tvg-name=\"{}\" tvg-logo=\"{}\" group-title=\"{}\",{}".format(n.get("EPG"), n.get("logoc"), group, n.get("name")) template += "\n" template += STREAM_URL.format(n.get("stream")) template += "\n" file = open(path,'w', encoding='utf-8') file.write(template) file.close() return result #response = urllib.request.urlopen(PLAYLIST_LOAD_URL) #content = response.read().decode("utf-8") #channels = loadChannels(content) content = "" request = urllib.request.Request(PLAYLIST_LOAD_URL) request.add_header('Accept-encoding', 'gzip') response = urllib.request.urlopen(request) if response.info().get('Content-Encoding') == 'gzip': gzipFile = gzip.GzipFile(fileobj=response) content = gzipFile.read().decode("utf-8") else: content = response.read().decode("utf-8") channels = loadChannels(content) if channels == None or (len(channels.keys()) == 0): exit() saveTemplate(content, channels, TEMPLATE_SAVE_PATH) exists = os.path.isfile(FAVORITES_LOAD_PATH) if exists: file = open(FAVORITES_LOAD_PATH,'r', encoding='utf-8') content = file.read() favorites = loadFavorites(content) savePlaylist(channels, favorites, PLAYLIST_SAVE_PATH) 


рд╕рд╛рдордЧреНрд░реА / рд╕рд╛рдордЧреНрд░реА / рд╢реЗрдпрд░ / www./playlist.cgi
 #!/bin/sh PATH=/opt/sbin:/opt/bin:/opt/usr/sbin:/opt/usr/bin:/usr/sbin:/usr/bin:/sbin:/bin python3 /opt/etc/ttv/ttv.py echo "Content-Type: text/plain; charset=UTF-8" echo "" echo "$(cat /opt/etc/ttv/playlist.m3u)" 


рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдФрд░ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк


рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓реЗрдВ / //cc/lighttpd/lighttpd.conf :

 mcedit /opt/etc/lighttpd/lighttpd.conf 

рдмрдлрд░ рд╕реЗ рдЪрд┐рдкрдХрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, Shift + Insert, рд╕рд╣реЗрдЬреЗрдВ - F2, рдирд┐рдХрд╛рд╕ - F10 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рд▓рд╛рдЗрди рдмрджрд▓реЗрдВ # server.port = 80 рд╕реЗ:

 server.port = 81 

рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓реЗрдВ / //cc/lighttpd/conf.d/30-cgi.conf :

 mcedit /opt/etc/lighttpd/conf.d/30-cgi.conf 

".Cgi" => "/ рдСрдкреНрдЯ / рдмрд┐рди / рдкрд░реНрд▓" рдХреЛ рдмрджрд▓реЗрдВ:

 ".cgi" => "/bin/sh" 

рд╡реЗрдм рд╕рд░реНрд╡рд░ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ:

 /opt/etc/init.d/S80lighttpd start 

рдПрдХ рдкрд╕рдВрджреАрджрд╛ рдЪреИрдирд▓ рд╕реВрдЪреА рдмрдирд╛рдПрдБ


Ttv.py рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЪрд▓рд╛рдПрдБ:

 python3 /opt/etc/ttv/ttv.py 

рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рдлрд╝рд╛рдЗрд▓ template.txt / рдСрдкреНрдЯ / etc / ttv рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкрд╛рда рдлрд╝рд╛рдЗрд▓ рд╣реИред рдпрд╣ рд╣рдореЗрд╢рд╛ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд░рд╣реЗрдЧрд╛, рдЕрд░реНрдерд╛рдд рдЬрдм рдХрд╛рд░реНрдпрдХреНрд░рдо рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╡рд░реНрддрдорд╛рди рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреА рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдПрдХ рдЯреЛрд░реЗрдВрдЯ-рдЯреАрд╡реА рдЪреИрдирд▓ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рд░реВрдк рд╣реИ:
CHANNEL_NAME / CHANGE_CHANNEL / your_CHANNEL_NAME / рдЖрдкрдХрд╛_CHANNEL_NAME__EPG / рдЖрдкрдХрд╛_LOGO / рдЖрдкрдХрд╛ рд╕рдореВрд╣

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

Amedia Premium / Amedia Premium HD / Amedia Premium / Amedia Premium / Amedia Premium.png / 11_Movies
Amedia рдкреНрд░реАрдорд┐рдпрдо HD / - / Amedia рдкреНрд░реАрдорд┐рдпрдо HD / Amedia рдкреНрд░реАрдорд┐рдпрдо HD / Amedia рдкреНрд░реАрдорд┐рдпрдо HD.png / 11_Mies

рдЖрд╕рд╛рди рд╕рдВрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рд╣реЗрдЬреЗрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, WinSCP рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ)ред рдЗрд╕реЗ рдкрд╕рдВрджреАрджрд╛ рдореЗрдВ рдмрджрд▓реЗрдВред

рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ, рдХреЗрд╡рд▓ рдЙрди рдЪреИрдирд▓реЛрдВ рдХреЛ рдЫреЛрдбрд╝ рджреЗрдВ рдЬрд┐рдирдХреА рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

CHANNEL_NAME - рдореВрд▓ рдкреНрд▓реЗрд▓рд┐рд╕реНрдЯ рдореЗрдВ рдЪреИрдирд▓ рдХрд╛ рдирд╛рдоред

CHANGE_CHANNEL - рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЗ рд▓рд┐рдП рдореВрд▓ рдкреНрд▓реЗрд▓рд┐рд╕реНрдЯ рдореЗрдВ рдЪреИрдирд▓ рдХрд╛ рдирд╛рдоред рдПрдХ "-" рд░рдЦреЛ рдЕрдЧрд░ рдПрдХ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдЪреИрдирд▓ рдореЗрдВ HD рд╡рд┐рдХрд▓реНрдк рд╣реИ, рддреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореВрд▓ рдкреНрд▓реЗрд▓рд┐рд╕реНрдЯ рдореЗрдВ Amedia Premium рдФрд░ Amedia Premium HD рд╣реИрдВред рдХреЗрд╡рд▓ Amedia Premium HD рдЕрдВрддрд┐рдо рдкреНрд▓реЗрд▓рд┐рд╕реНрдЯ рдореЗрдВ рд╣реЛрдЧрд╛ред

Your_CHANNEL_NAME IPTV рдкреНрд░рдмрдВрдзрдХ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рди рдирд╛рдо рд╣реИред рдпрд╣ рдХреБрдЫ рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдХреЗрд╡рд▓ рдЖрдИрдкреАрдЯреАрд╡реА рдкреНрд░рдмрдВрдзрдХ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╛рдо рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореВрд▓ рдЪреИрдирд▓ рдХреЛ "рдкреИрд░рд╛рдорд╛рдЙрдВрдЯ рдХреЙрдореЗрдбреА рдПрдЪрдбреА (рд░реВрд╕)" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЖрдк рдЗрд╕рдХрд╛ рдирд╛рдо "рдкреИрд░рд╛рдорд╛рдЙрдВрдЯ рдХреЙрдореЗрдбреА рдПрдЪрдбреА" рд░рдЦ рджреЗрддреЗ рд╣реИрдВред

Your_CHANNEL_B__EPG_NAME - рдпрд╣ рдЪрдпрдирд┐рдд EPG рд╕реНрд░реЛрдд рдореЗрдВ рдкреВрд░реНрдг рдЕрдиреБрдкрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореВрд▓ рдЪреИрдирд▓ рдХреЛ "рдореИрдЪ рдЯреАрд╡реА рдПрдЪрдбреА" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ EPG рдореЗрдВ рдЗрд╕ рдЪреИрдирд▓ рдХреЛ "рдореИрдЪ!" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ "рдорд┐рд▓рд╛рди!" рдкрд░ рдмрджрд▓реЗрдВ рдФрд░ рдЕрдкрдиреЗ рдИрдкреАрдЬреА рд╕реНрд░реЛрдд рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рдЕрдиреБрдкрд╛рд▓рди рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╕рднреА рдЪреИрдирд▓реЛрдВ рдХреЗ рд▓рд┐рдП, рдЖрдк рдИрдкреАрдЬреА рдЕрдиреБрдкрд╛рд▓рди рдХреЛ 100% рдХреЗ рдХрд░реАрдм рд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред

Your_LOGO - рд▓реЛрдЧреЛ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдоред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, ttv.py рдореВрд▓ рдкреНрд▓реЗрд▓рд┐рд╕реНрдЯ рд╕реЗ рд▓реЛрдЧреЛ рд▓рд┐рдВрдХ рд▓реЗрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд Your_LOGO рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ ttv.py рдореЗрдВ LOGOS_URL рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛ (рдЖрдк рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдмрд╛рдж рдореЗрдВ рдкрдврд╝реЗрдВрдЧреЗ)ред

Your_GROUP - рдЪреИрдирд▓ рд╕рдореВрд╣ рдХрд╛ рдирд╛рдоред рдЖрдк рд╕рдореВрд╣ рдирд╛рдо рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рдЗрдВрдбреЗрдХреНрд╕, рджреЛ рдЕрдВрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╕реВрдЪрдХрд╛рдВрдХ рдЕрдВрддрд┐рдо рдкреНрд▓реЗрд▓рд┐рд╕реНрдЯ рдореЗрдВ рд╕рдореВрд╣реЛрдВ рдХреЗ рдХреНрд░рдо рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ (рдЫреЛрдЯреЗ рд╕реЗ рдмрдбрд╝реЗ рддрдХ)ред рдЫрдБрдЯрд╛рдИ рдХреЗ рдмрд╛рдж, рд╕реВрдЪрдХрд╛рдВрдХ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рдореВрд╣ рдирд╛рдо рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдпрд╣рд╛рдВ рдПрдХ рд╕рдВрдкрд╛рджрд┐рдд рдкрд╕рдВрджреАрджрд╛ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ
 Amedia Premium/Amedia Premium HD/Amedia Premium/Amedia Premium/Amedia Premium.png/11_   Amedia Premium HD/-/Amedia Premium HD/Amedia Premium HD/Amedia Premium HD.png/11_   / HD///.png/12_  HD/-/ HD/ HD/ HD.png/12_ Viasat History/Viasat History HD/Viasat History/Viasat History/Viasat History.png/01_ Viasat History HD/-/Viasat History HD/Viasat History/Viasat History.png/01_ Discovery Channel/Discovery Channel HD/Discovery Channel/Discovery Channel/Discovery Channel.png/01_ Discovery Channel HD/-/Discovery Channel HD/Discovery Channel HD/Discovery Channel HD.png/01_ Discovery Science/Discovery Science HD/Discovery Science/Discovery Science/Discovery Science.png/01_ Discovery Science HD/-/Discovery Science HD/Discovery Science HD/Discovery Science HD.png/01_ Amedia Hit/Amedia Hit HD/Amedia Hit/Amedia Hit/Amedia Hit.png/11_   Amedia Hit HD/-/Amedia Hit HD/Amedia Hit HD/Amedia Hit HD.png/11_    /  HD/!/!/ .png/03_   HD/-/! HD/!/  HD.png/03_ Eurosport 1/Eurosport 1 HD/Eurosport 1/Eurosport 1/Eurosport 1.png/03_ Eurosport 1 HD/-/Eurosport 1 HD/Eurosport 1 HD/Eurosport 1 HD.png/03_ Paramount Comedy HD ()/-/Paramount Comedy HD/Paramount Comedy HD ()/Paramount Comedy HD ().png/11_   !  1/!  1 HD/!  1/!  1/!  1.png/03_ !  1 HD/-/!  1 HD/!  1 HD/!  1 HD.png/03_  1/ HD/ 1/ 1/ 1.png/13_-  HD/-/ HD/ HD/ HD.png/13_- 


рд░рд╛рдЙрдЯрд░ рдкрд░ / ft / etc / ttv рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рддреИрдпрд╛рд░ рдкрд╕рдВрджреАрджрд╛ ред Txt рдлрд╝рд╛рдЗрд▓ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдПрдБред

рд╕рдм рдХреБрдЫ рддреИрдпрд╛рд░ рд╣реИред рдЖрдк http://192.168.0.1:81/playlist.cgi (рдЕрдкрдиреЗ рд░рд╛рдЙрдЯрд░ рдХреЗ рдЖрдВрддрд░рд┐рдХ рдкрддреЗ рдХреЗ рд╕рд╛рде 192.168.0.1 рдХреА рдЬрдЧрд╣) рдкрд░ рдкреНрд▓реЗрд▓рд┐рд╕реНрдЯ рдЙрдард╛ рд╕рдХрддреЗ рд╣реИрдВред рдмрд╕ рдЖрдИрдкреАрдЯреАрд╡реА рдкреНрд░рдмрдВрдзрдХ рдореЗрдВ рд▓рд┐рдВрдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ рдФрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╣рдореЗрд╢рд╛ рдЖрдкрдХреА рд╡рд░реНрддрдорд╛рди рдкреНрд▓реЗрд▓рд┐рд╕реНрдЯ рд╣реЛрдЧреАред рд╕реНрдХреНрд░рд┐рдкреНрдЯ playlist.cgi ttv.py рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рддреА рд╣реИ, рдЬреЛ рд╡рд░реНрддрдорд╛рди рдЯреЛрд░реЗрдВрдЯ рдЯреАрд╡реА рдкреНрд▓реЗрд▓рд┐рд╕реНрдЯ (рдХреЙрд▓ рдХреЗ рд╕рдордп рд▓реЛрдб) рдФрд░ рдкрд╕рдВрджреАрджрд╛.рдиреЗрдЯ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реЛрддреА рд╣реИ, рдПрдХ рдирдИ рдкреНрд▓реЗрд▓рд┐рд╕реНрдЯ рдЙрддреНрдкрдиреНрди рдХрд░рддреА рд╣реИ, рдФрд░ рдлрд┐рд░ рдпрд╣ рдирдИ рдкреНрд▓реЗрд▓рд┐рд╕реНрдЯ рджреЗрддреА рд╣реИред

рдЖрдЙрдЯрдкреБрдЯ рдкрд░, рдпрджрд┐ рд╕рднреА рдЪреИрдирд▓ рд╡рд░реНрддрдорд╛рди рдкреНрд▓реЗрд▓рд┐рд╕реНрдЯ рдореЗрдВ рдореМрдЬреВрдж рд╣реИрдВ (рдЕрдиреНрдпрдерд╛, рдЕрдиреБрдкрд▓рдмреНрдз рдЪреИрдирд▓реЛрдВ рдХреЛ рдирдЬрд░рдЕрдВрджрд╛рдЬ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛), рддреЛ рдЖрдкрдХреЛ рдРрд╕реА рд╕рд╛рдл-рд╕реБрдерд░реА рдкреНрд▓реЗрд▓рд┐рд╕реНрдЯ рдорд┐рд▓реЗрдЧреА:

рдкреНрд▓реЗрд▓рд┐рд╕реНрдЯ
#EXTM3U url-tvg="https://teleguide.info/download/new3/xmltv.xml.gz"
#EXTINF:-1 tvg-name="Discovery Channel HD" tvg-logo="http://1ttv.org/uploads/SmWnYlOvkJn8GzttT2UY0vmo8PYfMg.png" group-title="",Discovery Channel HD
http://127.0.0.1:6878/ace/getstream?id=b6e518df35bdffc7ea8fdd05025cec851941a102&.mp4
#EXTINF:-1 tvg-name="Discovery Science HD" tvg-logo="http://1ttv.org/uploads/Yjj1p6idV0HGD56Wz7JX5IeKfD44vz.png" group-title="",Discovery Science HD
http://127.0.0.1:6878/ace/getstream?id=03fb28986da9168dd56ec6891253bcc496c13eb5&.mp4
#EXTINF:-1 tvg-name="Viasat History" tvg-logo="http://1ttv.org/uploads/MWGbB8wJp5Gm4vbPHl0ktohDDjMKdr.png" group-title="",Viasat History
http://127.0.0.1:6878/ace/getstream?id=c6d943e1aac03c179b3af9e99d97ac6779c947c7&.mp4
#EXTINF:-1 tvg-name="Eurosport 1 HD" tvg-logo="http://1ttv.org/uploads/DpFTzUEA3y67Z6ObTPF4xH0XLNRAZm.png" group-title="",Eurosport 1 HD
http://127.0.0.1:6878/ace/getstream?id=70bd87520c622ba7dd6e41aface77d5b2f437f87&.mp4
#EXTINF:-1 tvg-name="!" tvg-logo="http://1ttv.org/uploads/MXyy9Uud7oDuH8JqVisjsD0csgAHnQ.png" group-title="",! HD
http://127.0.0.1:6878/ace/getstream?id=9af7ac309216464e67092deb23d312a20c483674&.mp4
#EXTINF:-1 tvg-name="! 1 HD" tvg-logo="http://1ttv.org/uploads/9PM8M6cN21wQ3M5isVZgjNepzUI4Ry.png" group-title="",! 1 HD
http://127.0.0.1:6878/ace/getstream?id=b8a1e8458419b63ad1c3fa7bd79431d9625c322d&.mp4
#EXTINF:-1 tvg-name="Amedia Hit HD" tvg-logo="http://1ttv.org/uploads/HdnTfcZCgP7Odm1cOKNq9j4yJDRiFP.png" group-title=" ",Amedia Hit HD
http://127.0.0.1:6878/ace/getstream?id=ed6d00e9b6c50c95902b33c841302dd709b214da&.mp4
#EXTINF:-1 tvg-name="Amedia Premium HD" tvg-logo="http://1ttv.org/uploads/ornzQpk6WCW6xk0lyBhlwqH8u2QyU7.png" group-title=" ",Amedia Premium HD
http://127.0.0.1:6878/ace/getstream?id=c38a7580985fa85fa6e0a82c6fd7403e8e5c2b50&.mp4
#EXTINF:-1 tvg-name="Paramount Comedy HD ()" tvg-logo="http://1ttv.org/uploads/VowjbL265DoceAryIEtqNuPv3NDhFK.png" group-title=" ",Paramount Comedy HD
http://127.0.0.1:6878/ace/getstream?id=a9023adab9228b8aa7f1b508b553140b69cecd80&.mp4
#EXTINF:-1 tvg-name=" HD" tvg-logo="http://1ttv.org/uploads/m6ODa3HXr9QNAbSThJNvWeOIEYGp7q.png" group-title="", HD
http://127.0.0.1:6878/ace/getstream?id=4318416741f8d35f2de38e7100b89831e0ef0617&.mp4
#EXTINF:-1 tvg-name=" HD" tvg-logo="http://1ttv.org/uploads/ghvqmVpPWqn9x6POAm9UJBvXFzTrqN.png" group-title="-", HD
http://127.0.0.1:6878/ace/getstream?id=39b9b54a5031846e4936735ec62d157d5eca56e0&.mp4


 : Discovery Channel HD Discovery Science HD Viasat History : Eurosport 1 HD ! HD !  1 HD   : Amedia Hit HD Amedia Premium HD Paramount Comedy HD :  HD -:  HD 

рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдЖрдк ttv.py рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдХреБрдЫ рдкреИрд░рд╛рдореАрдЯрд░ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ:

 mcedit /opt/etc/ttv/ttv.py 

рдмрджрд▓рд╛рд╡ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╡рд┐рдХрд▓реНрдк
PLAYLIST_LOAD_URL = "http://91.92.66.82/trash/ttv-list/as.all.tag.player.m3u"
TEMPLATE_SAVE_PATH = "/opt/etc/ttv/template.txt"
FAVORITES_LOAD_PATH = "/opt/etc/ttv/favorites.txt"
PLAYLIST_SAVE_PATH = "/opt/etc/ttv/playlist.m3u"
LOGOS_URL = ""
#LOGOS_URL = "https://raw.githubusercontent.com/Kyrie1965/ttv/master/logos/{}"
#LOGOS_URL = "{}"
STREAM_URL = "http://127.0.0.1:6878/ace/getstream?id={}&.mp4"
#STREAM_URL = "acestream://{}"
EPG_LINKS = "https://teleguide.info/download/new3/xmltv.xml.gz"
#EPG_LINKS = "https://teleguide.info/download/new3/xmltv.xml.gz,http://programtv.ru/xmltv.xml.gz,http://api.torrent-tv.ru/ttv.xmltv.xml.gz"


PLAYLIST_LOAD_URL - рд╡рд░реНрддрдорд╛рди рдЯреЛрд░реЗрдВрдЯ-рдЯреАрд╡реА рдкреНрд▓реЗрд▓рд┐рд╕реНрдЯ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХред
TEMPLATE_SAVE_PATH - рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрдеред
FAVORITES_LOAD_PATH - рдкрд╕рдВрджреАрджрд╛ рдЪреИрдирд▓реЛрдВ рдХреА рд╕реВрдЪреА рд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдкрдеред
PLAYLIST_SAVE_PATH - рдирдИ рдкреНрд▓реЗрд▓рд┐рд╕реНрдЯ рд╕рд╣реЗрдЬрдиреЗ рдХрд╛ рдкрдеред
LOGOS_URL - рдЪреИрдирд▓реЛрдВ рдХреЗ рд▓реЛрдЧреЛ рдХреЗ рд╕рд╛рде рд▓рд┐рдВрдХред рдЖрдк рдореВрд▓ рдкреНрд▓реЗрд▓рд┐рд╕реНрдЯ рд╕реЗ рд▓рд┐рдВрдХ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЦрд╛рд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧ ("") рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрдмрдХрд┐ рдкрд╕рдВрджреАрджрд╛ред рд╕реЗ рд▓реЛрдЧреЛ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
STREAM_URL - рдЕрдВрддрд┐рдо рдкреНрд▓реЗрд▓рд┐рд╕реНрдЯ рдореЗрдВ рд╕реНрдЯреНрд░реАрдо рд▓рд┐рдВрдХ рдХрд╛ рджреГрд╢реНрдпред рдпрд╣ рдРрд╕ рд╕реНрдЯреНрд░реАрдо рдХрд╛ рд╕реАрдзрд╛ рд▓рд┐рдВрдХ рдпрд╛ рдРрд╕ рд╕реНрдЯреНрд░реАрдо рдкреНрд░реЙрдХреНрд╕реА рдХрд╛ рд▓рд┐рдВрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдХрд┐рд╕ IPTV рдкреНрд░рдмрдВрдзрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
EPG_LINKS - EPG рд▓рд┐рдВрдХ рдХреА рдПрдХ рд╕реВрдЪреАред рд╕рднреА рдЖрдИрдкреАрдЯреАрд╡реА рдкреНрд░рдмрдВрдзрдХ рдЕрд▓рдЧ рд╣реИрдВред рдРрд╕реЗ рд▓реЛрдЧ рд╣реИрдВ рдЬреЛ рдпрд╣ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ рдкреНрд▓реЗрд▓рд┐рд╕реНрдЯ рд╕реЗ рдИрдкреАрдЬреА рдХрд╛ рд▓рд┐рдВрдХ рдХреИрд╕реЗ рд▓рд┐рдпрд╛ рдЬрд╛рдПред рд╡реЗ рд╣реИрдВ рдЬреЛ рдПрдХ рдкреНрд▓реЗрд▓рд┐рд╕реНрдЯ рд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рдИрдкреАрдЬреА рд╕реНрд░реЛрдд рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВред рдРрд╕реЗ рд▓реЛрдЧ рд╣реИрдВ рдЬреЛ рд╡рд┐рднрд┐рдиреНрди рд╕реНрд░реЛрддреЛрдВ рд╕реЗ рдИрдкреАрдЬреА рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВред

рдЖрдкрдХреЛ рдХреЗрд╡рд▓ STREAM_URL, LOGOS_URL, EPG_LINKS рдореЗрдВ рд░реБрдЪрд┐ рд╣реЛрдЧреА, рдХреНрдпреЛрдВрдХрд┐ рдЕрдВрддрд┐рдо рдкреНрд▓реЗрд▓рд┐рд╕реНрдЯ рдХреА рдирдЬрд╝рд░ рдЙрди рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИред рдЙрдирдХреЗ рд▓рд┐рдП, рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╡реИрдХрд▓реНрдкрд┐рдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдП рдЧрдП рд╣реИрдВред

рдирд┐рд╖реНрдХрд░реНрд╖


рдирддреАрдЬрддрди, рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЯреЛрд░реЗрдВрдЯ рдЯреАрд╡реА рдкреНрд▓реЗрд▓рд┐рд╕реНрдЯ (рд╕реБрдкрд░ рд╡реЙрд╢) рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЪреИрдирд▓ рдирд╛рдореЛрдВ рдХреЗ рд╕рд╛рде, рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕рдореВрд╣ рдХреЗ рдирд╛рдо рдФрд░ рдЙрдирдХреЗ рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рдЫрдВрдЯрдиреА рдХреЗ рд╕рд╛рде, рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд▓реЛрдЧреЛ, рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдИрдкреАрдЬреА рдореИрдкрд┐рдВрдЧ рдХреЗ рд╕рд╛рде, рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдПрдЪрдбреА / рдПрд╕рдбреА рдХреЛ рдЫрд╛рдВрдЯрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рдорд┐рд▓рддрд╛ рд╣реИред рдПрдЪрдбреА / рдПрд╕рдбреА рдФрд░ рдирд╛рдо рд╕реЗ рд╕рдореВрд╣реЛрдВ рдХреЗ рднреАрддрд░ рдЪреИрдирд▓ред рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рд╕рдм рдХреБрдЫ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдФрд░ рдЕрдкрдиреЗ рдкрд╕рдВрджреАрджрд╛ рдЪреИрдирд▓реЛрдВ рдХреА рдПрдХ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдФрд░ рдлрд┐рд░ рдЖрдкрдХреЗ рдШрд░ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рд╕рднреА рдбрд┐рд╡рд╛рдЗрд╕ рд▓рд┐рдВрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд╛рдВрдЫрд┐рдд рдкреНрд▓реЗрд▓рд┐рд╕реНрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗ, рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рддреБрд░рдВрдд "рд╕рдм рдХреБрдЫ рд╕реБрдВрджрд░ рд╣реИ"ред



рдпреБрдкреАрдбреАред 2019/02/19:

  • рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдЬрдм рдореВрд▓ рдкреНрд▓реЗрд▓рд┐рд╕реНрдЯ ("рд╕реБрдкрд░рд╡реЙрд╢" рд▓реЛрдб рдХрд░рдиреЗ рдкрд░ gzip рд╕рдорд░реНрдерди рдЕрдм рдХреЗрд╡рд▓ gzip рдореЗрдВ ttv.all.tag.player.m3u рджреЗрддрд╛ рд╣реИ)ред рдЖрдкрдХреА рдмрдирд╛рдИ рдЧрдИ рдкреНрд▓реЗрд▓рд┐рд╕реНрдЯ рдХреЛ рдкрд╣рд▓реЗ рдХреА рддрд░рд╣ рдЯреЗрдХреНрд╕реНрдЯ / рдореИрджрд╛рди рдореЗрдВ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
  • рдореВрд▓ рдкреНрд▓реЗрд▓рд┐рд╕реНрдЯ рд╕реЗ рд▓реЛрдЧреЛ рдХреЗ рд▓рд┐рдВрдХ рд▓реЗрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ред

Source: https://habr.com/ru/post/hi438842/


All Articles