Best Python code snippet using Airtest
all_cameras.py
Source:all_cameras.py  
1import json2import urllib3import pandas as pd4from collections import namedtuple5col_index, col_id, col_name, col_title, col_url, col_image_url = 'index', 'id', 'camera_name', 'title', 'url', 'image_url'6def get_all_cameras() -> pd.DataFrame:7    CameraInfo = namedtuple('CameraInfo', [col_index, col_id, col_name, col_title, col_url, col_image_url])8    try:9        _link = 'http://5c328052cb7f5.streamlock.net/live/'10        _f = urllib.request.urlopen(_link)11        _data_string = _f.read()12        _data = json.loads(_data_string)13    except (urllib.error.HTTPError, urllib.error.URLError):14        _data = [{"id": 140, "name": "SHAARHAGAI", "title": "שער ××××",15                  "image_file": r"http://iroads.bvtech.co.il/upfiles/SHAARHAGAI/shaarhagay.png", "details": "1,TRUE",16                  "host_ip": None, "global_url": "", "server_ip": "", "app_name": "", "app_instance": "",17                  "is_recording": 0,18                  "start_recording": "0000-00-00 00:00:00", "server_name": None,19                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/SHAARHAGAI.stream",20                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/SHAARHAGAI.stream/playlist.m3u8"},21                 {"id": 141, "name": "HASHOMRIM", "title": "×ש××ר××",22                  "image_file": r"http://iroads.bvtech.co.il/upfiles/HASHOMRIM/hashomrim.png", "details": "75",23                  "host_ip": None, "global_url": "", "server_ip": "", "app_name": "", "app_instance": "",24                  "is_recording": 0,25                  "start_recording": "0000-00-00 00:00:00", "server_name": None,26                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/HASHOMRIM.stream",27                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/HASHOMRIM.stream/playlist.m3u8"},28                 {"id": 143, "name": "LEHAVIM", "title": "×××××",29                  "image_file": r"http://iroads.bvtech.co.il/upfiles/LEHAVIM/lehavim.png", "details": "40,TRUE",30                  "host_ip": None, "global_url": "", "server_ip": "", "app_name": "", "app_instance": "",31                  "is_recording": 0,32                  "start_recording": "0000-00-00 00:00:00", "server_name": None,33                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/LEHAVIM.stream",34                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/LEHAVIM.stream/playlist.m3u8"},35                 {"id": 144, "name": "KASTINA", "title": "קס××× ×",36                  "image_file": r"http://iroads.bvtech.co.il/upfiles/KASTINA/kastina.png", "details": "40,TRUE",37                  "host_ip": None, "global_url": "", "server_ip": "", "app_name": "", "app_instance": "",38                  "is_recording": 0,39                  "start_recording": "0000-00-00 00:00:00", "server_name": None,40                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/KASTINA.stream",41                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/KASTINA.stream/playlist.m3u8"},42                 {"id": 146, "name": "GOLANI", "title": "×××× ×",43                  "image_file": r"http://iroads.bvtech.co.il/upfiles/GOLANI/golani.png", "details": "77,TRUE",44                  "host_ip": None, "global_url": "", "server_ip": "", "app_name": "", "app_instance": "",45                  "is_recording": 0,46                  "start_recording": "0000-00-00 00:00:00", "server_name": None,47                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/GOLANI.stream",48                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/GOLANI.stream/playlist.m3u8"},49                 {"id": 148, "name": "YAGUR", "title": "×××ר",50                  "image_file": r"http://iroads.bvtech.co.il/upfiles/YAGUR/YAGUR.png", "details": "70,TRUE",51                  "host_ip": None,52                  "global_url": "", "server_ip": "", "app_name": "", "app_instance": "", "is_recording": 0,53                  "start_recording": "0000-00-00 00:00:00", "server_name": None,54                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/YAGUR.stream",55                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/YAGUR.stream/playlist.m3u8"},56                 {"id": 151, "name": "FARADIS", "title": "פ×ר×××ס",57                  "image_file": r"http://iroads.bvtech.co.il/upfiles/FARADIS/faradis.png", "details": "4,TRUE",58                  "host_ip": None, "global_url": "", "server_ip": "", "app_name": "", "app_instance": "",59                  "is_recording": 0,60                  "start_recording": "0000-00-00 00:00:00", "server_name": None,61                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/FARADIS.stream",62                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/FARADIS.stream/playlist.m3u8"},63                 {"id": 152, "name": "GANDAROM", "title": "×× ×ר××",64                  "image_file": r"http://iroads.bvtech.co.il/upfiles/GANDAROM/gandarom.png", "details": "4,TRUE",65                  "host_ip": None, "global_url": "", "server_ip": "", "app_name": "", "app_instance": "",66                  "is_recording": 0,67                  "start_recording": "0000-00-00 00:00:00", "server_name": None,68                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/GANDAROM.stream",69                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/GANDAROM.stream/playlist.m3u8"},70                 {"id": 155, "name": "OMER", "title": "×¢××ר",71                  "image_file": r"http://iroads.bvtech.co.il/upfiles/OMER/omer.png", "details": "60", "host_ip": None,72                  "global_url": "", "server_ip": "", "app_name": "", "app_instance": "", "is_recording": 0,73                  "start_recording": "0000-00-00 00:00:00", "server_name": None,74                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/OMER.stream",75                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/OMER.stream/playlist.m3u8"},76                 {"id": 156, "name": "LATRUN", "title": "××ר××",77                  "image_file": r"http://iroads.bvtech.co.il/upfiles/LATRUN/latrun.png", "details": "1,TRUE",78                  "host_ip": None, "global_url": "", "server_ip": "", "app_name": "", "app_instance": "",79                  "is_recording": 0,80                  "start_recording": "0000-00-00 00:00:00", "server_name": None,81                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/LATRUN.stream",82                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/LATRUN.stream/playlist.m3u8"},83                 {"id": 158, "name": "HAMED", "title": "×××",84                  "image_file": r"http://iroads.bvtech.co.il/upfiles/HAMED/hemed.png", "details": "1", "host_ip": None,85                  "global_url": "", "server_ip": "", "app_name": "", "app_instance": "", "is_recording": 0,86                  "start_recording": "0000-00-00 00:00:00", "server_name": None,87                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/HAMED.stream",88                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/HAMED.stream/playlist.m3u8"},89                 {"id": 160, "name": "BEITRIMON", "title": "××ת ר××××",90                  "image_file": r"http://iroads.bvtech.co.il/upfiles/BEITRIMON/beitrimon.png", "details": "77",91                  "host_ip": None, "global_url": "", "server_ip": "", "app_name": "", "app_instance": "",92                  "is_recording": 0,93                  "start_recording": "0000-00-00 00:00:00", "server_name": None,94                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/BEITRIMON.stream",95                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/BEITRIMON.stream/playlist.m3u8"},96                 {"id": 174, "name": "YOKNEAMILIT", "title": "××§× ×¢× ×¢×××ת",97                  "image_file": r"http://iroads.bvtech.co.il/upfiles/YOKNEAMILIT/yokneamilit.png", "details": "70",98                  "host_ip": None, "global_url": "", "server_ip": "", "app_name": "", "app_instance": "",99                  "is_recording": 0,100                  "start_recording": "0000-00-00 00:00:00", "server_name": None,101                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/YOKNEAMILIT.stream",102                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/YOKNEAMILIT.stream/playlist.m3u8"},103                 {"id": 176, "name": "ASHQELON", "title": "×שק×××",104                  "image_file": r"http://iroads.bvtech.co.il/upfiles/ASHQELON/ashqelon.png", "details": "4",105                  "host_ip": None,106                  "global_url": "", "server_ip": "", "app_name": "", "app_instance": "", "is_recording": 0,107                  "start_recording": "0000-00-00 00:00:00", "server_name": None,108                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/ASHQELON.stream",109                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/ASHQELON.stream/playlist.m3u8"},110                 {"id": 177, "name": "PLUGOT", "title": "פ××××ת",111                  "image_file": r"http://iroads.bvtech.co.il/upfiles/PLUGOT/plugot.png", "details": "40",112                  "host_ip": None,113                  "global_url": "", "server_ip": "", "app_name": "", "app_instance": "", "is_recording": 0,114                  "start_recording": "0000-00-00 00:00:00", "server_name": None,115                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/PLUGOT.stream",116                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/PLUGOT.stream/playlist.m3u8"},117                 {"id": 178, "name": "ALUFSADE", "title": "××××£ ש××",118                  "image_file": r"http://iroads.bvtech.co.il/upfiles/ALUFSADE/alufsade.png", "details": "4",119                  "host_ip": None,120                  "global_url": "", "server_ip": "", "app_name": "", "app_instance": "", "is_recording": 0,121                  "start_recording": "0000-00-00 00:00:00", "server_name": None,122                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/ALUFSADE.stream",123                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/ALUFSADE.stream/playlist.m3u8"},124                 {"id": 179, "name": "HASIRA", "title": "×ס×ר×",125                  "image_file": r"http://iroads.bvtech.co.il/upfiles/HASIRA/hasira.png", "details": "2",126                  "host_ip": None,127                  "global_url": "", "server_ip": "", "app_name": "", "app_instance": "", "is_recording": 0,128                  "start_recording": "0000-00-00 00:00:00", "server_name": None,129                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/HASIRA.stream",130                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/HASIRA.stream/playlist.m3u8"},131                 {"id": 180, "name": "GILAT", "title": "×××ת",132                  "image_file": r"http://iroads.bvtech.co.il/upfiles/GILAT/gilat.png", "details": "25", "host_ip": None,133                  "global_url": "", "server_ip": "", "app_name": "", "app_instance": "", "is_recording": 0,134                  "start_recording": "0000-00-00 00:00:00", "server_name": None,135                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/GILAT.stream",136                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/GILAT.stream/playlist.m3u8"},137                 {"id": 181, "name": "KARMIELEAST", "title": "×ר×××× ××ר×",138                  "image_file": r"http://iroads.bvtech.co.il/upfiles/KARMIELEAST/karmieleast.png", "details": "85",139                  "host_ip": None, "global_url": "", "server_ip": "", "app_name": "", "app_instance": "",140                  "is_recording": 0,141                  "start_recording": "0000-00-00 00:00:00", "server_name": None,142                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/KARMIELEAST.stream",143                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/KARMIELEAST.stream/playlist.m3u8"},144                 {"id": 182, "name": "AKOEAST", "title": "×¢×× ××ר×",145                  "image_file": r"http://iroads.bvtech.co.il/upfiles/AKOEAST/akoeast.png", "details": "4",146                  "host_ip": None,147                  "global_url": "", "server_ip": "", "app_name": "", "app_instance": "", "is_recording": 0,148                  "start_recording": "0000-00-00 00:00:00", "server_name": None,149                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/AKOEAST.stream",150                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/AKOEAST.stream/playlist.m3u8"},151                 {"id": 183, "name": "EVLAIM", "title": "××××××",152                  "image_file": r"http://iroads.bvtech.co.il/upfiles/EVLAIM/evlaim.png", "details": "70",153                  "host_ip": None,154                  "global_url": "", "server_ip": "", "app_name": "", "app_instance": "", "is_recording": 0,155                  "start_recording": "0000-00-00 00:00:00", "server_name": None,156                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/EVLAIM.stream",157                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/EVLAIM.stream/playlist.m3u8"},158                 {"id": 184, "name": "SHILAT", "title": "ש××ת",159                  "image_file": r"http://iroads.bvtech.co.il/upfiles/SHILAT/shilat.png", "details": "443",160                  "host_ip": None,161                  "global_url": "", "server_ip": "", "app_name": "", "app_instance": "", "is_recording": 0,162                  "start_recording": "0000-00-00 00:00:00", "server_name": None,163                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/SHILAT.stream",164                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/SHILAT.stream/playlist.m3u8"},165                 {"id": 185, "name": "BALFURIYA", "title": "××פ×ר××",166                  "image_file": r"http://iroads.bvtech.co.il/upfiles/BALFURIYA/balfuriya.png", "details": "60",167                  "host_ip": None, "global_url": "", "server_ip": "", "app_name": "", "app_instance": "",168                  "is_recording": 0,169                  "start_recording": "0000-00-00 00:00:00", "server_name": None,170                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/BALFURIYA.stream",171                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/BALFURIYA.stream/playlist.m3u8"},172                 {"id": 186, "name": "MEGIDO", "title": "×××××",173                  "image_file": r"http://iroads.bvtech.co.il/upfiles/MEGIDO/megido.png", "details": "65",174                  "host_ip": None,175                  "global_url": "", "server_ip": "", "app_name": "", "app_instance": "", "is_recording": 0,176                  "start_recording": "0000-00-00 00:00:00", "server_name": None,177                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/MEGIDO.stream",178                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/MEGIDO.stream/playlist.m3u8"},179                 {"id": 187, "name": "OLGA", "title": "×××××",180                  "image_file": r"http://iroads.bvtech.co.il/upfiles/OLGA/olga.png", "details": "2", "host_ip": None,181                  "global_url": "", "server_ip": "", "app_name": "", "app_instance": "", "is_recording": 0,182                  "start_recording": "0000-00-00 00:00:00", "server_name": None,183                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/OLGA.stream",184                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/OLGA.stream/playlist.m3u8"},185                 {"id": 188, "name": "RAANANACENTER", "title": "×¨×¢× × × ×ר××",186                  "image_file": r"http://iroads.bvtech.co.il/upfiles/RAANANACENTER/raananacenter.png", "details": "4",187                  "host_ip": None, "global_url": "", "server_ip": "", "app_name": "", "app_instance": "",188                  "is_recording": 0,189                  "start_recording": "0000-00-00 00:00:00", "server_name": None,190                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/RAANANACENTER.stream",191                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/RAANANACENTER.stream/playlist.m3u8"},192                 {"id": 189, "name": "RISHONLEZION", "title": "ר×ש×× ×צ×××",193                  "image_file": r"http://iroads.bvtech.co.il/upfiles/RISHONLEZION/rishonlezion.png", "details": "4",194                  "host_ip": None, "global_url": "", "server_ip": "", "app_name": "", "app_instance": "",195                  "is_recording": 0,196                  "start_recording": "0000-00-00 00:00:00", "server_name": None,197                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/RISHONLEZION.stream",198                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/RISHONLEZION.stream/playlist.m3u8"},199                 {"id": 190, "name": "POLEG", "title": "פ×××",200                  "image_file": r"http://iroads.bvtech.co.il/upfiles/POLEG/poleg.png", "details": "2", "host_ip": None,201                  "global_url": "", "server_ip": "", "app_name": "", "app_instance": "", "is_recording": 0,202                  "start_recording": "0000-00-00 00:00:00", "server_name": None,203                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/POLEG.stream",204                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/POLEG.stream/playlist.m3u8"},205                 {"id": 193, "name": "BEITOVED", "title": "××ת ×¢×××",206                  "image_file": r"http://iroads.bvtech.co.il/upfiles/BEITOVED/beitoved.png", "details": "42",207                  "host_ip": None, "global_url": "", "server_ip": "", "app_name": "", "app_instance": "",208                  "is_recording": 0,209                  "start_recording": "0000-00-00 00:00:00", "server_name": None,210                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/BEITOVED.stream",211                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/BEITOVED.stream/playlist.m3u8"},212                 {"id": 194, "name": "BILU", "title": "×××\"×",213                  "image_file": r"http://iroads.bvtech.co.il/upfiles/BILU/bilu.png", "details": "40", "host_ip": None,214                  "global_url": "", "server_ip": "", "app_name": "", "app_instance": "", "is_recording": 0,215                  "start_recording": "0000-00-00 00:00:00", "server_name": None,216                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/BILU.stream",217                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/BILU.stream/playlist.m3u8"},218                 {"id": 195, "name": "BNEIDROR", "title": "×× × ×ר×ר",219                  "image_file": r"http://iroads.bvtech.co.il/upfiles/BNEIDROR/bneidror.png", "details": "4",220                  "host_ip": None,221                  "global_url": "", "server_ip": "", "app_name": "", "app_instance": "", "is_recording": 0,222                  "start_recording": "0000-00-00 00:00:00", "server_name": None,223                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/BNEIDROR.stream",224                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/BNEIDROR.stream/playlist.m3u8"},225                 {"id": 196, "name": "GANOT", "title": "×× ×ת",226                  "image_file": r"http://iroads.bvtech.co.il/upfiles/GANOT/ganot.png", "details": "1", "host_ip": None,227                  "global_url": "", "server_ip": "", "app_name": "", "app_instance": "", "is_recording": 0,228                  "start_recording": "0000-00-00 00:00:00", "server_name": None,229                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/GANOT.stream",230                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/GANOT.stream/playlist.m3u8"},231                 {"id": 197, "name": "GEDERA", "title": "××ר×",232                  "image_file": r"http://iroads.bvtech.co.il/upfiles/GEDERA/gedera.png", "details": "7",233                  "host_ip": None,234                  "global_url": "", "server_ip": "", "app_name": "", "app_instance": "", "is_recording": 0,235                  "start_recording": "0000-00-00 00:00:00", "server_name": None,236                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/GEDERA.stream",237                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/GEDERA.stream/playlist.m3u8"},238                 {"id": 199, "name": "GINATON", "title": "××נת××",239                  "image_file": r"http://iroads.bvtech.co.il/upfiles/GINATON/ginaton.png", "details": "40",240                  "host_ip": None,241                  "global_url": "", "server_ip": "", "app_name": "", "app_instance": "", "is_recording": 0,242                  "start_recording": "0000-00-00 00:00:00", "server_name": None,243                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/GINATON.stream",244                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/GINATON.stream/playlist.m3u8"},245                 {"id": 201, "name": "NEVEILAN", "title": "× ××× ××××",246                  "image_file": r"http://iroads.bvtech.co.il/upfiles/NEVEILAN/neveilan.png", "details": "1",247                  "host_ip": None,248                  "global_url": "", "server_ip": "", "app_name": "", "app_instance": "", "is_recording": 0,249                  "start_recording": "0000-00-00 00:00:00", "server_name": None,250                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/NEVEILAN.stream",251                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/NEVEILAN.stream/playlist.m3u8"},252                 {"id": 202, "name": "TAYASIM", "title": "×××ס××",253                  "image_file": r"http://iroads.bvtech.co.il/upfiles/TAYASIM/tayasim.png", "details": "40",254                  "host_ip": None,255                  "global_url": "", "server_ip": "", "app_name": "", "app_instance": "", "is_recording": 0,256                  "start_recording": "0000-00-00 00:00:00", "server_name": None,257                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/TAYASIM.stream",258                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/TAYASIM.stream/playlist.m3u8"},259                 {"id": 203, "name": "SHORES", "title": "ש×רש",260                  "image_file": r"http://iroads.bvtech.co.il/upfiles/SHORES/shoresh.png", "details": "1",261                  "host_ip": None,262                  "global_url": "", "server_ip": "", "app_name": "", "app_instance": "", "is_recording": 0,263                  "start_recording": "0000-00-00 00:00:00", "server_name": None,264                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/SHORES.stream",265                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/SHORES.stream/playlist.m3u8"},266                 {"id": 205, "name": "HAKFARHAYAROK", "title": "××פר ××ר××§",267                  "image_file": r"http://iroads.bvtech.co.il/upfiles/HAKFARHAYAROK/hakfarhayarok.png", "details": "5",268                  "host_ip": None, "global_url": "", "server_ip": "", "app_name": "", "app_instance": "",269                  "is_recording": 0,270                  "start_recording": "0000-00-00 00:00:00", "server_name": None,271                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/HAKFARHAYAROK.stream",272                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/HAKFARHAYAROK.stream/playlist.m3u8"},273                 {"id": 206, "name": "TIKVA", "title": "תק×××",274                  "image_file": r"http://iroads.bvtech.co.il/upfiles/TIKVA/tikva.png", "details": "5", "host_ip": None,275                  "global_url": "", "server_ip": "", "app_name": "", "app_instance": "", "is_recording": 0,276                  "start_recording": "0000-00-00 00:00:00", "server_name": None,277                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/TIKVA.stream",278                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/TIKVA.stream/playlist.m3u8"},279                 {"id": 208, "name": "CEASARIA", "title": "×§×סר××",280                  "image_file": r"http://iroads.bvtech.co.il/upfiles/CEASARIA/ceasaria.png", "details": "2",281                  "host_ip": None,282                  "global_url": "", "server_ip": "", "app_name": "", "app_instance": "", "is_recording": 0,283                  "start_recording": "0000-00-00 00:00:00", "server_name": None,284                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/CEASARIA.stream",285                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/CEASARIA.stream/playlist.m3u8"},286                 {"id": 209, "name": "TELYOSEF", "title": "×ª× ××סף",287                  "image_file": r"http://iroads.bvtech.co.il/upfiles/TELYOSEF/telyosef.png", "details": "71",288                  "host_ip": None, "global_url": "", "server_ip": "", "app_name": "", "app_instance": "",289                  "is_recording": 0,290                  "start_recording": "0000-00-00 00:00:00", "server_name": None,291                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/TELYOSEF.stream",292                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/TELYOSEF.stream/playlist.m3u8"},293                 {"id": 210, "name": "MAHANEOFER", "title": "××× × ×¢×פר",294                  "image_file": r"http://iroads.bvtech.co.il/upfiles/MAHANEOFER/mahaneofer.png", "details": "443",295                  "host_ip": None, "global_url": "", "server_ip": "", "app_name": "", "app_instance": "",296                  "is_recording": 0,297                  "start_recording": "0000-00-00 00:00:00", "server_name": None,298                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/MAHANEOFER.stream",299                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/MAHANEOFER.stream/playlist.m3u8"},300                 {"id": 211, "name": "BEITHORON", "title": "××ת ××ר××",301                  "image_file": r"http://iroads.bvtech.co.il/upfiles/BEITHORON/beithoron.png", "details": "443",302                  "host_ip": None, "global_url": "", "server_ip": "", "app_name": "", "app_instance": "",303                  "is_recording": 0,304                  "start_recording": "0000-00-00 00:00:00", "server_name": None,305                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/BEITHORON.stream",306                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/BEITHORON.stream/playlist.m3u8"},307                 {"id": 213, "name": "HATISHBI", "title": "×ת×ש××",308                  "image_file": r"http://iroads.bvtech.co.il/upfiles/HATISHBI/hatishbi.png", "details": "70",309                  "host_ip": None, "global_url": "", "server_ip": "", "app_name": "", "app_instance": "",310                  "is_recording": 0,311                  "start_recording": "0000-00-00 00:00:00", "server_name": None,312                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/HATISHBI.stream",313                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/HATISHBI.stream/playlist.m3u8"},314                 {"id": 218, "name": "HAREL", "title": "×ר××",315                  "image_file": r"http://iroads.bvtech.co.il/upfiles/HAREL/harel.png", "details": "1", "host_ip": None,316                  "global_url": "", "server_ip": "10.34.151.3", "app_name": "live", "app_instance": "_definst_",317                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,318                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/HAREL.stream",319                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/HAREL.stream/playlist.m3u8"},320                 {"id": 219, "name": "ATAROT", "title": "×¢×ר×ת",321                  "image_file": r"http://iroads.bvtech.co.il/upfiles/ATAROT/atarot.png", "details": "443",322                  "host_ip": None,323                  "global_url": "", "server_ip": "10.34.151.3", "app_name": "live", "app_instance": "_definst_",324                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,325                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/ATAROT.stream",326                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/ATAROT.stream/playlist.m3u8"},327                 {"id": 225, "name": "MORASHA", "title": "××רש×",328                  "image_file": r"http://iroads.bvtech.co.il/upfiles/MORASHA/morasha.png", "details": "5",329                  "host_ip": None,330                  "global_url": "", "server_ip": "10.34.151.3", "app_name": "live", "app_instance": "_definst_",331                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,332                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/MORASHA.stream",333                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/MORASHA.stream/playlist.m3u8"},334                 {"id": 226, "name": "SHAPIRIM", "title": "שפ×ר××",335                  "image_file": r"http://iroads.bvtech.co.il/upfiles/SHAPIRIM/shapirim.png", "details": "1",336                  "host_ip": None,337                  "global_url": "", "server_ip": "10.34.151.3", "app_name": "live", "app_instance": "_definst_",338                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,339                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/SHAPIRIM.stream",340                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/SHAPIRIM.stream/playlist.m3u8"},341                 {"id": 227, "name": "YAGEL", "title": "×××",342                  "image_file": r"http://iroads.bvtech.co.il/upfiles/YAGEL/yagel.png", "details": "1", "host_ip": None,343                  "global_url": "", "server_ip": "10.34.151.3", "app_name": "live", "app_instance": "_definst_",344                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,345                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/YAGEL.stream",346                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/YAGEL.stream/playlist.m3u8"},347                 {"id": 228, "name": "NATBAG", "title": "נת×\"×",348                  "image_file": r"http://iroads.bvtech.co.il/upfiles/NATBAG/natbag.png", "details": "1",349                  "host_ip": None,350                  "global_url": "", "server_ip": "10.34.151.3", "app_name": "live", "app_instance": "_definst_",351                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,352                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/NATBAG.stream",353                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/NATBAG.stream/playlist.m3u8"},354                 {"id": 229, "name": "LOD", "title": "×××",355                  "image_file": r"http://iroads.bvtech.co.il/upfiles/LOD/lod.png",356                  "details": "1", "host_ip": None, "global_url": "", "server_ip": "10.34.151.3", "app_name": "live",357                  "app_instance": "_definst_", "is_recording": 0, "start_recording": "0000-00-00 00:00:00",358                  "server_name": None,359                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/LOD.stream",360                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/LOD.stream/playlist.m3u8"},361                 {"id": 230, "name": "SHAALABIM", "title": "שע××××",362                  "image_file": r"http://iroads.bvtech.co.il/upfiles/SHAALABIM/shaalabim.PNG", "details": "1",363                  "host_ip": None, "global_url": "", "server_ip": "10.34.151.3", "app_name": "live",364                  "app_instance": "_definst_",365                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,366                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/SHAALABIM.stream",367                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/SHAALABIM.stream/playlist.m3u8"},368                 {"id": 231, "name": "MITZPEMODIIN", "title": "××¦×¤× ×××××¢××",369                  "image_file": r"http://iroads.bvtech.co.il/upfiles/MITZPEMODIIN/mitzpemodiin.png", "details": "443",370                  "host_ip": None, "global_url": "", "server_ip": "10.34.151.3", "app_name": "live",371                  "app_instance": "_definst_",372                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,373                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/MITZPEMODIIN.stream",374                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/MITZPEMODIIN.stream/playlist.m3u8"},375                 {"id": 232, "name": "MITKANADAM", "title": "××ª×§× ×××",376                  "image_file": r"http://iroads.bvtech.co.il/upfiles/MITKANADAM/mitkanadam.png", "details": "443",377                  "host_ip": None, "global_url": "", "server_ip": "10.34.151.3", "app_name": "live",378                  "app_instance": "_definst_",379                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,380                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/MITKANADAM.stream",381                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/MITKANADAM.stream/playlist.m3u8"},382                 {"id": 233, "name": "KARMIELWEST", "title": "×ר×××× ×ער×",383                  "image_file": r"http://iroads.bvtech.co.il/upfiles/KARMIELWEST/karmielwest.png", "details": "85",384                  "host_ip": None, "global_url": "", "server_ip": "10.34.151.3", "app_name": "live",385                  "app_instance": "_definst_",386                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,387                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/KARMIELWEST.stream",388                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/KARMIELWEST.stream/playlist.m3u8"},389                 {"id": 234, "name": "ZICHRONYAAKOV", "title": "×××ר×× ××¢×§×",390                  "image_file": r"http://iroads.bvtech.co.il/upfiles/ZICHRONYAAKOV/zichronyaakov.PNG", "details": "4",391                  "host_ip": None, "global_url": "", "server_ip": "10.34.151.3", "app_name": "live",392                  "app_instance": "_definst_",393                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,394                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/ZICHRONYAAKOV.stream",395                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/ZICHRONYAAKOV.stream/playlist.m3u8"},396                 {"id": 235, "name": "ORAKIVA", "title": "××ר ×¢×§××× (××ר×ת)",397                  "image_file": r"http://iroads.bvtech.co.il/upfiles/ORAKIVA/orakiva.PNG", "details": "4",398                  "host_ip": None,399                  "global_url": "", "server_ip": "10.34.151.3", "app_name": "live", "app_instance": "_definst_",400                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,401                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/ORAKIVA.stream",402                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/ORAKIVA.stream/playlist.m3u8"},403                 {"id": 236, "name": "MACABIMREUT", "title": "××××× ×¨×¢×ת",404                  "image_file": r"http://iroads.bvtech.co.il/upfiles/MACABIMREUT/macabimreut.png", "details": "443",405                  "host_ip": None, "global_url": "", "server_ip": "10.34.151.3", "app_name": "live",406                  "app_instance": "_definst_",407                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,408                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/MACABIMREUT.stream",409                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/MACABIMREUT.stream/playlist.m3u8"},410                 {"id": 238, "name": "BATZRA", "title": "×צר×",411                  "image_file": r"http://iroads.bvtech.co.il/upfiles/BATZRA/batzra.png", "details": "4",412                  "host_ip": None,413                  "global_url": "", "server_ip": "10.34.151.3", "app_name": "live", "app_instance": "_definst_",414                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,415                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/BATZRA.stream",416                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/BATZRA.stream/playlist.m3u8"},417                 {"id": 240, "name": "BARILAN", "title": "×ר ××××",418                  "image_file": r"http://iroads.bvtech.co.il/upfiles/BARILAN/barilan.png", "details": "4",419                  "host_ip": None,420                  "global_url": "", "server_ip": "10.34.151.3", "app_name": "live", "app_instance": "_definst_",421                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,422                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/BARILAN.stream",423                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/BARILAN.stream/playlist.m3u8"},424                 {"id": 241, "name": "BEITSHEMESH", "title": "××ת ש×ש",425                  "image_file": r"http://iroads.bvtech.co.il/upfiles/BEITSHEMESH/beitshemesh.png", "details": "38",426                  "host_ip": None, "global_url": "", "server_ip": "10.34.151.3", "app_name": "live",427                  "app_instance": "_definst_",428                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,429                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/BEITSHEMESH.stream",430                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/BEITSHEMESH.stream/playlist.m3u8"},431                 {"id": 242, "name": "RAANANANORTH", "title": "×¨×¢× × × ×¦×¤××",432                  "image_file": r"http://iroads.bvtech.co.il/upfiles/RAANANANORTH/raanananorth.png", "details": "4",433                  "host_ip": None, "global_url": "", "server_ip": "10.34.151.3", "app_name": "live",434                  "app_instance": "_definst_",435                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,436                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/RAANANANORTH.stream",437                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/RAANANANORTH.stream/playlist.m3u8"},438                 {"id": 243, "name": "ADANIM", "title": "×¢×× ××",439                  "image_file": r"http://iroads.bvtech.co.il/upfiles/ADANIM/adanim.png", "details": "40",440                  "host_ip": None,441                  "global_url": "", "server_ip": "10.34.151.3", "app_name": "live", "app_instance": "_definst_",442                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,443                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/ADANIM.stream",444                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/ADANIM.stream/playlist.m3u8"},445                 {"id": 244, "name": "ERON", "title": "×¢×ר××",446                  "image_file": r"http://iroads.bvtech.co.il/upfiles/ERON/eron.png", "details": "65", "host_ip": None,447                  "global_url": "", "server_ip": "10.34.151.3", "app_name": "live", "app_instance": "_definst_",448                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,449                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/ERON.stream",450                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/ERON.stream/playlist.m3u8"},451                 {"id": 245, "name": "ELAL", "title": "××-×¢×",452                  "image_file": r"http://iroads.bvtech.co.il/upfiles/ELAL/elal.png", "details": "40", "host_ip": None,453                  "global_url": "", "server_ip": "10.34.151.3", "app_name": "live", "app_instance": "_definst_",454                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,455                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/ELAL.stream",456                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/ELAL.stream/playlist.m3u8"},457                 {"id": 246, "name": "BEITLID", "title": "××ת ×××",458                  "image_file": r"http://iroads.bvtech.co.il/upfiles/BEITLID/beitlid.png", "details": "4",459                  "host_ip": None,460                  "global_url": "", "server_ip": "10.34.151.3", "app_name": "live", "app_instance": "_definst_",461                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,462                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/BEITLID.stream",463                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/BEITLID.stream/playlist.m3u8"},464                 {"id": 247, "name": "NIRGALIM", "title": "× ×ר ××××",465                  "image_file": r"http://iroads.bvtech.co.il/upfiles/NIRGALIM/nirgalim.PNG", "details": "41",466                  "host_ip": None, "global_url": "", "server_ip": "10.34.151.3", "app_name": "live",467                  "app_instance": "_definst_",468                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,469                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/NIRGALIM.stream",470                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/NIRGALIM.stream/playlist.m3u8"},471                 {"id": 249, "name": "MESUBIM", "title": "×ס××××",472                  "image_file": r"http://iroads.bvtech.co.il/upfiles/MESUBIM/mesubim.PNG", "details": "4",473                  "host_ip": None,474                  "global_url": "", "server_ip": "10.34.151.3", "app_name": "live", "app_instance": "_definst_",475                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,476                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/MESUBIM.stream",477                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/MESUBIM.stream/playlist.m3u8"},478                 {"id": 250, "name": "ELISHEMA", "title": "×××ש××¢",479                  "image_file": r"http://iroads.bvtech.co.il/upfiles/ELISHEMA/elishema.png", "details": "531",480                  "host_ip": None, "global_url": "", "server_ip": "10.34.151.3", "app_name": "live",481                  "app_instance": "_definst_",482                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,483                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/ELISHEMA.stream",484                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/ELISHEMA.stream/playlist.m3u8"},485                 {"id": 251, "name": "KFRASHMARIYAHU", "title": "×פר ש×ר×××",486                  "image_file": r"http://iroads.bvtech.co.il/upfiles/KFRASHMARIYAHU/kfarshmaryahu.png", "details": "2",487                  "host_ip": None, "global_url": "", "server_ip": "10.34.151.3", "app_name": "live",488                  "app_instance": "_definst_",489                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,490                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/KFRASHMARIYAHU.stream",491                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/KFRASHMARIYAHU.stream/playlist.m3u8"},492                 {"id": 252, "name": "MIGDALTZEDEK", "title": "×××× ×¦××§",493                  "image_file": r"http://iroads.bvtech.co.il/upfiles/MIGDALTZEDEK/migdaltzedek.PNG", "details": "444",494                  "host_ip": None, "global_url": "", "server_ip": "10.34.151.3", "app_name": "live",495                  "app_instance": "_definst_",496                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,497                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/MIGDALTZEDEK.stream",498                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/MIGDALTZEDEK.stream/playlist.m3u8"},499                 {"id": 254, "name": "NAHSHONIM", "title": "× ×ש×× ××",500                  "image_file": r"http://iroads.bvtech.co.il/upfiles/NAHSHONIM/nahshonim.PNG", "details": "444",501                  "host_ip": None, "global_url": "", "server_ip": "10.34.151.3", "app_name": "live",502                  "app_instance": "_definst_",503                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,504                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/NAHSHONIM.stream",505                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/NAHSHONIM.stream/playlist.m3u8"},506                 {"id": 256, "name": "REEM", "title": "ר××",507                  "image_file": r"http://iroads.bvtech.co.il/upfiles/REEM/reem.PNG", "details": "40", "host_ip": None,508                  "global_url": "", "server_ip": "10.34.151.3", "app_name": "live", "app_instance": "_definst_",509                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,510                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/REEM.stream",511                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/REEM.stream/playlist.m3u8"},512                 {"id": 257, "name": "SHIMSHON", "title": "ש×ש××",513                  "image_file": r"http://iroads.bvtech.co.il/upfiles/SHIMSHON/shimshon.PNG", "details": "38",514                  "host_ip": None, "global_url": "", "server_ip": "10.34.151.3", "app_name": "live",515                  "app_instance": "_definst_",516                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,517                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/SHIMSHON.stream",518                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/SHIMSHON.stream/playlist.m3u8"},519                 {"id": 258, "name": "GORAL", "title": "××ר×",520                  "image_file": r"http://iroads.bvtech.co.il/upfiles/GORAL/goral.png", "details": "40", "host_ip": None,521                  "global_url": "", "server_ip": "10.34.151.3", "app_name": "live", "app_instance": "_definst_",522                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,523                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/GORAL.stream",524                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/GORAL.stream/playlist.m3u8"},525                 {"id": 259, "name": "GANYAVNE", "title": "×× ××× ×",526                  "image_file": r"http://iroads.bvtech.co.il/upfiles/GANYAVNE/ganyavne.PNG", "details": "4",527                  "host_ip": None,528                  "global_url": "", "server_ip": "10.34.151.3", "app_name": "live", "app_instance": "_definst_",529                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,530                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/GANYAVNE.stream",531                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/GANYAVNE.stream/playlist.m3u8"},532                 {"id": 260, "name": "HAOGEN", "title": "××¢×××",533                  "image_file": r"http://iroads.bvtech.co.il/upfiles/HAOGEN/haogen.PNG", "details": "4",534                  "host_ip": None,535                  "global_url": "", "server_ip": "10.34.151.3", "app_name": "live", "app_instance": "_definst_",536                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,537                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/HAOGEN.stream",538                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/HAOGEN.stream/playlist.m3u8"},539                 {"id": 261, "name": "ZARZIR", "title": "×ר××ר",540                  "image_file": r"http://iroads.bvtech.co.il/upfiles/ZARZIR/zarzir.PNG", "details": "77",541                  "host_ip": None,542                  "global_url": "", "server_ip": "10.34.151.3", "app_name": "live", "app_instance": "_definst_",543                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,544                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/ZARZIR.stream",545                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/ZARZIR.stream/playlist.m3u8"},546                 {"id": 262, "name": "HORASHIM", "title": "××רש××",547                  "image_file": r"http://iroads.bvtech.co.il/upfiles/HORASHIM/horashim.png", "details": "531",548                  "host_ip": None, "global_url": "", "server_ip": "10.34.151.3", "app_name": "live",549                  "app_instance": "_definst_",550                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,551                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/HORASHIM.stream",552                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/HORASHIM.stream/playlist.m3u8"},553                 {"id": 263, "name": "GIVATSHMUEL", "title": "××עת ש××××",554                  "image_file": r"http://iroads.bvtech.co.il/upfiles/GIVATSHMUEL/Untitled.png", "details": "4",555                  "host_ip": None, "global_url": "", "server_ip": "10.34.151.3", "app_name": "live",556                  "app_instance": "_definst_",557                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,558                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/GIVATSHMUEL.stream",559                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/GIVATSHMUEL.stream/playlist.m3u8"},560                 {"id": 265, "name": "GEHA", "title": "×××",561                  "image_file": r"http://iroads.bvtech.co.il/upfiles/GEHA/geha.png", "details": "4", "host_ip": None,562                  "global_url": "", "server_ip": "10.34.151.3", "app_name": "live", "app_instance": "_definst_",563                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,564                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/GEHA.stream",565                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/GEHA.stream/playlist.m3u8"},566                 {"id": 266, "name": "NITZANIM", "title": "× ×צנ××",567                  "image_file": r"http://iroads.bvtech.co.il/upfiles/NITZANIM/nitzanim.png", "details": "4",568                  "host_ip": None,569                  "global_url": "", "server_ip": "10.34.151.3", "app_name": "live", "app_instance": "_definst_",570                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,571                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/NITZANIM.stream",572                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/NITZANIM.stream/playlist.m3u8"},573                 {"id": 268, "name": "MAAHAZKVISH6", "title": "×××× ×××ש 6",574                  "image_file": r"http://iroads.bvtech.co.il/upfiles/MAAHAZKVISH6/maahaz.png", "details": "6",575                  "host_ip": None, "global_url": "", "server_ip": "10.34.151.3", "app_name": "live",576                  "app_instance": "_definst_",577                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,578                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/MAAHAZKVISH6.stream",579                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/MAAHAZKVISH6.stream/playlist.m3u8"},580                 {"id": 269, "name": "TZRIFIN", "title": "צר×פ××",581                  "image_file": r"http://iroads.bvtech.co.il/upfiles/TZRIFIN/tzrifin.PNG", "details": "44",582                  "host_ip": None,583                  "global_url": "", "server_ip": "10.34.151.3", "app_name": "live", "app_instance": "_definst_",584                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,585                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/TZRIFIN.stream",586                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/TZRIFIN.stream/playlist.m3u8"},587                 {"id": 270, "name": "HAMOVIL", "title": "××××××",588                  "image_file": r"http://iroads.bvtech.co.il/upfiles/HAMOVIL/hamovil.png", "details": "77",589                  "host_ip": None,590                  "global_url": "", "server_ip": "10.34.151.3", "app_name": "live", "app_instance": "_definst_",591                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,592                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/HAMOVIL.stream",593                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/HAMOVIL.stream/playlist.m3u8"},594                 {"id": 275, "name": "ABUGOSH", "title": "××× ××ש",595                  "image_file": r"http://iroads.bvtech.co.il/upfiles/ABUGOSH/abugosh.png", "details": "1",596                  "host_ip": None,597                  "global_url": "", "server_ip": "10.34.151.3", "app_name": "live", "app_instance": "_definst_",598                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,599                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/ABUGOSH.stream",600                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/ABUGOSH.stream/playlist.m3u8"},601                 {"id": 276, "name": "ACHIHOD", "title": "××××××",602                  "image_file": r"http://iroads.bvtech.co.il/upfiles/ACHIHOD/ahihud.png", "details": "85",603                  "host_ip": None,604                  "global_url": "", "server_ip": "10.34.151.3", "app_name": "live", "app_instance": "_definst_",605                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,606                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/ACHIHOD.stream",607                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/ACHIHOD.stream/playlist.m3u8"},608                 {"id": 279, "name": "ADHALOM", "title": "×¢× ××××",609                  "image_file": r"http://iroads.bvtech.co.il/upfiles/ADHALOM/adhalom.png", "details": "4",610                  "host_ip": None,611                  "global_url": "", "server_ip": "10.34.151.3", "app_name": "live", "app_instance": "_definst_",612                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,613                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/ADHALOM.stream",614                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/ADHALOM.stream/playlist.m3u8"},615                 {"id": 281, "name": "AHISEMECH", "title": "×××ס××",616                  "image_file": r"http://iroads.bvtech.co.il/upfiles/AHISEMECH/AHISEMECH.PNG", "details": "40",617                  "host_ip": None, "global_url": "", "server_ip": "10.34.151.3", "app_name": "live",618                  "app_instance": "_definst_",619                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,620                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/AHISEMECH.stream",621                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/AHISEMECH.stream/playlist.m3u8"},622                 {"id": 282, "name": "ALON", "title": "××××",623                  "image_file": r"http://iroads.bvtech.co.il/upfiles/ALON/ALON.PNG", "details": "65", "host_ip": None,624                  "global_url": "", "server_ip": "10.34.151.3", "app_name": "live", "app_instance": "_definst_",625                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,626                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/ALON.stream",627                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/ALON.stream/playlist.m3u8"},628                 {"id": 283, "name": "AMIAD", "title": "×¢×××¢×",629                  "image_file": r"http://iroads.bvtech.co.il/upfiles/AMIAD/AMIAD.PNG", "details": "85", "host_ip": None,630                  "global_url": "", "server_ip": "10.34.151.3", "app_name": "live", "app_instance": "_definst_",631                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,632                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/AMIAD.stream",633                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/AMIAD.stream/playlist.m3u8"},634                 {"id": 284, "name": "ATLIT", "title": "עת××ת",635                  "image_file": r"http://iroads.bvtech.co.il/upfiles/ATLIT/ATLIT.PNG", "details": "4", "host_ip": None,636                  "global_url": "", "server_ip": "10.34.151.3", "app_name": "live", "app_instance": "_definst_",637                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,638                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/ATLIT.stream",639                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/ATLIT.stream/playlist.m3u8"},640                 {"id": 286, "name": "BAFTISTIM", "title": "×פ××ס×××",641                  "image_file": r"http://iroads.bvtech.co.il/upfiles/BAFTISTIM/BAFTISTIM.PNG", "details": "40",642                  "host_ip": None, "global_url": "", "server_ip": "10.34.151.3", "app_name": "live",643                  "app_instance": "_definst_",644                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,645                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/BAFTISTIM.stream",646                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/BAFTISTIM.stream/playlist.m3u8"},647                 {"id": 287, "name": "BEERGANIMPRIOR", "title": "××ר ×× ×× ×¤×¨× ××ר",648                  "image_file": r"http://iroads.bvtech.co.il/upfiles/BEERGANIMPRIOR/BEERGANIMPRIOR.PNG", "details": "4",649                  "host_ip": None, "global_url": "", "server_ip": "10.34.151.3", "app_name": "live",650                  "app_instance": "_definst_",651                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,652                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/BEERGANIMPRIOR.stream",653                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/BEERGANIMPRIOR.stream/playlist.m3u8"},654                 {"id": 288, "name": "BEITDAGAN", "title": "××ת ×××",655                  "image_file": r"http://iroads.bvtech.co.il/upfiles/BEITDAGAN/BEITDAGAN.PNG", "details": "44",656                  "host_ip": None, "global_url": "", "server_ip": "10.34.151.3", "app_name": "live",657                  "app_instance": "_definst_",658                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,659                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/BEITDAGAN.stream",660                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/BEITDAGAN.stream/playlist.m3u8"},661                 {"id": 289, "name": "BEITRABAN", "title": "××ת ר××",662                  "image_file": r"http://iroads.bvtech.co.il/upfiles/BEITRABAN/BEITRABAN.PNG", "details": "7",663                  "host_ip": None, "global_url": "", "server_ip": "10.34.151.3", "app_name": "live",664                  "app_instance": "_definst_",665                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,666                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/BEITRABAN.stream",667                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/BEITRABAN.stream/playlist.m3u8"},668                 {"id": 290, "name": "BEITYEHOSHUA", "title": "××ת ×××שע",669                  "image_file": r"http://iroads.bvtech.co.il/upfiles/BEITYEHOSHUA/BEITYEHOSHUA.PNG", "details": "553",670                  "host_ip": None, "global_url": "", "server_ip": "10.34.151.3", "app_name": "live",671                  "app_instance": "_definst_",672                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,673                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/BEITYEHOSHUA.stream",674                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/BEITYEHOSHUA.stream/playlist.m3u8"},675                 {"id": 291, "name": "BINYAMINA", "title": "×× ×××× ×",676                  "image_file": r"http://iroads.bvtech.co.il/upfiles/BINYAMINA/BINYAMINA.PNG", "details": "4",677                  "host_ip": None, "global_url": "", "server_ip": "10.34.151.3", "app_name": "live",678                  "app_instance": "_definst_",679                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,680                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/BINYAMINA.stream",681                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/BINYAMINA.stream/playlist.m3u8"},682                 {"id": 293, "name": "BRACHYA", "title": "×ר×××",683                  "image_file": r"http://iroads.bvtech.co.il/upfiles/BRACHYA/BRACHYA.PNG", "details": "4",684                  "host_ip": None,685                  "global_url": "", "server_ip": "10.34.151.3", "app_name": "live", "app_instance": "_definst_",686                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,687                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/BRACHYA.stream",688                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/BRACHYA.stream/playlist.m3u8"},689                 {"id": 294, "name": "DGANYAROAD57", "title": "××× ×× ×××ש 57",690                  "image_file": r"http://iroads.bvtech.co.il/upfiles/DGANYAROAD57/DGANYAROAD57.PNG", "details": "57",691                  "host_ip": None, "global_url": "", "server_ip": "10.34.151.3", "app_name": "live",692                  "app_instance": "_definst_",693                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,694                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/DGANYAROAD57.stream",695                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/DGANYAROAD57.stream/playlist.m3u8"},696                 {"id": 299, "name": "EMUNIM", "title": "×××× ××",697                  "image_file": r"http://iroads.bvtech.co.il/upfiles/EMUNIM/EMUNIM.PNG", "details": "4",698                  "host_ip": None,699                  "global_url": "", "server_ip": "10.34.151.3", "app_name": "live", "app_instance": "_definst_",700                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,701                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/EMUNIM.stream",702                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/EMUNIM.stream/playlist.m3u8"},703                 {"id": 300, "name": "ESHELHANASI", "title": "××©× ×נש××",704                  "image_file": r"http://iroads.bvtech.co.il/upfiles/ESHELHANASI/ESHELHANASI.PNG", "details": "25",705                  "host_ip": None, "global_url": "", "server_ip": "10.34.151.3", "app_name": "live",706                  "app_instance": "_definst_",707                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,708                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/ESHELHANASI.stream",709                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/ESHELHANASI.stream/playlist.m3u8"},710                 {"id": 301, "name": "GANRAVE", "title": "×× ×¨×××",711                  "image_file": r"http://iroads.bvtech.co.il/upfiles/GANRAVE/GANRAVE.PNG", "details": "4",712                  "host_ip": None,713                  "global_url": "", "server_ip": "10.34.151.3", "app_name": "live", "app_instance": "_definst_",714                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,715                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/GANRAVE.stream",716                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/GANRAVE.stream/playlist.m3u8"},717                 {"id": 302, "name": "GESHERHASHALOM", "title": "×שר ×ש×××",718                  "image_file": r"http://iroads.bvtech.co.il/upfiles/GESHERHASHALOM/gesherhashalom.png", "details": "2",719                  "host_ip": None, "global_url": "", "server_ip": "10.34.151.3", "app_name": "live",720                  "app_instance": "_definst_",721                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,722                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/GESHERHASHALOM.stream",723                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/GESHERHASHALOM.stream/playlist.m3u8"},724                 {"id": 303, "name": "GILAM", "title": "×××¢×",725                  "image_file": r"http://iroads.bvtech.co.il/upfiles/GILAM/GILAM.PNG", "details": "79", "host_ip": None,726                  "global_url": "", "server_ip": "10.34.151.3", "app_name": "live", "app_instance": "_definst_",727                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,728                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/GILAM.stream",729                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/GILAM.stream/playlist.m3u8"},730                 {"id": 304, "name": "GILOLONG", "title": "×××× ×× ××¨× ×ר×××",731                  "image_file": r"http://iroads.bvtech.co.il/upfiles/GILOLONG/GILOLONG.PNG", "details": "60",732                  "host_ip": None, "global_url": "", "server_ip": "10.34.151.3", "app_name": "live",733                  "app_instance": "_definst_",734                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,735                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/GILOLONG.stream",736                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/GILOLONG.stream/playlist.m3u8"},737                 {"id": 305, "name": "GILOSHORT", "title": "×××× ×× ××¨× ×§×¦×¨×",738                  "image_file": r"http://iroads.bvtech.co.il/upfiles/GILOSHORT/GILOSHORT.PNG", "details": "60",739                  "host_ip": None, "global_url": "", "server_ip": "10.34.151.3", "app_name": "live",740                  "app_instance": "_definst_",741                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,742                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/GILOSHORT.stream",743                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/GILOSHORT.stream/playlist.m3u8"},744                 {"id": 306, "name": "GIMZO", "title": "×××××",745                  "image_file": r"http://iroads.bvtech.co.il/upfiles/GIMZO/GIMZO.PNG", "details": "443",746                  "host_ip": None,747                  "global_url": "", "server_ip": "10.34.151.3", "app_name": "live", "app_instance": "_definst_",748                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,749                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/GIMZO.stream",750                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/GIMZO.stream/playlist.m3u8"},751                 {"id": 307, "name": "GIVATI", "title": "××עת×",752                  "image_file": r"http://iroads.bvtech.co.il/upfiles/GIVATI/GIVATI.PNG", "details": "35",753                  "host_ip": None,754                  "global_url": "", "server_ip": "10.34.151.3", "app_name": "live", "app_instance": "_definst_",755                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,756                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/GIVATI.stream",757                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/GIVATI.stream/playlist.m3u8"},758                 {"id": 309, "name": "GVULUT", "title": "×××××ת",759                  "image_file": r"http://iroads.bvtech.co.il/upfiles/GVULUT/GVULOT.PNG", "details": "232",760                  "host_ip": None,761                  "global_url": "", "server_ip": "10.34.151.3", "app_name": "live", "app_instance": "_definst_",762                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,763                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/GVULUT.stream",764                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/GVULUT.stream/playlist.m3u8"},765                 {"id": 311, "name": "HADARIM", "title": "××ר××",766                  "image_file": r"http://iroads.bvtech.co.il/upfiles/HADARIM/HADARIM.PNG", "details": "4",767                  "host_ip": None,768                  "global_url": "", "server_ip": "10.34.151.3", "app_name": "live", "app_instance": "_definst_",769                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,770                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/HADARIM.stream",771                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/HADARIM.stream/playlist.m3u8"},772                 {"id": 312, "name": "HADASIM", "title": "××ס××",773                  "image_file": r"http://iroads.bvtech.co.il/upfiles/HADASIM/HADASIM.PNG", "details": "4",774                  "host_ip": None,775                  "global_url": "", "server_ip": "10.34.151.3", "app_name": "live", "app_instance": "_definst_",776                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,777                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/HADASIM.stream",778                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/HADASIM.stream/playlist.m3u8"},779                 {"id": 313, "name": "HAKERACH", "title": "×קר×",780                  "image_file": r"http://iroads.bvtech.co.il/upfiles/HAKERACH/HAKERAH.PNG", "details": "44",781                  "host_ip": None,782                  "global_url": "", "server_ip": "10.34.151.3", "app_name": "live", "app_instance": "_definst_",783                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,784                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/HAKERACH.stream",785                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/HAKERACH.stream/playlist.m3u8"},786                 {"id": 314, "name": "HAMAHTESH", "title": "×××תש",787                  "image_file": r"http://iroads.bvtech.co.il/upfiles/HAMAHTESH/HAMAHTESH.PNG", "details": "44",788                  "host_ip": None, "global_url": "", "server_ip": "10.34.151.3", "app_name": "live",789                  "app_instance": "_definst_",790                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,791                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/HAMAHTESH.stream",792                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/HAMAHTESH.stream/playlist.m3u8"},793                 {"id": 315, "name": "HAMELAHA", "title": "××××××",794                  "image_file": r"http://iroads.bvtech.co.il/upfiles/HAMELAHA/HAMELAHA.PNG", "details": "44",795                  "host_ip": None, "global_url": "", "server_ip": "10.34.151.3", "app_name": "live",796                  "app_instance": "_definst_",797                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,798                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/HAMELAHA.stream",799                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/HAMELAHA.stream/playlist.m3u8"},800                 {"id": 316, "name": "HASHIVA", "title": "×ש××¢×",801                  "image_file": r"http://iroads.bvtech.co.il/upfiles/HASHIVA/HASHIVA.PNG", "details": "4",802                  "host_ip": None,803                  "global_url": "", "server_ip": "10.34.151.3", "app_name": "live", "app_instance": "_definst_",804                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,805                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/HASHIVA.stream",806                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/HASHIVA.stream/playlist.m3u8"},807                 {"id": 317, "name": "HATIVA7", "title": "××××× 7",808                  "image_file": r"http://iroads.bvtech.co.il/upfiles/HATIVA7/HATIVA7.PNG", "details": "3",809                  "host_ip": None,810                  "global_url": "", "server_ip": "10.34.151.3", "app_name": "live", "app_instance": "_definst_",811                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,812                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/HATIVA7.stream",813                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/HATIVA7.stream/playlist.m3u8"},814                 {"id": 318, "name": "HATZAV", "title": "×צ×",815                  "image_file": r"http://iroads.bvtech.co.il/upfiles/HATZAV/HATZAV.PNG", "details": "40",816                  "host_ip": None,817                  "global_url": "", "server_ip": "10.34.151.3", "app_name": "live", "app_instance": "_definst_",818                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,819                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/HATZAV.stream",820                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/HATZAV.stream/playlist.m3u8"},821                 {"id": 319, "name": "HAVATSHAARHAGY", "title": "×××ת שער ××××",822                  "image_file": r"http://iroads.bvtech.co.il/upfiles/HAVATSHAARHAGY/HAVATSHAARHAGY.PNG", "details": "1",823                  "host_ip": None, "global_url": "", "server_ip": "10.34.151.3", "app_name": "live",824                  "app_instance": "_definst_",825                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,826                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/HAVATSHAARHAGY.stream",827                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/HAVATSHAARHAGY.stream/playlist.m3u8"},828                 {"id": 320, "name": "HEFER", "title": "×פר",829                  "image_file": r"http://iroads.bvtech.co.il/upfiles/HEFER/HEFER.PNG", "details": "4", "host_ip": None,830                  "global_url": "", "server_ip": "10.34.151.3", "app_name": "live", "app_instance": "_definst_",831                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,832                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/HEFER.stream",833                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/HEFER.stream/playlist.m3u8"},834                 {"id": 321, "name": "HENROAD531", "title": "×× ×××ש 531",835                  "image_file": r"http://iroads.bvtech.co.il/upfiles/HENROAD531/HENROAD531.PNG", "details": "531",836                  "host_ip": None, "global_url": "", "server_ip": "10.34.151.3", "app_name": "live",837                  "app_instance": "_definst_",838                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,839                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/HENROAD531.stream",840                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/HENROAD531.stream/playlist.m3u8"},841                 {"id": 322, "name": "HERTZELIAEASTROAD531", "title": "×רצ××× ×××¨× ×××ש 531",842                  "image_file": r"http://iroads.bvtech.co.il/upfiles/HERTZELIAEASTROAD531/HERTZELIAEASTROAD531.PNG",843                  "details": "531", "host_ip": None, "global_url": "", "server_ip": "10.34.151.3", "app_name": "live",844                  "app_instance": "_definst_", "is_recording": 0, "start_recording": "0000-00-00 00:00:00",845                  "server_name": None,846                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/HERTZELIAEASTROAD531.stream",847                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/HERTZELIAEASTROAD531.stream/playlist.m3u8"},848                 {"id": 324, "name": "HOLOT", "title": "××××ת",849                  "image_file": r"http://iroads.bvtech.co.il/upfiles/HOLOT/holot.png", "details": "×××ש 20",850                  "host_ip": None,851                  "global_url": "", "server_ip": "10.34.151.3", "app_name": "live", "app_instance": "_definst_",852                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,853                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/HOLOT.stream",854                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/HOLOT.stream/playlist.m3u8"},855                 {"id": 325, "name": "JISER", "title": "×'סר",856                  "image_file": r"http://iroads.bvtech.co.il/upfiles/JISER/JISER.PNG", "details": "2", "host_ip": None,857                  "global_url": "", "server_ip": "10.34.151.3", "app_name": "live", "app_instance": "_definst_",858                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,859                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/JISER.stream",860                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/JISER.stream/playlist.m3u8"},861                 {"id": 326, "name": "KABRI", "title": "××ר×",862                  "image_file": r"http://iroads.bvtech.co.il/upfiles/KABRI/KABRI.PNG", "details": "89", "host_ip": None,863                  "global_url": "", "server_ip": "10.34.151.3", "app_name": "live", "app_instance": "_definst_",864                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,865                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/KABRI.stream",866                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/KABRI.stream/playlist.m3u8"},867                 {"id": 327, "name": "KADARIM", "title": "×§×ר××",868                  "image_file": r"http://iroads.bvtech.co.il/upfiles/KADARIM/KADARIM.PNG", "details": "85",869                  "host_ip": None,870                  "global_url": "", "server_ip": "10.34.151.3", "app_name": "live", "app_instance": "_definst_",871                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,872                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/KADARIM.stream",873                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/KADARIM.stream/playlist.m3u8"},874                 {"id": 330, "name": "KAREYNAAMANSOUTH", "title": "××¨× × ×¢×× ×ר××",875                  "image_file": r"http://iroads.bvtech.co.il/upfiles/KAREYNAAMANSOUTH/KAREYNAAMANSOUTH.PNG",876                  "details": "22",877                  "host_ip": None, "global_url": "", "server_ip": "10.34.151.3", "app_name": "live",878                  "app_instance": "_definst_",879                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,880                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/KAREYNAAMANSOUTH.stream",881                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/KAREYNAAMANSOUTH.stream/playlist.m3u8"},882                 {"id": 336, "name": "KFARHROE", "title": "×פר ×ר×××",883                  "image_file": r"http://iroads.bvtech.co.il/upfiles/KFARHROE/KFARHAROE.PNG", "details": "4",884                  "host_ip": None, "global_url": "", "server_ip": "10.34.151.3", "app_name": "live",885                  "app_instance": "_definst_",886                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,887                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/KFARHROE.stream",888                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/KFARHROE.stream/playlist.m3u8"},889                 {"id": 339, "name": "KFARTAVOR", "title": "×פר ת××ר",890                  "image_file": r"http://iroads.bvtech.co.il/upfiles/KFARTAVOR/KFARTAVOR.PNG", "details": "65",891                  "host_ip": None, "global_url": "", "server_ip": "10.34.151.3", "app_name": "live",892                  "app_instance": "_definst_",893                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,894                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/KFARTAVOR.stream",895                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/KFARTAVOR.stream/playlist.m3u8"},896                 {"id": 340, "name": "KIRYATATASOUTH", "title": "קר×ת ××ª× ×ר××",897                  "image_file": r"http://iroads.bvtech.co.il/upfiles/KIRYATATASOUTH/KIRYATATASOUTH.PNG",898                  "details": "22",899                  "host_ip": None, "global_url": "", "server_ip": "10.34.151.3", "app_name": "live",900                  "app_instance": "_definst_",901                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,902                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/KIRYATATASOUTH.stream",903                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/KIRYATATASOUTH.stream/playlist.m3u8"},904                 {"id": 344, "name": "MAAGANMICHAEL", "title": "××¢×× ×××××",905                  "image_file": r"http://iroads.bvtech.co.il/upfiles/MAAGANMICHAEL/MAAGANMICHAEL.PNG", "details": "2",906                  "host_ip": None, "global_url": "", "server_ip": "10.34.151.3", "app_name": "live",907                  "app_instance": "_definst_",908                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,909                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/MAAGANMICHAEL.stream",910                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/MAAGANMICHAEL.stream/playlist.m3u8"},911                 {"id": 345, "name": "MAHANAIM", "title": "××× ×××",912                  "image_file": r"http://iroads.bvtech.co.il/upfiles/MAHANAIM/MAHANAIM.PNG", "details": "90",913                  "host_ip": None, "global_url": "", "server_ip": "10.34.151.3", "app_name": "live",914                  "app_instance": "_definst_",915                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,916                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/MAHANAIM.stream",917                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/MAHANAIM.stream/playlist.m3u8"},918                 {"id": 348, "name": "MASRIK", "title": "×סר××§",919                  "image_file": r"http://iroads.bvtech.co.il/upfiles/MASRIK/MASRIK.PNG", "details": "4",920                  "host_ip": None,921                  "global_url": "", "server_ip": "10.34.151.3", "app_name": "live", "app_instance": "_definst_",922                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,923                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/MASRIK.stream",924                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/MASRIK.stream/playlist.m3u8"},925                 {"id": 349, "name": "MATZLIH", "title": "×צ×××",926                  "image_file": r"http://iroads.bvtech.co.il/upfiles/MATZLIH/MATZLIH.PNG", "details": "40",927                  "host_ip": None,928                  "global_url": "", "server_ip": "10.34.151.3", "app_name": "live", "app_instance": "_definst_",929                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,930                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/MATZLIH.stream",931                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/MATZLIH.stream/playlist.m3u8"},932                 {"id": 355, "name": "MODIININDUSTRY", "title": "×.ת. ×××××¢××",933                  "image_file": r"http://iroads.bvtech.co.il/upfiles/MODIININDUSTRY/MODIININDUSTRY.PNG",934                  "details": "443",935                  "host_ip": None, "global_url": "", "server_ip": "10.34.151.3", "app_name": "live",936                  "app_instance": "_definst_",937                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,938                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/MODIININDUSTRY.stream",939                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/MODIININDUSTRY.stream/playlist.m3u8"},940                 {"id": 356, "name": "MORAN", "title": "××ר×",941                  "image_file": r"http://iroads.bvtech.co.il/upfiles/MORAN/MORAN.PNG", "details": "85", "host_ip": None,942                  "global_url": "", "server_ip": "10.34.151.3", "app_name": "live", "app_instance": "_definst_",943                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,944                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/MORAN.stream",945                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/MORAN.stream/playlist.m3u8"},946                 {"id": 358, "name": "NAHALHADERA", "title": "× ×× ××ר×",947                  "image_file": r"http://iroads.bvtech.co.il/upfiles/NAHALHADERA/NAHALHADERA.PNG", "details": "4",948                  "host_ip": None, "global_url": "", "server_ip": "10.34.151.3", "app_name": "live",949                  "app_instance": "_definst_",950                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,951                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/NAHALHADERA.stream",952                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/NAHALHADERA.stream/playlist.m3u8"},953                 {"id": 364, "name": "NAMALASHDOD", "title": "× ×× ×ש×××",954                  "image_file": r"http://iroads.bvtech.co.il/upfiles/NAMALASHDOD/NAMALASHDOD.PNG", "details": "41",955                  "host_ip": None, "global_url": "", "server_ip": "10.34.151.3", "app_name": "live",956                  "app_instance": "_definst_",957                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,958                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/NAMALASHDOD.stream",959                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/NAMALASHDOD.stream/playlist.m3u8"},960                 {"id": 366, "name": "NatzratGovernmenttCenter", "title": "נצרת קר×ת ×××ש××",961                  "image_file": r"http://iroads.bvtech.co.il/upfiles/NatzratGovernmenttCenter/NatzratGovernmenttCenter.PNG",962                  "details": "75", "host_ip": None, "global_url": "", "server_ip": "10.34.151.3", "app_name": "live",963                  "app_instance": "_definst_", "is_recording": 0, "start_recording": "0000-00-00 00:00:00",964                  "server_name": None,965                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/NatzratGovernmenttCenter.stream",966                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/NatzratGovernmenttCenter.stream/playlist.m3u8"},967                 {"id": 371, "name": "OHALIM", "title": "×××××",968                  "image_file": r"http://iroads.bvtech.co.il/upfiles/OHALIM/OHALIM.PNG", "details": "40",969                  "host_ip": None,970                  "global_url": "", "server_ip": "10.34.151.3", "app_name": "live", "app_instance": "_definst_",971                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,972                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/OHALIM.stream",973                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/OHALIM.stream/playlist.m3u8"},974                 {"id": 373, "name": "PALYAM", "title": "×¤× ××",975                  "image_file": r"http://iroads.bvtech.co.il/upfiles/PALYAM/PALYAM.PNG", "details": "4",976                  "host_ip": None,977                  "global_url": "", "server_ip": "10.34.151.3", "app_name": "live", "app_instance": "_definst_",978                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,979                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/PALYAM.stream",980                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/PALYAM.stream/playlist.m3u8"},981                 {"id": 374, "name": "PARDASIA", "title": "פר×ס××",982                  "image_file": r"http://iroads.bvtech.co.il/upfiles/PARDASIA/PARDASIA.PNG", "details": "4",983                  "host_ip": None,984                  "global_url": "", "server_ip": "10.34.151.3", "app_name": "live", "app_instance": "_definst_",985                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,986                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/PARDASIA.stream",987                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/PARDASIA.stream/playlist.m3u8"},988                 {"id": 375, "name": "PARKAFEK", "title": "פ×רק ×פק",989                  "image_file": r"http://iroads.bvtech.co.il/upfiles/PARKAFEK/PARKAFEK.PNG", "details": "5",990                  "host_ip": None,991                  "global_url": "", "server_ip": "10.34.151.3", "app_name": "live", "app_instance": "_definst_",992                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,993                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/PARKAFEK.stream",994                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/PARKAFEK.stream/playlist.m3u8"},995                 {"id": 377, "name": "REGBA", "title": "ר×××",996                  "image_file": r"http://iroads.bvtech.co.il/upfiles/REGBA/REGBA.PNG", "details": "4", "host_ip": None,997                  "global_url": "", "server_ip": "10.34.151.3", "app_name": "live", "app_instance": "_definst_",998                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,999                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/REGBA.stream",1000                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/REGBA.stream/playlist.m3u8"},1001                 {"id": 378, "name": "REHOVOTWAST", "title": "ר××××ת ×ער×",1002                  "image_file": r"http://iroads.bvtech.co.il/upfiles/REHOVOTWAST/REHOVOTWAST.PNG", "details": "42",1003                  "host_ip": None, "global_url": "", "server_ip": "10.34.151.3", "app_name": "live",1004                  "app_instance": "_definst_",1005                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,1006                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/REHOVOTWAST.stream",1007                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/REHOVOTWAST.stream/playlist.m3u8"},1008                 {"id": 379, "name": "RINATYA", "title": "ר×נת××",1009                  "image_file": r"http://iroads.bvtech.co.il/upfiles/RINATYA/RINATYA.PNG", "details": "40",1010                  "host_ip": None,1011                  "global_url": "", "server_ip": "10.34.151.3", "app_name": "live", "app_instance": "_definst_",1012                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,1013                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/RINATYA.stream",1014                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/RINATYA.stream/playlist.m3u8"},1015                 {"id": 382, "name": "SARA", "title": "שר×",1016                  "image_file": r"http://iroads.bvtech.co.il/upfiles/SARA/SARA.PNG", "details": "25", "host_ip": None,1017                  "global_url": "", "server_ip": "10.34.151.3", "app_name": "live", "app_instance": "_definst_",1018                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,1019                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/SARA.stream",1020                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/SARA.stream/playlist.m3u8"},1021                 {"id": 384, "name": "SAVION", "title": "ס××××",1022                  "image_file": r"http://iroads.bvtech.co.il/upfiles/SAVION/SAVION.PNG", "details": "461",1023                  "host_ip": None,1024                  "global_url": "", "server_ip": "10.34.151.3", "app_name": "live", "app_instance": "_definst_",1025                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,1026                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/SAVION.stream",1027                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/SAVION.stream/playlist.m3u8"},1028                 {"id": 385, "name": "SGULA", "title": "ס××××",1029                  "image_file": r"http://iroads.bvtech.co.il/upfiles/SGULA/SGULA.PNG", "details": "40", "host_ip": None,1030                  "global_url": "", "server_ip": "10.34.151.3", "app_name": "live", "app_instance": "_definst_",1031                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,1032                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/SGULA.stream",1033                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/SGULA.stream/playlist.m3u8"},1034                 {"id": 387, "name": "SHAARHANEGEV", "title": "שער ×× ××",1035                  "image_file": r"http://iroads.bvtech.co.il/upfiles/SHAARHANEGEV/SHAARHANEGEV.PNG", "details": "34",1036                  "host_ip": None, "global_url": "", "server_ip": "10.34.151.3", "app_name": "live",1037                  "app_instance": "_definst_",1038                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,1039                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/SHAARHANEGEV.stream",1040                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/SHAARHANEGEV.stream/playlist.m3u8"},1041                 {"id": 388, "name": "SHAARIYA", "title": "שער××",1042                  "image_file": r"http://iroads.bvtech.co.il/upfiles/SHAARIYA/SHAARIYA.PNG", "details": "40",1043                  "host_ip": None, "global_url": "", "server_ip": "10.34.151.3", "app_name": "live",1044                  "app_instance": "_definst_",1045                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,1046                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/SHAARIYA.stream",1047                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/SHAARIYA.stream/playlist.m3u8"},1048                 {"id": 389, "name": "SHFAIM", "title": "שפ×××",1049                  "image_file": r"http://iroads.bvtech.co.il/upfiles/SHFAIM/SHEFAIM.PNG", "details": "2",1050                  "host_ip": None,1051                  "global_url": "", "server_ip": "10.34.151.3", "app_name": "live", "app_instance": "_definst_",1052                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,1053                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/SHFAIM.stream",1054                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/SHFAIM.stream/playlist.m3u8"},1055                 {"id": 390, "name": "SHOKET", "title": "ש×קת",1056                  "image_file": r"http://iroads.bvtech.co.il/upfiles/SHOKET/SHOKET.PNG", "details": "31",1057                  "host_ip": None,1058                  "global_url": "", "server_ip": "10.34.151.3", "app_name": "live", "app_instance": "_definst_",1059                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,1060                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/SHOKET.stream",1061                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/SHOKET.stream/playlist.m3u8"},1062                 {"id": 391, "name": "SILVER", "title": "ס×××ר",1063                  "image_file": r"http://iroads.bvtech.co.il/upfiles/SILVER/SILVER.PNG", "details": "3",1064                  "host_ip": None,1065                  "global_url": "", "server_ip": "10.34.151.3", "app_name": "live", "app_instance": "_definst_",1066                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,1067                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/SILVER.stream",1068                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/SILVER.stream/playlist.m3u8"},1069                 {"id": 392, "name": "SIRKIN", "title": "ס×רק××",1070                  "image_file": r"http://iroads.bvtech.co.il/upfiles/SIRKIN/SIRKIN.PNG", "details": "40",1071                  "host_ip": None,1072                  "global_url": "", "server_ip": "10.34.151.3", "app_name": "live", "app_instance": "_definst_",1073                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,1074                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/SIRKIN.stream",1075                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/SIRKIN.stream/playlist.m3u8"},1076                 {"id": 394, "name": "TAABURA", "title": "תע××ר×",1077                  "image_file": r"http://iroads.bvtech.co.il/upfiles/TAABURA/TAABURA.PNG", "details": "44",1078                  "host_ip": None,1079                  "global_url": "", "server_ip": "10.34.151.3", "app_name": "live", "app_instance": "_definst_",1080                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,1081                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/TAABURA.stream",1082                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/TAABURA.stream/playlist.m3u8"},1083                 {"id": 395, "name": "TCHERNIKHOVSKY", "title": "×שרנ×××××¡×§× ×פר ס××",1084                  "image_file": r"http://iroads.bvtech.co.il/upfiles/TCHERNIKHOVSKY/TCHERNIKHOVSKY.PNG",1085                  "details": "402",1086                  "host_ip": None, "global_url": "", "server_ip": "10.34.151.3", "app_name": "live",1087                  "app_instance": "_definst_",1088                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,1089                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/TCHERNIKHOVSKY.stream",1090                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/TCHERNIKHOVSKY.stream/playlist.m3u8"},1091                 {"id": 396, "name": "TELARAD", "title": "×ª× ×¢×¨×",1092                  "image_file": r"http://iroads.bvtech.co.il/upfiles/TELARAD/TELARAD.PNG", "details": "31",1093                  "host_ip": None,1094                  "global_url": "", "server_ip": "10.34.151.3", "app_name": "live", "app_instance": "_definst_",1095                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,1096                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/TELARAD.stream",1097                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/TELARAD.stream/playlist.m3u8"},1098                 {"id": 398, "name": "UMELFAHEM", "title": "××× ×× ×¤×××",1099                  "image_file": r"http://iroads.bvtech.co.il/upfiles/UMELFAHEM/UMELFAHEM.PNG", "details": "65",1100                  "host_ip": None, "global_url": "", "server_ip": "10.34.151.3", "app_name": "live",1101                  "app_instance": "_definst_",1102                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,1103                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/UMELFAHEM.stream",1104                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/UMELFAHEM.stream/playlist.m3u8"},1105                 {"id": 399, "name": "YAARHEDERA", "title": "×ער ××ר×",1106                  "image_file": r"http://iroads.bvtech.co.il/upfiles/YAARHEDERA/yaarhadera.png", "details": "4",1107                  "host_ip": None, "global_url": "", "server_ip": "10.34.151.3", "app_name": "live",1108                  "app_instance": "_definst_",1109                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,1110                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/YAARHEDERA.stream",1111                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/YAARHEDERA.stream/playlist.m3u8"},1112                 {"id": 400, "name": "YADMORDEHI", "title": "×× ×ר×××",1113                  "image_file": r"http://iroads.bvtech.co.il/upfiles/YADMORDEHI/YADMORDEHI.PNG", "details": "4",1114                  "host_ip": None, "global_url": "", "server_ip": "10.34.151.3", "app_name": "live",1115                  "app_instance": "_definst_",1116                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,1117                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/YADMORDEHI.stream",1118                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/YADMORDEHI.stream/playlist.m3u8"},1119                 {"id": 402, "name": "YARKON", "title": "×רק××",1120                  "image_file": r"http://iroads.bvtech.co.il/upfiles/YARKON/YARKON.PNG", "details": "5",1121                  "host_ip": None,1122                  "global_url": "", "server_ip": "10.34.151.3", "app_name": "live", "app_instance": "_definst_",1123                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,1124                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/YARKON.stream",1125                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/YARKON.stream/playlist.m3u8"},1126                 {"id": 403, "name": "YASIF", "title": "××ס××£",1127                  "image_file": r"http://iroads.bvtech.co.il/upfiles/YASIF/YASIF.PNG", "details": "70", "host_ip": None,1128                  "global_url": "", "server_ip": "10.34.151.3", "app_name": "live", "app_instance": "_definst_",1129                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,1130                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/YASIF.stream",1131                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/YASIF.stream/playlist.m3u8"},1132                 {"id": 404, "name": "YAVNE", "title": "××× ×",1133                  "image_file": r"http://iroads.bvtech.co.il/upfiles/YAVNE/YAVNE.PNG", "details": "4", "host_ip": None,1134                  "global_url": "", "server_ip": "10.34.151.3", "app_name": "live", "app_instance": "_definst_",1135                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,1136                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/YAVNE.stream",1137                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/YAVNE.stream/playlist.m3u8"},1138                 {"id": 406, "name": "ALFEIMENASHE", "title": "×××¤× ×נש×",1139                  "image_file": r"http://iroads.bvtech.co.il/upfiles/ALFEIMENASHE/ALFEIMENASHE.PNG", "details": "55",1140                  "host_ip": None, "global_url": "", "server_ip": "10.34.151.3", "app_name": "live",1141                  "app_instance": "_definst_",1142                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,1143                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/ALFEIMENASHE.stream",1144                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/ALFEIMENASHE.stream/playlist.m3u8"},1145                 {"id": 407, "name": "KOKHAVYAIR", "title": "×××× ×××ר",1146                  "image_file": r"http://iroads.bvtech.co.il/upfiles/KOKHAVYAIR/kokhavyair.png", "details": "444",1147                  "host_ip": None, "global_url": "", "server_ip": "10.34.151.3", "app_name": "live",1148                  "app_instance": "_definst_",1149                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,1150                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/KOKHAVYAIR.stream",1151                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/KOKHAVYAIR.stream/playlist.m3u8"},1152                 {"id": 409, "name": "BIALIKHADERA", "title": "××××××§ ××ר×",1153                  "image_file": r"http://iroads.bvtech.co.il/upfiles/BIALIKHADERA/BIALIKHADERA.PNG", "details": "4",1154                  "host_ip": None, "global_url": "", "server_ip": "10.34.151.3", "app_name": "live",1155                  "app_instance": "_definst_",1156                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,1157                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/BIALIKHADERA.stream",1158                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/BIALIKHADERA.stream/playlist.m3u8"},1159                 {"id": 410, "name": "DAVRAT", "title": "××רת",1160                  "image_file": r"http://iroads.bvtech.co.il/upfiles/DAVRAT/DAVRAT.PNG", "details": "65",1161                  "host_ip": None,1162                  "global_url": "", "server_ip": "10.34.151.3", "app_name": "live", "app_instance": "_definst_",1163                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,1164                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/DAVRAT.stream",1165                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/DAVRAT.stream/playlist.m3u8"},1166                 {"id": 411, "name": "HASARGEL", "title": "×סר××",1167                  "image_file": r"http://iroads.bvtech.co.il/upfiles/HASARGEL/HASARGEL.PNG", "details": "65",1168                  "host_ip": None, "global_url": "", "server_ip": "10.34.151.3", "app_name": "live",1169                  "app_instance": "_definst_",1170                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,1171                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/HASARGEL.stream",1172                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/HASARGEL.stream/playlist.m3u8"},1173                 {"id": 412, "name": "KFRAKARA", "title": "×פר קרע",1174                  "image_file": r"http://iroads.bvtech.co.il/upfiles/KFRAKARA/KFARKARA.PNG", "details": "65",1175                  "host_ip": None, "global_url": "", "server_ip": "10.34.151.3", "app_name": "live",1176                  "app_instance": "_definst_",1177                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,1178                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/KFRAKARA.stream",1179                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/KFRAKARA.stream/playlist.m3u8"},1180                 {"id": 415, "name": "ARARA", "title": "ערער×",1181                  "image_file": r"http://iroads.bvtech.co.il/upfiles/ARARA/ARARA.PNG", "details": "65", "host_ip": None,1182                  "global_url": "", "server_ip": "10.34.151.3", "app_name": "live", "app_instance": "_definst_",1183                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,1184                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/ARARA.stream",1185                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/ARARA.stream/playlist.m3u8"},1186                 {"id": 419, "name": "SHFEYAH", "title": "שפ××",1187                  "image_file": r"http://iroads.bvtech.co.il/upfiles/SHFEYAH/SHFEYAH.PNG", "details": "70",1188                  "host_ip": None,1189                  "global_url": "", "server_ip": "10.34.151.3", "app_name": "live", "app_instance": "_definst_",1190                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,1191                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/SHFEYAH.stream",1192                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/SHFEYAH.stream/playlist.m3u8"},1193                 {"id": 421, "name": "EMHAMOSHAVOT", "title": "×× ×××ש××ת",1194                  "image_file": r"http://iroads.bvtech.co.il/upfiles/EMHAMOSHAVOT/EMHMOSHAVOT.PNG", "details": "4",1195                  "host_ip": None, "global_url": "", "server_ip": "10.34.151.3", "app_name": "live",1196                  "app_instance": "_definst_",1197                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,1198                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/EMHAMOSHAVOT.stream",1199                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/EMHAMOSHAVOT.stream/playlist.m3u8"},1200                 {"id": 422, "name": "EINHAMIFRTZ", "title": "×¢×× ××פרץ",1201                  "image_file": r"http://iroads.bvtech.co.il/upfiles/EINHAMIFRTZ/EINHMIFRTZ.PNG", "details": "4",1202                  "host_ip": None, "global_url": "", "server_ip": "10.34.151.3", "app_name": "live",1203                  "app_instance": "_definst_",1204                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,1205                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/EINHAMIFRTZ.stream",1206                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/EINHAMIFRTZ.stream/playlist.m3u8"},1207                 {"id": 425, "name": "LAPID", "title": "×פ××",1208                  "image_file": r"http://iroads.bvtech.co.il/upfiles/LAPID/LAPID.PNG", "details": "446",1209                  "host_ip": None,1210                  "global_url": "", "server_ip": "10.34.151.3", "app_name": "live", "app_instance": "_definst_",1211                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,1212                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/LAPID.stream",1213                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/LAPID.stream/playlist.m3u8"},1214                 {"id": 426, "name": "KARMIELCENTER", "title": "×ר×××× ×ר××",1215                  "image_file": r"http://iroads.bvtech.co.il/upfiles/KARMIELCENTER/KARMIELTEFEN.PNG", "details": "85",1216                  "host_ip": None, "global_url": "", "server_ip": "10.34.151.3", "app_name": "live",1217                  "app_instance": "_definst_",1218                  "is_recording": 0, "start_recording": "0000-00-00 00:00:00", "server_name": None,1219                  "player_url_web": "rtmps://5c328052cb7f5.streamlock.net/live/KARMIELCENTER.stream",1220                  "player_url_ios": "https://5c328052cb7f5.streamlock.net/live/KARMIELCENTER.stream/playlist.m3u8"}]1221    _data = sorted(_data, key=lambda d: d['id'])1222    # _all_cameras = [CameraInfo(i, d['id'], d['name'], d['title'], d['player_url_web'], d['image_file']) for i, d in1223    #                 enumerate(_data)]1224    _all_cameras = [CameraInfo(i, d['id'], d['name'], d['title'], d['player_url_ios'], d['image_file']) for i, d in1225                    enumerate(_data)]1226    df_cameras = pd.DataFrame(_all_cameras).sort_values(col_id).reset_index(drop=True).set_index(col_index)...recorder_test.py
Source:recorder_test.py  
...29        self.assertEqual(False, self._recorder.is_recording())30    def test_getRecordingPatternIdAfterInit_returnsNone(self):31        self.assertEqual(None, self._recorder.get_recording_pattern_id())32    def test_isRecordingWhileAfterStopped_returnsFalse(self):33        self._recorder.start_recording('even')34        self._feed_even_pattern(1000)35        self._recorder.stop_recording()36        self.assertEqual(False, self._recorder.is_recording())37    def test_getRecordingPatternIdAfterStopped_returnsNone(self):38        self._recorder.start_recording('even')39        self._feed_even_pattern(1000)40        self._recorder.stop_recording()41        self.assertEqual(None, self._recorder.get_recording_pattern_id())42    def test_isRecordingAfterStart_returnsTrue(self):43        self._recorder.start_recording('even')44        self.assertEqual(True, self._recorder.is_recording())45    def test_getRecordingPatternAfterStart_returnsId(self):46        self._recorder.start_recording('even')47        self.assertEqual('even', self._recorder.get_recording_pattern_id())48    def test_playWithNoRecording_playbackReturnsFalse(self):49        self._feed_even_pattern(1000)50        self.assertFalse(self._recorder.play('non-existent-id'))51        self.assertFalse(self._recorder.play('non-existent-id', loop=True))52        self.assertEqual([], self._data_played)53    def test_recordAndPlayNonexistentPattern_noPlaybackOnDifferentPattern(self):54        self._recorder.start_recording('even')55        self._feed_even_pattern(1000)56        self._recorder.stop_recording()57        self.assertFalse(self._recorder.play('non-existent-id'))58        self.assertFalse(self._recorder.play('non-existent-id', loop=True))59        self.assertEqual([], self._data_played)60    def test_playRecordedPattern_playbackPlaysOnce(self):61        self._recorder.start_recording('even')62        self._feed_even_pattern(1000)63        self._recorder.stop_recording()64        self._feed_odd_pattern(6000)65        result = self._recorder.play('even')66        self.assertEqual(True, result)67        # Make sure notes are played back correctly in time.68        history = []69        self._scheduler.idle()70        history.append(self._data_played[:])71        for _ in range(6):72            # Each step is 1 second73            self._clock.advance(1)74            self._scheduler.idle()75            history.append(self._data_played[:])76        self.assertEqual([77            [0, 10],           # Before loop, first idle call78            [0, 10, 2, 12],    # Loop 079            [0, 10, 2, 12, 4, 14],80            [0, 10, 2, 12, 4, 14, 6, 16],81            [0, 10, 2, 12, 4, 14, 6, 16, 8, 18],  # No new notes expected after.82            [0, 10, 2, 12, 4, 14, 6, 16, 8, 18],83            [0, 10, 2, 12, 4, 14, 6, 16, 8, 18]],84            history)85    def test_playRecordedPatternWithLoop_playbackLoops(self):86        self._recorder.start_recording('even')87        self._feed_even_pattern(1000)88        self._recorder.stop_recording()89        self._feed_odd_pattern(6000)90        result = self._recorder.play('even', loop=True, loop_delay_ms=0)91        self.assertEqual(True, result)92        # Make sure notes are played back correctly in time.93        history = []94        self._scheduler.idle()95        history.append(self._data_played[:])96        for _ in range(6):97            # Each step is 1 second98            self._clock.advance(1)99            self._scheduler.idle()100            history.append(self._data_played[:])101        self.assertEqual([102            [0, 10],           # Before loop, first idle call103            [0, 10, 2, 12],    # Loop 0104            [0, 10, 2, 12, 4, 14],105            [0, 10, 2, 12, 4, 14, 6, 16],106            [0, 10, 2, 12, 4, 14, 6, 16, 8, 18, 0, 10],   # no loop delay107            [0, 10, 2, 12, 4, 14, 6, 16, 8, 18, 0, 10, 2, 12],108            [0, 10, 2, 12, 4, 14, 6, 16, 8, 18, 0, 10, 2, 12, 4, 14]],109            history)110    def test_playRecordedPatternWithLoopAndLoopDelay_playLoopsWithDelay(self):111        self._recorder.start_recording('even')112        self._feed_even_pattern(1000)113        self._recorder.stop_recording()114        self._feed_odd_pattern(6000)115        result = self._recorder.play('even', loop=True, loop_delay_ms=1000)116        self.assertEqual(True, result)117        # Make sure notes are played back correctly in time.118        history = []119        self._scheduler.idle()120        history.append(self._data_played[:])121        for _ in range(6):122            # Each step is 1 second123            self._clock.advance(1)124            self._scheduler.idle()125            history.append(self._data_played[:])126        self.assertEqual([127            [0, 10],           # Before loop, first idle call128            [0, 10, 2, 12],    # Loop 0129            [0, 10, 2, 12, 4, 14],130            [0, 10, 2, 12, 4, 14, 6, 16],131            [0, 10, 2, 12, 4, 14, 6, 16, 8, 18],         # w/ loop delay132            [0, 10, 2, 12, 4, 14, 6, 16, 8, 18, 0, 10],133            [0, 10, 2, 12, 4, 14, 6, 16, 8, 18, 0, 10, 2, 12]],134            history)135    def test_playMultipleRecordedPattern_playbackWorks(self):136        self._recorder.start_recording('even')137        self._feed_even_pattern(1000)138        self._recorder.stop_recording()139        self._recorder.start_recording('odd')140        self._feed_odd_pattern(6000)141        self._recorder.stop_recording()142        result = self._recorder.play('even')143        self.assertEqual(True, result)144        result = self._recorder.play('odd')145        self.assertEqual(True, result)146        # Make sure notes are played back correctly in time.147        history = []148        self._scheduler.idle()149        history.append(self._data_played[:])150        for _ in range(6):151            # Each step is 1 second152            self._clock.advance(1)153            self._scheduler.idle()154            history.append(self._data_played[:])155        # The notes will be jumbled, so we need to filter them out by even and156        # odds and compare157        even_history = [[v for v in data if v % 2 == 0] for data in history]158        odd_history = [[v for v in data if v % 2 == 1] for data in history]159        self.assertEqual([160            [0, 10],           # Before loop, first idle call161            [0, 10, 2, 12],    # Loop 0162            [0, 10, 2, 12, 4, 14],163            [0, 10, 2, 12, 4, 14, 6, 16],164            [0, 10, 2, 12, 4, 14, 6, 16, 8, 18],  # No new notes expected after.165            [0, 10, 2, 12, 4, 14, 6, 16, 8, 18],166            [0, 10, 2, 12, 4, 14, 6, 16, 8, 18]],167            even_history)168        self.assertEqual([169            [1, 11],           # Before loop, first idle call170            [1, 11, 3, 13],    # Loop 0171            [1, 11, 3, 13, 5, 15],172            [1, 11, 3, 13, 5, 15, 7, 17],173            [1, 11, 3, 13, 5, 15, 7, 17, 9, 19],  # No new notes expected after.174            [1, 11, 3, 13, 5, 15, 7, 17, 9, 19],175            [1, 11, 3, 13, 5, 15, 7, 17, 9, 19]],176            odd_history)177    def test_playMultiplePatternsOneLoops_oneLoopsAndOtherDoesnt(self):178        self._recorder.start_recording('even')179        self._feed_even_pattern(1000)180        self._recorder.stop_recording()181        self._recorder.start_recording('odd')182        self._feed_odd_pattern(6000)183        self._recorder.stop_recording()184        result = self._recorder.play('even', loop=True, loop_delay_ms=1000)185        self.assertEqual(True, result)186        result = self._recorder.play('odd')187        self.assertEqual(True, result)188        # Make sure notes are played back correctly in time.189        history = []190        self._scheduler.idle()191        history.append(self._data_played[:])192        for _ in range(6):193            # Each step is 1 second194            self._clock.advance(1)195            self._scheduler.idle()196            history.append(self._data_played[:])197        # The notes will be jumbled, so we need to filter them out by even and198        # odds and compare199        even_history = [[v for v in data if v % 2 == 0] for data in history]200        odd_history = [[v for v in data if v % 2 == 1] for data in history]201        self.assertEqual([202            [0, 10],           # Before loop, first idle call203            [0, 10, 2, 12],    # Loop 0204            [0, 10, 2, 12, 4, 14],205            [0, 10, 2, 12, 4, 14, 6, 16],206            [0, 10, 2, 12, 4, 14, 6, 16, 8, 18],         # w/ loop delay207            [0, 10, 2, 12, 4, 14, 6, 16, 8, 18, 0, 10],208            [0, 10, 2, 12, 4, 14, 6, 16, 8, 18, 0, 10, 2, 12]],209            even_history)210        self.assertEqual([211            [1, 11],           # Before loop, first idle call212            [1, 11, 3, 13],    # Loop 0213            [1, 11, 3, 13, 5, 15],214            [1, 11, 3, 13, 5, 15, 7, 17],215            [1, 11, 3, 13, 5, 15, 7, 17, 9, 19],  # No new notes expected after.216            [1, 11, 3, 13, 5, 15, 7, 17, 9, 19],217            [1, 11, 3, 13, 5, 15, 7, 17, 9, 19]],218            odd_history)219    def test_stopWhilePlayRecordedPattern_successfullyStops(self):220        self._recorder.start_recording('even')221        self._feed_even_pattern(1000)222        self._recorder.stop_recording()223        self._feed_odd_pattern(6000)224        result = self._recorder.play('even')225        self.assertEqual(True, result)226        # Make sure notes are played back correctly in time.227        history = []228        self._scheduler.idle()229        history.append(self._data_played[:])230        for i in range(6):231            if i == 3:232                self._recorder.stop('even')233            # Each step is 1 second234            self._clock.advance(1)235            self._scheduler.idle()236            history.append(self._data_played[:])237        self.assertEqual([238            [0, 10],           # Before loop, first idle call239            [0, 10, 2, 12],    # Loop 0240            [0, 10, 2, 12, 4, 14],241            [0, 10, 2, 12, 4, 14, 6, 16],  # Loop 2. Stops before loop 3242            [0, 10, 2, 12, 4, 14, 6, 16],243            [0, 10, 2, 12, 4, 14, 6, 16],244            [0, 10, 2, 12, 4, 14, 6, 16]],245            history)246    def test_stopWhilePlayingMultipleRecordedPattern_stopsOneOtherPlays(self):247        self._recorder.start_recording('even')248        self._feed_even_pattern(1000)249        self._recorder.stop_recording()250        self._recorder.start_recording('odd')251        self._feed_odd_pattern(6000)252        self._recorder.stop_recording()253        result = self._recorder.play('even')254        self.assertEqual(True, result)255        result = self._recorder.play('odd')256        self.assertEqual(True, result)257        # Make sure notes are played back correctly in time.258        history = []259        self._scheduler.idle()260        history.append(self._data_played[:])261        for i in range(6):262            if i == 3:263                self._recorder.stop('even')264            # Each step is 1 second265            self._clock.advance(1)266            self._scheduler.idle()267            history.append(self._data_played[:])268        # The notes will be jumbled, so we need to filter them out by even and269        # odds and compare270        even_history = [[v for v in data if v % 2 == 0] for data in history]271        odd_history = [[v for v in data if v % 2 == 1] for data in history]272        # Even wil stop after loop 2273        self.assertEqual([274            [0, 10],           # Before loop, first idle call275            [0, 10, 2, 12],    # Loop 0276            [0, 10, 2, 12, 4, 14],277            [0, 10, 2, 12, 4, 14, 6, 16],  # Loop 2. Stopped after this.278            [0, 10, 2, 12, 4, 14, 6, 16],279            [0, 10, 2, 12, 4, 14, 6, 16],280            [0, 10, 2, 12, 4, 14, 6, 16]],281            even_history)282        self.assertEqual([283            [1, 11],           # Before loop, first idle call284            [1, 11, 3, 13],    # Loop 0285            [1, 11, 3, 13, 5, 15],286            [1, 11, 3, 13, 5, 15, 7, 17],287            [1, 11, 3, 13, 5, 15, 7, 17, 9, 19],  # No new notes expected after.288            [1, 11, 3, 13, 5, 15, 7, 17, 9, 19],289            [1, 11, 3, 13, 5, 15, 7, 17, 9, 19]],290            odd_history)291    def test_stopNonExistentPattern_noImpact(self):292        self._recorder.start_recording('even')293        self._feed_even_pattern(1000)294        self._recorder.stop_recording()295        self._recorder.start_recording('odd')296        self._feed_odd_pattern(6000)297        self._recorder.stop_recording()298        result = self._recorder.play('even', loop=True, loop_delay_ms=1000)299        self.assertEqual(True, result)300        result = self._recorder.play('odd')301        self.assertEqual(True, result)302        # Make sure notes are played back correctly in time.303        history = []304        self._scheduler.idle()305        history.append(self._data_played[:])306        for _ in range(6):307            self._recorder.stop('non-existent-pattern')308            # Each step is 1 second309            self._clock.advance(1)310            self._scheduler.idle()311            history.append(self._data_played[:])312        # The notes will be jumbled, so we need to filter them out by even and313        # odds and compare314        even_history = [[v for v in data if v % 2 == 0] for data in history]315        odd_history = [[v for v in data if v % 2 == 1] for data in history]316        self.assertEqual([317            [0, 10],           # Before loop, first idle call318            [0, 10, 2, 12],    # Loop 0319            [0, 10, 2, 12, 4, 14],320            [0, 10, 2, 12, 4, 14, 6, 16],321            [0, 10, 2, 12, 4, 14, 6, 16, 8, 18],         # w/ loop delay322            [0, 10, 2, 12, 4, 14, 6, 16, 8, 18, 0, 10],323            [0, 10, 2, 12, 4, 14, 6, 16, 8, 18, 0, 10, 2, 12]],324            even_history)325        self.assertEqual([326            [1, 11],           # Before loop, first idle call327            [1, 11, 3, 13],    # Loop 0328            [1, 11, 3, 13, 5, 15],329            [1, 11, 3, 13, 5, 15, 7, 17],330            [1, 11, 3, 13, 5, 15, 7, 17, 9, 19],  # No new notes expected after.331            [1, 11, 3, 13, 5, 15, 7, 17, 9, 19],332            [1, 11, 3, 13, 5, 15, 7, 17, 9, 19]],333            odd_history)334    def test_stopAllWhileNotPlaying_noImpact(self):335        self._recorder.start_recording('even')336        self._feed_even_pattern(1000)337        self._recorder.stop_recording()338        self._recorder.stop_all()339        self._clock.advance(1)340        self._scheduler.idle()341        self.assertEqual([], self._data_played)342    def test_stopAllWhilePlayingMultiple_stopsAll(self):343        self._recorder.start_recording('even')344        self._feed_even_pattern(1000)345        self._recorder.stop_recording()346        self._recorder.start_recording('odd')347        self._feed_odd_pattern(6000)348        self._recorder.stop_recording()349        result = self._recorder.play('even', loop=True, loop_delay_ms=1000)350        self.assertEqual(True, result)351        result = self._recorder.play('odd')352        self.assertEqual(True, result)353        # Make sure notes are played back correctly in time.354        history = []355        self._scheduler.idle()356        history.append(self._data_played[:])357        for i in range(6):358            if i == 3:359                self._recorder.stop_all()360            self._clock.advance(1)361            self._scheduler.idle()362            history.append(self._data_played[:])363        # The notes will be jumbled, so we need to filter them out by even and364        # odds and compare365        even_history = [[v for v in data if v % 2 == 0] for data in history]366        odd_history = [[v for v in data if v % 2 == 1] for data in history]367        self.assertEqual([368            [0, 10],           # Before loop, first idle call369            [0, 10, 2, 12],    # Loop 0370            [0, 10, 2, 12, 4, 14],371            [0, 10, 2, 12, 4, 14, 6, 16],  # Loop 2. Stopped after this.372            [0, 10, 2, 12, 4, 14, 6, 16],373            [0, 10, 2, 12, 4, 14, 6, 16],374            [0, 10, 2, 12, 4, 14, 6, 16]],375            even_history)376        self.assertEqual([377            [1, 11],           # Before loop, first idle call378            [1, 11, 3, 13],    # Loop 0379            [1, 11, 3, 13, 5, 15],380            [1, 11, 3, 13, 5, 15, 7, 17],  # Loop 2. Stopped after this.381            [1, 11, 3, 13, 5, 15, 7, 17],382            [1, 11, 3, 13, 5, 15, 7, 17],383            [1, 11, 3, 13, 5, 15, 7, 17]],384            odd_history)385    def test_stopWhilePlayingLoop_stopsLoop(self):386        self._recorder.start_recording('even')387        self._feed_even_pattern(1000)388        self._recorder.stop_recording()389        self._feed_odd_pattern(6000)390        result = self._recorder.play('even', loop=True)391        self.assertEqual(True, result)392        # Make sure notes are played back correctly in time.393        history = []394        self._scheduler.idle()395        history.append(self._data_played[:])396        for i in range(6):397            if i == 3:398                self._recorder.stop('even')399            # Each step is 1 second400            self._clock.advance(1)401            self._scheduler.idle()402            history.append(self._data_played[:])403        self.assertEqual([404            [0, 10],           # Before loop, first idle call405            [0, 10, 2, 12],    # Loop 0406            [0, 10, 2, 12, 4, 14],407            [0, 10, 2, 12, 4, 14, 6, 16],  # Loop 2. Stops before loop 3408            [0, 10, 2, 12, 4, 14, 6, 16],409            [0, 10, 2, 12, 4, 14, 6, 16],410            [0, 10, 2, 12, 4, 14, 6, 16]],411            history)412    def test_cancelLoopWhenNotLooping_finishes(self):413        self._recorder.start_recording('even')414        self._feed_even_pattern(1000)415        self._recorder.stop_recording()416        self._feed_odd_pattern(6000)417        result = self._recorder.play('even')418        self.assertEqual(True, result)419        # Make sure notes are played back correctly in time.420        history = []421        self._scheduler.idle()422        history.append(self._data_played[:])423        for i in range(6):424            if i == 3:425                self._recorder.cancel_loop('even')426            # Each step is 1 second427            self._clock.advance(1)428            self._scheduler.idle()429            history.append(self._data_played[:])430        self.assertEqual([431            [0, 10],           # Before loop, first idle call432            [0, 10, 2, 12],    # Loop 0433            [0, 10, 2, 12, 4, 14],434            [0, 10, 2, 12, 4, 14, 6, 16],  # Loop 2. looping canceled.435            [0, 10, 2, 12, 4, 14, 6, 16, 8, 18],436            [0, 10, 2, 12, 4, 14, 6, 16, 8, 18],437            [0, 10, 2, 12, 4, 14, 6, 16, 8, 18]],438            history)439    def test_cancelLoopWhileLooping_loopStopsButPlaybackFinishes(self):440        self._recorder.start_recording('even')441        self._feed_even_pattern(1000)442        self._recorder.stop_recording()443        self._feed_odd_pattern(6000)444        result = self._recorder.play('even', loop=True)445        self.assertEqual(True, result)446        # Make sure notes are played back correctly in time.447        history = []448        self._scheduler.idle()449        history.append(self._data_played[:])450        for i in range(6):451            if i == 3:452                self._recorder.cancel_loop('even')453            # Each step is 1 second454            self._clock.advance(1)455            self._scheduler.idle()456            history.append(self._data_played[:])457        self.assertEqual([458            [0, 10],           # Before loop, first idle call459            [0, 10, 2, 12],    # Loop 0460            [0, 10, 2, 12, 4, 14],461            [0, 10, 2, 12, 4, 14, 6, 16],  # Loop 2. looping canceled.462            [0, 10, 2, 12, 4, 14, 6, 16, 8, 18],463            [0, 10, 2, 12, 4, 14, 6, 16, 8, 18],464            [0, 10, 2, 12, 4, 14, 6, 16, 8, 18]],465            history)466    def test_cancelNonexistentLoopDuringLoopPlayback_noImpact(self):467        self._recorder.start_recording('even')468        self._feed_even_pattern(1000)469        self._recorder.stop_recording()470        self._feed_odd_pattern(6000)471        result = self._recorder.play('even', loop=True, loop_delay_ms=1000)472        self.assertEqual(True, result)473        # Make sure notes are played back correctly in time.474        history = []475        self._scheduler.idle()476        history.append(self._data_played[:])477        for i in range(6):478            if i == 3:479                self._recorder.cancel_loop('non-existent-id')480            # Each step is 1 second481            self._clock.advance(1)482            self._scheduler.idle()483            history.append(self._data_played[:])484        self.assertEqual([485            [0, 10],           # Before loop, first idle call486            [0, 10, 2, 12],    # Loop 0487            [0, 10, 2, 12, 4, 14],488            [0, 10, 2, 12, 4, 14, 6, 16],  # Loop 2. looping canceled.489            [0, 10, 2, 12, 4, 14, 6, 16, 8, 18],490            [0, 10, 2, 12, 4, 14, 6, 16, 8, 18, 0, 10],491            [0, 10, 2, 12, 4, 14, 6, 16, 8, 18, 0, 10, 2, 12]],492            history)493    def test_cancelLoopWhilePlayingMultiple_stopsOneOtherLoops(self):494        self._recorder.start_recording('even')495        self._feed_even_pattern(1000)496        self._recorder.stop_recording()497        self._recorder.start_recording('odd')498        self._feed_odd_pattern(6000)499        self._recorder.stop_recording()500        result = self._recorder.play('even', loop=True, loop_delay_ms=1000)501        self.assertEqual(True, result)502        result = self._recorder.play('odd', loop=True, loop_delay_ms=1000)503        self.assertEqual(True, result)504        # Make sure notes are played back correctly in time.505        history = []506        self._scheduler.idle()507        history.append(self._data_played[:])508        for i in range(6):509            if i == 3:510                self._recorder.cancel_loop('even')511            # Each step is 1 second512            self._clock.advance(1)513            self._scheduler.idle()514            history.append(self._data_played[:])515        # The notes will be jumbled, so we need to filter them out by even and516        # odds and compare517        even_history = [[v for v in data if v % 2 == 0] for data in history]518        odd_history = [[v for v in data if v % 2 == 1] for data in history]519        # Even wil stop after loop 2520        self.assertEqual([521            [0, 10],           # Before loop, first idle call522            [0, 10, 2, 12],    # Loop 0523            [0, 10, 2, 12, 4, 14],524            [0, 10, 2, 12, 4, 14, 6, 16],  # Loop 2. Stopped after this.525            [0, 10, 2, 12, 4, 14, 6, 16, 8, 18],526            [0, 10, 2, 12, 4, 14, 6, 16, 8, 18],527            [0, 10, 2, 12, 4, 14, 6, 16, 8, 18]],528            even_history)529        self.assertEqual([530            [1, 11],           # Before loop, first idle call531            [1, 11, 3, 13],    # Loop 0532            [1, 11, 3, 13, 5, 15],533            [1, 11, 3, 13, 5, 15, 7, 17],534            [1, 11, 3, 13, 5, 15, 7, 17, 9, 19],535            [1, 11, 3, 13, 5, 15, 7, 17, 9, 19, 1, 11],536            [1, 11, 3, 13, 5, 15, 7, 17, 9, 19, 1, 11, 3, 13]],537            odd_history)538    def test_updateLoopDelayWhilePlaying_loopDelayUpdated(self):539        self._recorder.start_recording('even')540        self._feed_even_pattern(1000)541        self._recorder.stop_recording()542        self._feed_odd_pattern(6000)543        result = self._recorder.play('even', loop=True, loop_delay_ms=1000)544        self.assertEqual(True, result)545        # Make sure notes are played back correctly in time.546        history = []547        self._scheduler.idle()548        history.append(self._data_played[:])549        for i in range(11):550            # Each step is 1 second551            if i == 4:552                self._recorder.set_loop_delay('even', 2000)553            self._clock.advance(1)554            self._scheduler.idle()555            history.append(self._data_played[:])556        self.assertEqual([557            [0, 10],           # Before loop, first idle call558            [0, 10, 2, 12],    # Loop 0559            [0, 10, 2, 12, 4, 14],560            [0, 10, 2, 12, 4, 14, 6, 16],561            [0, 10, 2, 12, 4, 14, 6, 16, 8, 18],         # w/ loop delay562            [0, 10, 2, 12, 4, 14, 6, 16, 8, 18, 0, 10],563            [0, 10, 2, 12, 4, 14, 6, 16, 8, 18, 0, 10, 2, 12],564            [0, 10, 2, 12, 4, 14, 6, 16, 8, 18, 0, 10, 2, 12, 4, 14],565            [0, 10, 2, 12, 4, 14, 6, 16, 8, 18, 0, 10, 2, 12, 4, 14, 6, 16],566            [0, 10, 2, 12, 4, 14, 6, 16, 8, 18, 0, 10, 2, 12, 4, 14, 6, 16, 8,567                18],568            [0, 10, 2, 12, 4, 14, 6, 16, 8, 18, 0, 10, 2, 12, 4, 14, 6, 16, 8,569             18],  # Due to change in delay to 2 seconds570            [0, 10, 2, 12, 4, 14, 6, 16, 8, 18, 0, 10, 2, 12, 4, 14, 6, 16, 8,571             18, 0, 10]],572            history)573    def test_whileLoopingCheckIsPlaying_shouldReturnTrue(self):574        self._recorder.start_recording('even')575        self._feed_even_pattern(1000)576        self._recorder.stop_recording()577        self._feed_odd_pattern(6000)578        self._recorder.play('even', loop=True, loop_delay_ms=1000)579        self.assertEqual(True, self._recorder.is_playing('even'))580    def test_whileLoopingCheckNonPlayingPattern_shouldReturnFalse(self):581        self._recorder.start_recording('even')582        self._feed_even_pattern(1000)583        self._recorder.stop_recording()584        self._feed_odd_pattern(6000)585        self._recorder.play('even', loop=True, loop_delay_ms=1000)586        self.assertEqual(False, self._recorder.is_playing('odd'))587    def test_whileNonLoopPlaybackCheckPlayingPattern_shouldReturnTrue(self):588        self._recorder.start_recording('even')589        self._feed_even_pattern(1000)590        self._recorder.stop_recording()591        self._feed_odd_pattern(6000)592        self._recorder.play('even', loop=False, loop_delay_ms=1000)593        self.assertEqual(True, self._recorder.is_playing('even'))594    def test_whileLoopPlaybackIsLoopingPlayingPattern_shouldReturnTrue(self):595        self._recorder.start_recording('even')596        self._feed_even_pattern(1000)597        self._recorder.stop_recording()598        self._feed_odd_pattern(6000)599        self._recorder.play('even', loop=True, loop_delay_ms=1000)600        self.assertEqual(True, self._recorder.is_looping('even'))601    def test_whileNonLoopPlaybackPlayingPattern_shouldReturnFalse(self):602        self._recorder.start_recording('even')603        self._feed_even_pattern(1000)604        self._recorder.stop_recording()605        self._feed_odd_pattern(6000)606        self._recorder.play('even', loop=False, loop_delay_ms=1000)607        self.assertEqual(False, self._recorder.is_looping('even'))608    def test_afterRecordingCheckValidPattern_shouldReturnTrue(self):609        self._recorder.start_recording('even')610        self._feed_even_pattern(1000)611        self._recorder.stop_recording()612        self.assertEqual(True, self._recorder.has_pattern('even'))613    def test_afterRecordingCheckInvalidPattern_shouldReturnFalse(self):614        self._recorder.start_recording('even')615        self._feed_even_pattern(1000)616        self._recorder.stop_recording()617        self.assertEqual(False, self._recorder.has_pattern('odd'))618    def test_recordingAnEmptyPatternCheckHasPattern_shouldReturnFalse(self):619        self._recorder.start_recording('even')620        self._recorder.stop_recording()621        self.assertEqual(False, self._recorder.has_pattern('even'))622    def test_playNoLoop_lastLoopingShouldBeNone(self):623        self._recorder.start_recording('even')624        self._feed_even_pattern(1000)625        self._recorder.stop_recording()626        self._feed_odd_pattern(6000)627        self._recorder.play('even', loop=False, loop_delay_ms=1000)628        self.assertEqual(None, self._recorder.get_last_looping_pattern_id())629    def test_playLoop_lastLoopingShouldBePattern(self):630        self._recorder.start_recording('even')631        self._feed_even_pattern(1000)632        self._recorder.stop_recording()633        self._feed_odd_pattern(6000)634        self._recorder.play('even', loop=True, loop_delay_ms=1000)635        self.assertEqual('even', self._recorder.get_last_looping_pattern_id())636    def test_playMultipleLoops_lastLoopingShouldBeLastLoopPattern(self):637        self._recorder.start_recording('even')638        self._feed_even_pattern(1000)639        self._recorder.stop_recording()640        self._recorder.start_recording('odd')641        self._feed_odd_pattern(1000)642        self._recorder.stop_recording()643        self._recorder.play('even', loop=True, loop_delay_ms=1000)644        self._recorder.play('odd', loop=True, loop_delay_ms=1000)645        self._recorder.play('adsf', loop=True, loop_delay_ms=1000)646        self.assertEqual('odd', self._recorder.get_last_looping_pattern_id())647    def test_overwritePatternWithEmptyPatternAndPlay_shouldNotPlay(self):648        self._recorder.start_recording('even')649        self._feed_even_pattern(1000)650        self._recorder.stop_recording()651        self._recorder.start_recording('even')652        self._recorder.stop_recording()653        self.assertEqual(False, self._recorder.play('even'))654    def test_updateLoopDelayStopAndRestartPlaying_loopDelayUpdated(self):655        self._recorder.start_recording('even')656        self._feed_even_pattern(1000)657        self._recorder.stop_recording()658        result = self._recorder.play('even', loop=True)659        self._recorder.set_loop_delay('even', 2000)660        self._recorder.stop_all()661        self._clock.advance(1)662        self._scheduler.idle()663        self._data_played = []664        result = self._recorder.play('even', loop=True)665        self.assertEqual(True, result)666        # Make sure notes are played back correctly in time.667        history = []668        self._scheduler.idle()669        history.append(self._data_played[:])670        for i in range(11):671            # Each step is 1 second672            self._clock.advance(1)673            self._scheduler.idle()674            history.append(self._data_played[:])675        self.assertEqual([676            [0, 10],           # Before loop, first idle call677            [0, 10, 2, 12],    # Loop 0678            [0, 10, 2, 12, 4, 14],679            [0, 10, 2, 12, 4, 14, 6, 16],680            [0, 10, 2, 12, 4, 14, 6, 16, 8, 18],         # w/ loop delay681            [0, 10, 2, 12, 4, 14, 6, 16, 8, 18],         # w/ loop delay682            [0, 10, 2, 12, 4, 14, 6, 16, 8, 18, 0, 10],683            [0, 10, 2, 12, 4, 14, 6, 16, 8, 18, 0, 10, 2, 12],684            [0, 10, 2, 12, 4, 14, 6, 16, 8, 18, 0, 10, 2, 12, 4, 14],685            [0, 10, 2, 12, 4, 14, 6, 16, 8, 18, 0, 10, 2, 12, 4, 14, 6, 16],686            [0, 10, 2, 12, 4, 14, 6, 16, 8, 18, 0, 10, 2, 12, 4, 14, 6, 16, 8,687             18],688            [0, 10, 2, 12, 4, 14, 6, 16, 8, 18, 0, 10, 2, 12, 4, 14, 6, 16, 8,689             18]],690            history)691    def test_callingPlayWhilePlaying_restartsPattern(self):692        self._recorder.start_recording('even')693        self._feed_even_pattern(1000)694        self._recorder.stop_recording()695        result = self._recorder.play('even', loop=True)696        self._clock.advance(2)697        self._scheduler.idle()698        result = self._recorder.play('even', loop=True, loop_delay_ms=1000)699        self.assertEqual(True, result)700        # Make sure notes are played back correctly in time.701        history = []702        self._scheduler.idle()703        history.append(self._data_played[:])704        for i in range(5):705            # Each step is 1 second706            self._clock.advance(1)...continuous_record.py
Source:continuous_record.py  
1from rostk_plotting.transforms import *2from rostk_plotting.plotting_callbacks import PlottingCallbacks3from rostk_plotting.plotting_manager import PlottingManager, attribute_event, _parse_datatype_path, get_topic_from_msg, convert_topic_to_file_name4import cv25class ContinuousPlotting(PlottingManager, PlottingCallbacks):6    def __init__(self, topic_list, queue_size, slop_time):7        PlottingCallbacks.__init__(self)8        PlottingManager.__init__(self, topic_list, queue_size, slop_time, self)9        self.start_recording = False10        self.fourcc = cv2.VideoWriter_fourcc(*'MJPG')11        # maps a topic to an array of images to be saved later by the video writer12        self._topic_images_map = {}13        for topic_dict in topic_list:14            topics = list(topic_dict.keys())[0]15            self._topic_images_map[topics] = []16            rospy.loginfo("Made video array for {}".format(topics))17        self._video_written = False18        self._image_topic = None #can only set this inside the image callback function19        self._images = []20    def post_callback(self):21        # self.screen_cap_flag = False22        # save all stored data as video file23        pass24    def on_shutdown(self):25        if self._video_written:26            for topic, video_streams in self._topic_images_map.items():27                rospy.loginfo("Writing videos for topic: {}".format(topic))28                #get size of video to set the size of the video writer -> we assume the image sizes stay the same 29                first_image_size = video_streams[0].shape30                video_writer = cv2.VideoWriter(ContinuousPlotting.get_current_record_folder() + convert_topic_to_file_name(topic) + '.avi',31                    self.fourcc, 20.0, (first_image_size[1],first_image_size[0]))32                for image in video_streams:33                    video_writer.write(image)34                video_writer.release()35    def parse_command(self, command_string):36        if command_string == "start":37            rospy.loginfo("Starting video record")38            self.start_recording = True39            self._video_written = True40        if command_string == "stop":41            rospy.loginfo("Ending video record")42            self.start_recording = False43    @attribute_event("start_recording")44    def camera_info_callback(self, data):45        pass46    @attribute_event("start_recording")47    def image_callback(self, data):48        topic = get_topic_from_msg(data)49        rospy.loginfo("Topic {}".format((topic)))...Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!
