


"""simple docstring"""







from __future__ import annotations

import numpy as np
from numpy import floataa
from numpy.typing import NDArray




def        UpperCAmelCase__	(lowerCAmelCase_  ,						lowerCAmelCase_  ,						lowerCAmelCase_  ,						lowerCAmelCase_  ,						):




					'''simple docstring'''


					__SCREAMING_SNAKE_CASE						       =    coefficient_matrix.shape
					__SCREAMING_SNAKE_CASE						       =    constant_matrix.shape

					if rowsa != colsa:
										__SCREAMING_SNAKE_CASE						       =    f"""Coefficient matrix dimensions must be nxn but received {rowsa}x{colsa}"""
										raise ValueError(UpperCAmelCase__       )

					if colsa != 1:
										__SCREAMING_SNAKE_CASE						       =    f"""Constant matrix must be nx1 but received {rowsa}x{colsa}"""
										raise ValueError(UpperCAmelCase__       )

					if rowsa != rowsa:
										__SCREAMING_SNAKE_CASE						       =    (
										    """Coefficient and constant matrices dimensions must be nxn and nx1 but """
										    f"""received {rowsa}x{colsa} and {rowsa}x{colsa}"""
										)
										raise ValueError(UpperCAmelCase__       )

					if len(UpperCAmelCase__       ) != rowsa:
										__SCREAMING_SNAKE_CASE						       =    (
										    """Number of initial values must be equal to number of rows in coefficient """
										    f"""matrix but received {len(UpperCAmelCase__       )} and {rowsa}"""
										)
										raise ValueError(UpperCAmelCase__       )

					if iterations <= 0:
										raise ValueError("Iterations must be at least 1"       )

					__SCREAMING_SNAKE_CASE						       =    np.concatenate(
					    (coefficient_matrix, constant_matrix)  ,						axis=1       )

					__SCREAMING_SNAKE_CASE						       =    table.shape

					strictly_diagonally_dominant(UpperCAmelCase__       )

					# Iterates the whole matrix for given number of times
					for _ in range(UpperCAmelCase__       ):
										__SCREAMING_SNAKE_CASE						       =    []
										for row in range(UpperCAmelCase__       ):
															__SCREAMING_SNAKE_CASE						       =    0
															for col in range(UpperCAmelCase__       ):
																				if col == row:
																									__SCREAMING_SNAKE_CASE						       =    table[row][col]
																				elif col == cols - 1:
																									__SCREAMING_SNAKE_CASE						       =    table[row][col]
																				else:
																									temp += (-1) * table[row][col] * init_val[col]
															__SCREAMING_SNAKE_CASE						       =    (temp + val) / denom
															new_val.append(UpperCAmelCase__       )
										__SCREAMING_SNAKE_CASE						       =    new_val

					return [float(UpperCAmelCase__       ) for i in new_val]




def        UpperCAmelCase__	(lowerCAmelCase_       ):




					'''simple docstring'''


					__SCREAMING_SNAKE_CASE						       =    table.shape

					__SCREAMING_SNAKE_CASE						       =    True

					for i in range(0  ,						UpperCAmelCase__       ):
										__SCREAMING_SNAKE_CASE						       =    0
										for j in range(0  ,						cols - 1       ):
															if i == j:
																				continue
															else:
																				total += table[i][j]

										if table[i][i] <= total:
															raise ValueError("Coefficient matrix is not strictly diagonally dominant"       )

					return is_diagonally_dominant


# Test Cases
if __name__ == "__main__":
		import doctest

		doctest.testmod()




"""simple docstring"""







from datetime import datetime

import requests




def        UpperCAmelCase__	(lowerCAmelCase_       ):




					'''simple docstring'''


					__SCREAMING_SNAKE_CASE						       =    "https://downloadgram.net/wp-json/wppress/video-downloader/video?url="
					__SCREAMING_SNAKE_CASE						       =    requests.get(base_url + url       ).json()[0]["urls"][0]["src"]
					return requests.get(lowerCAmelCase_       ).content


if __name__ == "__main__":
		a__    :							str            =					input('''Enter Video/IGTV url: ''').strip()
		a__    :							List[Any]            =					F"{datetime.now():%Y-%m-%d_%H:%M:%S}.mp4"
		with open(file_name, '''wb''') as fp:
				fp.write(download_video(url))
		print(F"Done. Video saved to disk as {file_name}.")
