【Python】DICOMデータをシーケンス名でフォルダ分け

DICOMデータをシーケンス名でフォルダ分けする。
DICOMデータはあらかじめフォルダごとに分けられているが、名前は降られていない状態。
import os ws = "work spaceのフォルダ名" os.chdir(ws) import shutil import pydicom fd_main = "DICOMデータが入っているフォルダ名" fds = os.listdir(fd_main) fds = [fd for fd in fds if not fd.startswith('.')] fd_destination = "D:/MEGA\MEGAsync/ws_20240331_rename_folder/rename_head_MRI" if not os.path.exists(fd_destination): os.mkdir(fd_destination) for fd in fds: tmp_pt_fd = os.path.join(fd_main, fd) fds_sq = os.listdir(tmp_pt_fd) for fd_sq in fds_sq: tmp_sq_fd = os.path.join(tmp_pt_fd, fd_sq) fls = os.listdir(tmp_sq_fd) tmp_dcm_fl = os.path.join(tmp_sq_fd, fls[0]) dcm = pydicom.dcmread(tmp_dcm_fl) sq_name = fd_sq + "_" + dcm.SeriesDescription # processing "T2*" if '*' in sq_name: sq_name = sq_name.replace("*", "_star_") new_sq_fd_name = os.path.join(fd_destination, fd, sq_name) # copy if not os.path.exists(new_sq_fd_name): shutil.copytree(tmp_sq_fd, new_sq_fd_name) print(f"Folder '{tmp_sq_fd}' copied to '{new_sq_fd_name}'.") else: print(f"Folder '{new_sq_fd_name}' already exists. Skipping copying.") print("Processing finish")
【Python】Youtubeを高画質でダウンロードする

import os main_fd = "ワークスペースを書く" os.chdir(main_fd) from pytube import YouTube import csv import pandas as pd from moviepy.editor import * import os #設定を書く from yt_dlp import YoutubeDL with YoutubeDL() as ydl: ydl_video_opts = { 'outtmpl': '%(id)s'+'_.mp4', 'format': 'bestvideo' } # CSVファイルのパスなど csv_file_path = "CSVのファイルパスを書く" reader = pd.read_csv(csv_file_path, header=0, sep=',', encoding="cp932") urls = reader["URL"] #ダウンロードの実行 for url in urls: #メタデータ取得 with YoutubeDL() as ydl: res = ydl.extract_info(url, download=False) #動画取得 ydl_video_opts = { 'outtmpl': 'video.mp4', 'format': 'bestvideo/best' } with YoutubeDL(ydl_video_opts) as ydl: ydl.download([url]) #音声取得 ydl_audio_opts = { 'outtmpl': 'audio.mp3', 'format': 'bestaudio/best' } with YoutubeDL(ydl_audio_opts) as ydl: ydl.download([url]) #動画・音声結合&出力 videoclip = VideoFileClip("video.mp4") audioclip = AudioFileClip("audio.mp3") output_video = videoclip.set_audio(audioclip) output_video.write_videofile(res['id'] + ".mp4") #一時ファイルの削除 os.remove('video.mp4') os.remove('audio.mp3')
【Python】Youtube APIを利用して,任意keywordの検索結果を得る.(URL, チャンネル登録者数, 再生数,Uploadの日付)

CSVは、”検索ワード_result.csv”でワークスペースに保存される。
import os import csv from googleapiclient.discovery import build ws = "ここにワークスペースを入力" os.chdir(ws) # YouTube APIキーを設定 api_key = "ここに自分のAPIキーを入力してください" #keyword keyword = "keywordを入力" # YouTube APIのビルド youtube = build('youtube', 'v3', developerKey=api_key) def search_youtube_videos(keyword, max_results=200): # YouTube APIを使用して動画を検索 search_response = youtube.search().list( q=keyword, type='video', part='id,snippet', maxResults=max_results ).execute() #csvファイルの名前 csv_name = keyword + "_result.csv" # 検索結果をCSVファイルに保存 with open(csv_name, 'w', newline='', encoding='utf-8') as csvfile: fieldnames = ['Title', 'Video ID', 'URL', 'View Count', 'Subscriber Count', 'Published At'] writer = csv.DictWriter(csvfile, fieldnames=fieldnames) # CSVファイルのヘッダーを書き込む writer.writeheader() # 検索結果から情報を取得してCSVに書き込む for item in search_response['items']: title = item['snippet']['title'] video_id = item['id']['videoId'] url = f'https://www.youtube.com/watch?v={video_id}' # 動画の詳細情報を取得 video_response = youtube.videos().list( part='statistics,snippet', id=video_id ).execute() # 再生回数を取得 view_count = video_response['items'][0]['statistics']['viewCount'] # チャンネルの詳細情報を取得 channel_id = item['snippet']['channelId'] channel_response = youtube.channels().list( part='statistics', id=channel_id ).execute() # サブスクライバー数を取得 subscriber_count = channel_response['items'][0]['statistics']['subscriberCount'] # アップロード日付を取得 published_at = video_response['items'][0]['snippet']['publishedAt'] # CSVに書き込む writer.writerow({'Title': title, 'Video ID': video_id, 'URL': url, 'View Count': view_count, 'Subscriber Count': subscriber_count, 'Published At': published_at}) print("Finish work") if __name__ == '__main__': # 検索するキーワードを指定 search_keyword = keyword # 任意のキーワードを指定してください # 検索結果をCSVファイルに保存 search_youtube_videos(search_keyword)
【Python】CSVにまとめてるURLのYoutubeを一括ダウンロードする方法

import os main_fd = "作業用フォルダを書く" os.chdir(main_fd) from pytube import YouTube import csv #関数を定義 def download_youtube_video(url, output_folder): try: yt = YouTube(url) video = yt.streams.filter(file_extension="mp4", progressive=True).first() video.download(output_folder) print(f"Video {yt.title} downloaded successfully.") except Exception as e: print(f"Error downloading video from {url}: {e}") def download_videos_from_csv(csv_path, output_folder): with open(csv_path, "r", encoding="utf-8") as csvfile: reader = csv.reader(csvfile) for row in reader: video_url = row[0] download_youtube_video(video_url, output_folder) # csvのファイルパスと保存用のフォルダ csv_file_path = "url.csv" output_folder_path = "保存用フォルダを書く" #ダウンロードの実行 download_videos_from_csv(csv_file_path, output_folder_path)
【Python】YoutubeをPythonで簡単にダウンロード

YoutubeをPythonで簡単にダウンロード。
秒殺です。
〜 import os import glob ws = "ワークスペースフォルダを書く" os.chdir(ws) from yt_dlp import YoutubeDL urls = "ダウンロードをしたURLを書く" from yt_dlp import YoutubeDL # ダウンロードしたい動画のyoutubeのurl(複数指定可能) urls = [urls] # 設定 ydl_opts = { "format": "best", } # ダウンロード with YoutubeDL(ydl_opts) as ydl: result = ydl.download(urls) print("FInished") 〜
ダウンロードは自己責任で!!
【Python】Pandasでcsvを読み込んで縦結合して重複を削除

Pandasでcsvを読み込んで縦結合して重複を削除するコード
例えば、研究会のEmalアドレス管理などに便利
〜 import os import pandas as pd ws = "ワークスペースのpathを書く" os.chdir(ws) csv_1 = os.path.join(ws,"001.csv") csv_2 = os.path.join(ws,"002.csv") csv_3 = os.path.join(ws,"003.csv") csv_4 = os.path.join(ws,"004.csv") csv_5 = os.path.join(ws,"005.csv") df_1 = pd.read_csv(csv_1, header=0, sep=',', encoding="cp932") df_2 = pd.read_csv(csv_2, header=0, sep=',', encoding="cp932") df_3 = pd.read_csv(csv_3, header=0, sep=',', encoding="cp932") df_4 = pd.read_csv(csv_4, header=0, sep=',', encoding="cp932") df_5 = pd.read_csv(csv_5, header=0, sep=',', encoding="cp932") # 縦に結合 df_sum = pd.concat([df_1, df_2, df_3, df_4, df_5]) # Emailが重複する人を削除して、Excelでoutput (csvだと文字化けした。。。) #削除する列をcolum名で指定 df = df_sum.drop_duplicates(subset='Email') df.to_excel('clean_email.xlsx', header= True, index=True, encoding='utf-8') 〜